fpga系列 HDL: 05 阻塞赋值(=)与非阻塞赋值(<=)

news2024/9/24 11:22:40
  • 在Verilog硬件描述语言(HDL)中,信号的赋值方式主要分为两种:连续赋值和过程赋值。每种赋值方式有其独特的用途和语法,并适用于不同类型的电路描述。

1. 连续赋值(Continuous Assignment,assign 和=)

  • 连续赋值主要用于描述组合逻辑,通常与assign关键字一起使用。它在顶层模块或过程块外部进行,用于对wire类型的信号赋值。

特点

  • 组合逻辑:连续赋值用于实现组合逻辑,表示输出信号始终等于表达式的值。
  • 实时更新:当右边的表达式中的任何信号发生变化时,左边的信号会立即更新。
  • 信号类型:通常用于wire类型信号。

示例

示例 1

module blink_led(
    input wire a,
    output wire b
);

assign b = a;

endmodule

在这里插入图片描述

示例 2

module combinational_logic (
    input wire a,
    input wire b,
    output wire c
);
    // c 始终等于 a 和 b 的逻辑与
    assign c = a & b;
endmodule

在这里插入图片描述

2. 过程赋值(Procedural Assignment)

  • 过程赋值用于过程块(如alwaysinitial块)内,适用于描述组合逻辑或时序逻辑。过程赋值可以进一步分为两种:阻塞赋值(=)和非阻塞赋值(<=)。

