verilog中阻塞赋值和非阻塞赋值的区别?
发布网友
发布时间:2024-10-21 17:07
我来回答
共1个回答
热心网友
时间:2024-11-10 20:20
阻塞赋值“=”与非阻塞赋值“<=”是Verilog中两种不同的赋值方式,它们分别对应组合逻辑电路与时序逻辑电路。
阻塞赋值“=”对应组合逻辑电路赋值,且在赋值操作后会阻止后续操作进行。反之,非阻塞赋值“<=”则对应时序逻辑电路赋值,具有存储功能,所有非阻塞赋值在同一时刻进行。
在Vivado综合时序逻辑电路中的赋值代码,可以看到阻塞赋值后的电路如同组合逻辑电路,无缓存功能,out_o被优化掉。而非阻塞赋值的电路则符合时序逻辑电路特性,out_o_1相较于out_o延迟一拍。
仿真中,仿真器规定当前时刻的事件优先级,活跃事件立即执行,其他事件等待到某个时刻开始执行。因此,编写代码时建议遵循以下几点:时序电路使用非阻塞赋值,组合电路使用阻塞赋值,同一always块中避免混用阻塞与非阻塞赋值,以防综合出非预期电路。