相关阅读
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信号相与时,可能出现三种情况,其中两种出现在net类型信号是wired logic时(wor、wand、trior、triand),这会在之后的章节说明。最后一种最为普遍,结果会是一个驱动强度从strength0一边最大驱动强度到strength1一边最大驱动强度的不确定值x。说了这么多,似乎都绕晕了,没关系,下面通过一个例子可以清晰地学习相关内容。
例2
wire a;
assign (strong0, strong1) a = 1'b0;
assign (weak0, pull1) a = 1'b1;
assign (supply0, supply1) a = 1'b0;
//最终a的驱动强度为supply,值为0,用Su0表示
wire b;
assign (strong0, strong1) b = 1'b1;
assign (pull0, weak1) b = 1'b0;
assign (strong0, supply1) b = 1'b0;
//最终b的驱动强度从strong0到strong1,值为x,用Stx表示
wire c;
assign (highz0, supply1) c = 1'b0;
assign (pull0, supply1) c = 1'b1;
assign (weak0, strong1) c = 1'b1;
//最终c的驱动强度为supply,值为1,用Su1表示
从例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。