【芝士】VLSI第五讲:Verilog HDL常量与数据类型
依旧写点科普文赚点CHEESE币(为了减轻学习的难度,每一篇都不会介绍很多东西,避免东西太多难以理解,这一篇是常量和数据类型
一、常量(Constants)
所谓常量,就是在程序运行期间值不能被改变的量。Verilog里的常量主要有三种类型:整数、实数和字符串。
二、整数(Integer)
整数是Verilog里最常用的常量,写法比较特殊,一般格式是:
+/- <size> '<base> <value>
其中:
+/- 可选的符号位,正负号
size 位宽,表示这个数占多少位
' 单引号,是必须的
base 进制,有四种写法:
b 或 B:二进制
d 或 D 或省略:十进制
h 或 H:十六进制
o 或 O:八进制
value 数字序列
举例:
8'b11000101 //位宽为8位的二进制数
8'd162 //位宽为8位的十进制数
8'B1100_0101 //下划线只是为了好看,不影响数值
'hAF //省略位宽,十六进制
'o721 //省略位宽,八进制
写整数的时候有几个坑要注意:
1)长数之间可以用下划线分开,比如 16'b1010_1101_0010_1001,这样看位数更清楚
2)不写位宽的话,默认是32位
3)x 代表不定值,z 代表高阻值,二进制里是1位,八进制里是3位,十六进制里是4位
4'b10x0 //第2位为不定值
8'b1001xxxx//等价于 8'h9x
4)位宽比实际位数长,左边自动补0;最左边是x或z就用x或z补
10'b10 //补成 0000000010
10'bx0x1//补成 xxxxxxx0x1
5)位宽比实际位数短,左边就被截断
3'b1001_0011//等价于 3'b011
6)? 符号和 z 完全等价,可以互换
7)负数写在最前面,表示二进制的补码形式
-8'd5 //表示5的补码
8'd-5 //这种写法非法,不要写
三、实数(Real)
实数在硬件描述里用得不多,主要用于仿真。Verilog里的实数有两种写法:
十进制表示法:比如 2.0、0.1(小数点两边都必须有数字,单独写"."是非法的)
科学计数法:比如 5.1e2(=510.0)、9.6E2(=960.0)、5E-4(=0.0005)
e和E是一个意思,都能用。
四、字符串(Strings)
字符串是双引号包起来的一串字符,主要用于仿真时打印信息,比如:
"INTERNAL ERROR"
字符串不能拆成多行写。Verilog里的字符串其实是按位宽为8的reg型变量来存的,存"Hello world!"(12个字符)就需要 8*12=96 位的reg变量:
reg stringvar;
initial begin
stringvar = "Hello world!";
end
字符串里支持 \n(换行)、\t(制表符)这些C语言里常用的转义字符。
五、数据类型(Data Type)
数据类型是用来描述电路里物理连线、数据存储和数据传输这些实际东西的。Verilog里有四种基本的逻辑状态:
0:低电平、逻辑假
1:高电平、逻辑真
x 或 X:不确定或未知状态
z 或 Z:高阻态(不区分大小写)
六、变量分类
Verilog里的变量分两种大类:
net型(网络连线):常用的有 wire、tri,由驱动端信号决定其值
variable型(变量):常用的有 reg、integer
注:在Verilog-1995标准里 variable型叫做 register型,到了Verilog-2001标准改名为 variable,避免大家把它和硬件里真正的寄存器搞混。
七、net型变量
wire是最常用的net型变量,对应电路里一根普通的物理连线。wire的驱动方式有两种:一种是在结构描述里把它连到门或模块的输出端,另一种是用 assign 持续赋值。
写法:
wire a, b; //定义两个wire型变量
wire databus; //定义一个8位的wire型变量(8位总线)
tri型和wire型功能完全一样,只是强调这个信号可能被多个驱动源驱动。综合器对两者的处理没区别,主要是为了让代码更易读。
八、variable型变量
variable型变量必须放在过程语句(initial或always块)里赋值。在这些过程块里被赋值的信号必须声明成variable型(一般是reg型)。
注意:variable型变量并不一定对应硬件里的触发器或锁存器,综合器会根据上下文决定把它映射成连线还是触发器。
reg型是最常用的variable型变量:
reg a, b; //两个1位reg型变量
reg qout; //8位的reg型向量
integer型是有符号整数变量,比如可以用作循环变量:
integer i;
for (i = 0; i < 8; i = i + 1)
...
页:
[1]