0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

简述阻塞赋值和非阻塞赋值的可综合性

电子工程师 来源:FPGA设计论坛 作者:FPGA设计论坛 2021-05-12 09:45 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

阻塞赋值和非阻塞赋值的可综合性

Blocking Assignment阻塞赋值和NonBlocking Assignment非阻塞赋值,原本是软件进程管理的术语。由于Verilog团队是从C语言发展,所以基于的C的术语和概念出现在EDA中,原本是一个“误打误撞”,但历史造成的现实则是:必须理解和正确掌握它们的用法。

软件中阻塞进程,是指调用返回之前,应用进程一直等待:

395df0f8-b2a3-11eb-bf61-12bb97331649.png

为了保证应用进程的效率,不至于被子程序的运算过程“挂起”。非阻塞进程得到应用:

3968d040-b2a3-11eb-bf61-12bb97331649.png

在非阻塞赋值进程中,无论子程序是否返回,不影响应用进程的正常运行。C语言的阻塞和非阻塞概念被Verilog团队引用,Verilog的阻塞赋值:

39747fe4-b2a3-11eb-bf61-12bb97331649.png

Verilog的非阻塞赋值:

3984bb34-b2a3-11eb-bf61-12bb97331649.png

关于阻塞和非阻塞争议中,有一个辩论双方都引用的电路模型:反馈震荡器:

398e8ede-b2a3-11eb-bf61-12bb97331649.png

其中,复位信号rst_n初始化RA(a)为0, RB(b)为1。观察其物理连接,在时钟沿作用下,两个寄存器将互相交换数据。(同时交换)

为以上电路模型进行验证,在循环行为体并分别使用阻塞赋值和非阻塞赋值。并验证其前仿和后仿,观察对比真实性。

应该得到的结论:

使用阻塞赋值:前仿不真实(没有发生两个寄存器的交换),后仿真实(发生交换)

使用非阻塞赋值:前仿真实(交换),后仿真实(交换)

基于以上结论:

“倒阻派”认为,没有使用阻塞赋值的必要,必须在行为语句赋值中全部使用非阻塞。

“挺阻派”认为,基于电平敏感赋值用阻塞,沿敏感赋值用非阻塞,阻塞语句是必要的。

2000年以后,进入从“综合为王”进入“验证为王”的时代。同样的Verilog代码需要回到电脑中,用于非综合目的。验证代码中的赋值驱动与软件编写概念相同,带来非常大的便利。这就是“阻塞”赋值的反转。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 非阻塞赋值
    +关注

    关注

    0

    文章

    11

    浏览量

    10107
  • 阻塞
    +关注

    关注

    0

    文章

    24

    浏览量

    8390

