Verilog基础:强度建模(一)

 相关阅读

Verilog基础icon-default.png?t=N7T8https://blog.csdn.net/weixin_45791458/category_12263729.html?spm=1001.2014.3001.5482


一、强度建模基础 

        Verilog HDL提供了针对线网信号0、1、x、z的精准强度建模方式,这样可以允许将两个线网信号进行线与操作从而更加精确地描述出硬件行为。

        强度建模可以在两个地方使用,一个是连续赋值语句,另一个是门级建模。一个强度由两部分组成,一部分表示信号0的强度,称为strength0;一部分表示信号1的强度,称为strength1。

        strength0包括以下几种:supply0(供电级低电平),strong0(强驱动级低电平),pull0(上下拉级低电平),weak0(弱驱动级低电平)以及highz0(高阻级低电平)。

        strength1包括以下几种:supply1(供电级高电平),strong1(强驱动级高电平),pull1(上下拉级高电平),weak1(弱驱动级高电平)以及highz1(高阻级高电平)。

        需要特别注意的是,(highz0, highz1)以及它的等效表示(highz1, highz0)是非法的,原因也会很简单,这会导致输出永远是高阻。

        尽管对强度进行了这种划分,但为了预测信号组合的结果,可以将强度视为几个连续区域的组合。表1就展示了强度的连续性,左侧列出了用于指定强度名。右侧给出了相关的强度水平。

表1 线网型信号的强度水平

强度名强度等级
supply07
strong06
pull05
large04
weak03
medium02
small01
highz00
highz10
small11
medium12
weak13
large14
pull15
strong16
supply17

        在表1中,有四类驱动强度: supplystrongpullweak,这些强度是门级建模的输出net信号和连续赋值语句的左值net信号所拥有的。

        在表1中,还存在三类电荷储存强度:largemediumsmall,只有在声明trireg线网型变量时能指定。

        注意这里我们没有讨论highz类,这是因为其比较特殊,后面会进行详细说明。

         可以将表1写成下面图1的比例尺形式,这也是后面讨论强度建模细节的方式。

图1 强度比例尺

        如果net型信号拥有确定的值1,则其强度应该全部由strength1部分的强度水平组成(不能包括highz1)。如果net型信号拥有确定的值0,则其强度应该全部由strength0部分的强度水平组成(不能包括highz0)。如果一个net型信号的值是x,则其部分拥有strength0的强度,部分拥有strength1的强度,比如一个Stx信号指的是一个强度范围从strong0到strong1的信号。如果net型信号拥有值z,则代表其强度一定是highz类,至于是highz0还是highz1我们一般不做区分。另外还有两种特殊的信号值H和L,这会在后面进行说明。

二、门级建模和连续赋值语句引入的强度

        在上一节,我们介绍了强度建模的引入方式,下面进行详细阐述。首先给出门级建模和连续赋值语句语法的BNF范式,如图2和图3所示。有关BNF范式的相关内容可以看笔者的以往文章。

图2 门级建模语法的BNF范式

图3 连续赋值语句语法的BNF范式 

        在图2和图3中我们可以看到驱动强度[drive_strength]是门级建模和连续赋值语句的可选项,如果不指定驱动强度[drive_strength],则默认驱动强度为(strong0, strong1)。还要注意的是,对于net声明连续赋值语句,同样可以使用驱动强度[drive_strength],这与普通的连续赋值语句没有区别。

        有了语法的基础,下面就可以举例说明驱动强度的基本概念了。

