Verilog三段式状态机描述

上传人:cl****1 文档编号:555191297 上传时间:2023-07-27 格式:DOC 页数:2 大小:36KB
返回 下载 相关 举报
Verilog三段式状态机描述_第1页
第1页 / 共2页
Verilog三段式状态机描述_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《Verilog三段式状态机描述》由会员分享,可在线阅读,更多相关《Verilog三段式状态机描述(2页珍藏版)》请在金锄头文库上搜索。

1、Verilog三段式状态机描述时序电路的状态是一个状态变量集合,这些状态变量在任意时刻的值都包含了为确定电路的未来行为而必需考虑的所有历史信息。状态机采用VerilogHDL语言编码,建议分为三个always段完成。三段式建模描述FSM的状态机输出时,只需指定case敏感表为次态寄存器,然后直接在每个次态的case分支中描述该状态的输出即可,不用考虑状态转移条件。三段式描述方法虽然代码结构复杂了一些,但是换来的优势是:使FSM做到了同步寄存器输出,消除了组合逻辑输出的不稳定与毛刺的隐患,而且更利于时序路径分组,一般来说在FPGA/CPLD等可编程逻辑器件上的综合与布局布线效果更佳。示列如下:第

2、一个进程,同步时序always模块,格式化描述次态寄存器迁移到现态寄存器always(posedgeclkornegedgerst_n)/异步复位if(!rst_n)current_state=IDLE;elsecurrent_state=next_state;/注意,使用的是非阻塞赋值/第二个进程,组合逻辑always模块,描述状态转移条件判断always(current_state)/电平触发beginnext_state=x;/要初始化,使得系统复位后能进入正确的状态case(current_state)S1:if(.)next_state=S2;/阻塞赋值endcaseend第三个进程

3、,同步时序always模块,格式化描述次态寄存器输出always(posedgeclkornegedgerst_n)./初始化case(next_state)S1:out1=1b1;/注意是非阻塞逻辑S2:out2=1b1;default:./default的作用是免除综合工具综合出锁存器endcaseend两段式有限状态机与三段式有限状态机的区别FSM将时序部分(状态转移部分)和组合部分(判断状态转移条件和产生输出)分开,写为两个always语句,即为两段式有限状态机。将组合部分中的判断状态转移条件和产生输入再分开写,则为三段式有限状态机。区别:二段式在组合逻辑特别复杂时适用,但要注意需在后

4、面加一个触发器以消除组合逻辑对输出产生的毛刺。三段式没有这个问题,由于第三个always会生成触发器。设计时注意方面:1. 编码原则,binary和gray-code适用于触发器资源较少,组合电路资源丰富的情况(CPLD),对于FPGA,适用one-hotcode。这样不但充分利用FPGA丰富的触发器资源,还因为只需比较一个bit,速度快,组合电路简单。2. FSM初始化问题:GSR(GobalSet/Reset)只是在加电时清零所有的reg和片内ram,并不保证FSM能进入初始化状态,要利用GSR,方案是适用one-hotcodewithzeroidle,即初始状态编码为全零。已可以适用异步复位rst3. FSM输出可以适用task4FSM中的case最好加上default,默认态可以设为初始态5.尤其注意:第二段的always(组合部分,赋值用=)里面判断条件一定要包含所有情况!可以用else保证包含完全。6第二段always中,组合逻辑电平要维持超过一个clock,仿真时注意。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号