- 1、本文档共177页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
//状态表其余部分 default: Y_D = 4’bxxxx; endcase end // 状态表 always @(posedge Clock) begin: state_FFs end // state_FFS //为z和LED赋值 endmodule 请按照以下步骤完成练习: (1) 新建一个QuartusⅡ工程,以在DE2上实现该状态机。 (2) 建立一个Verilog文件,调用9个触发器来实现这个FSM,用简单的assign语句连接触发器的输入。用SW0作为FSM的低电平有效同步复位端,用SW1作为输入w,用KEY0作为手动时钟输入,用LEDG0作为输出z,用LEDR3~LEDR0显示4个状态触发器的输出。 (3) 在编译工程之前,应明确指定QuartusⅡ的综合工具采用Verilog代码中的状态分配,如果不作明确说明,综合工具会自动选择状态机的状态分配,而忽略Verilog代码中指定的状态码。要改变这个设置,在QuartusⅡ中选择AssignmentsSettings,单击窗口左端的Analysis Synthesis Settings项,如图6.19所示,在State Machine Processing栏中选中User-Encoded即可。 (4) 编译工程,用RTL Viewer工具查看具体电路。单击电路中的状态机,将它与图6.18的状态图比较,检查是否正确。打开编译报告,选择Analysis Synthesis Settings,然后单击State Machines可以查看状态机的状态代码。 (5) 对生成的电路进行仿真。 (6) 确认电路功能没有问题后即可分配引脚,将电路下载到FPGA中,进行实际功能的 测试。 (7) 在第(3)步中,在State Machine Processing栏中选择One-hot选项,编译后打开编译报告,选择Analysis Synthesis Settings,然后单击State Machines可以查看状态机的状态代码,再将该状态代码与表6.8的One-hot编码作比较,看看有何不同。 图6.19 在QuartusⅡ中改变状态机设置的处理方法 6.7.3 序列检测FSM 本练习中使用两个移位寄存器实现序列检测FSM。在Verilog代码中用两个4位移位寄存器来识别0000和1111这两个序列。参照6.7.2小节的步骤完成练习,并将其结果与One-hot编码FSM及二进制编码FSM进行比较。请仔细考虑一下能否只用一个4位移位寄存器来实现这个状态机,为什么? 6.7.4 模10加计数器 本练习实现一个模10加计数器,具体功能如下:Reset输入用于将计数器清零;两个输入和用于控制计数器的计数操作,当=00时计数值不变,当=01时计数值加1,当=10时计数值加2,当=11时计数值减1。所有的改变都由Clock输入端的上升沿触发。用SW2和SW1分别作为和,用SW0作为Reset输入,用KEY0作为手动Clock输入,在HEX0上显示计数器的十进制计数值。 请按以下步骤完成练习: (1) 新建一个QuatusⅡ工程,以在DE2上实现该计数器。 (2) 建立一个Verilog文件,参照代码6.7所示的代码架构实现所要求的电路。 (3) 将Verilog文件添加到工程中,编译工程并对电路进行仿真,确定其功能的正确性。 (4) 分配引脚,将显示输出连接到HEX0上。 (5) 重新编译工程,将电路下载到DE2平台上并进行功能测试。 6.7.5 用移位寄存器与FSM实现“HELLO”的循环显示 本练习用移位寄存器结合FSM实现在DE2平台上的“HELLO”循环显示。在HEX7~HEX0上循环显示“HELLO”,根据手动时钟输入脉冲的控制,每接收到一个脉冲,显示左移一位,当“HELLO”移出左边后,从右边重新开始显示。 将8个7位寄存器按流水线的形式排列,即第一个寄存器的输出作为第二个寄存器的输入,第二个寄存器的输出作为第三个寄存器的输入,依此类推。每个寄存器的输出同时驱动七段数码管显示。请设计一个状态机对寄存器流水线进行以下控制: (1) 在前8个时钟,FSM将字符“H,E,L,L,O, , , ”分别插入8个7位寄存器。 (2) 第(1)步完成后,将寄存器流水线配置成循环模式,即最后一个寄存器的输出作为第一个寄存器的输入,使字符可以无限循环显示。 建立一个新的QuartusⅡ工程,完成以上任务。用DE2平台上的KEY0作为FSM及移位寄存器的手动时钟输入,用SW0作为低电平有效同步清除输入,并参照代码6.7所示的代码架构实现所要求的电路。工程编译完成后,将
文档评论(0)