当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]verilog中阻塞赋值和非阻塞赋值

阻塞和非阻塞语句作为verilog HDL语言的最大难点之一,一直困扰着FPGA设计者,即使是一个颇富经验的设计工程师,也很容易在这个点上犯下一些不必要的错误。阻塞和非阻塞可以说是血脉相连,但是又有着本质的差别。理解不清或运用不当,都往往会导致设计工程达不到预期的效果,而其中的错误又很隐晦。下面我给大家谈谈阻塞和非阻塞语句的本质区别和在FPGA设计中的不同运用。

  阻塞语句

  顾名思义,即本条语句具有影响下一条语句的作用,在同一个进程always中,一条阻塞赋值语句的执行是立刻影响着下条语句的执行情况和结果。如果该条语句没有执行完,那么下条语句不可能进入执行状态的,因此,从字面层上理解,该条语句阻塞了下面语句的执行。阻塞语句最能体现verilog HDL和C语言之间的血缘关系,比如,在时钟沿触发的always进程里,若先执行b=c,再执行a=b,那么本质上,在一个时钟沿触发里面,a=c成立,即是说,不要b变量,直接在进程里赋值a=c,结果是一样的。这和c语言中b=c,a=b性质相同。

  非阻塞语句

  非阻塞语句应该来说,更能体现硬件电路的特点。这正是非阻塞语句广泛应用于时序逻辑电路的原因。接上面的例子,如果在一个时钟沿触发的always进程里面,b<=c,a<=b那么就不可能直接在进程里面赋值a<=c.因为c的值要经过两个时钟延迟才传到a里面,即c若从0变为1,那么要经过两个clk上升沿才传到a,a的值才从0变为1。两次赋值正是体现了两个时钟延迟的特点。这种特点即是非阻塞语句非阻塞的的原因导致的,就是说,a<=b,不会因为b<=c没有执行完毕而不执行,只要时钟触发进程,那么a<=b,b<=c同时执行。所以,如果c为 1,b为0,a为1的话,那么在在非阻塞语句的进程里面,一个时钟沿到来,由于他们之间是同时执行的,所以把c的1赋给了b,把b的0赋给了a,但是在阻塞语句里面,c的1先给了b,然后b把新赋值的1又给了a,那么a在一个时钟之后即变成了1。(在一次触发进程里,无论是阻塞和非阻塞语句,每条语句只能执行一次)

  所以从上面的介绍里面,可以看出,阻塞语句是顺序执行的,而非阻塞语句是同时执行的,那么,如何在设计里面运用好阻塞语句和非阻塞语句呢,总体上来讲,遵循大体原则:阻塞语句运用在组合逻辑电路设计里面,非阻塞语句运用在时序逻辑电路设计里面。但是一般来讲,一个设计往往包含着组合逻辑和时序逻辑。可以再细分为以下几个情况,并可以用阻塞语句和非阻塞语句不同的设计来区别讨论它们之间的优缺点,进一步理解清楚。。。。。。(最直观的说法就是如下仿真一下:观察out1~out4的变化,就明白了!

  `timescale 1ns/100ps

  module test1();

  reg clk;

  reg sigin;

  reg out1;

  reg out2;

  reg out3;

  reg out4;

  //assign #10 out3 = sigin;

  always #10 clk=~clk;

  always #70 sigin = ~sigin;

  initial

  begin

  sigin = 1'b0;

  clk= 1'b0;

  out1 =1'b0;

  out2 =1'b0;

  end

  always @(sigin)

  begin

  $display('%d',$time);

  out1<=sigin;

  out2<= out1;

  out3 = sigin;

  out4 = out3;

  $display('%d',$time);

  end

  endmodule

  #1: 当为时序逻辑建模,使用“非阻塞赋值”。

  #2: 当为锁存器(latch)建模,使用“非阻塞赋值”。

  #3: 当用always块为组合逻辑建模,使用“阻塞赋值”

  #4: 当在同一个always块里面既为组合逻辑又为时序逻辑建模,使用“非阻塞赋值”。

  #5: 不要在同一个always块里面混合使用“阻塞赋值”和“非阻塞赋值”。

  #6: 不要在两个或两个以上always块里面对同一个变量进行赋值。

  #7: 使用$strobe以显示已被“非阻塞赋值”的值。

  #8: 不要使用#0延迟的赋值。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

上海2023年9月19日 /美通社/ -- 近日,上海浦东新区举行2023年经济突出贡献企业表彰活动,向企业颁出经济特别贡献、科技创新突出贡献、先进制造业突出贡献、民营企业突出贡献等九大奖项。活动上,波士顿科学获得“20...

关键字: 医疗器械 进程 内窥镜 医疗技术

上海2023年9月12日 /美通社/ -- 近日,由SGS通标标准技术服务有限公司主办、同济大学张存满教授联合发起的"SGS中国制氢行业高峰论坛"于成都圆满闭幕。本次会议得到了上级单位中国标准化研究院...

关键字: AN 进程 NI 测试

北京2023年9月8日 /美通社/ -- 近日,浪潮信息与连用科技达成合作,双方将充分发挥各自行业领域内的专业优势和资源,在产品、技术、解决方案、市场营销等方面进行深度合作,共同推动企业内容管理的数智化转型进程。...

关键字: 软硬件 智能化 大数据 进程

深圳2023年8月31日 /美通社/ -- 2023年8月30日,德国莱茵TÜV(以下简称"TÜV莱茵")集团首席执行官、管理执行董事...

关键字: MICHAEL 新能源 进程 智能制造

(全球TMT2023年8月29日讯)优克联集团宣布与MAYA Net Solution Co., Ltd (MAYA)和NTT Media Supply Co., Ltd.(日本电信电话株式会社旗下子公司)共同启动物联...

关键字: 进程 物联网 MEDIA COO

杭州2023年8月24日 /美通社/ -- 近日,趣链科技成功通过联合国全球契约办公室审核,正式加入联合国全球契约组织(UNGC)。这不仅是对公司多年来践行社会责任的充分肯定,同时也代表着趣链科技以中国区块链领军企业的身...

关键字: 可持续发展 智慧城市 进程 APP

上海2023年8月23日 /美通社/ -- 2023年8月23日,时值全球领先的实时3D引擎Unity在华设立合资公司Unity中国一周年之际,担负着赋能本土开发者、服务国内...

关键字: UNITY 开发者 微信小游戏 进程

北京2023年8月21日 /美通社/ -- 8月18日,用友网络主办的"2023全球商业创新大会"在上海隆重召开。本次大会以"数据驱动 智能运营"为主题,汇聚优秀企业代表、技术大咖...

关键字: 数字化 网络 AI 进程

深圳2023年3月14日 /美通社/ -- 当地时间3月10日,理邦秘鲁办事处在利马圣伊西德罗正式设立,理邦全球化战略再上新台阶,将为拉丁美洲,尤其是为安第斯地区的客户提供更适宜当地需求的解决方案,成为助推拉美市场实现跨...

关键字: 仪器 医疗器械 超声 进程

上海2023年3月9日 /美通社/ -- 2023年3月9日,继2020年赛诺菲宣布对全球风险投资基金凯辉创新基金进行战略投资之后,赛诺菲旗下消费者健康药业再次加码,正式宣布完成对凯辉基金旗下消费共创基金的战略投资,并将...

关键字: 生态系统 数字化 BSP 进程
关闭
关闭