推荐答案
测试一下
题目
10 Verilog语法
参考答案与知识点
参考答案
阻塞赋值(=)和非阻塞赋值(<=)是 Verilog 中两种主要的赋值方式,区别在于执行顺序和用途。阻塞赋值在 always 块内顺序执行,当前赋值完成后再执行下一条,因此可能产生组合逻辑;非阻塞赋值则并行执行,所有赋值在块结束时同时更新,用于描述时序逻辑。例如:always @(posedge clk) begin a <= b; c <= a; end 中,a 和 c 同时更新为 b 和 a 的旧值;若改为阻塞赋值 a = b; c = a; 则 c 更新为 b 的新值。在组合逻辑中使用非阻塞赋值可能导致竞态和错误综合结果,在时序逻辑中使用阻塞赋值则可能产生意外锁存。注意:连续赋值 assign 只能用于 wire,过程赋值只能在 always/initial 中使用。仿真和综合时,非阻塞赋值模拟寄存器行为,阻塞赋值模拟组合逻辑行为。
涉及知识点
- 阻塞赋值与非阻塞赋值的区别
- always块敏感列表
- 组合逻辑与时序逻辑描述
- wire与reg类型使用
- 仿真与综合行为差异