RTL基本知识:线网类型知多少

Verilog中常用的线网类型如下表所示:

关键词

说明

wire

连线

wand

线与

wor

线或

tri

三态线网

triand

三态线与

trior

三态线或

tri0

三态下拉线网

tri1

三态上拉线网

trireg

三态寄存器

supply0

用于对“地”建模

supply1

用于对“电源”建模

uwire

连线,用于避免多驱动

1 wire和tri

wire和tri功能和使用方法完全一样,都用来连接电路元件,主要区别可能仅在书写上不同,同时使用tri可以增加程序的可读性,表示该线网为有三态功能。当有多个不同值的驱动同时驱动线网时,此时wire和tri声明的线网为不定态(unknown)。下表为wire和tri在多驱动时的逻辑真值表:

wire/tri

0

1

X

Z

0

0

X

X

0

1

X

1

X

1

X

X

X

X

X

Z

0

1

X

Z

2 wand/triand

wand和triand的区别与wire和tri类似。当有过个不同值的驱动同时驱动线网时,此时wand和triand声明的线网为不定态(unknown)。下表为wand和triand在多驱动时的逻辑真值表:

wand/triand

0

1

X

Z

0

0

0

0

0

1

0

1

X

1

X

0

X

X

X

Z

0

1

X

Z

3 wor和trior

wor和trior区别与wire和tri类似。当有过个不同值的驱动同时驱动线网时,此时wor和trior声明的线网为不定态(unknown)。下表为wor和trior在多驱动时的逻辑真值表:

wor/trior

0

1

X

Z

0

0

1

X

0

1

1

1

1

1

X

X

1

X

X

Z

 

1

X

Z

4 tri0和tri1

该类线网当没有任何驱动时,其值为pulldown或者pullup,即下拉或者上拉,此时的信号强度为Pull(Pu0或者Pu1),且这种强度不用在线网声明时显式指出,其模拟的电路结构类似下图:

下表为tri0和tri1在多驱动时的逻辑真值表:

tri0

0

1

X

Z

0

0

X

X

0

1

X

1

X

1

X

X

X

X

X

Z

0

1

X

0

tri1

0

1

X

Z

0

0

X

X

0

1

X

1

X

1

X

X

X

X

X

Z

0

1

X

1

5 supply0和supply1

supply0和supply1用来模拟电路中的电源地,其信号强度为supply(Su)。

6 uwire

当线网声明为uwire后,该类型的线网约束了该线网只能有一个驱动源,如果连接多于一个驱动时将会报错。所以uwire类型的线网不能用于双向端口之类的具有双向数据流向特征的语句中。

7 trireg

trireg用于存储数值,其功能类似于寄存器,常用于电容节点的建模.当该线网的驱动源都为高阻态时,线网上现实的状态为最后一次线网上保存的值 (0,1,x),该线网的缺省态为不定态,这里需要注意的是该线网的强度只能是small(Sm),medium(Me),large(La)三种,该强度指定一般在线网声明时进行,默认强度为medium.

仿真结果如下:

源程序如下:

在时刻0,nmos1和nmos2全部打开,强度St1的信号复制给了cap1和cap2,此时cap1和cap2中存储的值为St1;

在时刻10,nmos1关闭,St1不能驱动到cap1中,此时cap1中的值为最后一次存储的值1,高电平1的强度为声明时指定的large1(La1)。因为nmos2是打开,所以cap1和cap2是连通的,此时cap1和cap2的强度都为La1;

在时刻20,nmos1和nmos2全部关闭,此时cap1为声明时指定的La1,cap2为声明时指定的Sm1;

在时刻30,nmos2打开,cap1和cap2连通,此时cap1和cap2的强度都为La1;

时刻40情况与时刻30情况类似,不再赘述。

 更多资讯,请关注个人公众号:芯光灿烂

猜你喜欢

转载自www.cnblogs.com/xgcl-wei/p/9244891.html