Verilog 数据类型

Verilog 数据类型

Verilog中,数据类型主要分为两类:物理数据类型(主要包括连线型和寄存器型)和抽象数据类型(主要包括:整型、时间型、实型和参数型)

物理数据类型与实际硬件电路的硬件关系比较明显,抽象程度比较低

抽象数据类型是进行辅助设计和验证的数据类型

1 物理数据类型

Verilog中主要的物理数据类型是:连线型、寄存器型、存储器型

使用四种逻辑电平(0,1,x,z)和八种信号强度(strength)对实际的电路进行建模

四种逻辑电平是对信号的抽象

信号强度表示数字电路中不同强度的驱动源,用来解决不同驱动强度下的赋值冲突,八种强度如下,自上往下,强度递减

标记符号 名称 类型
supply 电源级驱动 驱动
strong 强驱动 驱动
pull 上拉级驱动 驱动
large 大容性 存储
weak 弱驱动 驱动
medium 中性驱动 存储
small 小容性 存储
highz 高容性 高祖

1.1 连线型

连线表示逻辑单元的物理连接,可以对应电路中的物理信号连线,这种变量不能保持电荷(trireg除外)

连线型变量必须要有驱动源,一种是连接到一个门或者模块的输出端,另一种是用assign对它进行赋值,若没有驱动源,将保持高阻态z

连线型有如下几种:

连线型数据类型 功能说明
wire,tri 标准连线(缺省为该类型)
wor,trior 多重驱动时,具有线或特性的连线型
trireg 具有电荷保持特性的连线型数据
tri1 上拉电阻
tri0 下拉电阻
supply0 电源线,用于对“地”建模,为低电平0
supply1 电源线,用于对电源线建模,为高电平1
wand, trand 多重驱动时,具有线与特性的连线型

1.1.1 wire和tri

wire(连线)和tri(三态线)是最常见的,语法和语义是一致的。

不同之处如下:

  • wire型变量通常用来表示单个驱动门或assign赋值语句的连线

  • 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

    上述真值表是:同时有两个驱动强度相同的驱动源来驱动wire或tri变量时的输出结果

    注意:这里并非是与逻辑,可以理解为都想给线赋值,因此当出现0和1同时赋值时,由于驱动强度相同,因此最终结果是不定值x

1.1.2 wor和trior

wor/trior 0 1 x z
0 0 1 x 0
1 1 1 1 1
x x 1 1 1
z 0 1 x z

1.1.3 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

wand和triand便是与逻辑,因此当0和1同时出现时,结果是0&1的结果

1.1.4 tri0和tri1

tri的特征是,若无驱动源,其值为紧跟的数字

tri0/tri1 0 1 x z
0 0 x x 0
1 x 1 x 1
x x x x x
z 0 1 x 0/1

1.1.5 supply0和supply1

supply0表示GND,supply1表示VCC

1.1.6 trireg线网

trireg线网型可以存储数值,类似于寄存器数据类型,用于电容节点的建模。

当三态寄存器(trireg)的所有驱动源都处于高阻态z时,trireg保持作用在线网的最后一个逻辑值。

trireg的缺省初始值为x

存储电荷强度有如下几个关键字控制:

small、medium、large,默认电荷强度为medium

对于trireg型数据,仿真时其电荷衰减时间应制定为延迟时间

1.2 寄存器型

reg型变量对应的硬件电路元件具有状态保持作用,能够存储数据

reg型变量常用于行为级描述,由过程赋值语句对其进行赋值

reg和wire的区别:

  • reg保持最后一次的赋值,wire需要持续的驱动
  • reg默认初始值为不定值x,wire默认初始值为不定值z

reg型变量一般是无符号的,若将负数赋值给reg型变量,会自动转成其补码形式

1.3 连线型和寄存器型数据声明对比

1.3.1 连线型数据声明

语法为<net_declaration><drive_strength><range><delay><list_of_variables>

drive_strength、range、delay是可选项目,list_of_variables为必选项

  • net_declaration:数据的类型,可以是wire、tri、tri0、tri1、wand、triand、trior、wor、trireg中的任意一个
  • drive_strength:驱动强度
  • range:用来指定数据位标量或矢量。默认表示数据类型为1bit的标量,超过1bit就为矢量形式
  • delay:指定仿真延迟时间
  • list_of_variables:变量名称

1.3.2 寄存器型数据声明

语法为:reg <range><list_of_variables>

  • range:可选项,确定变量位宽
  • list_of_variables:变量名称

1.4 存储器型

存储器型本质上是寄存器型变量的阵列,所以用reg型变量建立寄存器组实现存储器功能。

存储器变量声明格式:reg<range1><name_of_list><range2>

其中,range1和range2是可选项,缺省是都为1

说明:

  • range1:表示存储器中寄存器的位宽
  • range2:表示寄存器的个数

例如:reg [7:0] mem [255:0]表示由256个位宽为8bit的寄存器组成的存储器

2 抽象型数据类型

抽象型数据类型有:整型(integer)、时间型(time)、实型(real)和参数型(parameter)

2.1 整型

整型数据常用于对循环控制变量的说明,在算术运算中被视为二进制补码形式的有符号数

整型数据默认为32bit有符号数

2.2 时间型

时间型与整型数据类似,不过时间型是64bit无符号数

时间型数据主要用于对模拟时间的存储与计算处理,常与系统函数$time一起使用

2.3 实型

Verilog支持实型常量与变量,实型数据在机器码表示法中是浮点型数据,可用于对延迟时间的计算

2.4 参数型

参数型数据属于常量,在仿真开始之前就被赋值,并在仿真过程中保持不变

参数定义方法可以提高程序可可读性和可维护性,常用来定义延迟时间和变量的位宽

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352

推荐阅读更多精彩内容