五分钟快速过完Verilog HDL基本概念(5)数据类型
数据类型
数据类型是用来表示数字电路中的数据存储和传送单元。
- Verilog HDL中共有19种数据类型;其中4个最基本的数据类型为:
integer型 parameter型 reg型 wire型
- 其它数据类型:large型、medium型、 scalared型、 small型、time型、tri型、tri0型tri1型、triand型、trior型、trireg型、vectored型、wand型、wor型等
常量
在程序运行过程中,其值不能被改变的量,称为常量。
数字(包括整数,x和z值,负数)
parameter常量(或称符号常量)
- 整数型常量(即整常数)的4种进制表示形式:
二进制整数(b或B); 十进制整数(d或D); 十六进制整数(h或H); 八进制整数(o或O)。
- 整常数的3种表达方式:
表 达 方 式 | 说 明 | 举 例 |
---|---|---|
<位宽> ’<进制> <数字> | 完整的表达方式 | 8’b11000101或8’hc5 |
<进制> <数字> | 缺省位宽,则位宽由机器系统决定,至少32位 | hc5 |
<数字> | 缺省进制为十进制,位宽默认为32位 | 197 |
这里位宽指对应二进制数的宽度。
- parameter常量(符号常量)
用parameter来定义一个标识符,代表一个常量——称为符号常量。
parameter 参数名1 = 表达式,参数名2 = 表达式, ……;
参数型数据的确认符 赋值语句表
- 每个赋值语句的右边必须为常数表达式,即只能包含数字或先前定义过的符号常量!
parameter addrwidth = 16; //合法格式
parameter addrwidth = datawidth*2; //非法格式 - 常用参数来定义延迟时间和变量宽度。
- 可用字符串表示的任何地方,都可以用定义的参数来代替。
- 参数是本地的,其定义只在本模块内有效。
- 在模块或实例引用时,可通过参数传递改变在被引用模块或实例中已定义的参数!
符号常量:标识符形式的常量
parameter datawidth =8,addrwidth = datawidth*2; //合法格式
为什么要使用parameter常量?——这样便于多处数字的一次性修改和书写的简洁、有意义。
变量
在程序运行过程中,其值可以改变的量,称为变量。
- 其数据类型有19种,常用的有3种:
网络型(nets type) 寄存器型(register type ) 数组(memory type)
nets型变量不能储存值!即不能存储输入
- nets型变量
定义——输出始终随输入的变化而变化的变量。表示结构实体(如门)之间的物理连接。常用nets型变量: wire,tri:连线类型(两者功能一致) wor,trior:具有线或特性的连线(两者功能一致) wand,triand:具有线与特性的连线(两者功能一致) tri1,tri0:上拉电阻和下拉电阻 supply1,supply0:电源(逻辑1)和地(逻辑0)
- register型变量
定义——对应具有状态保持作用的电路元件(如触发器、寄存器等),常用来表示过程块语句(如initial,always,task,function)内的指定信号 。常用register型变量: reg:常代表触发器 integer:32位带符号整数型变量 real:64位带符号实数型变量 time:无符号时间变量
register型变量与nets型变量的根本区别是: register型变量需要被明确地赋值,并且在被重新赋值前一直保持原值。
register型变量必须通过过程赋值语句赋值!不能通过assign语句赋值!
在过程块内被赋值的每个信号必须定义成register型!