Verilog基础:强度建模(二)

这篇具有很好参考价值的文章主要介绍了Verilog基础:强度建模(二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 相关阅读

Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm=1001.2014.3001.5482


 三、拥有单个强度和确定值的net型信号的线与组合(线网多驱动)

        首先来说明一下什么叫信号拥有单个强度和确定值,其实如果一个net型信号拥有单个强度,那它一定拥有确定值。首先我们把上一章中的比例尺给出,如图4所示。下面举例说明单个强度和确定值的定义。

Verilog基础:强度建模(二),Verilog基础,fpga开发,硬件工程,Verilog,数字IC

图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型信号相与的图片,相信如果理解了上面的相关规则,这个图片的理解不会有任何困难。

Verilog基础:强度建模(二),Verilog基础,fpga开发,硬件工程,Verilog,数字IC

图5  拥有单个强度和确定值的net型信号的线与

 

下一章

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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包