1.verilog中逻辑表示
在verilog中,有4中逻辑:
逻辑0:表示低电平
逻辑1:表示高电平
逻辑X:表示未知电平
逻辑Z:表示高阻态
2.Verilog中数字进制
Verilog数字进制格式包括二进制、八进制、十进制和十六进制。一般常用的为二进制、十进制和十六进制。
d:表示十进制
b:表示二进制
o:表示八进制
h:表示十六进制
verilog中数字的表示方法:
二进制表示如下:4'b0101 表示4位二进制数字0101
十进制表示如下:4'd2 表示4位十进制数字2(二进制0010)
十六进制表示如下:4'ha 表示4位十六进制数字a(二进制1010)
在verilog中负数的表示方法:在位宽前面加符号
例如:
-5'd25:表示5位的十进制数-25
在veriog中如果位宽缺省则默认位宽是32位宽:'b1001表示32位的二进制数0000_0000_0000_0000_0000_0000_0000_1001。
在veriog中如果进制缺省则默认十进制。
3.标识符
用于定义模块名,端口名,信号名等。
标识符可以是任意一组字母、数字、$符号和_(下划线)符号的组合。但是第一个必须是字母或者下划线,而且标识符区分大小写。
书写标识符时应该简洁明了清晰,最好能够体现含义,如:
clk_50M:表示50兆赫兹时钟。
cpu_addr:表示CPU的地址线
4.数据类型
在verilog里有三种数据类型:
reg型:寄存器数据类型。
wire型:线网型数据类型。
tri型:线网型数据类型。
reg型:
寄存器表示一个抽象的数据存储单元,通过赋值语句可以改变寄存器储存的值,寄存器数据类型的关键字是 reg,reg 类型数据的默认初始值为不定值x
reg [7:0] data //表示定义了一个8位的寄存器类型的数据data.
reg cnt_reg //表示定义了一个一位的寄存器类型的数据cnt_reg
reg [7:0] data [255:0] //定义了256个8位的寄存器data
reg类型的数据只能在 always 语句和 initial 语句中被赋值。
线网型:
线网数据类型表示结构实体(例如门)之间的物理连线。线网类型的变量不能储存值,它的值是由驱动它的元件所决定的。
线网数据类型包括 wire 型和 tri 型,其中最常用的就是 wire 类型
wire型只能在assign语句中被赋值。
在端口申明中,如果数据类型缺省则默认的数据类型是wire型。
5.运算符
Verilog中的操作符按照功能可以分为下述类型:
1、算术运算符:+ (加)- (减)* (乘)/ (除)%(模)
2、关系运算符:>(大于) <(小于) =(等于)<=(小于等于)>=(大于等于) !=(不等于)
3、逻辑运算符:!(非) &&(与) ||(或)
4、条件运算符:? :(判断)例如:assign iic_sda=en?( a? 1'bz:1'b0) :1'bz;// z=a? b:c 先判断a是否为真,如果为真则z=b否则z=c.
5、位运算符:~(按位取反) &(按位与) |(按位或)^(按位异或) 可以作为单目运算:b=&a表示a与自身的所有位按位与
6、移位运算符:<<(左移) >>(右移)
7、拼接运算符:
{0010,1}:将0010和1拼接成00101,最后是一个5位数据
{110,data[7:0]}:将110和data[7:0]拼接成一个新的数据,最终是一个11位数据