一、理论
1.阻塞赋值
作用:用于进行串行逻辑,防止顺序混乱
2.非阻塞赋值
不用assign的原因:assign代表连续,跟非阻塞赋值中的并行赋值矛盾,因此,assign只能用于wire类型变量赋值。
二、实战演练
1.框图
(1阻塞
(2非阻塞
2.波形图(暂不需要)
其实就是在上一讲中的key_in和out信号之间加入了一个中间变量in,然后用以上两种方式进行赋值然后仿真观察即可
3.代码
(1阻塞赋值
在测试模块代码编写的时候需要注意:clk给的是阻塞赋值,其他信号初始化都是非阻塞赋值,因为我们要求clk一定要先初始化,否则就会乱套
(2非阻塞赋值
4.仿真结果
(1阻塞赋值
如图,延迟了一拍之后,out和in_reg同时置1
(2非阻塞赋值
如图,延迟一拍,再延迟一排才可以使得输出为1
三、实验总结
阻塞赋值是上升沿到来时立刻把等号右边赋给左边,按顺序执行完;
非阻塞赋值是上升沿到来时并行地赋值给等号左边,如果有寄存器的话,需要等到下一个上升沿才能赋值。