【IEEE_Verilog-4.6/7】Verilog中的线网net类型

本文来自IEEE Standard for Verilog Hardware Description Language中4.6 Net types

4.6 net类型

有几种不同类型net,如表4-1所示:
Table 4-1—Net types

wiretritri0supply0
wandtriandtri1supply1
wortriortrireguwire

4.6.1 Wire and tri nets

Wire 和tri 连接元件。Net类型的wire和tri在语法和功能是相同的;提供两个名字以便net的名字可以表明在模型中net的用途。wire可用于被单个门或连续赋值驱动。Tri可用于多个驱动器驱动一个net。
对来自wire或tri相同强度多个源的逻辑冲突会导致x。
表4-2是一个真值表,用于解决wire和net多个驱动的问题。假设两个驱动具有相同的强度。逻辑强度的建模参看7.9。
Table 4-2—Truth table for wire and tri nets

4.6.2 Wired nets

Wired net有wor,wand,trior,和triand,被用于对wired 逻辑配置建模。当多个驱动器驱动相同的net时,Wired使用不同的真值表解决冲突。Wor和trior应该创建wired和配置以便当任意一个驱动为1,net的结果值是1。Wand和triand应该创建wired和配置以便当任何一个驱动是0,net的值是0。
Table 4-3—Truth table for wand and triand nets

Table 4-4—Truth table for wor and trior nets

4.6.3 Trireg net

Trineg存储一个值,被用来对充电存储建模。一个trireg可能是下面两个状态之一:
驱动状态driven state
当trireg至少一个驱动器有一个值0,1或x,解决后的值传播给trireg,是trireg的驱动值。
电容状态capacitive state
当trireg的所有驱动都是高阻z,trireg保持最后一个驱动值;高阻值z不会从驱动器传播到trireg。
在电容状态下trireg的强度值可以是small,medium和large,这取决于trireg声明中指定的大小。在驱动状态中trireg的驱动值可以是supply,strong,pull和weak,这取决于驱动器的强度。
例如:
图4-1显示了一个驱动强度为medium的trireg,驱动器和模拟结果示意图。

Figure 4-1—Simulation values of a trireg and its driver

A)在仿真时间为0时,wire a和wire b有值1。具有strong 1的值从与门通过彼此连接到wire c的nmos开关传播到trireg d。
B)在仿真时间为10时,wire a的值变为0,将wire c和与门断开。当wire c不在连接到与门,wire c的值变为z。Wire b的值保持为1,因此wire c通过nmos2开关连接到trireg d。z不会从wire c传播到trireg d。反之,trireg d进入到电容状态,存储它的最后一个值1。它存储1具有medium的强度。

4.6.3.1 Capacitive networks

一个电容网络是两个或更多的trireg连接。在一个trireg的电容网络是电容状态,逻辑和强度值可以在trireg之间传播。
例如:
图4-2所示为一种电容网络,其中一些trireg网的逻辑值改变其他trireg相等或更小的逻辑值。


Figure 4-2—Simulation results of a capacitive network
在图4-2,trireg_1a的电容强度是large,trireg_me1和trireg_me2是medium,trireg_sm是small。模拟报告以下事件序列:
A)在仿真0时刻,wire a和wire b有值1。Wire c驱动值1给trireg_1a和trireg_sm; wire d驱动值1给trireg_me1和trireg_me2;
B)在仿真10时刻,wire b变为0,切断trireg_sm和trireg_me2和它们的驱动器。Trireg进入到电容状态,并存储值1,它们最后驱动的值;
C)在仿真20时刻,wire c驱动值0给trireg_1a;
D)在仿真30时刻,wire d驱动值0给trireg_me1;
E)在仿真40时刻,wire a变为0,切断trireg_1a和trireg_me1和它们的驱动器。这些trireg进入到电容状态,存储值0;
F)在仿真50时刻,wire b变为值1。
Wire b值的改变连接trireg_sm和trireg_1a;这些trireg有不同的大小,存储不同的值。这个连接引起smaller trireg存储larger trireg的值,trireg_sm存储值0。
Wire b值的改变也连接trireg_me1和trireg_me2。这些trireg net有相同的大小,存储不同的值。这样的连接引起trireg_me1和trireg_me2转变为x。
在一个电容网络中,充电强度从larger trireg传播到smaller trireg。图4-3显示了一个电容网络和它的仿真结果。


Figure 4-3—Simulation results of charge sharing

在图4-3中,trireg_la的电容强度是large,trireg_sm的电容强度是small。仿真报告以下结果:
A)在仿真0时刻,wire a,wire b和wire c是1,wire a驱动一个strong 1到trireg_la和trireg_sm。
B)在仿真10时刻,wire b的值变为0,切断trireg_la和trireg_sm和wire a。
Trireg_la和trireg_sm进入到电容状态。两个trireg共享trireg_la的larger 充电,因为它们通过tranif1_2连接。
C)在仿真20时刻,wire c的值变为0,切断trireg_sm和trireg_la。Trireg_sm不在共享trireg_la的larger充电,现在存储small 充电。
D)在仿真30时刻,wire c变为1,连接两个trireg。这些trireg现在共享相同的充电。
在仿真40时刻,wire c再次变为0,切断trireg_sm和trireg_la。Trireg_sm不再共享trireg_la的larger充电,现在存储small充电。

4.6.3.2 Ideal capacitive state and charge decay

Trireg可以无限期的保持它的值,或它的电荷随着时间衰减。电荷衰减的模拟时间在trireg的延迟规范中指定。关于电荷衰减的解释参看7.14.2。

4.6.4 Tri0 and tri1 nets

Tri0和tri1对net建模,具有上拉电阻和下拉电阻。Tri0等同于pull强度连续赋值为0驱动它的wire 。Tri1等同于pull强度连续赋值为1驱动它的wire。
当没有驱动器驱动tri0,具有pull强度的值为0。当没有驱动器驱动tri1,具有pull强度的值为1。当有多个驱动器驱动tri0或tri1时,被驱动net的驱动器结合强度pull隐式地决定了net的值。逻辑强度建模的讨论见7.9。
表4-5和表4-6是对具有强度strong的多个驱动器建模的tri0和tri1真值表。Net的结果值有strong强度值,除非两个驱动器是z,net的强度是pull。
Table 4-5—Truth table for tri0 net

Table 4-6—Truth table for tri1 net

4.6.5 Unresolved nets

Uwire是一个未决的或unidriver的线,被用来对只有一个驱动器的net建模。Uwire类型被用来加强这个限制。将uwire网络的任何位连接到一个以上的驱动程序都将是一个错误。将uwire网络连接到双向通开关的双向终端应该是错误的。
在12.3.9.3中的端口连接规则确保一个实现在整个网络层次结构中强制执行这个限制,如果不这样做,就会给出警告。

4.6.6 Supply nets

Supply0和supply1被用来对电路中的电源建模。这些net有supply强度。

4.7 Regs

对一个reg赋值通过过程赋值。因为reg在赋值期间保持这个值,它用来对硬件寄存器建模。边缘敏感(即触发器)和水平敏感(即复位和透明锁存器)存储元素可以被建模。Reg不需要表示硬件存储元素,因为它也能用来表示组合逻辑。

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值