wire a, b, c, d, e;
assign a = 1;                    //net型信号a拥有单个强度strong,拥有信号值1,用St1表示
assign (strong1, strong0) a = 1; //与上面的形式等价
assign (strong0, strong1) a = 1; //与上面的形式等价
assign (weak0, strong1) a = 0;   //net型信号a拥有单个强度weak,拥有信号值0,用We0表示
assign b = 1'bx;                 //net型信号b拥有强度范围strong0到strong1,拥有信号值x,用Stx表示
assign (weak0, pull1) b = 1'bx;  //net型信号b拥有强度范围weak0到pull1,拥有信号值x,用35x表示
assign c = 1'bz;                 //net型信号c拥有强度hignz,拥有信号值z,用HiZ表示
not (pull0, weak1) (d, 1'b0);    //net型信号d拥有单个强度pull,拥有信号值0,用Pu0表示
wire (weak0, supply1) e = 1'b0;  //net型信号e拥有单个强度weak,拥有信号值0,用We0表示//尽管我们的例子全部是变量net,但是对于矢量net同样适用

         这里要注意的是,不管是连续赋值的左值net型信号还是门级建模的输出信号,信号的值是由输出决定的,而和输入或指定的驱动强度无关,这很好理解,因为输入可以是没有驱动强度的variable型信号,比如reg型信号,而指定的强度相当于只是给结果附上了一个属性,而不影响结果的值,下面举例说明。

wire a, b;
assign (pull1, supply0) b =1'b0;  //b的强度是supply,值是0,用Su0表示
assign (pull0, supply1) a = b;    //a的强度是pull,值是0,用Pu0表示(a的强度与b的强度无关,a的值与b的值有关)

下一章

Verilog基础:强度建模(二)-CSDN博客首先来说明一下什么叫信号拥有单个强度和确定值,其实如果一个net型信号拥有单个强度,那它一定拥有确定值。首先我们把上一章中的比例尺给出,如图4所示。下面举例说明单个强度和确定值的定义。https://blog.csdn.net/weixin_45791458/article/details/135704743?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22135704743%22%2C%22source%22%3A%22weixin_45791458%22%7D 

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

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

相关文章

ACEeditor使用手册(三)

文章目录 ACEeditor使用手册5. 与后端交互5.1 保存与加载文件通过AJAX保存与加载文件与后端框架的集成文件状态同步与冲突解决 5.2 协同编辑与实时同步协同编辑的实现原理WebSocket与实时同步技术协同编辑冲突解决策略 6. ACEeditor常见问题与解决方案6.1 编辑器兼容性问题浏览…

接口的返回值中所需信息作为其他接口入参使用(postman与jmeter的使用)

一、背景: 偶尔会用到一个场景,两个接口之前的调用有依赖关系,将其中一个的返回参数中的部分信息取出来作为入参在第二个接口中使用,代码内是比较好实现,只要定义一个变量,用于参数传递。 如果是测试过程中…

idea带的maven在SpringBoot下载jar包出错

找到idea安装目录 /IntelliJ IDEA/plugins/maven/lib/maven3/conf/settings.xml 搜索:mirrors 添加到mirrors标签里 <mirrors><mirror><id>central</id><mirrorOf>central</mirrorOf><url>https://maven.aliyun.com/repository/publ…

令牌桶算法与Guava的实现RateLimiter源码分析

令牌桶算法与Guava的实现RateLimiter源码分析 令牌桶RateLimiter简介RateLimiter使用示例导入maven依赖编写测试代码 RateLimiter的实现源码解析SmoothRateLimiterSmoothBursty恒速获取令牌acquire(int)tryAcquire(int,long,TimeUnit) 存量桶系数小结 优缺点与漏桶的区别总结 令…

Ontrack EasyRecovery2024恢复软件最新版本有哪些新功能特色?

Ontrack EasyRecovery 16是由Ontrack官方最新出品的一款全面的自助数据恢复软件&#xff0c;中文名称叫做&#xff1a;易恢复。它能够轻松恢复所有的文件类型&#xff0c;包括文档、表格、图片、音视频和其他文件等&#xff0c;支持恢复不同存储介质数据&#xff1a;硬盘、光盘…

关于C#中的LINQ的延迟执行

简介 Linq中的绝大多数查询运算符都有延迟执行的特性,查询并不是在查询创建的时候执行,而是在遍历的时候执行 实例&#xff1a; public void Test2(){List<int> items new List<int>() { -1, 1, 3, 5 };IEnumerable<int> items2 items.Where(x > x &g…

java数据结构与算法刷题-----LeetCode209. 长度最小的子数组

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 解题思路 代码:时间复杂度O(n).空间复杂度O(1) class Solution {public in…

完美实现校验:利用Spring Validation实现强大的输入验证

概述 校验例子 大家平时编码中经常涉及参数的校验&#xff0c;对于一个用户注册的方法来说会校验用户名密码信息&#xff1a; public class UserController {public ResponseEntity<String> registerUser(String username, String password) {if (username null || u…

Python 之 enumerate

enumerate 是一个内置函数&#xff0c;它允许你在遍历一个序列&#xff08;例如一个列表&#xff09;时&#xff0c;同时获取元素的索引和值。 以下是一个使用 enumerate 的例子&#xff1a; fruits [apple, banana, mango] for i, fruit in enumerate(fruits):print(f"E…

UG NX二次开发(C#)-机械管线布置-添加管道路径

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、UG NX中创建线性路径的操作3、采用UG NX二次开发创建线性管线3.1 构建管线上点的数据结构3.2 创建一个链表3.3 创建线性管线的方法3.4 测试结果1、前言 机械管道布局是UG NX的一个应用模…

uniapp、vue、小程序、js图片转base64 示例代码

uniapp是一款跨平台的应用开发框架&#xff0c;基于Vue.js和小程序原生能力进行封装&#xff0c;旨在帮助开发者快速构建跨平台的应用程序。在uniapp中&#xff0c;可以使用Vue.js语法进行页面开发&#xff0c;同时通过使用小程序原生能力&#xff0c;可以实现调用设备的摄像头…

GCC 安装编译linux

1.下载gcc源码 2.配置编译源码 3.安装 下载地址:GCC mirror sites - GNU Project France (no snapshots): ftp.lip6.fr, thanks to ftpmaintlip6.frFrance, Brittany: ftp.irisa.fr, thanks to ftpmaintirisa.frGermany, Berlin: ftp.fu-berlin.de, thanks to ftpfu-berlin…

【数据结构与算法】1.时间复杂度和空间复杂度

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有限&#xff0c;欢迎各位大佬指点&…

二进制数据传输中错误的检测与修正

1 文章问题概述 在二进制传输中&#xff0c;由于各种原因&#xff08;如电磁干扰、硬件故障等&#xff09;&#xff0c;数据位可能会发生变化&#xff0c;导致“1”变成“0”&#xff0c;或者“0”变成“1”&#xff0c;这就是所谓的传输错误。 1.1 如何检测错误 一般通过在发…

【论文阅读】GPT4Graph: Can Large Language Models Understand Graph Structured Data?

文章目录 0、基本介绍1、研究动机2、准备2.1、图挖掘任务2.2、图描述语言&#xff08;GDL&#xff09; 3、使用LLM进行图理解流程3.1、手动提示3.2、自提示 4、图理解基准4.1、结构理解任务4.1、语义理解任务 5、数据搜集5.1、结构理解任务5.2、语义理解任务 6、实验6.1、实验设…

史上最全EasyExcel

一、EasyExcel介绍 1、数据导入&#xff1a;减轻录入工作量 2、数据导出&#xff1a;统计信息归档 3、数据传输&#xff1a;异构系统之间数据传输 二、EasyExcel特点 Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内…

以后要做GIS开发的话是学GIS专业还是学计算机专业好一些?

GIS开发其实严格来说分为前后端以及底层开发。不同的方向&#xff0c;代表了不同的开发语言。 所以大家首先要了解自己具体要做的岗位类型是什么&#xff0c;其次才是选择专业侧重点。 但是严格来说&#xff0c;选择某个专业&#xff0c;到就业方向这个过程&#xff0c;并不是…

el-table样式错乱解决方案

bug&#xff1a; 图片的椭圆框住的地方&#xff0c;在页面放大缩小之后就对不齐了。 原因&#xff1a; 主要原因是当你对页面放大缩小的时候&#xff0c;页面进行了重构&#xff0c;页面的宽高及样式进行了变化&#xff0c;但是在这个更新的过程中&#xff0c;table的反应并没…

Redis: Redis介绍

文章目录 一、redis介绍二、通用的命令三、数据结构1、字符串类型&#xff08;String&#xff09;&#xff08;1&#xff09;介绍&#xff08;2&#xff09;常用命令&#xff08;3&#xff09;数据结构 2、列表&#xff08;List&#xff09;&#xff08;1&#xff09;介绍&…

CompletableFuture**应用源码分析(三)

2.3 CompletableFuture源码分析 CompletableFuture的源码内容特别多。不需要把所有源码都看了&#xff0c;更多的是要掌握整个CompletableFuture的源码执行流程&#xff0c;以及任务的执行时机。 从CompletableFuture中比较简单的方法作为分析的入口&#xff0c;从而掌握整体执…