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

    文章

    10

    浏览量

    9899
  • 阻塞
    +关注

    关注

    0

    文章

    24

    浏览量

    8038

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

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

收藏 人收藏

    评论

    相关推荐

    为什么指针之间不要随意赋值呢?

    指针之间也不能随意赋值
    的头像 发表于 03-28 17:13 203次阅读
    为什么指针之间不要随意<b class='flag-5'>赋值</b>呢?

    mapgis如何给区属性赋值

    MapGIS是一款功能强大的地理信息系统软件,它提供了丰富的功能和工具,使用户能够对地理数据进行快速、高效的管理和分析。其中一个重要的功能就是给区属性赋值,即对地图中的区域进行分类和标记,以便更好
    的头像 发表于 02-23 17:49 554次阅读

    verilog同步和异步的区别 verilog阻塞赋值和非阻塞赋值的区别

    Verilog是一种硬件描述语言,用于设计和模拟数字电路。在Verilog中,同步和异步是用来描述数据传输和信号处理的两种不同方式,而阻塞赋值和非阻塞赋值是两种不同的
    的头像 发表于 02-22 15:33 373次阅读

    安全模块的串口收发,想实现阻塞要怎么操作?

    改成阻塞的收发,需要修改那些地方呢?
    发表于 10-28 06:58

    STM32怎么实现一个阻塞性的串口屏收发?

    STM32怎么实现一个阻塞性的串口屏收发
    发表于 10-24 08:15

    什么是阻塞?怎么设计才能满足阻塞指标?

    阻塞就是外部有阻塞干扰信号的时候,设备还可以正常运行。一般分为带内阻塞和带外阻塞,由于直放站都是做宽带设备,一般只提带外阻塞
    的头像 发表于 10-10 11:22 662次阅读

    网络IO模型:阻塞与非阻塞

    阻塞 IO 模型 在Linux ,默认情况下所有的 socket 都是阻塞的,一个典型的读操作流程如图所示。 阻塞和非阻塞的概念描述的是用户线程调用内核 IO 操作的方式:
    的头像 发表于 10-08 17:16 486次阅读
    网络IO模型:<b class='flag-5'>阻塞</b>与非<b class='flag-5'>阻塞</b>

    阻塞赋值左式延时实验的设计资料

    阻塞赋值左式延时实验的设计,适合新手学习参考
    发表于 09-22 07:12

    阻塞赋值与非阻塞赋值

    ”=“阻塞赋值与”
    的头像 发表于 09-12 09:06 651次阅读
    <b class='flag-5'>阻塞</b><b class='flag-5'>赋值</b>与非<b class='flag-5'>阻塞</b><b class='flag-5'>赋值</b>

    阻塞赋值左式延时实验的设计

    发表于 08-18 17:21 0次下载
    <b class='flag-5'>阻塞</b><b class='flag-5'>赋值</b>左式延时实验的设计

    在verilog语句中,阻塞赋值和小于等于均使用符号“<=”,如何区分<=所表示的含义?

    )中,\"<=\"作为阻塞赋值的一部分。 verilog中,一个语法结构不可能同时允许“表达式”和“语句”, 如果某处可以出现表达式,那么就不允许出现语句; 如果
    发表于 08-08 09:32

    一文了解阻塞赋值与非阻塞赋值

    今天给大家普及一下阻塞赋值和非阻塞赋值的相关知识
    的头像 发表于 07-07 14:15 1461次阅读
    一文了解<b class='flag-5'>阻塞</b><b class='flag-5'>赋值</b>与非<b class='flag-5'>阻塞</b><b class='flag-5'>赋值</b>

    博途中SCL的赋值运算

    可通过赋值运算,可以将一个表达式的值分配给一个变量。赋值表达式的左侧为变量,右侧为表达式的值。
    的头像 发表于 06-19 10:57 4234次阅读

    阻塞与非阻塞通信的区别 阻塞和非阻塞应用场景

    阻塞通信(Blocking Communication):当进行阻塞通信时,调用者在发起一个I/O操作后会被阻塞,直到该操作完成返回才能继续执行后续代码。
    的头像 发表于 06-15 17:32 4125次阅读

    Verilog中阻塞和非阻塞赋值金规

    对于VerilogHDL语言中,经常在always模块中,面临两种赋值方式:阻塞赋值和非阻塞赋值。对于初学者,往往非常迷惑这两种
    的头像 发表于 06-01 09:21 573次阅读