阻塞赋值与非阻塞赋值
阻塞赋值,操作符为“=”,“阻塞”是指在进程语句(initial和always)中,当前的赋值语句会阻断其后语句的正常执行,也就是说后面的语句必须等到当前的赋值语句执行完毕才能执行。而且阻塞赋值可以看成是一步完成的,即:计算等号右边的值并同时赋给左边变量。
非阻塞赋值,操作符为“<=”,“非阻塞”是指在进程语句(initial和always)中,当前的赋值语句不会阻断其后语句的正常执行。
本章对比了 Verilog 语法中阻塞赋值和非阻塞赋值的区别。通过证明非阻塞赋值多种赋值顺序生成电路的唯一性,与阻塞赋值多种赋值顺序生成电路的不确定性,来展示使用非阻塞赋值对设计可预测性的重要意义。在今后的设计中会经常用到两种赋值方式,请多加思考其中区别及意义。
在今后的设计中,掌握以下六个原则,可解决在综合后仿真中出现绝大多数的冒险竞争问题。
1) 时序电路建模时,用非阻塞赋值;
2) 锁存器电路建模时,用非阻塞赋值;
3) 用always块建立组合逻辑模型时,用阻塞赋值;
4) 在同一个always块中建立时序和组合逻辑电路时,用非阻塞赋值;
5) 在同一个always块中不要既用非阻塞赋值又用阻塞赋值;
6) 不要在一个以上的always块中为同一个变量赋值。 阻塞赋值与非阻塞赋值 阻塞赋值与非阻塞赋值 阻塞赋值与非阻塞赋值
页:
[1]