← 基础知识题集

推荐答案 测试一下

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类型使用
  • 仿真与综合行为差异
← 上一题
登录后反馈错题
下一题 →