您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 实验三-用状态机实现序列检测器的设计3
FPGA实验报告实验名称:用状态机实现序列检测器的设计姓名:班级:电子1002班指导老师:时间:2013年3月27日一、实验要求1、应用有限状态机的设计思路,检测输入的串行数据是否是8’b11100101。2、拟用SW3---SW0,J4接口的E8,F8,C7,D7作为系统输入(系统由此需要设计一个8bits并行数据转串行的模块)3、一个7段数码显示译码器作为检测结果的输出显示,如果串行序列为”11100101”,显示A,否则显示b(系统需要设计一个7段数码显示译码器模块)4、为了显示可控,清晰,拟用V16,D18实现时钟,复位信号的输入。二、任务分析图2.1设计任务框图系统共包括4个模块:1、并行数据转串行数据模块(xulie.v);异步复位,在时钟控制下,将并行输入数据din8[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数据,如果系统检测到8’b11100101的串行输入,AB=4’b1010,否则,AB=4’b1011。3、数码管显示模块;输入:data_in[3:0]-------待显示的数值输出:data_out[6:0]-------驱动数码管的七位数值4、消抖模块。由于需要用按键V16作为时钟输入,为保证实验效果,调用实验二中应用的消抖模块,对时钟clk输入信号进行消抖。三、实验过程1、构建一个工程名为XULIEQI的工程,正确选择器件和EDA工具。2、设计串行检测模块(schk.v)a)、建立新VerilogHDL模块编辑窗口,选择资源类型为VerilogModule,并输入合法文件名顶层模块并转串模块串行检测模块数码管显示模块并行8bits数据clk串行数据4bits数据reset7bits数据图3.1工程建立及工具选择b)、在文本编辑窗口输入代码图3.2文本编辑附:moduleschk(din,clk,clr,AB);inputdin,clk,clr;output[3:0]AB;reg[3:0]AB;reg[7:0]Q;parameters0=8'b00000000,a=8'b00000001,b=8'b00000010,c=8'b00000100,d=8'b00001000,e=8'b00010000,f=8'b00100000,g=8'b01000000,h=8'b10000000,data=8'b11100101;always@(posedgeclkorposedgeclr)if(clr)beginQ=s0;endelsebegincase(Q)s0:beginif(din==data[7])Q=a;elseQ=s0;enda:beginif(din==data[6])Q=b;elseQ=s0;endb:beginif(din==data[5])Q=c;elseQ=s0;endc:beginif(din==data[4])Q=d;elseQ=c;endd:beginif(din==data[3])Q=e;elseQ=a;ende:beginif(din==data[2])Q=f;elseQ=s0;endf:beginif(din==data[1])Q=g;elseQ=b;endg:beginif(din==data[0])Q=h;elseQ=s0;endh:beginif(din==data[7])Q=a;elseQ=s0;enddefault:Q=s0;endcaseendalways@(Q)beginif(Q==h)AB=4'b1010;elseAB=4'b1011;endendmoduled)、执行综合得到综合后的电路,并进行功能仿真。图3.3功能仿真3、串行检测模块(schk.v)步骤同2,附上设计结果,如下图所示:图3.4功能仿真4、数码管显示模块(decled7s.v)同样的步骤,参考实验二的数码显示模块。5、消抖模块设计同样的步骤,参考实验二的消抖模块。6、编写顶层设计,进行综合、仿真。图3.5综合结构图图3.6功能仿真7、在顶层添加消抖模块,综合后,锁定引脚。拟用SW3---SW0,J4接口的E8,F8,C7,D7作为系统输入din8[7:0];采用D18按键为复位信号输入;采用V16按键作为时钟输入;仍采用J2,J1的引脚为数码管输出引脚;50MHZ板上时钟为消抖计时时钟。8、验证程序后,下载。9、连接输入信号到FPGA,改变拨动开关和按键,观察结果。下载成功后,可以看到,按下按键即给一定的时钟后,检测到数据11100101后,数码管显示A,否则显示b。四、思考题并行转串行模块采用Moore型状态机:次态=f(现状,输入),输出=f(现状);Moore型FSM的输出是仅由状态寄存器驱动的,由于状态寄存器是同步的,所以由其驱动的输出逻辑也是同步的。Moore型FSM的输出逻辑相对于Mealy型FSM的输出逻辑简单许多,仅是对状态寄存器进行译码的组合逻辑。通过对Moore型FSM的状态寄存器进行恰当地编码,可以简化对状态寄存器进行译码的组合逻辑,得到更加简单的输出逻辑。串行检测模块采用Mealy型状态机:次态=f(现状,输入),输出=f(现状,输入);以现时的输入信号结合即将变成次态的现态,编码成输出信号。输出同步不仅带来运行性能的提升,还增加系统的稳定性,防止输出信号出现毛刺,防止组合回路的产生。在同步电路设计中,Mealy型状态机的输出同步是必不可少的。五、实验体会
本文标题:实验三-用状态机实现序列检测器的设计3
链接地址:https://www.777doc.com/doc-4926254 .html