1、標(biāo)志符
標(biāo)識(shí)符可以是一組字母、數(shù)字、下劃線和$符號(hào)的組合,且標(biāo)識(shí)符的第一個(gè)字符必須是字母或者下劃線。另外,標(biāo)識(shí)符區(qū)分大小寫(xiě)。要注意的是Verilog HDL定義了一系列保留字作為關(guān)鍵字,但只要小寫(xiě)的關(guān)鍵字才是保留字,所以對(duì)于不確定是否為保留字,可以將標(biāo)識(shí)符首字母大寫(xiě)。
2、數(shù)據(jù)類型
1、wire型
Verilog程序模塊中輸入、輸出信號(hào)類型默認(rèn)時(shí)自定義為wire型。
wire型信號(hào)的定義格式如下:
wire[n-1:0] 數(shù)據(jù)名1,數(shù)據(jù)名2,...數(shù)據(jù)名N;
總共定義了N條線,每條線的位寬為n。
2、reg型
reg是寄存器數(shù)據(jù)類型的關(guān)鍵字,是數(shù)據(jù)存儲(chǔ)單元的抽象,通過(guò)賦值語(yǔ)句可以改變寄存器存儲(chǔ)的值。reg型數(shù)據(jù)常用來(lái)表示always模塊內(nèi)的指定信號(hào),在always塊內(nèi)被賦值的每一個(gè)信號(hào)都必須定義為reg型。
reg型信號(hào)的定義格式如下:
wire[n-1:0] 數(shù)據(jù)名1,數(shù)據(jù)名2,...數(shù)據(jù)名N;
總共定義了N個(gè)寄存器變量,每條線的位寬為n。
3、memory型
Verilog通過(guò)對(duì)reg型變量建立數(shù)組來(lái)對(duì)存儲(chǔ)器建模,memory型通過(guò)擴(kuò)展reg型數(shù)據(jù)的地址范圍來(lái)達(dá)到二維數(shù)組的效果。其定義的格式如下:
reg[n-1:0] 存儲(chǔ)器名 [m-1:0];
其中,reg[n-1:0]定義了每一個(gè)存儲(chǔ)器中每一個(gè)存儲(chǔ)單元的大小;存儲(chǔ)器后面的[m-1:0]則定義了存儲(chǔ)器的大小。
eg:reg [15:0] ROMA [7:0];
即定義了一個(gè)存儲(chǔ)位寬為16位,存儲(chǔ)深度為8的一個(gè)存儲(chǔ)器。
要注意的是,一個(gè)n位的寄存器可以在一條賦值語(yǔ)句中直接進(jìn)行賦值,而一個(gè)完整的存儲(chǔ)器則不行。如果要對(duì)memory型存儲(chǔ)單元進(jìn)行讀寫(xiě),則必須要指明地址。
4、parameter型
在Verilog HDL中用parameter來(lái)定義常量。
parameter型信號(hào)的定義格式如下:
parameter 參數(shù)名1=數(shù)據(jù)名1;
3、模塊端口
1、input:模塊從外界讀取數(shù)據(jù)的接口,在模塊內(nèi)不可寫(xiě)。
2、output:模塊往外界送出數(shù)據(jù)的接口,在模塊內(nèi)不可讀。
3、inout:可讀取數(shù)據(jù)也可送出數(shù)據(jù),數(shù)據(jù)可雙向流動(dòng)。
4、常量集合
Verilog HDL有四種基本數(shù)值:
(1)0:邏輯0或“假”;
(2)1:邏輯1或“真”;
(3)x:未知;
(4)z:高阻。
1、整數(shù)
整數(shù)型可以按如下兩種方式書(shū)寫(xiě):簡(jiǎn)單的十進(jìn)制數(shù)格式及基數(shù)表示格式。
(1)簡(jiǎn)單的十進(jìn)制數(shù)格式
eg:45 -46
負(fù)數(shù)以補(bǔ)碼表示。
(2)基數(shù)表示格式
基數(shù)表示的整數(shù)格式為:
[長(zhǎng)度]'基數(shù) 數(shù)值
eg:6'b9 5'o9 9'd6
2、實(shí)數(shù)
(1)十進(jìn)制計(jì)數(shù)法
eg:2.0 16539.236
(2)科學(xué)計(jì)數(shù)法
eg:235.12e2 5e-4
其中,e與E相同。
3、字符串
字符串是雙引號(hào)內(nèi)的字符序列,字符串不能分成多行書(shū)寫(xiě)。字符串是8位ASCLL值的序列。
eg:reg[1:8*7]Char;
Char="counter"
5、運(yùn)算符和表達(dá)式
1、基本算術(shù)運(yùn)算符
包含:+、-、*、/、%
其中,取模運(yùn)算(%)結(jié)果的符號(hào)位和模運(yùn)算的第一個(gè)操作數(shù)的符號(hào)保持一致(按照無(wú)符號(hào)進(jìn)行運(yùn)算,再對(duì)結(jié)果添加符號(hào))。
2、賦值運(yùn)算符
賦值運(yùn)算分為連續(xù)賦值和過(guò)程賦值兩種。
(1)連續(xù)賦值
連續(xù)賦值語(yǔ)句只能用來(lái)對(duì)線網(wǎng)型變量進(jìn)行賦值,而不能對(duì)寄存器變量進(jìn)行賦值,在實(shí)際使用時(shí),有以下幾種應(yīng)用:
I.對(duì)標(biāo)量線網(wǎng)型賦值
(2)過(guò)程賦值
過(guò)程賦值主要用于兩種結(jié)構(gòu)化模塊(initial模塊和always模塊)中的賦值語(yǔ)句,在過(guò)程塊中只能使用過(guò)程賦值語(yǔ)句,不能出現(xiàn)連續(xù)賦值語(yǔ)句。其中,賦值操作符有兩種:“=”和“<=”,分別代表阻塞賦值和非阻塞賦值。
過(guò)程賦值語(yǔ)句只能對(duì)寄存器類型的變量(reg、integer、real和time)進(jìn)行操作。對(duì)于存儲(chǔ)器類型,只能對(duì)指定地址單元的整個(gè)字進(jìn)行賦值,不能對(duì)其中某些位單獨(dú)賦值。
3、關(guān)系運(yùn)算符
關(guān)系運(yùn)算符共8種:>、>=、<、<=、==(邏輯相等)、!=(邏輯不相等)、===(實(shí)例相等)、!==(實(shí)例不相等)。
實(shí)例算子===和!==可以比較含有X和Z的操作數(shù)。
4、邏輯運(yùn)算符
(1)&& 邏輯與
(2)|| 邏輯或
(3)!邏輯非
5、條件運(yùn)算符
三目運(yùn)算符,格式如下:
y = x ? a : b;
若第一個(gè)操作數(shù)y=x為T(mén)rue,算子返回第二個(gè)操作數(shù)a,否則返回第三個(gè)操作數(shù)b。
6、位運(yùn)算符
按位進(jìn)行邏輯運(yùn)算,共有7中邏輯運(yùn)算符:
~非、&與、|或、^異或、^~同或、~&與非、|~或非。
如果兩個(gè)操作數(shù)的長(zhǎng)度不相等,將會(huì)對(duì)較短的數(shù)高位補(bǔ)零,使輸出結(jié)果的長(zhǎng)度與位寬較長(zhǎng)的操作數(shù)的長(zhǎng)度保持一致。
7、移位運(yùn)算符
左移<<一位相當(dāng)于乘2,右移一位相當(dāng)于除2.
s<
8、一元約簡(jiǎn)運(yùn)算符
單目運(yùn)算符。其運(yùn)算過(guò)程為:首先將操作數(shù)的第一位與第二位進(jìn)行與、或、非運(yùn)算;然后再將結(jié)果和第三位進(jìn)行與、或、非運(yùn)算,以此類推,直至最后一位。
eg:reg [3:0] s1;
reg s2;
s2=&s1;
文章出處:【微信公眾號(hào):FPGA之家】
責(zé)任編輯:gt
-
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7528瀏覽量
164345 -
接口
+關(guān)注
關(guān)注
33文章
8691瀏覽量
151920 -
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7139瀏覽量
89581
原文標(biāo)題:Verilog HDL語(yǔ)言(1) : Verilog HDL語(yǔ)言的數(shù)據(jù)類型和運(yùn)算符
文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
JAVA語(yǔ)言的運(yùn)算符及表達(dá)式
數(shù)據(jù)類型、運(yùn)算符與表達(dá)式
【跟我學(xué)單片機(jī)c語(yǔ)言】如何更好地使用C51運(yùn)算符和表達(dá)式
C語(yǔ)言程序設(shè)計(jì)--運(yùn)算符與表達(dá)式
單片機(jī)C語(yǔ)言教程-運(yùn)算符和表達(dá)式
C語(yǔ)言教程之數(shù)據(jù)類型、運(yùn)算符與表達(dá)式的詳細(xì)資料介紹免費(fèi)下載
![C<b class='flag-5'>語(yǔ)言</b>教程之<b class='flag-5'>數(shù)據(jù)類型</b>、<b class='flag-5'>運(yùn)算符</b>與<b class='flag-5'>表達(dá)式</b>的詳細(xì)資料介紹免費(fèi)下載](https://file.elecfans.com/web1/M00/64/CD/pIYBAFuiFYaAahiqAAFJMkaFIX4262.png)
C語(yǔ)言程序設(shè)計(jì)教程之基本數(shù)據(jù)類型、運(yùn)算符和表達(dá)式的詳細(xì)資料概述
![C<b class='flag-5'>語(yǔ)言</b>程序設(shè)計(jì)教程之基本<b class='flag-5'>數(shù)據(jù)類型</b>、<b class='flag-5'>運(yùn)算符</b>和<b class='flag-5'>表達(dá)式</b>的詳細(xì)資料概述](https://file.elecfans.com/web1/M00/6A/2A/pIYBAFvZfxWARUsEAAB6fC25rkw159.png)
C語(yǔ)言程序設(shè)計(jì)教程之基本數(shù)據(jù)類型和運(yùn)算符及表達(dá)式的資料說(shuō)明
![C<b class='flag-5'>語(yǔ)言</b>程序設(shè)計(jì)教程之基本<b class='flag-5'>數(shù)據(jù)類型</b>和<b class='flag-5'>運(yùn)算符</b>及<b class='flag-5'>表達(dá)式</b>的資料說(shuō)明](https://file.elecfans.com/web1/M00/83/CE/pIYBAFxKwwuARA8YAAauYAAl6-s455.png)
C++入門(mén)教程之數(shù)據(jù)類型、運(yùn)算符和表達(dá)式的詳細(xì)資料說(shuō)明
![C++入門(mén)教程之<b class='flag-5'>數(shù)據(jù)類型</b>、<b class='flag-5'>運(yùn)算符</b>和<b class='flag-5'>表達(dá)式</b>的詳細(xì)資料說(shuō)明](https://file.elecfans.com/web1/M00/85/5C/pIYBAFxmMxuAUm9fAAIc1Ly-PYg652.png)
C語(yǔ)言實(shí)用教程之數(shù)據(jù)類型運(yùn)算符和表達(dá)式的詳細(xì)資料說(shuō)明
![C<b class='flag-5'>語(yǔ)言</b>實(shí)用教程之<b class='flag-5'>數(shù)據(jù)類型</b><b class='flag-5'>運(yùn)算符</b>和<b class='flag-5'>表達(dá)式</b>的詳細(xì)資料說(shuō)明](https://file.elecfans.com/web1/M00/85/B0/o4YBAFx06kGAUviOAAY-P4l1nXA420.png)
C++程序設(shè)計(jì)教程之數(shù)據(jù)類型與表達(dá)式的詳細(xì)資料說(shuō)明
![C++程序設(shè)計(jì)教程之<b class='flag-5'>數(shù)據(jù)類型</b>與<b class='flag-5'>表達(dá)式</b>的詳細(xì)資料說(shuō)明](https://file.elecfans.com/web1/M00/89/2C/o4YBAFyJ_A2AQRYpAADQk5l87js904.png)
RTL表達(dá)式和運(yùn)算符
C語(yǔ)言的數(shù)據(jù)類型、運(yùn)算符和表達(dá)式
運(yùn)算符/表達(dá)式規(guī)則
![<b class='flag-5'>運(yùn)算符</b>/<b class='flag-5'>表達(dá)式</b>規(guī)則](https://file.elecfans.com/web2/M00/8F/89/poYBAGPkoiqAc3STAATQdIY-LPg781.png)
評(píng)論