fpga.love
EN App
知识库›Verilog 中阻塞赋值和非阻塞赋值怎么选? · FPGA 知识库

Verilog 中阻塞赋值和非阻塞赋值怎么选?

Verilog

触发器与数字波形示意封面

图:寄存器级电路与数字波形——时序逻辑与同步赋值的抽象表达

always 块建模时序逻辑用非阻塞,组合逻辑用阻塞,避免竞争冒险和仿真综合不一致。

为什么要区分Why It Matters

两条规则的本质是建模语义:组合逻辑用阻塞赋值,语句按顺序立即生效,对应真实连线;时序逻辑用非阻塞赋值,等时钟沿到来时才统一更新输出,对应触发器采样。混用会导致仿真与综合结果不一致,甚至出现竞争冒险。

组合逻辑 always @(*) 阻塞赋值“=” a b & y 立即生效,对应真实连线 时序逻辑 always @(posedge clk) 非阻塞赋值“<=” d FF clk q 时钟沿统一更新,对应触发器采样

图:阻塞赋值与非阻塞赋值的行为差异

记住一个简洁口诀:时序 always 块用 <=,组合 always 块用 =,同一个 always 块内不要混用两种赋值。

相关视频

更多 FPGA 实战讲解,前往 fpga.love 视频专区观看

视频即将上线

订阅 fpga.love

每日快报 · 每周精选 · 每月深度刊