verilog行为建模(四):过程赋值

目录

  • 1.两类过程赋值
  • 2.阻塞与非阻塞赋值语句行为差别举例1
  • 3.阻塞与非阻塞赋值语句行为差别举例2
  • 4.阻塞与非阻塞赋值语句行为差别举例3
  • 5.举例4:非阻塞赋值语句中延时在左边和右边的差别

微信公众号获取更多FPGA相关源码:
在这里插入图片描述

1.两类过程赋值

两类过程赋值

  • 阻塞过程赋值执行完成后再执行在顺序块内下一条语句。

  • 非阻塞赋值不阻塞过程流,仿真器读入一条赋值语句并对它进行调度之后,就可以处理下一条赋值语句。

若过程块中的所有赋值都是非阻塞的,赋值按两步进行:

  1. 仿真器计算所有RHS表达式的值,保存结果,并进行调度在时序控制指定时间的赋值。
  2. 在经过相应的延迟后,仿真器通过将保存的值赋给LHS表达式完成赋值。

2.阻塞与非阻塞赋值语句行为差别举例1

module non_block1;reg a, b, c, d, e, f;initial begin // blocking assignmentsa = #10 1; // time 10b = #2   0; // time 12c = #4   1; // time 16endinitial begin // non- blocking assignmentsd <= #10 1; // time 10e <= #2   0; // time 2f <= #4   1; // time 4endinitial begin$monitor($ time,," a= %b b= %b c= %b d= %b e= %b f= %b", a, b, c, d, e, f);#100 $finish;end
endmodule

输出结果:

时刻abcd
0a= xb= xc= xd= x
2a= xb= xc= xd= x
4a= xb= xc= xd= x
10a= 1b= xc= xd= 1
12a= 1b= 0c= xd= 1
16a= 1b= 0c= 1d= 1

3.阻塞与非阻塞赋值语句行为差别举例2

module pipeMult(product, mPlier, mCand, go, clock);
input           go, clock;
input [7:0]     mPlier, mCand;
output [15:0]   product;
reg [15:0] product;
always @(posedge go)product = repeat (4) @(posedge clock) mPlier * mCand;
endmodule
module pipeMult(product, mPlier, mCand, go, clock);
input           go, clock;
input [7:0]     mPlier, mCand;
output [15:0]   product;
reg [15:0] product;
always @(posedge go)product <= repeat (4) @(posedge clock) mPlier * mCand;
endmodule

举例2仿真波形

4.阻塞与非阻塞赋值语句行为差别举例3

module fsm(cS1, cS0, in, clock);
input in , clock;
output cS1, cS0;
reg cS1, cS0;
always @(posedge clock) begincS1 = in & cS0;   //同步复位cS0 = in | cS1;   //cS0 = in
end
endmodule

RTL电路结构

module fsm(cS1, cS0, in, clock);
input in , clock;
output cS1, cS0;
reg cS1, cS0;
always @(posedge clock) begincS1 <= in & cS0;   //同步复位cS0 <= in | cS1;     //同步置位
end
endmodule

5.举例4:非阻塞赋值语句中延时在左边和右边的差别

module exchange;reg[3:0] a, b;initial begina=1; b=4;#2 a=3; b=2;#20 $finish;endinitial
$monitor($time, "\t%h\t%h", a, b);initial begin#5 a <=  b;#5 b <=  a;end
endmodule

输出结果:

timeab
014
232
522
module exchange;reg[3:0] a, b;initial begina=1; b=4;#2 a=3; b=2;#20 $finish;endinitial
$monitor($time, "\t%h\t%h", a, b);initial begina <=  #5 b;b <=  #5 a;end
endmodule

输出结果:

timeab
014
232
541

微信公众号获取更多FPGA相关源码:
在这里插入图片描述

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

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

相关文章

HTML零基础自学笔记(上)-7.18