原文标题:FPGA学习:阻塞赋值和非阻塞赋值的可综合性

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    飞凌嵌入式ElfBoard-文件I/O的深入学习之阻塞I/O与阻塞I/O

    可能会使程序阻塞等待,直到有数据可读时才会被唤醒返回。 普通文件的读写操作是不会阻塞的,不管读写多少个字节数据,read或 write一定会在有限的时间内返回,所以普通文件一定是以阻塞
    发表于 12-01 13:07

    CH32V307 串口发送阻塞的原因?怎么解决?

    */ modbus_set_rx_mode(master); modbus发送,不知为何阻塞在rt_device_write,初始化 find open 正常
    发表于 09-18 06:06

    【HZ-RK3568开发板免费体验】基于 Select Poll的TCP发服务器

    ,一般分为网络IO(本质就是socket读写)和磁盘IO。 IO模型大致可以分为:同步阻塞、同步阻塞、异步、信号驱动。 细分为5种I/O模型: 1)
    发表于 08-19 22:01

    matlab appdesigner 表格组件赋值问题,求助

    如上图所示,我在用matlab2021Ra APP模块进行编程的时候,想在表格中调入自己编写的结构数组,我从网上AI了一个程序语句,看着没问题,但是就是给表格赋值不了,还请各位大神帮忙看一下这个是怎么回事,我是初学者,请各位帮忙看看
    发表于 07-12 11:45

    合肥综合性国家科学中心能源研究院与宏微科技达成合作

    为深化产学研协同创新,推动科技创新和产业升级,近日,合肥综合性国家科学中心能源研究院与江苏宏微科技股份有限公司在智慧电力中心隆重举行“功率器件可靠评测方法和寿命预测联合实验室”签约揭牌仪式。江苏宏
    的头像 发表于 06-14 14:22 820次阅读

    CH32V307串口发送阻塞的原因?如何解决?

    */ modbus_set_rx_mode(master); modbus发送,不知为何阻塞在rt_device_write,初始化 find open 正常
    发表于 06-11 08:05

    在testbench中如何使用阻塞赋值阻塞赋值

    本文详细阐述了在一个testbench中,应该如何使用阻塞赋值阻塞赋值。首先说结论,建议在testbench中,对时钟信号(包括分频时钟
    的头像 发表于 04-15 09:34 1003次阅读
    在testbench中如何使用<b class='flag-5'>阻塞</b><b class='flag-5'>赋值</b>和<b class='flag-5'>非</b><b class='flag-5'>阻塞</b><b class='flag-5'>赋值</b>

    如何综合性测试一款电源芯片?——以ASP3605芯片为例

    引言 在现代电子系统中,电源芯片是不可或缺的核心组件之一。其性能的优劣直接关系到整个电子设备的稳定性和可靠。因此,对电源芯片进行综合性的测试至关重要。本文以国科安芯生产的ASP3605芯片为例
    的头像 发表于 04-07 09:26 922次阅读

    在S32DS上使用JLINK调试S32K341,被阻塞了,怎么处理?

    我正在尝试使用 S32K341 在新板上刷写程序,但在 S32K3X4EVB 上运行并为 S32K341配置的相同代码出现错误。具体来说,当我使用 S32DS 的 J-Link 探针运行调试时,它在此地址被阻塞,并且不会将其闪存到内存中。有人遇到同样的问题或可以帮助我吗?
    发表于 04-03 08:13

    NVIDIA Isaac 是英伟达推出的综合性机器人开发平台

    NVIDIA Isaac 是英伟达推出的综合性机器人开发平台,旨在通过 GPU 加速、物理仿真和生成式 AI 技术,加速自主移动机器人(AMR)、机械臂及人形机器人的开发与部署。以下从核心组件、技术
    的头像 发表于 04-02 18:03 1940次阅读

    FreeRTOS进阶使用之流缓冲区:高效处理字节流的秘密武器

    开销 基于连续内存存储,相比队列(每个数据项独立存储)更节省RAM。 触发通知机制 当缓冲区数据量达到预设的触发阈值**时,自动唤醒等待的任务,避免轮询开销。 阻塞阻塞模式 阻塞
    发表于 03-24 11:37

    给uint32_t数组填充整型值,除使用循环赋值外有没有c库函数可以实现?

    给uint32_t数组填充整型值,除使用循环赋值外有没有c库函数可以实现
    发表于 03-07 17:05

    比斯特BT-100V20C100F 电池组综合性能测试机:多领域的锂电池性能检测能手

    锂电池在众多领域都有着多方位且关键的应用,而比斯特BT-100V20C100F 电池组综合性能测试机凭借其出色的通用和专业,成为了各个领域中锂电池性能检测的得力能手。
    的头像 发表于 03-04 16:52 680次阅读
    比斯特BT-100V20C100F 电池组<b class='flag-5'>综合性</b>能测试机:多领域的锂电池性能检测能手

    “串口阻塞”你真的会用吗?

    很久才会发出来,一下子出来很多数据”。经过帮客户检查应用程序源码,发现应用程序在串口阻塞方面没有做正确的处理,修改后解决。阻塞打开串口open("/dev/tty
    的头像 发表于 02-13 11:42 1199次阅读
    “串口<b class='flag-5'>阻塞</b>”你真的会用吗?

    使用TLV5625在主函数里面的FOR循环中对两通道赋值,一个通道不能更新数据是怎么回事?

    问题:我在使用TLV5625时出现如下问题,在主函数里面的FOR循环中对两通道赋值,2通道DA可以正常更新输出,但是同样的语句放到定时器中断中,只有一个通道正常,另一个通道不能更新数据,请指教
    发表于 01-08 08:23