verilog 中阻塞与非阻塞的问题

2025-04-27 09:42:33
推荐回答(2个)
回答1:

先说同一个语句同时使用阻塞式赋值和非阻塞式赋值综合时是通不过的,这种情况只在仿真有效。上面一个空是011,下面是001

阻塞式赋值语句可以这么理解,先要完成本条语句才能执行下一条,即等式左边的变量要先被更新。而阻塞式是先计算右边的值,再在下一时刻同时赋值,电路里面下一刻我理解为下一个时钟沿,仿真里我只能说下一时刻···
那么这一段代码的执行顺序可以这样理解,”Q_State=3’b011“先执行完毕,Q_State变为011,然后Q_State<=3’b001开始执行(计算右边的值),同时display”Q_State“(此时Q_State未更新,即值仍为011),同时延时5个单位,Q_State更新为001,延时完毕后display”Q_State“。

回答2:

基本上<=会延迟一个时钟输出