HTML零基础自学笔记&#xff08;上&#xff09; 参考&#xff1a;pink老师一、HTML, Javascript, CSS的关系是什么?二、什么是HTML?1、网页&#xff0c;网站的概念2、THML的基本概念3、THML的骨架标签/基本结构标签 三、HTML标签1、THML标签介绍2、常用标签图像标签&#xff…

网易易盾图标点选验证码识别代码

简介 网易图标点选一直都是一个大难题&#xff0c;如上图所示。难点之一是图标变幻莫测&#xff0c;很难刷出有重复的图标&#xff0c;所以使用传统等等方式去标注、识别具有较大的难度。 经过我们大量的数据标注&#xff0c;终于完成了这款验证码的识别。 目前我们提供两种识…

Shell程序设计

各位看官&#xff0c;从今天开始&#xff0c;我们进入新的专栏Shell学习&#xff0c;Shell 是操作系统的命令行界面&#xff0c;它允许用户通过输入命令与操作系统交互。常见的 Shell 有 Bash 和 Zsh&#xff0c;它们可以执行用户输入的命令或运行脚本文件。Shell 广泛应用于系…

昇思25天学习打卡营第5天 | 数据集

在探索MindSpore深度学习框架中的数据集处理过程&#xff0c;我对其数据加载和处理流程有了深入的了解。MindSpore提供了一套功能强大的工具&#xff0c;可以有效地处理和转换数据&#xff0c;确保了数据预处理的效率和质量。以下是我从本次学习中得到的几点主要心得&#xff1…

[算法题]重排字符串

题目链接: 重排字符串 首先找出出现次数最多的字符和其出现次数, 如果该字符的出现次数大于 (字符串的长度 1) / 2, 那么该字符串必然不能重排, 如果该字符的出现次数小于等于 (字符串的长度 1) / 2, 是可以重排的, 重排方式如下图所示: 先以间隔的方式将出现次数最多的字符…

MRD、BRD、PRD

MRD、BRD、PRD是产品开发过程中不同的文档类型&#xff0c;‌它们各自具有特定的目的和内容&#xff0c;‌以支持产品从概念到实现的各个阶段。‌ MRD&#xff08;‌Market Requirement Document&#xff09;‌&#xff0c;‌即市场需求文档&#xff0c;‌侧重于市场和用户需求…

宇航人今年部分瓶装饮料铅浓度超标,采购成本连年大增

《港湾商业观察》廖紫雯 日前&#xff0c;内蒙古宇航人沙产业股份有限公司&#xff08;以下简称&#xff1a;宇航人&#xff09;递表港交所&#xff0c;保荐机构为中银国际&#xff0c;宇航人国内运营主体为内蒙古宇航人高技术产业有限责任公司、内蒙古宇航人沙产业股份有限公…

【SASS/SCSS(三)】样式的复用与动态计算(@mixin和@function)

目录 一、mixin 1、定义复用的样式代码&#xff0c;接受传参&#xff0c;搭配include使用。 位置传参 关键词传参 ...语法糖接受传入的任意参数 2、在mixin中使用content&#xff0c;获取外部对mixin的追加内容 二、function 三、字符串——值得注意的点 很多时候&#…

Python酷库之旅-第三方库Pandas(037)

目录 一、用法精讲 116、pandas.Series.div方法 116-1、语法 116-2、参数 116-3、功能 116-4、返回值 116-5、说明 116-6、用法 116-6-1、数据准备 116-6-2、代码示例 116-6-3、结果输出 117、pandas.Series.truediv方法 117-1、语法 117-2、参数 117-3、功能 …

【初阶数据结构】深度解析七大常见排序|掌握底层逻辑与原理

初阶数据结构相关知识点可以通过点击以下链接进行学习一起加油&#xff01;时间与空间复杂度的深度剖析深入解析顺序表:探索底层逻辑深入解析单链表:探索底层逻辑深入解析带头双向循环链表:探索底层逻辑深入解析栈:探索底层逻辑深入解析队列:探索底层逻辑深入解析循环队列:探索…

原来隐藏一个DOM元素可以有这么多种方式,最后一种你肯定不知道

