verilog 三段式状态机 求助
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了verilog 三段式状态机 求助相关的知识,希望对你有一定的参考价值。
在用verilog写三段式代码时,其中一个组合逻辑短路用来控制状态机的输出。每个状态都要对输出信号赋值,是为了防止生成锁存器。如果我已经在每个状态中,都把输出信号赋值了,那这些信号是不是对应的生成寄存器了?还是什么?在always块内赋值的变量是reg型的,不一定都是寄存器吗?
always @(*)
begin
。。。
end
所以呢!区分是要看是否收到时钟控制。 当然时序逻辑中 if……else ,case 不完整时会产生锁存器。总之组合逻辑不会产生寄存器, 时序逻辑中可以包含组合逻辑和寄存器(即可包含锁存器和寄存器) 说的还不是很具体,但基本应该能了解一些,希望对LZ有所帮助!!追问
锁存器是组合逻辑?
追答不好意思,是我理解有误,锁存器为电平控制,组合逻辑由于输入即反应到输出,故应避免锁存器,寄存器由锁存器或触发器构成!
参考技术A Verilog三段式状态机中,只有时序逻辑部分的信号会生成寄存器。“在always块内赋值的变量是reg型的,不一定都是寄存器吗?”
是的,有的会被综合器综合掉,有的会被综合成所存器,具体情况具体分析。
楼主可以通过RTL Viewer工具(ISE)查看状态机被综合后的逻辑框图。 参考技术B 这个语句里面赋值应该是提示你产生锁存器的。因为这个是组合逻辑了,容易产生锁存器。你的alwasy块描述的是时序的话,会产生寄存器,描述的是组合逻辑的话就很容易产生所存了,都是存贮单元。
以上是关于verilog 三段式状态机 求助的主要内容,如果未能解决你的问题,请参考以下文章
在用verilog编写三段式状态机的时候,我看网上很多地方都是提到格式如下:always @ (posedge clk or negedg