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

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

3天内不再提示

FPGA基础篇(一):阻塞与非阻塞赋值,不只是比原始信号差一个时钟周期的问题!(深入剖析)

黄博 2017-09-19 18:32 次阅读

阻塞与非阻塞赋值

首先从名字上理解,阻塞赋值即赋值没完成,后边的语句将无法执行,非阻塞刚好与其相反,即赋值完不完成并不阻碍后续程序的执行,所以我们常说非阻塞赋值的对象并未立马得到新值,如果从时序来看,被赋值对象会比赋值对象差一个时钟周期。

有了上述理解之后,我们就很容易明白为什么阻塞赋值的对象会立即发生改变,在fpga中我们多接触到的是时序电路,并不希望被赋值对象立即改变,所以有对于组合电路而言,常用阻塞赋值,时序电路常用非阻塞赋值。

先看一个大家都熟悉的例子:

先看非阻塞代码:

01.png

clk为主时钟分频之后的时钟,clk先赋值给a,然后a在赋值给b,看一看生成的电路图

02.png

可以看出是两个触发器,而且前一个触发器的输出是后一个触发器的输入,再来看看阻塞的

03.png

04.png

由于完全为组合电路并未有触发器产生,从仿真结果来看两种的区别

05.png

相信大家能够很容易看出哪个是阻塞的,哪个是非阻塞的,从非阻塞的时序来看,a比clk延迟了一个主时钟,b比a又延迟了一个主时钟,这不是我想说的重点,我想让大家看看a和b是什么时候开始发生变化的,教材上一直说是当整个进程结束时,a和b的值才发生更新,试问你知道什么时候进程结束么?从仿真结果来看,还不如理解为,在每个时钟的上升沿到来时a,b的值立即改变,只不过比原始信号差一个时钟周期。

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

    关注

    1629

    文章

    21729

    浏览量

    603017
收藏 人收藏

    评论

    相关推荐

    Verilog语言中阻塞阻塞赋值的不同

    来源:《Verilog数字系统设计(夏宇闻)》 阻塞阻塞赋值的语言结构是Verilog 语言中最难理解概念之。甚至有些很有经验的Ver
    的头像 发表于 08-17 16:18 6378次阅读

    fpga基础():阻塞阻塞赋值

    时钟,ba又延迟了时钟,这不是我想说的重点,我想让大家看看a和b是什么时候开始发生变化的,教材上
    发表于 04-05 09:53

    【技巧分享】FPGA至简设计-阻塞赋值阻塞赋值

    阻塞阻塞作者:小黑同学、 概述1、阻塞赋值对应的电路往往与触发沿没有关系,只与电平的变化有
    发表于 04-24 14:49

    verilog中阻塞赋值阻塞赋值

    阻塞阻塞语句作为verilog HDL语言的最大难点之直困扰着FPGA设计者,即使是
    发表于 03-15 10:57 7000次阅读

    深入理解阻塞阻塞赋值

    这是很好的学习阻塞阻塞的资料,对于FPGA的学习有很大帮助。
    发表于 04-22 11:00 11次下载

    FPGA学习系列:5.阻塞赋值阻塞赋值

    设计背景: 阻塞 (=)和阻塞(=)直是在我们FPGA中讨论的问题,资深的学者都是讨论的是赋值
    的头像 发表于 05-31 11:40 6809次阅读
    <b class='flag-5'>FPGA</b>学习系列:5.<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>

    阻塞赋值阻塞赋值的用法文章就够了

    对于VerilogHDL语言中,经常在always模块中,面临两种赋值方式:阻塞赋值阻塞赋值
    的头像 发表于 01-30 17:41 2.2w次阅读

    IEEE Verilog阻塞赋值阻塞赋值的区别

    阻塞赋值对应的电路往往与触发沿没有关系,只与输入电平的变化有关系。阻塞赋值对应的电路结构往往与触发沿有关系,只有在触发沿时才有可能发生
    的头像 发表于 06-17 11:57 1.1w次阅读
    IEEE Verilog<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>的区别

    VerilogHDL语言:清阻塞赋值阻塞赋值

    不清楚,Bug就会找到我们,下面文扫清阻塞赋值阻塞赋值所有的障碍。 基本概念
    发表于 11-19 15:48 1150次阅读

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

    ,所以基于的C的术语和概念出现在EDA中,原本是“误打误撞”,但历史造成的现实则是:必须理解和正确掌握它们的用法。 软件中阻塞进程,是指调用返回之前,应用进程直等待: 为了保证应
    的头像 发表于 05-12 09:45 2719次阅读
    简述<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>的可综合性

    时序逻辑中的阻塞阻塞

    Verilog HDL的赋值语句分为阻塞赋值阻塞赋值两种。
    的头像 发表于 03-15 13:53 3050次阅读

    Verilog中阻塞阻塞赋值金规

    对于VerilogHDL语言中,经常在always模块中,面临两种赋值方式:阻塞赋值阻塞赋值
    的头像 发表于 06-01 09:21 1278次阅读

    文了解阻塞赋值阻塞赋值

    今天给大家普及阻塞赋值阻塞赋值的相关知识
    的头像 发表于 07-07 14:15 2179次阅读
    <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><b class='flag-5'>赋值</b>

    阻塞赋值阻塞赋值

    ”=“阻塞赋值与”
    的头像 发表于 09-12 09:06 1030次阅读
    <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>

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

    Verilog中同步和异步的区别,以及阻塞赋值阻塞赋值的区别。 、Verilog中同步和异
    的头像 发表于 02-22 15:33 1683次阅读