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

    浏览量

    9999
  • 阻塞
    +关注

    关注

    0

    文章

    24

    浏览量

    8100

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

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

收藏 人收藏

    评论

    相关推荐

    数组名之间可以直接赋值

    数组之间的赋值能不能直接使用等于号?比如这样的代码。 int main(){ int a[5] = {1, 2, 3, 4, 5}; int b[5] = {0}; b = a
    的头像 发表于 11-26 11:23 134次阅读

    socket编程中的阻塞阻塞

    在网络编程中, socket 是一个非常重要的概念,它提供了一个抽象层,使得开发者可以不必关心底层的网络通信细节。 socket 编程中的阻塞阻塞模式是两种不同的操作方式,它们对程序的响应
    的头像 发表于 11-01 16:13 191次阅读

    Verilog HDL的基础知识

    本文继续介绍Verilog HDL基础知识,重点介绍赋值语句、阻塞阻塞、循环语句、同步与异步、函数与任务语法知识。
    的头像 发表于 10-24 15:00 341次阅读
    Verilog HDL的基础知识

    socket阻塞阻塞的区别是什么

    在计算机编程中,socket 是一种通信端点,用于在网络中进行数据传输。Socket 可以是阻塞的或阻塞的,这两种模式在处理数据传输时有不同的行为。 阻塞模式(Blocking Mo
    的头像 发表于 08-16 11:13 663次阅读

    FPGA学习笔记---基本语法

    :task...endtask 11、循环语句:for 12、赋值符号:=和<=(阻塞阻塞赋值) 硬件设计的精髓,力求用最简单的语
    发表于 06-23 14:58

    请问使用lwip创建socket,该如何做到阻塞的接收发送数据?

    请问使用lwip创建socket,该如何做到阻塞的接收发送数据?
    发表于 06-19 06:02

    关于Verilog的一些基本语法

    ,当然除了这种方式还有 <=(阻塞赋值)这种方式;阻塞赋值 = (例如 a = b;):a的值在
    发表于 05-31 18:31

    简谈FPGA研发设计相关规范(很实用)

    ,trior,real,disable,forever,arrays,memories,repeat,task,while。 建立综合模型的原则 要保证Verilog HDL赋值语句的
    发表于 05-13 15:39

    简谈FPGA研发设计相关规范(很实用)

    要保证Verilog HDL赋值语句的综合性,在建模时应注意以下要点: (1)不使用initial。(2)不使用#10。(3)不使用循环次数不确定的循环语句,如forever、while等
    发表于 04-16 15:42

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

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

    什么是阻塞阻塞

    什么是阻塞阻塞?我们就用管道的读写来举例子。
    的头像 发表于 03-25 10:04 498次阅读

    mapgis如何给区属性赋值

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

    proteus属性赋值工具怎么用

    Proteus是一种电路设计和仿真软件,在进行电路设计和仿真时,属性赋值是非常重要的步骤。属性赋值工具可以帮助用户快速有效地配置电路元件的属性,从而实现电路的准确仿真。下面是关于Proteus属性
    的头像 发表于 02-23 17:19 4572次阅读

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

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

    以太网阻塞的常见原因与解决方法

    以太网阻塞的常见原因与解决方法 以太网阻塞是指在以太网中数据流量增加超过网络设备处理能力的情况下,导致网络性能下降、延迟增加、丢包率上升等问题。下面将详细讨论以太网阻塞的常见原因及解决方法。 一
    的头像 发表于 12-27 13:58 1250次阅读