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位數據