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

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

3天内不再提示

阻塞赋值与非阻塞赋值

FPGA学习笔记 来源:FPGA学习笔记 作者:FPGA学习笔记 2023-09-12 09:06 次阅读

”=“阻塞赋值”<=“非阻塞赋值verilog语言中的两种不同的赋值方式,下面将对两种赋值方式进行比较。方便进行理解和使用。

阻塞赋值:=阻塞赋值为执行完一条赋值语句之后再执行下一条,可以理解为顺序执行,而且赋值是立即执行;

非阻塞赋值:<=可以理解为并行执行,不考虑顺序,在always块语句执行完成之后才进行赋值。

下面提供一段黑金官方的仿真程序,各位可以自行进行仿真对比:

(源程序)

module top (din , a , b , c , clk) ;

input din ;

input clk ;

output reg a, b, c;

always @ (posedge clk)

begin

a = din ;

b = a ;

c = b ;

end

endmodule

(激励文件)

`timescale 1ns / 1ns

module top_tb () ;

reg din ;

reg clk ;

wire a, b, c ;

initial

begin

din = 0 ;

clk = 0 ;

forever

begin

#({$random}%100)

din = ~din ;

end

end

always #10 clk = ~clk ;

top

t0 (.din(din) , .a(a) , b(b) , .c(c) , .clk(clk)) ;

endmodule

同时也可以通过RTL图的不同来发现两者的区别:

wKgaomT_A_OAMsk1AADZ_NFvZ2k301.png

注意 :一般情况下,在时序逻辑电路中使用非阻塞赋值,可以避免仿真时出现竞争冒险现象;在组合逻辑中使用阻塞赋值,执行赋值语句之后立即改变;在assign语句中必须使用阻塞赋值。

审核编辑:汤梓红

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

    关注

    1

    文章

    385

    浏览量

    59764
  • 时序逻辑电路

    关注

    2

    文章

    94

    浏览量

    16538
  • 阻塞赋值
    +关注

    关注

    0

    文章

    9

    浏览量

    9157
  • 非阻塞赋值
    +关注

    关注

    0

    文章

    10

    浏览量

    9999
收藏 人收藏

    评论

    相关推荐

    【连载视频教程(六)】小梅哥FPGA设计思想与验证方法视频教程之例解阻塞赋值阻塞赋值

    ,主要通过简单的例子对比了Verilog语法中阻塞赋值阻塞赋值的区别,通过证明
    发表于 09-24 14:02

    【FPGA开源教程连载】第六章 阻塞赋值阻塞赋值

    阻塞赋值阻塞赋值原理分析实验目的:掌握阻塞赋值
    发表于 12-25 01:51

    Verilog中阻塞赋值阻塞赋值的正确使用

    [table][tr][td] Verilog中有两种为变量赋值的方法。一种叫做连续赋值,另一种叫做过程赋值。过程赋值又分为阻塞
    发表于 07-03 03:06

    Verilog中阻塞赋值阻塞赋值的区别是什么

    Verilog中阻塞赋值阻塞赋值的区别
    发表于 12-30 06:22

    verilog中阻塞赋值阻塞赋值

    阻塞阻塞语句作为verilog HDL语言的最大难点之一,一直困扰着FPGA设计者,即使是一个颇富经验的设计工程师,也很容易在这个点上犯下一些不必要的错误。阻塞
    发表于 03-15 10:57 7000次阅读

    veriolg中阻塞赋值阻塞赋值区别

      在一开始学到阻塞阻塞的时候,所被告知的两者的区别就在于阻塞是串行的,阻塞是并行的。但是
    发表于 09-16 09:34 4次下载

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

    设计背景: 阻塞 (=)和阻塞(=)一直是在我们FPGA中讨论的问题,资深的学者都是讨论的是赋值应该发生在上升下降沿还是在哪里,我们在仿真中看的可能是上升下降是准确的,但是在时间电路
    的头像 发表于 05-31 11:40 6809次阅读
    FPGA学习系列: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语言:清阻塞赋值阻塞赋值

    对于VerilogHDL语言中,经常在always模块中,面临两种赋值方式:阻塞赋值阻塞赋值
    发表于 11-19 15:48 1150次阅读

    基于阻塞赋值阻塞赋值的多级触发器级联实例

    下面给出一个基于阻塞赋值阻塞赋值的多级触发器级联实例,要求将输入数据延迟 3 个时钟周期再输出,并给出对应的 RTL 级结构图和仿真结果
    的头像 发表于 05-08 14:47 2151次阅读
    基于<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>的多级触发器级联实例

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

    阻塞赋值阻塞赋值的可综合性 Blocking Assignment阻塞
    的头像 发表于 05-12 09:45 2722次阅读
    简述<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中阻塞赋值阻塞赋值的区别

    阻塞赋值操作符用等号(即 = )表示。“阻塞”是指在进程语句(initial和always)中,当前的赋值语句阻断了其后的语句,也就是说后面的语句必须等到当前的
    发表于 12-19 16:49 7414次阅读

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

    今天给大家普及一下阻塞赋值阻塞赋值的相关知识
    的头像 发表于 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>

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

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