Verilog基础:强度建模与net型信号的多驱动问题(三)

 相关阅读

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


 四、一般情况下的net型信号的线与组合(线网多驱动)

        在Verilog基础:强度建模与net型信号的多驱动问题(二)-CSDN博客一文中,我们已经学会了多个拥有单个强度和确定值的net型信号的相与组合的规则,本文将学习更为普遍的net型信号相与的规则,首先我们说明一下一些特殊的net型信号。

        一、一个net型信号拥有多个强度,和确定值(这只可能是信号线与的中间结果)。

        二、一个net型信号拥有x值,它指的是net即拥有部分strength0的驱动强度也拥有部分strength1的驱动强度(这可能是信号线与的中间结果,也可能是由特定输入导致的输出x)。

        三、一个信号拥有L值,它指的是net信号拥有部分strength0的驱动强度加上highz的驱动强度。

        四、一个信号拥有H值,它指的是net信号拥有部分strength1的驱动强度加上highz的驱动强度。

        H和L信号可以通过一些门级器件得到,比如图6是三态门器件的真值表,可以看到在某些输入情况下输出的值是H和L,在输出H和L时,其强度范围分别是从highz到strength1的某个驱动强度和从highz到strength0的某个驱动强度,这个驱动强度分别由这个门级器件的strength1和strength0驱动强度决定。

图6 三态门的真值表

        上面的概念可能比较难以理解, 下面将通过一些举例来详细说明,图7给出了我们一直使用的强度比例尺。

图7 强度比例尺

例1
//一个net型信号拥有多个强度,和确定值
wire a;
bufif (strong0, strong1) (a, 1'b0, 1'bx); //StL
assign (pull0, pull1) a = 1'b0;   //Pu0
//最终a的驱动强度从Pull0到Strong0,值为0,用650表示//一个net型信号拥有x值
wire b;
assign (weak0, weak1) b = 1'bx; //Wex
//最终b的驱动强度从Weak0到Weak1,值为x,用Wex表示wire c;
assign (strong0, strong1) c =1'b0; //St0
assign (strong0, strong1) c =1'b1; //St1
//最终c的驱动强度从Strong0到Strong1,值为x,用Stx表示//一个net型信号拥有H值
wire d;
bufif (strong0, pull1) (d, 1'b1, 1'bx); //PuH
//最终d的驱动强度从HiZ到Pull1,值为H,用PuH表示//一个net型信号拥有L值
wire e;
bufif (weak0, pull1) (e, 1'b0, 1'bx); //WeL
//最终e的驱动强度从HiZ到We0,值为L,用WeL表示

         尽管H值和L值看似是除1、0、x、z以外的值,但其实它们只是为了方便表示一个强度范围,而且H值和L值的net信号在后续使用时会被当做x值看待,尽管它的驱动强度似乎完全在strength0或strength1的范围内,但它仍然不被看做0和1,这点在第一章便已说明。

        图8表示了一个We0信号与We1信号线与后产生了Wex的结果。图9在强度比例尺上表示了结果的驱动强度范围。

wire a;
assign (weak0, weak1) a = 1'b0; //We0
assign (weak0, weak1) a = 1'b1; //We1
//最终结果是Wex

图8 相同驱动强度和相反值的信号线与

图9 Wex信号的强度范围

        图10显示了两个三态器件输出H值和L值的过程。注意到输出的强度标注实际上是多余的,且不必要的,因为我们只需输入的值就可判断输出的结果值。图11和图12在强度比例尺上表示了两个结果的驱动强度范围。

wire a, b;
bufif1 (strong0, strong1) (a, 1'b1, 1'bx); //StH,驱动强度从highz到strong1
bufif0 (strong0, strong1) (b, 1'b0, 1'bx); //StL,驱动强度从highz到strong0
$display(a);
$display(b);输出:
x
x

图10 控制端输入为x的三态门

图11 StH信号的强度范围

 图12 StL信号的强度范围

        下面我们来研究一个H信号与一个L信号相与的规则,我们假设两个线与的信号为PuH和WeL,如图13所示。

