Verilog語(yǔ)言編程基礎(chǔ)_第1頁(yè)
Verilog語(yǔ)言編程基礎(chǔ)_第2頁(yè)
Verilog語(yǔ)言編程基礎(chǔ)_第3頁(yè)
Verilog語(yǔ)言編程基礎(chǔ)_第4頁(yè)
Verilog語(yǔ)言編程基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、2HDL語(yǔ)言簡(jiǎn)介語(yǔ)言簡(jiǎn)介Verilog 中的模塊(中的模塊(Module)Verilog語(yǔ)言中常用語(yǔ)句語(yǔ)言中常用語(yǔ)句Verilog語(yǔ)言中阻塞和非阻塞賦值語(yǔ)言中阻塞和非阻塞賦值Verilog語(yǔ)言中常見(jiàn)的錯(cuò)誤語(yǔ)言中常見(jiàn)的錯(cuò)誤Verilog的的語(yǔ)言要素語(yǔ)言要素Verilog語(yǔ)言的語(yǔ)言的4大法寶大法寶3456Verilog語(yǔ)言中常用語(yǔ)句語(yǔ)言中常用語(yǔ)句Verilog語(yǔ)言中阻塞和非阻塞賦值語(yǔ)言中阻塞和非阻塞賦值Verilog語(yǔ)言中常見(jiàn)的錯(cuò)誤語(yǔ)言中常見(jiàn)的錯(cuò)誤Verilog的的語(yǔ)言要素語(yǔ)言要素Verilog語(yǔ)言的語(yǔ)言的4大法寶大法寶Verilog 中的模塊(中的模塊(Module)7 模塊是Verilog 的

2、基本描述單位,用于描述某個(gè)設(shè)計(jì)的功能或結(jié)構(gòu)及其與其他模塊通信的外部端口。 整個(gè)邏輯設(shè)計(jì)就是通過(guò)模塊之間的例化(instantiation)來(lái)構(gòu)成一個(gè)整體的。 邏輯設(shè)計(jì)的思想體現(xiàn)了自頂向下的設(shè)計(jì)方法系統(tǒng)級(jí)的頂層模塊模塊A模塊C模塊B模塊A1模塊C2模塊C1模塊A28 要求:每個(gè)文件只包含一個(gè)模塊 。模塊名和文件名保持一致。模塊名實(shí)例名端口信號(hào)映射關(guān)系9module module_name (port_list) ; Declarations : reg, wire, parameter, input, output, inout, function, task, . . . Statements

3、 : Initial statement Always statement Module instantiation Gate instantiation UDP instantiation Continuous assignmentendmodule模塊的結(jié)構(gòu)需按上面的順序進(jìn)行,聲明區(qū)用來(lái)對(duì)信號(hào)方向、信號(hào)數(shù)據(jù)類(lèi)型、函數(shù)、任務(wù)、參數(shù)等進(jìn)行描述。語(yǔ)句區(qū)用來(lái)對(duì)功能進(jìn)行描述如:器件調(diào)用 (Module instantiation )等。10Verilog語(yǔ)言中常用語(yǔ)句語(yǔ)言中常用語(yǔ)句Verilog語(yǔ)言中阻塞和非阻塞賦值語(yǔ)言中阻塞和非阻塞賦值Verilog語(yǔ)言中常見(jiàn)的錯(cuò)誤語(yǔ)言中常見(jiàn)的錯(cuò)誤Verilog語(yǔ)

4、言的語(yǔ)言的4大法寶大法寶Verilog的語(yǔ)言要素的語(yǔ)言要素11Verilog的語(yǔ)言要素的語(yǔ)言要素12 標(biāo)識(shí)符( identifier)用于定義模塊名、端口名、信號(hào)名等。 Verilog HDL 中的標(biāo)識(shí)符( identifier )可以是任意一組字母、數(shù)字、$符號(hào)和_(下劃線)符號(hào)的組合,但標(biāo)識(shí)符的第一個(gè)字符必須是字母或者下劃線。另外,標(biāo)識(shí)符是區(qū)分大小寫(xiě)敏感的。以下是標(biāo)識(shí)符的幾個(gè)例子: Verilog HDL 定義了一系列保留字,叫做關(guān)鍵詞,附錄A 列出了語(yǔ)言中的所有保留字。注意只有小寫(xiě)的關(guān)鍵詞才是保留字。例如,標(biāo)識(shí)符always (這是個(gè)關(guān)鍵詞)與標(biāo)識(shí)符ALWAYS(非關(guān)鍵詞)是不同的。13

5、 兩種注釋的方式: 以“/*”符號(hào)開(kāi)始,“*/” 結(jié)束,在兩個(gè)符號(hào)之間的語(yǔ)句都是注釋語(yǔ)句,因此可擴(kuò)展到多行。如: /* statement1 , statement2, . . statementn */ 以上n個(gè)語(yǔ)句都是注釋語(yǔ)句。 是以 / 開(kāi)頭的語(yǔ)句,它表示以 / 開(kāi)始到本行結(jié)束都屬于注釋語(yǔ)句。14 自由的書(shū)寫(xiě)格式: Verilog HDL的書(shū)寫(xiě)格式是自由的,即一條語(yǔ)句可多行書(shū)寫(xiě);一行可寫(xiě)多個(gè)語(yǔ)句。白空(新行、制表符、空格)沒(méi)有特殊意義。 如: input A;input B;與 input A; input B; 功能是一樣的,但是這方面公司有嚴(yán)格的書(shū)寫(xiě)規(guī)范。15 以$字符開(kāi)始的標(biāo)識(shí)符表

6、示系統(tǒng)任務(wù)。 任務(wù)提供了一種封裝行為的機(jī)制。這種機(jī)制可在設(shè)計(jì)的不同部分被調(diào)用。任務(wù)可以返回0個(gè)或多個(gè)值。 函數(shù)在0時(shí)刻執(zhí)行,即不允許延遲。 $d i s p l a y (Hi, you have reached LT today); /* $d i s p l a y 系統(tǒng)任務(wù)在新的一行中顯示。* / $t i m e / /該系統(tǒng)任務(wù)返回當(dāng)前的模擬時(shí)間。16 以(反引號(hào))開(kāi)始的某些標(biāo)識(shí)符是編譯器指令。 在Verilog 語(yǔ)言編譯時(shí),特定的編譯器指令在整個(gè)編譯過(guò)程中有效(編譯過(guò)程可跨越多個(gè)文件),直到遇到其它的不同編譯程序指令。 完整的標(biāo)準(zhǔn)編譯器指令如下: define, undef ifd

7、ef, else, endif default_nettype include resetall timescale unconnected_drive, nounconnected_drive celldefine, endcelldefine17 四種基本的值類(lèi)型: 0:邏輯0或“假”; 1:邏輯1或“真”; X:未知值; Z:高阻。注意這四種值的解釋都內(nèi)置于語(yǔ)言中。如一個(gè)為z 的值總是意味著高阻抗,一個(gè)為0 的值通常是指邏輯0 。18 兩種數(shù)據(jù)類(lèi)型:線網(wǎng)類(lèi)型(net type) 和 寄存器類(lèi)型(reg type)。 線網(wǎng)類(lèi)型代表的是物理連接線,因此它不存貯邏輯值。必須由器件所驅(qū)動(dòng)。ass

8、ign賦值語(yǔ)句必須用線網(wǎng)類(lèi)型。 定義:wire a; assign A = B C; 當(dāng)一個(gè)wire 類(lèi)型的信號(hào)沒(méi)有被驅(qū)動(dòng)時(shí),缺省值為Z(高阻)。 信號(hào)沒(méi)有定義數(shù)據(jù)類(lèi)型時(shí),缺省為 wire 類(lèi)型。 寄存器類(lèi)型通常用于對(duì)存儲(chǔ)單元的描述,如D型觸發(fā)器、ROM等。存儲(chǔ)器類(lèi)型的信號(hào)當(dāng)在某種觸發(fā)機(jī)制下分配了一個(gè)值,在分配下一個(gè)值之時(shí)保留原值。但必須注意的是,reg 類(lèi)型的變量,不一定是存儲(chǔ)單元。 注意在always,initial 語(yǔ)句中必須用reg 類(lèi)型的變量。定義: reg msb: lsb reg1, reg2, . . . r e g N;19 參數(shù)是一個(gè)常量。參數(shù)經(jīng)常用于定義時(shí)延和變量的寬度。

9、使用參數(shù)說(shuō)明的參數(shù)只被賦值一次。參數(shù)說(shuō)明形式如下: 下面為具體實(shí)例: p a r a m e t e r L I N E L E N G T H = 132; p a r a m e t e r A L L _ X _ S = 16bx;20 三種常量:整型、實(shí)型、字符串型。 整型數(shù)可以按如下兩種方式書(shū)寫(xiě): 1) 簡(jiǎn)單的十進(jìn)制數(shù)格式 32 十進(jìn)制數(shù)32 2) 基數(shù)格式: size base value size 定義以位計(jì)的常量的位長(zhǎng);base 為o 或O(表示八進(jìn)制),b 或B(表示二進(jìn)制),d 或D (表示十進(jìn)制),h 或H (表示十六進(jìn)制)之一;value 是基于base 的值的數(shù)字序列

10、。值x 和z 以及十六進(jìn)制中的a 到f 不區(qū)分大小寫(xiě)。如: 3b101 1h6 字符串是雙引號(hào)內(nèi)的字符序列。字符串不能分成多行書(shū)寫(xiě)。如: INTERNAL ERROR REACHEDHERE 21 算術(shù)運(yùn)算符 加法(二元運(yùn)算符):“+”; 減法 (二元運(yùn)算符): “-”; 乘法(二元運(yùn)算符):“*”; 關(guān)系運(yùn)算符有:(大于)=(不小于)=(不大于)= = (邏輯相等)!= (邏輯不等)22 按位邏輯運(yùn)算符 條件運(yùn)算符 cond_expr ? expr1 : expr2 連接運(yùn)算符 連接操作:將小表達(dá)式合并形成大表達(dá)式或者說(shuō)總線的操作。形式如下: expr1, expr2, . . .,expr

11、N 例如: wire 7:0 Dbus; assign Dbus 7:4 = Dbus 0, Dbus 1, Dbus2, Dbus 3 ;23Verilog語(yǔ)言中阻塞和非阻塞賦值語(yǔ)言中阻塞和非阻塞賦值Verilog語(yǔ)言中常見(jiàn)的錯(cuò)誤語(yǔ)言中常見(jiàn)的錯(cuò)誤Verilog語(yǔ)言的語(yǔ)言的4大法寶大法寶Verilog語(yǔ)言中常用語(yǔ)句語(yǔ)言中常用語(yǔ)句24 If語(yǔ)句25當(dāng)比較向量時(shí),verilog將對(duì)位數(shù)小的向量做 0 擴(kuò)展以使它們的長(zhǎng)度相匹配,它的自動(dòng)擴(kuò)展為隱式的。建議采用顯示擴(kuò)展。每一個(gè)If 都應(yīng)有一個(gè)else 和它相對(duì)應(yīng),防止產(chǎn)生latch;if語(yǔ)句的嵌套時(shí),應(yīng)注意每個(gè)If 條件的優(yōu)先級(jí);建議采用于 if (v

12、ariable = = 1),不要采用If (variable) ,以增強(qiáng)程序的可讀性。26 Case語(yǔ)句27 所有的Case 應(yīng)該有一個(gè)default case ,以免生成不必要的鎖存器。允許空語(yǔ)句: Default : ; 避免使用casex。28 case語(yǔ)句通常綜合成一級(jí)多路復(fù)用器,而if-then-else則綜合成優(yōu)先編碼的串接的多個(gè)多路復(fù)用器。 case 語(yǔ)句仿真要比條件賦值語(yǔ)句快,因?yàn)閮?yōu)先編碼器的結(jié)構(gòu)僅在信號(hào)的到達(dá)有先后時(shí)使用。 if語(yǔ)句有優(yōu)先級(jí),case語(yǔ)句沒(méi)有。29 兩者綜合實(shí)現(xiàn)后結(jié)果:If語(yǔ)句 case語(yǔ)句3031initial waitrepeat whileforeve

13、r named eventsfork/join deassignforce/releaseprocedural assignmentsoperators : case equality and inequality = != 另外for語(yǔ)句雖然可以綜合,但也不建議使用32Verilog語(yǔ)言中阻塞和非阻塞賦值語(yǔ)言中阻塞和非阻塞賦值Verilog語(yǔ)言中常見(jiàn)的錯(cuò)誤語(yǔ)言中常見(jiàn)的錯(cuò)誤Verilog語(yǔ)言的語(yǔ)言的4大法寶大法寶33 Wire-數(shù)據(jù)類(lèi)型:Verilog結(jié)構(gòu)化元件間的物理連線。 Reg -數(shù)據(jù)類(lèi)型:寄存器類(lèi)型 Assign-連續(xù)賦值語(yǔ)句 Always-Always語(yǔ)句只要條件滿足始終重復(fù)執(zhí)行Co

14、mbLogicDQQSETCL RDQQSETCL RDQQSETCL RDQQSETCL RDQQSETCL RExternalInput34 連續(xù)賦值語(yǔ)句的執(zhí)行是:只要右邊表達(dá)式任一個(gè)變量有變化,表達(dá)式立即被計(jì)算,計(jì)算的結(jié)果立即賦給左邊信號(hào)。 連續(xù)賦值語(yǔ)句之間是并行語(yǔ)句,因此與位置順序無(wú)關(guān)。35 Verilog HDL 有兩種過(guò)程賦值語(yǔ)句: initial 和 always 語(yǔ)句,實(shí)現(xiàn)行為建模。這兩種語(yǔ)句之間的執(zhí)行是并行的,即語(yǔ)句的執(zhí)行與位置順序無(wú)關(guān)。這兩種語(yǔ)句通常與語(yǔ)句塊(begin .end)相結(jié)合,則語(yǔ)句塊中的執(zhí)行是按順序執(zhí)行的。 initial 語(yǔ)句只執(zhí)行一次,即在設(shè)計(jì)被開(kāi)始模擬執(zhí)

15、行時(shí)開(kāi)始(0時(shí)刻)。通常只用在對(duì)設(shè)計(jì)進(jìn)行仿真的測(cè)試文件中,用于對(duì)一些信號(hào)進(jìn)行初始化和產(chǎn)生特定的信號(hào)波形。 always 語(yǔ)句與initial 語(yǔ)句相反,是被重復(fù)執(zhí)行,執(zhí)行機(jī)制是通過(guò)對(duì)一個(gè)稱(chēng)為敏感變量表的事件驅(qū)動(dòng)來(lái)實(shí)現(xiàn)的36 assign、always例子:37 在assign語(yǔ)句中賦值的變量要定義為wire。 在always塊中被賦值的變量要定義為reg。 reg變量并不一定被綜合為寄存器。always塊也可以用來(lái)描述組合邏輯。Reg 變量wire 變量38 整個(gè)邏輯設(shè)計(jì)中的Module,以及Module中的Always語(yǔ)句塊、Assign語(yǔ)句都是并行動(dòng)作的。 因此Module中的Always

16、語(yǔ)句塊、 Assign語(yǔ)句、例化Module語(yǔ)句書(shū)寫(xiě)位置是沒(méi)有要求的。39Verilog語(yǔ)言中常見(jiàn)的錯(cuò)誤語(yǔ)言中常見(jiàn)的錯(cuò)誤Verilog語(yǔ)言中阻塞和非阻塞賦值語(yǔ)言中阻塞和非阻塞賦值40 阻塞賦值賦值操作符是“=”的過(guò)程賦值是阻塞性過(guò)程賦值。阻塞性過(guò)程賦值在其后所有語(yǔ)句執(zhí)行前執(zhí)行,即在下一語(yǔ)句執(zhí)行前該賦值語(yǔ)句完成執(zhí)行。T1賦值首先發(fā)生,計(jì)算T1;接著執(zhí)行第二條語(yǔ)句, T2被賦值;然后執(zhí)行第三條語(yǔ)句, T3被賦值;依此類(lèi)推。41 非阻塞賦值在非阻塞性過(guò)程賦值中,使用賦值符號(hào)“ =”。當(dāng)非阻塞性過(guò)程賦值被執(zhí)行時(shí),計(jì)算右端表達(dá)式,右端值被賦于左端目標(biāo),并繼續(xù)執(zhí)行下一條語(yǔ)句。非阻塞語(yǔ)句并行執(zhí)行第一條語(yǔ)句的

17、執(zhí)行使Clr 在第5個(gè)時(shí)間單位被賦于值1;第二條語(yǔ)句的執(zhí)行使Clr在第4個(gè)時(shí)間單位被賦值為0 (從0時(shí)刻開(kāi)始的第4個(gè)時(shí)間單位);最終,第3條語(yǔ)句的執(zhí)行使Clr在第10個(gè)時(shí)間單位被賦值為0 (從0時(shí)刻開(kāi)始的第10個(gè)時(shí)間單位)。注意3條語(yǔ)句都是在0時(shí)刻執(zhí)行的。此時(shí),非阻塞性賦值執(zhí)行次序變得彼此不相關(guān)。42 原則1:對(duì)時(shí)序邏輯建模時(shí),使用非阻塞賦值。 原則2:對(duì)鎖存器建模時(shí),使用非阻塞賦值。 原則3:用always塊對(duì)組合邏輯建模時(shí),使用阻塞賦值。 原則4:在同一always塊中對(duì)時(shí)序邏輯和組合邏輯同時(shí)建模時(shí),使用非阻塞賦值。 原則5:在同一always塊中,不要混合使用阻塞和非阻塞賦值。 原則6:不要用多

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論