fpga系列 HDL: 05 阻塞赋值(=)与非阻塞赋值(<=)
- 在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)
- 过程赋值用于过程块(如
always或initial块)内,适用于描述组合逻辑或时序逻辑。过程赋值可以进一步分为两种:阻塞赋值(=)和非阻塞赋值(<=)。
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)beginout =2'b0;d =0; endelse beginout =d+c;d =a+b;endendmodule
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)beginout =2'b0;d =0; endelse begind =a+b;out =d+c; // 这里的 out 使用更新后的 d 值,电路图中少一一个寄存器endendmodule
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)beginout =2'b0;d =0; endelse begind <=a+b;out <=d+c;// 这里的 out 使用更新前的 d 值endendmodule
vivado


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

手绘示例






3.对比与应用场景
-
连续赋值 vs. 过程赋值:
- 连续赋值:用于
wire类型信号,描述组合逻辑。 - 过程赋值:用于
reg或integer等类型信号,描述组合或时序逻辑。
- 连续赋值:用于
-
阻塞赋值 vs. 非阻塞赋值:
- 阻塞赋值:用于组合逻辑,按顺序执行,通常在
always @(*)块中。 - 非阻塞赋值:用于时序逻辑,并行执行,通常在
always @(posedge clk)块中。
- 阻塞赋值:用于组合逻辑,按顺序执行,通常在
CG
- https://www.bilibili.com/video/BV1va411c7Dz?p=11
相关文章:
fpga系列 HDL: 05 阻塞赋值(=)与非阻塞赋值(<=)
在Verilog硬件描述语言(HDL)中,信号的赋值方式主要分为两种:连续赋值和过程赋值。每种赋值方式有其独特的用途和语法,并适用于不同类型的电路描述。 1. 连续赋值(Continuous Assignment,assign 和…...
大白话DC3算法
DC3算法是什么 DC3算法(也称为Skew算法)是一种高效的构建后缀数组的算法,全称为Difference Cover Modulo 3算法。 该算法于2002年被提出,论文参考: https://www.cs.cmu.edu/~guyb/paralg/papers/KarkkainenSanders0…...
力扣HOT100 - 75. 颜色分类
解题思路: 单指针,对数组进行两次遍历。 class Solution {public void sortColors(int[] nums) {int p 0;int n nums.length;for (int i 0; i < n; i) {if (nums[i] 0) {int tmp nums[i];nums[i] nums[p];nums[p] tmp;p;}}for (int i p; i …...
Vue.js - 计算属性与侦听器 【0基础向 Vue 基础学习】
文章目录 计算属性 computedcomputed 的使用方法computed 与 method 的区别计算属性完整写法 watch 侦听器(监视器)简单写法 → 简单类型数据,直接监视完整写法 → 添加额外配置项 计算属性 computed computed 的使用方法 **概念࿱…...
技术速递|使用 C# 集合表达式重构代码
作者:David Pine 排版:Alan Wang 本文是系列文章的第二篇,该系列文章涵盖了探索 C# 12功能的各种重构场景。在这篇文章中,我们将了解如何使用集合表达式重构代码,我们将学习集合初始化器、各种表达式用法、支持的集合目…...
我的世界开服保姆级教程
前言 Minecraft开服教程 如果你要和朋友联机时,可以选择的方法有这样几种: 局域网联机:优点:简单方便,在MC客户端里自带。缺点:必须在同一局域网内。 有些工具会带有联机功能:优点:一…...
[转载]同一台电脑同时使用GitHub和GitLab
原文地址:https://developer.aliyun.com/article/893801 简介: 工作中我们有时可能会在同一台电脑上使用多个git账号,例如:公司的gitLab账号,个人的gitHub账号。怎样才能在使用gitlab与github时,切换成对应…...
【网络协议】【OSI】一次HTTP请求OSI工作过程详细解析
目录 1. 一次HTTP请求OSI工作过程 1.1 应用层(第7层) 1.2 表示层(第6层) 1.3 会话层(第5层) 1.4 传输层(第4层)...
springboot vue 开源 会员收银系统 (2) 搭建基础框架
前言 完整版演示 前面我们对会员系统https://blog.csdn.net/qq_35238367/article/details/126174288进行了分析 确定了技术选型 和基本的模块 下面我们将从 springboot脚手架开发一套收银系统 使用脚手架的好处 不用编写基础的rabc权限系统将工作量回归业务本身生成代码 便于…...
Java进阶学习笔记26——包装类
包装类: 包装类就是把基本类型的数据包装成对象。 看下API文档: deprecated:极力反对、不赞成的意思。 marked for removal:标识为去除的意思。 自动装箱:基本数据类型可以自动转换成包装类。 自动拆箱:…...
【JavaEE进阶】——要想代码不写死,必须得有spring配置(properties和yml配置文件)
目录 本章目标: 🚩配置文件 🚩SpringBoot配置文件 🎈配置⽂件的格式 🎈 properties 配置⽂件说明 📝properties语法格式 📝读取配置文件 📝properties 缺点分析 dz…...
第十四 Elasticsearch介绍和安装
docker-compose安装 kibana: image: docker.elastic.co/kibana/kibana:7.5.1 container_name: kibana ports: - "5601:5601" environment: ELASTICSEARCH_HOSTS: http://elasticsearch:9200 depends_on: - elasticsearch…...
YOLOv10介绍与推理--图片和视频演示(附源码)
导 读 本文主要对YOLOv10做简单介绍并给出推理图片和视频的步骤演示。 YOLOv10简介 YOLOv10是清华大学的研究人员在Ultralytics Python包的基础上,引入了一种新的实时目标检测方法,解决了YOLO 以前版本在后处理和模型架构方面的不足。通过消除非最大抑…...
Java实验08
实验一 demo.java package q8.demo02;public class demo{public static void main(String[] args) {WindowMenu win new WindowMenu("Hello World",20,30,600,290);} }WindowMenu.java package q8.demo02; import javax.swing.*;public class WindowMenu extends…...
MyBatis复习笔记
3.Mybatis复习 3.1 xml配置 properties:加载配置文件 settings:设置驼峰映射 <settings><setting name"mapUnderscoreToCamelCase" value"true"/> </settings>typeAliases:类型别名设置 #这样在映射…...
HTML的基石:区块标签与小语义标签的深度解析
📚 HTML的基石:区块标签与小语义标签的深度解析 🌐 区块标签:构建网页的框架🏠 <div>:万能的容器📚 <section>、<article>、<aside>:语义化的布局 …...
Windows域控简介
一、Windows 域控概念 Windows 域控即 Active Directory(AD)域控制器,它是 Windows Server 中的一个角色,用于管理网络中的用户帐户、计算机和其他设备。AD 域控制器的功能包括: 用户认证:允许用户通过用…...
项目延期,不要随意加派人手
遇到软件项目出现延期的情况时,不建议随意加派人手。原因如下: 有些任务是不可拆分的,不能拆分为多个并行任务,增加人员不会加快项目进度。新增加人员需要原有人员介绍项目中的技术架构、业务知识,在开发过程中也难免…...
帝国CMS验证码不显示怎么回事呢?
帝国CMS验证码有时候会不显示或打叉,总结自己的解决方法。 1、检查服务器是否开启GD库 测试GD库是否开启的方法:浏览器访问:/e/showkey/index.php,如果出现一堆乱码或报错,证明GD库没有开启,开启即可。 2…...
【必会面试题】Redis 中的 zset数据结构
目录 Redis 中的 zset(sorted set,有序集合)数据结构在底层可以使用两种不同的实现:压缩列表(ziplist) 和 跳跃表(skiplist)。具体使用哪种结构取决于存储元素的数量和大小ÿ…...
8通道采集控制终端:工业物联网边缘智能的核心硬件解析
1. 项目概述:从“通道”到“终端”的工业物联进化最近在调试一个老旧产线的数据采集项目,现场一堆4-20mA的传感器、干接点的报警信号,还有几个需要远程启停的电机,线缆接得跟蜘蛛网一样。甲方负责人看着头疼,问我有没有…...
webMAN-MOD终极指南:PS3自制系统的完整解决方案与实用技巧
webMAN-MOD终极指南:PS3自制系统的完整解决方案与实用技巧 【免费下载链接】webMAN-MOD Extended services for PS3 console (web server, ftp server, netiso, ntfs, ps3mapi, etc.) 项目地址: https://gitcode.com/gh_mirrors/we/webMAN-MOD webMAN-MOD是一…...
深入解析CPU L1/L2缓存:原理、性能影响与编程优化实战
1. 项目概述:从“快”字说起做性能调优或者写高性能代码的朋友,对“缓存”这个词一定不陌生。我们总在说,把数据放进缓存里,访问就快了。但缓存本身,尤其是离CPU核心最近的一级缓存(L1 Cache)和…...
Desktop Postflop终极指南:免费开源德州扑克GTO求解器完整教程
Desktop Postflop终极指南:免费开源德州扑克GTO求解器完整教程 【免费下载链接】desktop-postflop [Development suspended] Advanced open-source Texas Holdem GTO solver with optimized performance 项目地址: https://gitcode.com/gh_mirrors/de/desktop-pos…...
为什么头部科技公司集体弃用Workday转向Lindy?——基于14家客户迁移数据的自动化人效拐点分析
更多请点击: https://intelliparadigm.com 第一章:Lindy人力资源自动化方案的演进逻辑与战略定位 Lindy人力资源自动化方案并非孤立的技术堆叠,而是根植于企业数字化成熟度跃迁与HR职能价值重构双重驱动下的系统性进化。其演进逻辑呈现清晰的…...
洛雪音乐音源配置完全指南:免费搭建个人音乐库的终极方案
洛雪音乐音源配置完全指南:免费搭建个人音乐库的终极方案 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 洛雪音乐作为一款强大的音乐播放工具,提供了全网最新最全的音源资…...
终极HsMod炉石传说模改插件:如何用开源技术重塑你的游戏体验
终极HsMod炉石传说模改插件:如何用开源技术重塑你的游戏体验 【免费下载链接】HsMod Hearthstone Modification Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod 在炉石传说的世界里,每个玩家都渴望更流畅、更个性化的…...
ncmdumpGUI完全手册:解锁网易云音乐NCM格式的终极Windows解决方案
ncmdumpGUI完全手册:解锁网易云音乐NCM格式的终极Windows解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾为网易云音乐下载的NCM格…...
手把手教你用SPI在两块STM32之间传浮点数(附避坑指南和字符串转换技巧)
手把手教你用SPI在两块STM32之间传浮点数(附避坑指南和字符串转换技巧) 在物联网传感器数据采集场景中,温湿度等模拟量通常以浮点数形式存在。当我们需要通过SPI协议在STM32主从机之间传输这类数据时,开发者往往会遇到小数位丢失、…...
python政府集中采购管理系统设计与实现
目录同行可拿货,招校园代理 ,本人源头供货商项目背景核心功能模块技术实现要点应用价值项目技术支持获取博主联系方式 源码获取详细视频演示 :同行可合作点击我获取源码->获取博主联系方式->进我个人主页-->同行可拿货,招校园代理 ,本人源头供货商 项目背…...
