一、基本数据类型:
1. wire(线网)
wire类型表示硬件单元之间的物理连线,由其连接的器件输出端连续驱动。
2.reg(寄存器)
寄存器(reg)用来表示存储单元,它会保持数据原有的值,直到被改写
3.向量
当位宽大于 1 时,wire 或 reg 即可声明为向量的形式
还还支持指定 bit 位后固定位宽的向量域选择访问
二、寄存器变量-integer,real,time
4.integer(整数)
整数类型用关键字integer来声明。声明时不用指明位宽,位宽和编译器有关,一般为32bit。reg型变量为无符号数,而integer型变量为有符号数。
5.real
实数用关键字 real 来声明,可用十进制或科学计数法来表示。实数声明不能带有范围,默认值为 0。如果将一个实数赋值给一个整数,则只有实数的整数部分会赋值给整数
6.time
Verilog 使用特殊的时间寄存器 time 型变量,对仿真时间进行保存。其宽度一般为 64 bit,通过调用系统函数 $time 获取当前仿真时间。
三、数组
在 Verilog 中允许声明 reg, wire, integer, time, real 及其向量类型的数组。
数组维数没有限制。线网数组也可以用于连接实例模块的端口。数组中的每个元素都可以作为一个标量或者向量,以同样的方式来使用
定义:
赋值:
*注意
四、存储器
存储器变量就是一种寄存器数组,可用来描述 RAM 或 ROM 的行为
五、参数
参数用来表示常量,用关键字 parameter 声明,只能赋值一次,但是,通过实例化的方式,可以更改参数在模块中的值。(局部参数用 localparam 来声明)
六、字符串
字符串保存在 reg 类型的变量中,每个字符占用一个字节(8bit)。因此寄存器变量的宽度应该足够大,以保证不会溢出
例如,为存储字符串 "run.runoob.com", 需要 14*8bit 的存储单元: