14.12-常见的对于非阻塞复制的误解

news2024/11/26 8:45:56

常见的对于非阻塞复制的误解

      • 1,非阻塞赋值和$display
        • 1.1,RTL案例
        • 1.2,功能实现
        • 1.3,解释误解
      • 2,#0延时赋值
        • 2.1,RTL案例
        • 2.2,功能实现
        • 2.3,解释误解
      • 3,对同一变量进行多次非阻塞赋值
        • 3.1,RTL案例
        • 3.2,功能实现
        • 3.3,解释误解
      • 4,小结

1,非阻塞赋值和$display

1.1,RTL案例
module	display_cmds;
reg		a;

initial	$monitor("\$ monitor: a = %b", a);

initial		begin
	$strobe		("\$ strobe : a = %b", a);
	a	= 	0;
	a 	<= 	1;
	$display	("\$ display: a = %b", a);
	#1	$finish;
	
end

endmodule
1.2,功能实现

在这里插入图片描述

1.3,解释误解

误解1: 使用$display命令不能用来显示非阻塞语句的赋值;

事实是:非阻塞语句的赋值在所有的$display命令执行后才更新数值。

对上述语句的解释:
以上3条语句是非阻塞赋值和 d i s p l a y 模块的仿真结果,这说明 display模块的仿真结果,这说明 display模块的仿真结果,这说明display命令的执行是安排在活动事件队列中,但排在非阻塞赋值数据更新事件之前。

注意事项:
$display,在仿真期间会自动执行,但在综合到实际硬件时可能会被忽略,因此请仅将其用于仿真和调试目的。

2,#0延时赋值

2.1,RTL案例
//	#0延时赋值
module	nb_schedule;
reg		a,	b;
initial		begin
	a 	= 	0;
	b 	= 	1;
	a	<=	b;
	b	<=	a;
	
	$monitor("%0dns:	\ $ monitor: a = %b, b = %b",	$stime,	a, b);
	$display("%0dns:	\ $ display: a = %b, b = %b",	$stime,	a, b);
	$strobe ("%0dns:	\ $ strobe:  a = %b, b = %b\n",	$stime,	a, b);
#0	$display("%0dns:			#0:  a = %b, b = %b",	$stime,	a, b);
	
#1	$monitor("%0dns:	\ $ monitor: a = %b, b = %b",	$stime,	a, b);
	$display("%0dns:	\ $ display: a = %b, b = %b",	$stime,	a, b);
	$strobe ("%0dns:	\ $ strobe : a = %b, b = %b\n",	$stime,	a, b);
	$display("%0dns:			#0:  a = %b, b = %b",	$stime,	a, b);
	
#200	$finish;

end
endmodule
2.2,功能实现

在这里插入图片描述
以上8条语句是#0延时赋值模块的仿真结果,这说明#0延时命令在非阻塞赋值事件发生前,在停止运行事件队列中执行。
在这里插入图片描述

#0延时赋值建议遵循以下的原则7:
原则7 用$strobe系统任务来显示,应该用非阻塞赋值的变量值。

2.3,解释误解

误解2: #0延时把赋值强制到仿真时间步的末尾;
事实是:#0延时将赋值事件强制加入停止运行事件队列中。

3,对同一变量进行多次非阻塞赋值

3.1,RTL案例
//	对同一变量进行多次非阻塞赋值
module	multi_touch;
reg		a;

initial		begin
		a	<= 0;
		a	<= 1;
end

endmodule
3.2,功能实现

在这里插入图片描述
执行该模块时,有两个非阻塞赋值更新事件加入到非阻塞赋值更新队列。以前的规划要求将非阻塞赋值更新事件按照它们在源文件的顺序加入队列,这便要求按照事件在源文件中的顺序,将事件从队列中取出并执行。因此,在仿真第一步结束时刻,变量a被设置为0,然后是1。
结论:
最后一个非阻塞赋值决定了变量的值。

3.3,解释误解

误解3: 在Verilog语法标准中未定义,可在同一个always块中对某一变量进行多次非阻塞赋值。
事实是:Verilog标准定义了在同一个always块中,可对某同一变量进行多次非阻塞赋值,但在多次赋值中,只有最后一次赋值对该变量起作用。

4,小结

