阻塞赋值和非阻塞赋值学习笔记

1、八条指导性规范

1:当为时序逻辑建模,使用“非阻塞赋值”。

2:当为锁存器(latch)建模,使用“非阻塞赋值”。

3:当用always块为组合逻辑建模,使用“阻塞赋值”

4:当在同一个always块里面既为组合逻辑又为时序逻辑建模,使用“非阻塞赋值”。

5:不要在同一个always块里面混合使用“阻塞赋值”和“非阻塞赋值”。

6:不要在两个或两个以上always块里面对同一个变量进行赋值。

7:使用$strobe以显示已被“非阻塞赋值”的值。

8:不要使用#0延迟的赋值。

 

以上做法的目的:

使得仿真和综合的结果一致。

2、仿真的原理(仿真时间的顺序)

2.1层积事件序列

阻塞赋值和非阻塞赋值学习笔记_第1张图片

2.2 仿真顺序图

阻塞赋值和非阻塞赋值学习笔记_第2张图片

2.3 简化的仿真顺序图

去掉monitorstrobe这两个系统函数;

 

 阻塞赋值和非阻塞赋值学习笔记_第3张图片

3、这个问题牵扯:Verilog的仿真和综合的基本原理,目前接触到的论文也不能够明确的表达其基本原理。

所以,我就按照那8条做就好了,基本原理先不管了。

你可能感兴趣的:(FPGA)