Verilog HDL数据类型
发布时间:2008/5/28 0:00:00 访问次数:2097
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] ;
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] ;
上一篇:Verilog HDL数字值集合
上一篇:Verilog HDL算术运算符