Verilog基础:避免混合使用阻塞和非阻塞赋值 | 您所在的位置:网站首页 › 阻塞和非阻塞赋值的区别是什么 › Verilog基础:避免混合使用阻塞和非阻塞赋值 |
相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm=1001.2014.3001.5482 “避免在一个always块中混杂阻塞赋值和非阻塞赋值”,这条原则是著名的Verilog专家Cliff Cummings在论文SUNG2000中提出的,这个观点在公众讨论时受到了广泛的质疑。有人认为可以在时钟沿触发的always块里把组合逻辑的阻塞赋值和时序逻辑的非阻塞逻辑安全地混杂在一起。诚然,但是这种编码风格有以下几点不足。 这种always块的事件调度理解起来比较费劲。这种always块内的非阻塞赋值应该放在最后。在零延迟的RTL模型中,触发器的输入信号(临时变量)和对应的触发器输出会在同一个时钟沿变化,这种波形令人困惑。下面来看一下段简单的代码,它拥有正确的代码风格,即没有把阻塞赋值和非阻塞赋值混杂在一起。 module test( output reg q, output y, input a, b, c, clk, rst_n); wire d; always@(posedge clk or negedge rst_n) if(!rst_n) q |
CopyRight 2018-2019 实验室设备网 版权所有 |