在夏宇闻的《Verilog数字系统设计教程》的第14章-深入理解阻塞和非阻塞赋值的不同中,其所有的原则归纳如下所示:
(1)原则1:时序电路建模时,用非阻塞赋值;
(2)原则2:锁存器电路建模时,用非阻塞赋值;
(3)原则3:用always块写组合逻辑时,采用阻塞赋值;
(4)原则4:在同一个always块中同时建立时序和组合逻辑电路时,用非阻塞赋值;
(5)原则5:在同一个always块中不要同时使用非阻塞赋值和阻塞赋值;
(6)原则6:不要在多个always块中为同一个变量赋值;
(7)原则7:用$strobe系统任务来显示用非阻塞赋值的变量值;
(8)原则8:在赋值时,不要使用 #0 延迟。

结论:
遵循以上原则,有助于正确的编写可综合硬件,并且可以清楚90%~100%在仿真时可能产生的竞争冒险现象。

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

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

相关文章

家用洗地机哪个牌子好?2024年洗地机热门品牌测评

随着科技水平的不断发展&#xff0c;人们对家居设备的要求也在不断提高&#xff0c;追求省时省力的家务工具变得越来越受欢迎。家用洗地机的出现满足了这一需求&#xff0c;其洗拖吸一体的特点使其成为现代家庭的必备神器。 使用家用洗地机可以极大地提高地面清洁的效率&#…

因数据侵权,纽约时报起诉OpenAI、微软

12月28日&#xff0c;金融时报消息&#xff0c;因为非法使用数百万篇新闻数据训练ChatGPT等生成式AI产品&#xff0c;《纽约时报》正在起诉OpenAI和微软。 这是第一家起诉生成式AI厂商的著名媒体。《纽约时报》没有公布具体数额&#xff0c;但希望获得数十亿美元的赔偿金。 O…

两向量叉乘值为对应平行四边形面积--公式推导

两向量叉乘值为对应平行四边形面积--公式推导 介绍 介绍

PowerShell Instal 一键部署gitea

gitea 前言 Gitea 是一个轻量级的 DevOps 平台软件。从开发计划到产品成型的整个软件生命周期,他都能够高效而轻松的帮助团队和开发者。包括 Git 托管、代码审查、团队协作、软件包注册和 CI/CD。它与 GitHub、Bitbucket 和 GitLab 等比较类似。 Gitea 最初是从 Gogs 分支而来…

Ubuntu22.04-安装后Terminal无法调出

参考&#xff1a; Ubuntu20.04 终端打开不了的问题排查_ubuntu终端打不开-CSDN博客 https://blog.csdn.net/u010092716/article/details/130968032 Ubuntu修改locale从而修改语言环境_ubuntu locale-CSDN博客 https://blog.csdn.net/aa1209551258/article/details/81745394 问…

2023年度总结:技术旅程的杨帆远航⛵

文章目录 职业规划与心灵成长 ❤️‍&#x1f525;我的最大收获与成长 &#x1f4aa;新年Flag &#x1f6a9;我的技术发展规划 ⌛对技术行业的深度思考 &#x1f914;祝愿 &#x1f307; 2023 年对我来说是一个充实而令人难以忘怀的一年。这一年&#xff0c;我在CSDN上发表了 1…

有效解决vcruntime140_1.dll丢失的问题,关于vcruntime140_1.dll文件

今天在使用电脑的过程中突然提示找不到vcruntime140_1.dll&#xff0c;出现这样的提示后&#xff0c;想要在打开程序时&#xff0c;有再一次提示找不到vcruntime140_1.dll&#xff0c;不能在正常打开程序&#xff0c;那么有什么办法可以解决vcruntime140_1.dll丢失的问题呢&…

用python画最简单的图案,用python画小猫简单代码

本篇文章给大家谈谈用python画小猫简单100行代码&#xff0c;以及用python画最简单的图案&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 Source code download: 本文相关源码 from turtle import * #两个函数用于画心 defcurvemove():for i in range(200): …

Java基础02-Java编程基础

文章目录 变量&#xff08;Variables&#xff09;局部变量和成员变量局部变量&#xff08;Local Variables&#xff09;成员变量&#xff08;Instance Variables&#xff09; 标识符&#xff08;Identifiers&#xff09;八种基本数据类型原始数据类型&#xff08;Primitive Dat…

【网络安全 | CTF】pure_color

