1、標志符
標識符可以是一組字母、數字、下劃線和$符號的組合,且標識符的第一個字符必須是字母或者下劃線。另外,標識符區分大小寫。要注意的是Verilog HDL定義了一系列保留字作為關鍵字,但只要小寫的關鍵字才是保留字,所以對于不確定是否為保留字,可以將標識符首字母大寫。
2、數據類型
1、wire型
Verilog程序模塊中輸入、輸出信號類型默認時自定義為wire型。
wire型信號的定義格式如下:
wire[n-1:0] 數據名1,數據名2,...數據名N;
總共定義了N條線,每條線的位寬為n。
2、reg型
reg是寄存器數據類型的關鍵字,是數據存儲單元的抽象,通過賦值語句可以改變寄存器存儲的值。reg型數據常用來表示always模塊內的指定信號,在always塊內被賦值的每一個信號都必須定義為reg型。
reg型信號的定義格式如下:
wire[n-1:0] 數據名1,數據名2,...數據名N;
總共定義了N個寄存器變量,每條線的位寬為n。
3、memory型
Verilog通過對reg型變量建立數組來對存儲器建模,memory型通過擴展reg型數據的地址范圍來達到二維數組的效果。其定義的格式如下:
reg[n-1:0] 存儲器名 [m-1:0];
其中,reg[n-1:0]定義了每一個存儲器中每一個存儲單元的大小;存儲器后面的[m-1:0]則定義了存儲器的大小。
eg:reg [15:0] ROMA [7:0];
即定義了一個存儲位寬為16位,存儲深度為8的一個存儲器。
要注意的是,一個n位的寄存器可以在一條賦值語句中直接進行賦值,而一個完整的存儲器則不行。如果要對memory型存儲單元進行讀寫,則必須要指明地址。
4、parameter型
在Verilog HDL中用parameter來定義常量。
parameter型信號的定義格式如下:
parameter 參數名1=數據名1;
3、模塊端口
1、input:模塊從外界讀取數據的接口,在模塊內不可寫。
2、output:模塊往外界送出數據的接口,在模塊內不可讀。
3、inout:可讀取數據也可送出數據,數據可雙向流動。
4、常量集合
Verilog HDL有四種基本數值:
(1)0:邏輯0或“假”;
(2)1:邏輯1或“真”;
(3)x:未知;
(4)z:高阻。
1、整數
整數型可以按如下兩種方式書寫:簡單的十進制數格式及基數表示格式。
(1)簡單的十進制數格式
eg:45 -46
負數以補碼表示。
(2)基數表示格式
基數表示的整數格式為:
[長度]'基數 數值
eg:6'b9 5'o9 9'd6
2、實數
(1)十進制計數法
eg:2.0 16539.236
(2)科學計數法
eg:235.12e2 5e-4
其中,e與E相同。
3、字符串
字符串是雙引號內的字符序列,字符串不能分成多行書寫。字符串是8位ASCLL值的序列。
eg:reg[1:8*7]Char;
Char="counter"
5、運算符和表達式
1、基本算術運算符
包含:+、-、*、/、%
其中,取模運算(%)結果的符號位和模運算的第一個操作數的符號保持一致(按照無符號進行運算,再對結果添加符號)。
2、賦值運算符
賦值運算分為連續賦值和過程賦值兩種。
(1)連續賦值
連續賦值語句只能用來對線網型變量進行賦值,而不能對寄存器變量進行賦值,在實際使用時,有以下幾種應用:
I.對標量線網型賦值
wire a,b;
assign a=b;
II.對矢量線網型賦值
wire [7:0] a,b;
assign a=b;
III.對矢量線網型中的某一位賦值
wire [7:0] a,b;
assign a[3]=b[1];
IV.對矢量線網型中的某幾位賦值
wire [7:0] a,b;
assign a[3:0]=b[3:0];
V.對任意拼接的線網型賦值
wire a,b;
wire [1:0] c;
assign c={a,b};
(2)過程賦值
過程賦值主要用于兩種結構化模塊(initial模塊和always模塊)中的賦值語句,在過程塊中只能使用過程賦值語句,不能出現連續賦值語句。其中,賦值操作符有兩種:“=”和“<=”,分別代表阻塞賦值和非阻塞賦值。
過程賦值語句只能對寄存器類型的變量(reg、integer、real和time)進行操作。對于存儲器類型,只能對指定地址單元的整個字進行賦值,不能對其中某些位單獨賦值。
3、關系運算符
關系運算符共8種:>、>=、<、<=、==(邏輯相等)、!=(邏輯不相等)、===(實例相等)、!==(實例不相等)。
實例算子===和!==可以比較含有X和Z的操作數。
4、邏輯運算符
(1)&& 邏輯與
(2)|| 邏輯或
(3)!邏輯非
5、條件運算符
三目運算符,格式如下:
y = x ? a : b;
若第一個操作數y=x為True,算子返回第二個操作數a,否則返回第三個操作數b。
6、位運算符
按位進行邏輯運算,共有7中邏輯運算符:
~非、&與、|或、^異或、^~同或、~&與非、|~或非。
如果兩個操作數的長度不相等,將會對較短的數高位補零,使輸出結果的長度與位寬較長的操作數的長度保持一致。
7、移位運算符
左移<<一位相當于乘2,右移一位相當于除2.
s<
8、一元約簡運算符
單目運算符。其運算過程為:首先將操作數的第一位與第二位進行與、或、非運算;然后再將結果和第三位進行與、或、非運算,以此類推,直至最后一位。
eg:reg [3:0] s1;
reg s2;
s2=&s1;
審核編輯 :李倩
-
寄存器
+關注
關注
31文章
5336瀏覽量
120232 -
Verilog
+關注
關注
28文章
1351瀏覽量
110077
原文標題:Verilog HDL語言(1) : Verilog HDL語言的數據類型和運算符
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論