相关阅读
Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm=1001.2014.3001.5482
三、拥有单个强度和确定值的net型信号的线与组合(线网多驱动)
首先来说明一下什么叫信号拥有单个强度和确定值,其实如果一个net型信号拥有单个强度,那它一定拥有确定值。首先我们把上一章中的比例尺给出,如图4所示。下面举例说明单个强度和确定值的定义。
图4 强度比例尺
例1
//下面的net型信号是单个强度,确定值
wire a, b, c;
assign (strong0, pull1) a = 1'b1; //net型信号a拥有单个强度pull,拥有确定值1,用Pu1表示
assign (weak0, supply1) b = 1'b0; //net型信号b拥有单个强度weak,拥有确定值0,用We0表示
assign (highz0, strong1) c = 1'b0; //net型信号c拥有单个强度highz,拥有确定值z,用HiZ表示
//下面的net型信号是多个强度,不确定的值
wire d;
assign (strong0, weak1) d = 1'bx; //net型信号d拥有强度范围strong0到weak1,拥有信号值x(即不确定),用63x表示
通过上面的例1,我们知道了单个强度,确定值的信号的定义,现在提出两个问题。是否可能出现,一个net型信号拥有单个强度,但不确定值的情况呢?答案是不存在,因为单个强度就意味着一个net型信号也就拥有了相应的确定值。是否可能出现,一个net型信号拥有多个强度,但拥有确定值的情况呢?答案是如果在net型信号线与组合前,这种信号也是不存在的。但在线与组合后可能会出现一个信号拥有多个强度,但依然是确定的值。这在后面的章节会进行相关的说明。
下面说明多个拥有单个强度和确定值的net型信号的相与组合的规则:
一、当两个net类型信号线与时,最终结果的驱动强度和值由驱动强度最大的那个net类型信号决定。当两个线与的net类型信号驱动强度相同但值相反时(比如St0和St1),可能出现三种情况,其中两种出现在net类型信号是wired logic时(wor、wand、trior、triand),这会在之后的章节说明。最后一种是最为普遍的情况,线与结果会是一个驱动强度从strength0一边的驱动强度到strength1一边的驱动强度的不确定值x。
二、当两个以上net类型信号线与时,可以首先将其中两个信号按照规则一线与,将它们俩的线与结果再与其他信号线与,直到得出最后结果。
说了这么多,似乎都绕晕了,没关系,下面通过一个例子可以清晰地学习相关内容。
例2
wire a;
assign (strong0, strong1) a = 1'b0; //St0
assign (weak0, pull1) a = 1'b1; //Pu1
assign (supply0, supply1) a = 1'b0; //Su0
//最终a的驱动强度为supply,值为0,用Su0表示
//可以首先将St0与Pu1线与,结果为Pu1,再将Pu1与Su0线与,最终结果为Su0(还有其他结合顺序,结果是一致的)
wire b;
assign (strong0, strong1) b = 1'b1; //St1
assign (pull0, weak1) b = 1'b0; //Pu0
assign (strong0, supply1) b = 1'b0; //St0
//最终b的驱动强度从strong0到strong1,值为x,用Stx表示
//可以先将St1与Pu0线与,结果为St1,再将St1与St0线与,最终结果为Stx(还有其他结合顺序,结果是一致的)
wire c;
assign (highz0, supply1) c = 1'b0; //HiZ
assign (pull0, supply1) c = 1'b1; //Su1
assign (weak0, strong1) c = 1'b1; //St1
//最终c的驱动强度为supply,值为1,用Su1表示
//可以先将Hiz与Su1线与,结果为Su1,再将Su1与St1线与,最终结果为Su1(还有其他结合顺序,结果是一致的)
wire d;
assign (strong0, strong1) d = 1'b0; //St0
assign (strong0, strong1) d = 1'b1; //St1
assign (weak0, weak1) d = 1'b0; //We0
//最终d的驱动强度为strong,值为x,用Stx表示
//一、可以先将St0与St1线与,结果为Stx,再将Stx与We0线与,最终结果为Stx(这是目前我们没有遇到的情况,即线与前的信号不是单个强度和确定值,这在后一章会进行说明)
//二、我们也可以绕开这个问题,改变一下信号结合的顺序,首先将St0与We0线与,结果为St0,再将St0与St1线与,最终结果为Stx
从例2中可以看到,net类型信号a、b、c都拥有三个驱动源,且驱动强度各不相同,根据规则,信号a的驱动源分别为:strong0、pull1和supply0,因此最终结果是supply0,表示为Su0;信号b的驱动源分别为:strong1、pull0和strong0,因此最终结果为驱动强度从strong0到strong1的值为x的信号,表示为Stx。信号c的驱动源分别为:highz0、supply1和strong1,因此最终结果是supply1,表示为Su1。对于四个、五个驱动源也是同样按照规则进行线与,对于例2中最后一种情况下,我们注意到信号在线与前并非单个强度,确定值,笔者将在强度建模(三)中进行说明,目前我们可以通过改变信号线与顺序来规避这个问题。
图5为IEEE标准中说明多个拥有单个强度和确定值的net型信号相与的图片,相信如果理解了上面的相关规则,这个图片的理解不会有任何困难。
图5 拥有单个强度和确定值的net型信号的线与
文章来源:https://www.toymoban.com/news/detail-807692.html
下一章
Verilog基础:强度建模与net型信号的多驱动问题(三)-CSDN博客文章浏览阅读88次,点赞3次,收藏4次。在Verilog基础:强度建模与net型信号的多驱动问题(二)-CSDN博客一文中,我们已经学会了多个拥有单个强度和确定值的net型信号的相与组合的规则,本文将学习更为普遍的net型信号相与的规则,首先我们说明一下一些特殊的net型信号。https://blog.csdn.net/weixin_45791458/article/details/135751553?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22135751553%22%2C%22source%22%3A%22weixin_45791458%22%7D文章来源地址https://www.toymoban.com/news/detail-807692.html
到了这里,关于Verilog基础:强度建模(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!