《实验三用状态机实现序列检测器的设计(共7页).doc》由会员分享,可在线阅读,更多相关《实验三用状态机实现序列检测器的设计(共7页).doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上 FPGA实验报告 实验名称:用状态机实现序列检测器的设计 姓 名: 班 级: 电子1002班 指导老师: 时 间: 2013年3月27日 一、实验要求1、应用有限状态机的设计思路,检测输入的串行数据是否是8b。2、拟用SW3-SW0,J4接口的E8,F8,C7,D7作为系统输入(系统由此需要设计一个8bits并行数据转串行的模块)3、一个7段数码显示译码器作为检测结果的输出显示,如果串行序列为”,显示A,否则显示b(系统需要设计一个7段数码显示译码器模块)4、为了显示可控,清晰,拟用V16,D18实现时钟,复位信号的输入。二、 任务分析顶层模块并转串模块串行检测模块
2、数码管显示模块并行8bits数据clk串行数据4bits数据reset7bits数据图2.1 设计任务框图系统共包括4个模块:1、并行数据转串行数据模块(xulie.v); 异步复位,在时钟控制下,将并行输入数据din87:0,按照din7,din6,din5,din4,din3,din2,din1,din0的顺序输出至串行检测模块的输入端口din。2、串行检测模块;输入信号:din-1bit的串行输入数据clk-同步输入时钟clr -异步清零信号,当CLR=1,系统输出置0,否则,系统正常工作。输出信号:AB-4bits数据,如果系统检测到8b的串行输入,AB=4b1010,否则,AB=4b
3、1011。3、数码管显示模块;输入:data_in3:0 -待显示的数值输出:data_out6:0 -驱动数码管的七位数值4、消抖模块。 由于需要用按键V16作为时钟输入,为保证实验效果,调用实验二中应用的消抖模块,对时钟clk输入信号进行消抖。三、实验过程 1、构建一个工程名为XULIEQI的工程,正确选择器件和EDA工具。2、设计串行检测模块(schk.v)a)、建立新Verilog HDL模块编辑窗口,选择资源类型为Verilog Module,并输入合法文件名图3.1 工程建立及工具选择b)、在文本编辑窗口输入代码图3.2 文本编辑附:module schk(din,clk,clr,
4、AB); input din,clk,clr; output 3:0 AB; reg 3:0 AB; reg 7:0 Q; parameter s0= 8b,a = 8b,b = 8b,c = 8b,d = 8b,e = 8b,f = 8b,g = 8b,h = 8b,data=8b; always (posedge clk or posedge clr) if(clr) begin Q = s0; end else begin case(Q) s0: begin if(din=data7) Q=a; else Q=s0; end a: begin if(din= data6) Q=b; el
5、se Q=s0; end b:begin if(din= data5) Q=c; else Q=s0; end c: begin if(din= data4) Q=d; else Q=c; end d: begin if(din= data3) Q=e; else Q=a; end e: begin if(din= data2) Q=f; else Q=s0; end f: begin if(din= data1) Q=g; else Q=b; end g: begin if(din= data0) Q=h; else Q=s0; end h: begin if(din= data7) Q=a
6、; else Q=s0; end default : Q=s0; endcase endalways (Q) begin if(Q = h) AB = 4b1010 ; else AB = 4b1011 ; end endmoduled)、执行综合得到综合后的电路,并进行功能仿真。图3.3 功能仿真3、 串行检测模块(schk.v)步骤同2,附上设计结果,如下图所示:图3.4 功能仿真4、 数码管显示模块(decled7s .v)同样的步骤,参考实验二的数码显示模块。5、 消抖模块设计同样的步骤,参考实验二的消抖模块。6、 编写顶层设计,进行综合、仿真。图3.5 综合结构图图3.6 功能仿真7
7、、在顶层添加消抖模块,综合后,锁定引脚。拟用SW3-SW0,J4接口的E8,F8,C7,D7作为系统输入din87:0;采用D18按键为复位信号输入;采用V16按键作为时钟输入;仍采用J2,J1的引脚为数码管输出引脚;50MHZ板上时钟为消抖计时时钟。8、 验证程序后,下载。9、连接输入信号到FPGA,改变拨动开关和按键,观察结果。下载成功后,可以看到,按下按键即给一定的时钟后,检测到数据后,数码管显示A,否则显示b。四、 思考题并行转串行模块采用Moore型状态机:次态=f(现状,输入),输出=f(现状);Moore型FSM的输出是仅由状态寄存器驱动的,由于状态寄存器是同步的,所以由其驱动的输出逻辑也是同步的。Moore型FSM的输出逻辑相对于Mealy型FSM的输出逻辑简单许多,仅是对状态寄存器进行译码的组合逻辑。通过对Moore型FSM的状态寄存器进行恰当地编码,可以简化对状态寄存器进行译码的组合逻辑,得到更加简单的输出逻辑。串行检测模块采用Mealy型状态机:次态=f(现状,输入),输出=f(现状,输入);以现时的输入信号结合即将变成次态的现态,编码成输出信号。输出同步不仅带来运行性能的提升,还增加系统的稳定性,防止输出信号出现毛刺,防止组合回路的产生。在同步电路设计中,Mealy型状态机的输出同步是必不可少的。五、 实验体会专心-专注-专业
限制150内