2.1 阻塞赋值(Blocking Assignment,=

特点 :

  • 顺序执行:阻塞赋值按书写顺序执行,一个语句必须在前一个语句完成后才能执行下一个语句。
  • 阻塞行为:在赋值完成之前,后续的语句不会执行。相当于“阻塞”了后续操作。
  • 主要用于组合逻辑:通常用于描述组合逻辑,在always @(*)块中使用。

示例 :

  • 这个代码,阻塞赋值与下边的非阻塞赋值电路一样
module blink_led(
clk,reset_n,a,b,c,out
    );
    input clk;
    input reset_n;
    input a,b,c;
    output reg [1:0] out;
    reg [1:0] d;

    always@(posedge clk or negedge reset_n)
    if(!reset_n)begin
        out =2'b0;
        d =0;    
    end
    else begin
    	out =d+c;
        d =a+b;
    end

endmodule

ISE的RTL Schematic

在这里插入图片描述
在这里插入图片描述

vivado的 Schematic

在这里插入图片描述

更换两句的顺序

在这里插入图片描述

module blink_led(
clk,reset_n,a,b,c,out
    );
    input clk;
    input reset_n;
    input a,b,c;
    output reg [1:0] out;
    reg [1:0] d;

    always@(posedge clk or negedge reset_n)
    if(!reset_n)begin
        out =2'b0;
        d =0;    
    end
    else begin
	   d =a+b;
       out =d+c; // 这里的 out 使用更新后的 d 值,电路图中少一一个寄存器
    end
    
endmodule

ISE的RTL Schematic

在这里插入图片描述
在这里插入图片描述

ISE的Technology Schematic

在这里插入图片描述

vivado

在这里插入图片描述

在这里插入图片描述

2.2 非阻塞赋值(Non-blocking Assignment,<=

特点 :

  • 并行执行:非阻塞赋值允许赋值操作并行执行,不必等待前一个语句完成。
  • 主要用于时序逻辑:通常用于描述时序逻辑,在always @(posedge clk)块中使用。

示例:

module mux2(
clk,reset_n,a,b,c,out
    );
    input clk;
    input reset_n;
    input a,b,c;
    output reg [1:0] out;
    reg [1:0] d;

    always@(posedge clk or negedge reset_n)
    if(!reset_n)begin
        out =2'b0;
        d =0;    
    end
    else begin
	   d <=a+b;
       out <=d+c;// 这里的 out 使用更新前的 d 值
    end
    
endmodule
vivado

在这里插入图片描述
在这里插入图片描述

更换两句的顺序电路图没有改变

在这里插入图片描述

手绘示例

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.对比与应用场景

  1. 连续赋值 vs. 过程赋值

    • 连续赋值:用于wire类型信号,描述组合逻辑。
    • 过程赋值:用于reginteger等类型信号,描述组合或时序逻辑。
  2. 阻塞赋值 vs. 非阻塞赋值

    • 阻塞赋值:用于组合逻辑,按顺序执行,通常在always @(*)块中。
    • 非阻塞赋值:用于时序逻辑,并行执行,通常在always @(posedge clk)块中。

CG

  • https://www.bilibili.com/video/BV1va411c7Dz?p=11

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1701472.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pycharm中无法激活conda虚拟环境

在windwos的cmd命令行中能激活&#xff0c;但是pycharm中无法激活虚拟环境&#xff0c;报错提示&#xff1a; 后来发现pycharm默认命令行是powershell&#xff0c;改成cmd重启pycharm命令行即可

windows安全配置

环境&#xff1a;本文我们以Windows Server 2012 R2为例&#xff0c;进行加固 Windows 不论什么版本&#xff0c;进行安全配置均包含以下两个常用维度 1、账户策略 ①密码策略 强制密码历史&#xff0c;建议设置为24个 密码最长使用期限&#xff0c;建议设置60天 密码最短…

Excel函数之SCAN

SCAN 语法 SCAN([initial_value], array, lambda(accumulator,value,calculation)) initial_value:用于设置累加器的初始值,即accumulator的初始值,该值为空时,array的首个值将直接赋值给累加器,并且该值将不参与函数运算array:需要进行循环计算的数组accumulator:累加…

HTML5 基本框架

HTML5基本的内容 文章目录 系列文章目录前言一、HTML5 基本框架二、具体框架结构三、知识补充总结 前言 HTML5的介绍&#xff1a; HTML5 是一种用于构建网页内容的标准化语言。它是 HTML&#xff08;超文本标记语言&#xff09;的第五个版本&#xff0c;引入了许多新的功能和特…

wordpress主题给网站增加一个版权声明区块代码分享

在数字化时代&#xff0c;网络上的信息传播变得越来越便捷&#xff0c;给人们生活和工作带来了极大的便利。然而&#xff0c;在这个过程中也产生了很多版权问题。为了更好地保护自己的版权&#xff0c;许多网站开始在其网页上添加版权声明。本文将探讨在网站上添加版权声明的重…

PageHelper分页查询时,count()查询记录总数与实际返回的数据数量不一致

目录 场景简介代码判断异常情况排查原因解决 场景简介 1、使用PageHelper进行分页查询 2、最终构建PageInfo对象时&#xff0c;total与实际数据量不符 代码判断 异常情况 排查 通过对比count()查询的SQL与查询记录的SQL&#xff0c;发现是PageHelper分页查询时省去了order b…

Object类——toString方法和equals方法

前言&#xff1a; 在java中&#xff0c;所有类都是有继承关系存在的&#xff0c;都默认继承Object类。当一个类继承了其他父类&#xff0c;它并不会直接继承Object类&#xff0c;但是它的父类若是没有其他继承关系也会默认继承Object类&#xff0c;子类也可以继续调用Object类…

无线麦克风哪个品牌音质最好,揭示麦克风什么牌子的音质效果好!

​随着科技的不断发展&#xff0c;无线领夹麦克风已经成为现代演讲、演出和采访中不可或缺的工具。这种小巧便携的设备&#xff0c;能够让我们摆脱线缆的束缚&#xff0c;自由地在舞台上或讲台上移动&#xff0c;同时保持声音的清晰和稳定。在这篇文章中&#xff0c;我们将介绍…

基于Ubuntu的Bash脚本实现SystemUI的编译真机验证

使用场景描述 当开发SystemUI的时候&#xff0c;开发完一个需求后需要到真机上验证&#xff0c;虽然SystemUI模块开发最后的产物也是APK&#xff0c;但是这个APK 却不能单独安装查看效果&#xff0c;因为SystemUI是系统级别的应用&#xff0c;需要放置到系统指定的目录下。这时…

牛客热题:最小的k个数

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;力扣刷题日记 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 文章目录 牛客热题&#xff1a;最小的k个数题目链接方法一&…

三轴加速度计M-A352AD实现实时的动态监测

地震监测设备如何快速监测到地震波的发生?如何快速地将地震信号传输到系统或设备上&#xff0c;让人快速做出相应对策?如何在恶劣的环境下&#xff0c;仍能保持稳定可靠的监测?其核心之一就是采用了传感器技术和相关设备&#xff0c;我们可以在地震易发生区域或重点观察的区…

人大金仓 KingBase查询死锁,释放死锁

人大金仓(kingbase)查询数据库死锁及释放 kingbase锁表排查以及释放锁 总结下 -- 查询&#xff0c;可自己添加where条件 SELECT * FROM sys_stat_activity WHERE state ! idle AND wait_event_typeLock-- 结束进程 SELECT sys_terminate_backend(pid);

学习Java的日子 Day49 函数,DOM

Day48 1.流程控制语句 if else for for-in(遍历数组时&#xff0c;跟Java是否一样) While do while break 语句用于跳出循环 continue 用于跳过循环中的一个迭代 2.函数 2.1 JavaScript 函数语法 函数就是包裹在花括号中的代码块&#xff0c;前面使用了关键词 function funct…

【NumPy】关于numpy.subtract()函数,看这一篇文章就够了

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

观原力谱能超导实验室原创科普舞台剧能源小队的奇幻旅程第一次对外公演记

昨天发出后&#xff0c;总感觉很多违和之处&#xff0c;斟酌之后略改&#xff1a; 观原力谱能超导实验室原创科普舞台剧 能源小队的奇幻旅程第一次对外公演记 卡西莫多 科学奥妙多奇观 深邃微界有沃原 亿万齐聚窸微力 原子宏观现光谱 物质都有静态能 聚变核能威猛超 国…

29.哀家要长脑子了!

1.224. 基本计算器 - 力扣&#xff08;LeetCode&#xff09; 这道题的特点就是它的运算符只有加和减 那么就可以通过改变数字的正负符号来代表操作加减 因为减去一个数&#xff0c;就是加上这个数的相反数 这个栈不是用来存放数的&#xff0c;而是用来存放操作符号的。代表是…

教育大模型的发展现状、创新架构及应用展望

引言 从通用大模型到教育领域的专用大模型&#xff0c;是人工智能大模型技术深化发展的必然趋势。教育大模型不是在通用大模型基础上的微调和优化&#xff0c;而是以重构未来教育图景为目标、以开放算法模型架构为基础、以创新教育应用场景为核心的系统性变革。如何厘清教育大…

数据丢失不用愁,3个手机数据恢复大师来解忧!

这个信息技术高速发展的时代&#xff0c;手机成为了生活中不可或缺的一部分。无论是重要的工作文件、珍贵的家庭照片&#xff0c;还是那些无法替代的个人记忆&#xff0c;都存储在我们的手机中。然而&#xff0c;生活中总有一些意想不到的情况&#xff0c;比如误删文件、手机丢…

外贸电商数据分析实战指南

亮数据浏览器https://www.bright.cn/proxy-types/?utm_sourcebrand&utm_campaignbrnd-mkt_cn_csdn_yingjie 引言 在行业竞争激烈、市场变化快速的跨境电商领域&#xff0c;数据采集可以帮助企业深入了解客户需求和行为&#xff0c;分析市场趋势和竞争情况&#xff0c;从而…

目标检测——无人机图像数据集

引言 亲爱的读者们&#xff0c;您是否在寻找某个特定的数据集&#xff0c;用于研究或项目实践&#xff1f;欢迎您在评论区留言&#xff0c;或者通过公众号私信告诉我&#xff0c;您想要的数据集的类型主题。小编会竭尽全力为您寻找&#xff0c;并在找到后第一时间与您分享。 …