wire a;
bufif1 (pull0, pull1) (a, 1'b1, 1'bx); //PuH,驱动强度从highz到pull1
bufif0 (weak0, weak1) (b, 1'b0, 1'bx); //WeL,驱动强度从highz到weak0

图13 H与L信号线与

        根据H的定义,我们知道PuH包含了可能的6个驱动强度(包括highz),WeL包含了可能的4个驱动强度(包括highz),按照两两组合的规则,总共有24种组合,我们要做的就是把这24种组合都考虑起来。当然,这不是让你将24中组合全部列出来,因为只需要略加观察便可知We0和We1的线与会导致结果(Wex)可能取得它们之间(包括We0和We1)任意的一种驱动强度和x值,然后PuH含有的large1和pull1也是可能取得的驱动强度,也即结果的驱动强度从We0到Pu1,值为x,表示为35x,如图14所示。

图14  35x信号的强度范围

        有了上面的基础,我们可以来看一个更复杂的例子,它包含了四个驱动源,如图15所示。

wire a, b, d, out;
assign (strong0, strong1) a = 1'b1; //St1
nmos (out, a, 1'bx);                //StH
pullup (out);                       //Pu1
pulldown (b);                       //Pu0
pmos (out, b, 1'bx);                //StL
assign (strong0, strong1) d = 1'b0; //St0
and (weak0, weak1) (out, d, d);     //We0

图15 一个拥有四个驱动源的网络

        图15中包含了nmos和cmos开关,开关不能指定驱动强度但它可以传播输入的驱动强度至输出,因此其输入也必须是net类型信号,图16给出了开关的真值表。因为开关不能指定输出的驱动强度,所以开关输出信号(包括1、0、x、z、H、L)的驱动强度由输入决定。

图16 开关的真值表

        由于输出out有四个驱动源,我们可以自行选择它们的相与顺序,图中是先将pullup器件和nmos的输出线与得出中间结果,pullup器件输出的是Pu1,包含了单个驱动强度,而nmos器件根据规则,输出的是StH,包含了可能的7个驱动强度(包括highz)。它们组合应该有7种情况,但经过观察可知Pu1优先于StH中小于Pu1强度的驱动强度,而StH中含有的St1也是可能的驱动强度,因为它优于Pu1,因此中间结果的驱动强度从Pu1到St1,值为1,表示为651,如图17所示。随后将pulldown器件和pmos的输出线与得出中间结果530,如图18所示,具体过程在此不赘述。

图17 一个拥有确定值和多个驱动强度的中间信号651的强度范围

图18 一个拥有确定值和多个驱动强度的中间信号530的强度范围

        最后需要考虑两个中间结果651和530的线与过程,651信号拥有2个驱动强度而530信号拥有3个驱动强度。它们组合应该有6种情况,经过观察可知,651信号中的Pu1驱动强度与530信号中的Pu0信号线与结果是Pux,再加上651信号中的St1即为所有可能的驱动强度结果,其他的组合情况都被包含在上面两种结果中,所以不需要再讨论了,因此结果为驱动强度从Pu0到St1的,值为x的信号,表示为56x,如图19所示,其中5代表在stength0中的强度,6代表在strength1中的强度。

图19  56x信号的强度范围

        我们再来看一个例子,它展示了广义的StH所包含的驱动强度范围。图20很好理解,两个门的输出信号分别为StH与We0,随后将其线与。

wire e;
and N1 (highz0, strong1) (e, 1'b1, 1'bx); //06x?StH!
and N2 (strong1, weak0)  (e, 1'b0, 1'b0); //We0

图20 广义的StH

        按照之前的说法,N1的输出应该是06x,即强度从highz0到strong1的值为x的信号,但实际上结果是StH,因为我们一般不将highz0和highz1进行区分,统称为highz,所以061和06x其实都会被表示成StH,而它们本身并不存在。

        图21显示了N1输出结果StH的驱动强度范围,注意其中包含了highz0。

图21 广义StH信号的强度范围

        我们可以很轻松地得出出N2输出信号的强度We0,因为其只有单个强度,如图22所示。

图22 We0信号的强度范围

         现在将We0信号和广义StH信号线与,如果有了之前的基础,很快就可以得出结果为36x,因为We0与广义StH信号中的We1相与可以得到Wex,然后再加上广义StH信号中的La1、Pu1、St1即可构成所有驱动强度范围,如图23所示。

图23 36x信号的强度范围

        下面留4道习题用于检验本章的学习成果,如有任何疑问,可以私聊博主或在评论区发言。

习题1

习题2

习题3

习题4

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

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

相关文章

如何在Linux部署JumpServer堡垒机并实现远程访问本地服务

文章目录 前言1. 安装Jump server2. 本地访问jump server3. 安装 cpolar内网穿透软件4. 配置Jump server公网访问地址5. 公网远程访问Jump server6. 固定Jump server公网地址 前言 JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。JumpS…

如何使用支付宝沙箱环境本地配置模拟支付并结合内网穿透远程调试

文章目录 前言1. 下载当面付demo2. 修改配置文件3. 打包成web服务4. 局域网测试5. 内网穿透6. 测试公网访问7. 配置二级子域名8. 测试使用固定二级子域名访问 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通俗易懂&#xff…

如何自己实现一个Spring Boot Starter

现在很多开源的组件都会提供对应的 springboot-starter 包给我们去用,要做一个 starter 包并不难。参照Spring内置的实现就好了: 1、在工程里引入 starter 打包相关的依赖。 2、在我们工程内建 spring.factories 文件,编写我们配置类的全限类…

ubuntu源码安装MySQL

mysql下载路径 创建新数组 mysql sudo groupadd mysql# 创建用户 mysql ,指定属组为 mysql,禁止其登录 # --no-create-home选项,创建用户时不会自动创建主目录 sudo adduser --system --no-create-home --ingroup mysql --shell /sbin/nologin mysql创…

安卓Spinner文字看不清

Holo主题安卓13的Spinner文字看不清&#xff0c;明明已经解决了&#xff0c;又忘记了。 spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {TextView textV…

基于CLIP4Clip的DRL的WTI模块实现

关于DRL的WTI模块&#xff1a; Weighted Token-wise Interaction&#xff1a; 直觉上&#xff0c;并非所有的单词和视频帧都同等重要。我们提供一种自适应方法&#xff0c;来调整每个标记的权重大小&#xff1a; 注&#xff1a;其中两个f函数都是MLP和softmax构成。 WTI的算…

网络安全的信息收集方法有哪些?

网络安全攻击中的信息收集是攻击者为了了解目标系统的弱点、配置、环境和潜在的防御措施而进行的活动。以下是一些常见的信息收集手段&#xff1a; 开放网络资源查询&#xff1a; 使用搜索引擎查找关于目标组织的信息&#xff0c;包括新闻稿、社交媒体帖子、官方网站等。通过W…

140:vue+leaflet加载here地图(v2软件多种形式)

第140个 点击查看专栏目录 本示例介绍如何在vue+leaflet中添加HERE地图(v2版本的软件),并且含多种的表现形式。包括地图类型,文字标记的设置、语言的选择、PPI的设定。 v3版本和v2版本有很大的区别,关键是引用方法上,请参考文章尾部的API链接。 直接复制下面的 vue+leaf…

【华为 ICT HCIA eNSP 习题汇总】——题目集7

1、一台 PC 的 MAC 地址是 5489-98FB-65D8 &#xff0c;管理员希望该 PC 从 DHCP 服务器获得指定的 IP 地址为192.168.1.11/24&#xff0c;以下命令配置正确的是&#xff08;&#xff09;。 A、dhcp static-bind ip-address 192.168.1.11 24 mac- address 5489-98FB-65D8 B、dh…

Kafka-服务端-日志存储

基本概念 首先需要了解的是&#xff0c;Kafka使用日志文件的方式保存生产者发送的消息。每条消息都有一个offset值来表示它在分区中的偏移量&#xff0c;这个offset值是逻辑值&#xff0c;并不是消息实际存放的物理地址。 offset值类似于数据库表中的主键&#xff0c;主键唯一…

亚马逊KYC审核的重要性,所需提交的文件有哪些?—站斧浏览器

亚马逊KYC审核的重要性有哪些&#xff1f; KYC审核是亚马逊对卖家身份的一种验证&#xff0c;确保卖家遵守相关法规。只有通过审核的卖家才能在欧洲平台进行销售。因此&#xff0c;正确理解和应对KYC审核对于卖家来说至关重要。 注册完成后立即触发&#xff1a;新注册的卖家可…

华为欧拉操作系统结合内网穿透实现固定公网地址SSH远程连接

文章目录 1. 本地SSH连接测试2. openEuler安装Cpolar3. 配置 SSH公网地址4. 公网远程SSH连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 欧拉操作系统(openEuler, 简称“欧拉”)是面向数字基础设施的操作系统,支持服务器、云计算、边缘openEuler是面向数字基础设施的操作系…

Linux与windows互相传输文件之rzsz命令

文章目录 关于rzsz安装软件使用命令方法一&#xff1a;直接拖拽方法二&#xff1a;直接在终端输入rz 关于rzsz 这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件 安装完毕之后可以通过拖拽的方式将文件上传过去 首先看一下我们的机器可以使用网络吗&#xff…

c语言-实现动态内存管理的库函数

文章目录 前言一、什么是动态内存分配&#xff1f;二、malloc()和free()2.1 malloc()介绍2.2 malloc()的使用2.3 free()介绍 三、calloc()3.1 calloc()介绍3.2 calloc()使用 四、realloc()4.1 realloc()介绍4.2 realloc()使用 总结 前言 本篇文章介绍c语言中实现动态内存管理的…

U-Mamba: Enhancing Long-range Dependency for Biomedical Image Segmentation

Abstract 卷积神经网络(Convolutional Neural Networks, cnn)和transformer是生物医学图像分割中最流行的架构&#xff0c;但由于固有的局部性或计算复杂性&#xff0c;它们处理远程依赖关系的能力有限。为了解决这一挑战&#xff0c;我们引入了U-Mamba&#xff0c;一个通用的…

二.Winform使用Webview2在Demo1中实现地址简单校验

Winform使用Webview2在Demo1中实现地址简单校验 往期目录回顾添加对于的简单url验证提示通过上节和本节涉及到的函数有 往期目录 往期相关文章目录 专栏目录 回顾 通过一.Winform使用Webview2(Edge浏览器核心) 创建demo(Demo1)实现回车导航到指定地址 我们已经知道了解决资源…

HCIA-HarmonyOS设备开发认证-HarmonyOS简介

目录 前言目标一、HarmonyOS简介1.1、初识HarmonyOS1.2、HarmonyOS典型应用场景 二、HarmonyOS架构与安全2.1、HarmonyOS架构 前言 本章主要介绍HarmonyOS分布式操作系统的概念、关键技术与能力以及HarmonyOS典型的应用场景。 目标 学习完成本课程后&#xff0c;您将能够&…

MySql必知必会

1.什么是BufferPool&#xff1f; Buffer Pool基本概念 Buffer Pool&#xff1a;缓冲池&#xff0c;简称BP。其作用是用来缓存表数据与索引数据&#xff0c;减少磁盘IO操作&#xff0c;提升效率。 Buffer Pool由缓存数据页(Page) 和 对缓存数据页进行描述的控制块 组成, 控制…

树莓派 Linux - 使用ngrok实现内网穿透

官网 &#xff1a;ngrok | Unified Application Delivery Platform for Developers 简单的注册一下即可 我这里的操作系统是kali Linux 选择linux 启动服务最好使用静态域名 把需要穿透的端口号配置为本地的端口号即可 参考视频 没有服务器&#xff0c;就不能上线网站了&am…

HYBBS 表白墙网站PHP程序源码 可封装成APP

源码介绍 PHP表白墙网站源码&#xff0c;可以做校园内的&#xff0c;也可以做校区间的&#xff0c;可封装成APP。告别QQ空间的表白墙吧。 安装PHP5.6以上随意 上传程序安装&#xff0c;然后设置账号密码&#xff0c;登陆后台切换模板手机PC都要换开启插件访问前台。 安装完…