当前位置: 首页 > news >正文

阻塞赋值和非阻塞赋值

1. 阻塞赋值(Blocking Assignment)

  • 语法=

  • 行为

    • 顺序执行:代码逐行执行,赋值操作会阻塞后续代码,直到当前赋值完成。

    • 立即生效赋值后的新值在当前仿真时间步即可被后续代码使用

  • 适用场景

    • 组合逻辑:用于描述组合逻辑(如 always @(*)),需要即时更新信号。

    • Testbench中的顺序操作:在测试平台中按顺序生成激励信号。

  • 代码示例

    always @(*) begin
        a = x;    // 立即赋值,a的值立即更新
        b = a + y; // 使用更新后的a计算b
    end

2. 非阻塞赋值(Non-blocking Assignment)

  • 语法<=

  • 行为

    • 并行执行:所有右侧表达式同时计算,赋值操作在当前时间步结束时统一更新

    • 保持旧值在同一个 always 块中,后续代码仍使用赋值前的旧值。

  • 适用场景

    • 时序逻辑:用于描述触发器或寄存器(如 always @(posedge clk),避免竞争条件。

    • 跨时钟域同步:确保多个寄存器的值同步更新。

  • 代码示例

    always @(posedge clk) begin
        a <= x;    // 计算x的值,但a在时间步结束时更新
        b <= a + y; // 使用赋值前的旧a值计算b
    end

 

关键区别对比

特性阻塞赋值 (=)非阻塞赋值 (<=)
执行顺序顺序执行,阻塞后续代码并行执行,不阻塞后续代码
生效时机立即生效(当前时间步)延迟生效(时间步结束时)
适用逻辑组合逻辑时序逻辑
硬件映射组合电路(如多路选择器)时序电路(如触发器、寄存器)
竞争风险高(可能导致仿真与综合不一致)低(仿真行为接近实际硬件)

经典示例

示例1:交换两个值
// 阻塞赋值(顺序执行)
always @(posedge clk) begin
    a = b;   // a立即变为b的值
    b = a;   // b变为新的a值(即原b的值)
end
// 结果:a和b的值互换!

// 非阻塞赋值(并行执行)
always @(posedge clk) begin
    a <= b;  // 记录b的值,但a尚未更新
    b <= a;  // 记录a的旧值
end
// 结果:a和b的值互换!

 

  • 阻塞赋值:实际交换(因为立即生效)。

  • 非阻塞赋值:实际交换(因为并行记录旧值)。

总结

阻塞赋值:用于组合逻辑或测试平台的顺序操作。

非阻塞赋值:用于时序逻辑的寄存器更新。

正确使用两种赋值方式是避免Verilog代码出现竞争条件和功能错误的关键!

    • 黄金规则

      • 在 always @(posedge clk) 中始终使用非阻塞赋值

      • 在 always @(*) 中始终使用阻塞赋值

相关文章:

  • Rust中的异步编程:构建简单的网页爬虫
  • 多通道数据采集和信号生成的模块化仪器如何重构飞机电子可靠性测试体系?
  • 数字化赋能:制造业如何突破低效生产的瓶颈?
  • 光流法处理水流:原理与应用
  • 本地部署DeepSeek全攻略:Ollama+Chatbox保姆级教程
  • 如何使用Python编程实现捕获笔记本电脑麦克风的音频并通过蓝牙耳机实时传输
  • BIO、NIO、AIO解析
  • 【AI学习从零至壹】Numpy基础知识
  • 鸿蒙 ArkUI 实现敲木鱼小游戏
  • 2025年跟上AI新时代:带AI人工智能的蜜罐系统T-Pot
  • 介绍下pdf打印工具类 JasperPrint
  • 使用Apifox动态生成请求参数
  • 源网荷储一体化 EMS3.0:助力企业微电网能效提升
  • JDBC 基础
  • c++中如何打印未知类型对象的类型
  • 学习大模型开发要学什么
  • ssh和rdp踩坑
  • 激活函数表示和应用
  • cFosSpeed 低延迟网络加速器 | 游戏/VoIP 专属优化
  • 制造业数字化实践案例丨国内某大型物联网企业数字化项目管理系统,赋能品牌和生态战略落地
  • 李云泽:支持小微企业、民企融资一揽子政策将从增供给、降成本、提效率、优环境4个方面发力
  • 蓝佛安:中方将采取更加积极有为的宏观政策,有信心实现今年5%左右增长目标
  • “五一”假期银联、网联共处理支付交易234.39亿笔
  • 退休11年后,71岁四川厅官杨家卷被查
  • 联合国秘书长古特雷斯呼吁印巴保持最大克制
  • 消失的日本中年劳动者:任何人都有与社会脱节的风险