4.5 数据类型
Verilog HDL 主要包括两种数据类型
线网类型(net type) 和寄存器类型(reg type )。
4.5.1 线网类型
1. wire 和 tri 定义
线网类型主要有wire 和tri 两种。线网类型用于对结构化器件之间的物理连线的建模。如器件
的管脚,内部器件如与门的输出等。以上面的加法器为例,输入信号A,B是由外部器件所驱动,
异或门X1的输出S1是与异或门X2输入脚相连的物理连接线,它由异或门X1所驱动。
由于线网类型代表的是物理连接线,因此它不存贮逻辑值。必须由器件所驱动。通常由assign
进行赋值。如 assign A = B ^ C;
当一个wire 类型的信号没有被驱动时,缺省值为Z(高阻)。
信号没有定义数据类型时,缺省为 wire 类型。
如上面一位全加器的端口信号 A,B,SUM等,没有定义类型,故缺省为wire 线网类型。
2. 两者区别
tri 主要用于定义三态的线网。
4.5.2 寄存器类型
2004-08-16 第20页,共41页
版权所有,侵权必究
绝密
Verilog HDL 入门教程请输入文档编号
1. 定义
reg 是常用的寄存器类型,寄存器类型通常用于对存储单元的描述,如D型触发器、ROM
等。存储器类型的信号当在某种触发机制下分配了一个值,在分配下一个值之时保留原值。但必
须注意的是,reg 类型的变量,不一定是存储单元,如在always 语句中进行描述的必须用reg 类型
的变量。
reg 类型定义语法如下:
reg [msb: lsb] reg1, reg2, . . . r e g N;
msb 和lsb 定义了范围,并且均为常数值表达式。范围定义是可选的;如果没有定义范围,缺
省值为1 位寄存器。例如:
reg [3:0] Sat; // S a t 为4 位寄存器。
reg Cnt; //1 位寄存器。
reg [1:32] Kisp, Pisp, Lisp ;
寄存器类型的值可取负数,但若该变量用于表达式的运算中,则按无符号类型处理,如:
reg A ;
.....
A = -1;
....
则A的二进制为 1111,在运算中,A总按无符号数15 来看待。
2. 寄存器类型的存储单元建模举例
用寄存器类型来构建两位的D触发器如下:
reg [1:0] Dout ;
.....
always@(posedge Clk)
Dout <= Din;
....
用寄存器数组类型来建立存储器的模型,如对2个8位的RAM建模如下:
reg [7:0] Mem[0:1] ;
对存储单元的赋值必须一个个第赋值,如上2个8位的RAM的赋值必须用两条赋值语句:
.....
Mem[0] = ’ h 55;
Mem[1] = ’ haa;
....
3. 书写规范建议
对数组类型,请按降序方式,如[7:0] ;
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。