实验三状态机实现序列检测器设计.docx
《实验三状态机实现序列检测器设计.docx》由会员分享,可在线阅读,更多相关《实验三状态机实现序列检测器设计.docx(8页珍藏版)》请在冰豆网上搜索。
实验三状态机实现序列检测器设计
《FPGA》课程报告
设计题目:
状态机实现序列检测器设计
学生班级:
学生学号:
学生姓名:
指导教师:
时间:
成绩:
一、实验目的:
1.理解有限状态机的概念;
2.掌握有限状态机的状态图的画法及其含义
二、实验原理:
本次实验的内容是:
应用有限状态机设计思路,检测输入的串行数据是否是”11100101”,本次实验由顶层文件、串行检测、并行数据转串行、数码管显示四个模块组成。
1.并行数据转串行数据模块功能是:
可以异步复位,可以在时钟控制下,将并行输入数据din[7:
0],按照din[7],din[6],din[5],din[4],din[3],din[2],din[1],din[0]的顺序输出至串行检测模块的输入端口din。
2.串行检测模块:
输入信号:
DIN-----1bit的串行输入数据
CLK-----同步输入时钟
CLR------异步清零信号,当CLR=1,系统输出置0,否则,系统正常工作
输出信号:
AB--------4bits数据,如果系统检测到“11100101”这8bit的输入,AB=4’b1010,否则,AB=4’b1011.
三、实验过程:
1.首先建立一个新的工程,添加一个新的VerilogModule文件,然后写入并行数据转串行数据模块的代码,代码如下:
然后执行综合,确认无误后,新建一个TestBenchWaveForm文件,进行仿真,仿真图如下:
2.再新建一个VerilogModule文件,在其中写入串行检测模块的代码,代码如下:
然后执行综合,确认无误后,新建一个TestBenchWaveForm文件,进行仿真,仿真图如下:
3.再新建一个VerilogModule文件,数码管显示模块的代码,代码如下:
然后执行综合,确认无误后,新建一个TestBenchWaveForm文件,进行仿真,仿真图如下:
4.编写顶层文件,将上面三个模块例化在一起,代码如下:
然后将新的顶层文件经行综合,确认无误后,新建一个TestBenchWaveForm文件,进行仿真,仿真图如下:
5.添加消抖模块,然后编写新的顶层文件,将消抖模块与上面的模块例化在一起,代码如下:
保存后生成新的顶层文件:
6.完成以上操作后,执行综合确认无误,经行锁引脚操作:
锁引脚完成后,编辑、修改约束文件:
7.生成下载配置文件,下载到开发板进行经行验证。
四、思考题:
说明本设计的代码表达的是什么类型的状态机,它的优点是什么?
详述其功能和对序列数检测的逻辑过程
答:
本实验代码表达的是Mealy型状态机,Mealy有限状态机的输出不单与当前状态有关,而且与输入信号的当前值有关,Mealy有限状态机的输出直接受输入信号的当前值影响,而输入信号可能在一个时钟周期内任意时刻变化,这使得Mealy有限状态机对输入的响应发生在当前时钟周期。
(注:
可编辑下载,若有不当之处,请指正,谢谢!
)