该题考察图片隐写 给出一张图片如下&#xff1a; 典型的图片隐写&#xff0c;运行stegsolve即可&#xff1a; 如图&#xff1a; flag{true_steganographers_doesnt_need_any_tools}

《新传奇》期刊投稿论文发表

《新传奇》杂志是经国家新闻出版总署批准、面向国内外公开发行的综合性社科期刊&#xff0c;由湖北省文联主管&#xff0c;湖北今古传奇传媒集团有限公司主办&#xff0c;湖北优秀期刊。本刊旨在坚守初心、引领创新&#xff0c;展示高水平研究成果&#xff0c;支持优秀学术人才…

Element UI之el-tabs的样式修改字体颜色、下划线、选中/未选中

目录 默认样式 修改默认字体颜色&#xff1a; 修改鼠标悬浮/选中字体颜色&#xff1a; 去掉长分割线并修改下划线颜色 完整代码 默认样式 注意事项&#xff1a;一定要在 <style scoped>不然修改的样式不会覆盖生效 修改默认字体颜色&#xff1a; ::v-deep .el-tabs__…

三分钟学完科研论文常用统计图

统计分析的结果通常包括统计图和统计表。统计图是一种用图形表示数据的方式&#xff0c;它能够直观地展示数据的分布、趋势和关系。科研论文中常见的统计图包括条形图、饼图、折线图、散点图等。这些图形可以帮助人们快速地理解和分析数据&#xff0c;找出其中的规律和特征。今…

【LangChain】与文档聊天:将OpenAI与LangChain集成的终极指南

欢迎来到人工智能的迷人世界&#xff0c;在那里&#xff0c;人与机器之间的通信越来越模糊。在这篇博客文章中&#xff0c;我们将探索人工智能驱动交互的一个令人兴奋的新前沿&#xff1a;与您的文本文档聊天&#xff01;借助OpenAI模型和创新的LangChain框架的强大组合&#x…

Hbase详解

Hbase 概念 base 是分布式、面向列的开源数据库&#xff08;其实准确的说是面向列族&#xff09;。HDFS 为 Hbase 提供可靠的底层数据存储服务&#xff0c;MapReduce 为 Hbase 提供高性能的计算能力&#xff0c;Zookeeper 为 Hbase 提供稳定服务和 Failover 机制&#xff0c;…

蓝桥杯-Excel地址[Java]

目录&#xff1a; 学习目标&#xff1a; 学习内容&#xff1a; 学习时间&#xff1a; 题目&#xff1a; 题目描述: 输入描述: 输出描述: 输入输出样例: 示例 1: 运行限制: 题解: 思路: 学习目标&#xff1a; 刷蓝桥杯题库日记 学习内容&#xff1a; 编号96题目Ex…

算法设计与分析实验报告-贪心算法

校课程的简单实验报告。 算法设计与分析实验报告-递归与分治策略 算法设计与分析实验报告-动态规划算法 算法设计与分析实验报告-贪心算法 dijkstra迪杰斯特拉算法&#xff08;邻接表法&#xff09; 算法设计与分析实验报告-回溯法 算法设计与分析实验报告-分支限界法 …

【网络安全 | XCTF】simple_transfer

考察kali基本工具的使用 方法一 打开文件如图&#xff1a; 存在较多协议&#xff0c;将协议分级&#xff1a; 可以看到DLEP协议占比最大&#xff1a; 将其作为过滤器应用&#xff1a; 搜索DLEP&#xff1a; 并没有有利信息&#xff0c;但观察到多数数据包损坏&#xff1a; 执行…

golang第一卷---go入门

go入门 对于使用go的好处环境变量配置开发工具 参考网站 &#xff1a;go入门 对于使用go的好处 简单好记的关键词和语法。轻松上手&#xff0c;简单易学。更高的效率。比Java&#xff0c;C等拥有更高的编译速度&#xff0c;同时运行效率媲美C&#xff0c;同时开发效率非常高。…

了解英语中主语谓语宾语等等句子成分

目录 官方书面解释&#xff1a; 简介&#xff1a; 细分&#xff1a; 通俗易懂解释&#xff1a; 各个成分的解释&#xff1a; 扩展资料&#xff1a; 官方书面解释&#xff1a; 简介&#xff1a; 在句子中&#xff0c;词与词之间有一定的组合关系&#xff0c;按照不同的…