我们在日常编码的时候&#xff0c;隐藏一个 dom 元素有很多种方式&#xff0c;今天我们来盘点一下隐藏 dom 元素有哪些方式&#xff0c;最后一种&#xff0c;你绝对没有用过。 display: none 作为经常用来隐藏元素的 css 属性&#xff0c;display: none 相信大家并不陌生&…

【常见开源库的二次开发】基于openssl的加密与解密——MD5算法源码解析(五)

一、MD5算法分析 &#xff1a; 1.1 关于MD5 “消息摘要”是指MD5&#xff08;Message Digest Algorithm 5&#xff09;算法。MD5是一种广泛使用的密码散列函数&#xff0c;它可以生成一个128位&#xff08;16字节&#xff09;的散列值。 RFC 1321: MD5由Ronald Rivest在1992…

云计算核心算法(一)

目录 一、Paxos算法&#xff08;一&#xff09;Paxos算法背景知识&#xff08;二&#xff09;Paxos算法详解&#xff08;三&#xff09;Paxos算法举例 云计算的基础技术是集群技术&#xff0c;支撑集群高效协同工作需要一系列资源和任务调度算法&#xff0c;良好的调度算法可以…

【python】Numpy运行报错详细分析:IndexError: too many indices for array

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

创建vue3项目并配置PC端屏幕适配

一、创建vue3项目 1.使用vue cli创建 vue created 项目名2.选择自定义方式创建vue3项目 3.选择项目所需要的依赖项(刚学习vue的同学建议选择安装&#xff08;Linter / Formatter 支持代码风格检查和格式化&#xff09; 对于每一项的功能&#xff0c;做了一个简单的描述&a…

Web开发:一个可拖拽的模态框(HTML、CSS、JavaScript)

目录 一、需求描述 二、实现效果 三、完整代码 四、实现过程 1、HTML 页面结构 2、CSS 元素样式 3、JavaScript动态控制 &#xff08;1&#xff09;获取元素 &#xff08;2&#xff09;显示\隐藏遮罩层与模态框 &#xff08;3&#xff09;实现模态框拖动效果 一、需求…

增长新引擎,构建基于 CDP 的用户运营竞争力

本文将围绕“企业如何通过构建基于 CDP 的用户运营体系提升业务增长”这一核心&#xff0c;详细介绍企业数据化运营现状&#xff0c;拆解用户运营目标&#xff0c;展示神策 CDP 的关键能力以及用户运营策略落地的完整路径。 一、洞察&#xff1a;企业数据化运营面临的挑战 当前…

C语言-网络编程-UDP通信创建流程

UDP 通信创建流程 UDP 是⼀个传输层的⽆连接的协议&#xff0c;我们编写代码⼀般是分为两个端。⼀个我们称之为发送端&#xff0c;另⼀ 个我们称之为接收端。正常⼀般是接收端先运⾏&#xff0c;然后等待结束发送端发送过来的数据。 创建套接字 首先&#xff0c;我们需要创建…

四、GD32 MCU 常见外设介绍 (5) TIMER 模块介绍

5.1.TIMER 基础知识 TIMER分高级定时器&#xff0c;通用定时器L0&#xff0c;L1&#xff0c;L2和基本定时器。 5.2.硬件连接说明 TIMER 属于片内外设&#xff0c;对于外部硬件设计&#xff0c;只需要单独IO口外接信号线即可。 5.3.GD32 TIMER 外设原理简介&#xff08;以 G…

/秋招突击——7/21——复习{堆——数组中的第K大元素}——新作{回溯——全排列、子集、电话号码的字母组合、组合总和、括号生成}

文章目录 引言复习数组中的第K大的最大元素复习实现参考实现 新作回溯模板46 全排列个人实现参考实现 子集个人实现参考实现 电话号码的字母组合复习实现 组合总和个人实现参考实现 括号生成复习实现 总结 引言 昨天的科大讯飞笔试做的稀烂&#xff0c;今天回来好好练习一下&a…