第2节 Verilog HDL 的主要数据类型
Verilog的主要数据类型有三类:
net (线网):表示器件之间的物理连接;
register (寄存器) :表示抽象的存储元件;
parameters(参数):运行时的常数。
1.net(线网)
- net表示器件之间的物理连接,需要门和模块的驱动。
- 没有声明的net的缺省类型为 1 位(标量)wire类型。

2.register
寄存器类的数据类型:

net和register声明
- net声明
<net_type> [range] [delay] <net_name>[, net_name];
net_type: net类型
range: 矢量范围,以[MSB:LSB]格式
delay: 定义与net相关的延时
net_name: net名称,一次可定义多个net, 用逗号分开。
举例:
wand w; // 一个标量wand类型net
tri [15: 0] bus; // 16位三态总线
wire [0: 31] w1, w2; // 两个32位wire,MSB为bit0
- register声明
<reg_type> [range] <reg_name>[, reg_name];
reg_type:寄存器类型
range: 矢量范围,[MSB:LSB]格式。只对reg类型有效
reg_name :register名称,一次可定义多个register,逗号分开
举例: reg a; //一个标量register
reg [3: 0] v; // 从MSB到LSB的4位寄存器向量
reg [7: 0] m, n; // 两个8位register
使用正确的数据类型

数据类型确定方法
- 信号可以分为端口信号和内部信号。
出现在端口列表中的信号是端口信号,其它的信号为内部信号。 - 对于端口信号
输入端口、输入输出端口只能是net类型。
输出端口可以是net类型,也可以是register类型。若输出端口在过程块中赋值则为register类型;若在过程块外(包括实例化语句)赋值,则为net类型。 - 内部信号类型与输出端口相同,可以是net或register类型。若在过程块中赋值,则为register类型;若在过程块外赋值,则为net类型。
一些错误:
用过程语句给一个net类型(或忘记声明类型)的信号赋值。
将实例的输入连接到register类型的信号上。
将模块的输入信号声明为register类型。
举例:

3.参数(parameter)
- 用参数声明一个可变常量,常用于定义延时及宽度等参数。
- 参数定义:parameter <list_of_assignment>;
- 可一次定义多个参数,用逗号隔开。
- 参数的定义是局部的,只在当前模块中有效。参数定义可使用以前定义的整数和实数参数。



