首页|嵌入式系统|显示技术|模拟IC/电源|元件与制造|其他IC/制程|消费类电子|无线/通信|汽车电子|工业控制|医疗电子|测试测量
首页 > 分享下载 > 消费类电子 > Veilog三段式状态机

Veilog三段式状态机

资料介绍
Veilog三段式状态机
时序电路的状态是一个状态变量集合,这些状态变量在任意时刻的值都包含了为确定电
路的未来行为而必需考虑的所有历史信息。
状态机采用VerilogHDL语言编码,建议分为三个always段完成。这是为什么呢?

设计FSM的方法和技巧多种多样,但是总结起来有两大类:第一种,将状态转移和状态的
操作和判断等写到一个模块(process、block)中。另一种是将状态转移单独写成一个
模块,将状态的操作和判断等写到另一个模块中(在Verilog代码中,相当于使用两个“
always” block)。其中较好的方式是后者。其原因如下。

首先FSM和其他设计一样,最好使用同步时序方式设计,好处不再累述。而状态机实现后
,状态转移是用寄存器实现的,是同步时序部分。状态的转移条件的判断是通过组合逻
辑判断实现的,之所以第二种比第一种编码方式合理,就在于第二种编码将同步时序和
组合逻辑分别放到不同的程序块(process,block)中实现。这样做的好处不仅仅是便
于阅读、理解、维护,更重要的是利于综合器优化代码,利于用户添加合适的时序约束
条件,利于布局布线器实现设计。

三段式建模描述FSM的状态机输出时,只需指定case敏感表为次态寄存器,然后直接在每
个次态的case分支中描述该状态的输出即可,不用考虑状态转移条件。

三段式描述方法虽然代码结构复杂了一些,但是换来的优势是使FSM做到了同步寄存器输
出,消除了组合逻辑输出的不稳定与毛刺的隐患,而且更利于时序路径分组,一般来说
在FPGA/CPLD等可编程逻辑器件上的综合与布局布线效果更佳。

示例如下:
//第一个进程,同步时序always模块,格式化描述次态寄存器迁移到现态寄存器

always @ (posedge clk or negedge rst_n) //异步复位
if(!rst_n)
curr
标签:Veilog三段式状态机
Veilog三段式状态机
本地下载

评论