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

下載本文檔

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

文檔簡(jiǎn)介

第2章VerilogHDL語言基礎(chǔ)第2章VerilogHDL語言基礎(chǔ)1324程序結(jié)構(gòu)邏輯仿真基本語法描述方式2.1模塊結(jié)構(gòu)2.1.1硬件描述語言簡(jiǎn)介

2.1.2Verilog基本程序結(jié)構(gòu)

2.1.1硬件描述語言簡(jiǎn)介

硬件描述語言(HDL)類似于計(jì)算機(jī)高級(jí)程序設(shè)計(jì)語言(C語言等),它以文本形式來描述數(shù)字系統(tǒng)硬件的結(jié)構(gòu)和功能的語言,用它可以表示邏輯電路圖、邏輯表達(dá)式,還可以表示更復(fù)雜的數(shù)字邏輯系統(tǒng)所完成的邏輯功能(即行為)。計(jì)算機(jī)對(duì)HDL的處理包括兩個(gè)方面:邏輯仿真和邏輯綜合。邏輯仿真是指用計(jì)算機(jī)仿真軟件對(duì)數(shù)字邏輯電路的結(jié)構(gòu)和行為進(jìn)行預(yù)測(cè),仿真器對(duì)HDL描述進(jìn)行解釋,以文本形式或時(shí)序波形形式給出電路的輸出。在電路被實(shí)現(xiàn)之前,設(shè)計(jì)人員根據(jù)仿真結(jié)果可以初步判斷電路的邏輯功能是否正確。在仿真期間,如果發(fā)現(xiàn)設(shè)計(jì)中存在錯(cuò)誤,可以對(duì)HDL描述進(jìn)行修改,直至滿足設(shè)計(jì)要求為止。邏輯綜合是指從HDL描述的數(shù)字邏輯電路模型中導(dǎo)出電路基本元件列表,以及元件之間連接關(guān)系(常稱為門級(jí)網(wǎng)表)的過程,即將HDL代碼轉(zhuǎn)換成真實(shí)的硬件電路。它類似于高級(jí)程序設(shè)計(jì)語言中對(duì)一個(gè)程序進(jìn)行編譯,得到目標(biāo)代碼的過程。所不同的是,邏輯綜合不會(huì)產(chǎn)生目標(biāo)代碼,而是產(chǎn)生門級(jí)元件及其連接關(guān)系的數(shù)據(jù)庫(kù),根據(jù)數(shù)據(jù)庫(kù)可以制作出集成電路或印制電路板。2.1.2Verilog基本程序結(jié)構(gòu)(1)結(jié)構(gòu)化描述方式:實(shí)例化調(diào)用低層模塊或基本門級(jí)元件的方法,即調(diào)用其他已定義過的低層次模塊或Verilog內(nèi)部預(yù)先定義好的基本門級(jí)元件對(duì)整個(gè)電路的功能進(jìn)行描述(對(duì)只使用基本門級(jí)元件描述電路的方法,也可以稱為門級(jí)描述方式)。(2)數(shù)據(jù)流描述方式:使用連續(xù)賦值語句(assign)對(duì)電路的邏輯功能進(jìn)行描述。通過說明數(shù)據(jù)的流程對(duì)模塊進(jìn)行描述。此方式特別適用于組合邏輯電路的建模。(3)行為描述方式:使用過程塊結(jié)構(gòu)描述電路功能。過程塊結(jié)構(gòu)有initial和always語句等,過程塊結(jié)構(gòu)內(nèi)部是行為語句(比較抽象的高級(jí)程序語句,如過程賦值語句,IF語句,CASE語句等)。行為描述側(cè)重于描述模塊的邏輯功能,不涉及實(shí)現(xiàn)該模塊的具體硬件電路結(jié)構(gòu)。2.2基本語法2.2.1基本語法規(guī)則

2.2.2常量及其表示2.2.3變量及其數(shù)據(jù)類型2.2.4表達(dá)式2.2.5運(yùn)算符及其優(yōu)先級(jí)2.2.1基本語法規(guī)則1、關(guān)鍵詞:又稱保留字,是Verilog中預(yù)留的用于定義語言結(jié)構(gòu)的特殊字符串,通常為小寫的英文字符串。2、標(biāo)識(shí)符:給程序代碼中的對(duì)象(如模塊名、電路的輸入和輸出端口、變量等)取名所用的字符串稱為標(biāo)識(shí)符,標(biāo)識(shí)符通常由英文字母、數(shù)字、$符和下畫線“_”組成,并且規(guī)定標(biāo)識(shí)符的第一個(gè)字符必須以英文字母或下劃線開始,不能以數(shù)字或$符開頭。3、間隔符:Verilog的間隔符(又稱為空白符)包括空格符(\b)、TAB鍵(\t)、換行符(\n)及換頁(yè)符。如果間隔符不是出現(xiàn)在字符串中,則沒有特殊的意義,使用間隔符主要起分隔文本的作用,在必要的地方插入適當(dāng)?shù)目崭窕驌Q頁(yè)符,可以使文本錯(cuò)落有致,便于閱讀和修改。在綜合時(shí),則該間隔符被忽略。2.2.1基本語法規(guī)則4、注釋符:Verilog支持兩種形式的注釋符:/*……*/和//。其中,/*……*/為多行注釋符,用于寫多行注釋;//為單行注釋符,以雙斜杠//開始到行尾結(jié)束為注釋文字。5、邏輯值集合:鑒于硬件電路的特殊性,為了表示數(shù)字邏輯電路的狀態(tài),Verilog語言規(guī)定了下列4種基本的邏輯值:①0:邏輯0或邏輯假;②1:邏輯1或邏輯真;③x(X):未知狀態(tài)(仿真時(shí)表示不確定的值,或者綜合時(shí)表示不關(guān)心);④z(Z):高阻態(tài)。2.2.2常量及其表示1、整數(shù)型常量:整數(shù)型常量有4種進(jìn)制表示方式:二進(jìn)制整數(shù)(b或B),十進(jìn)制整數(shù)(d或D),十六進(jìn)制整數(shù)(h或H),八進(jìn)制整數(shù)(o或O)。2、實(shí)數(shù)型常量:實(shí)數(shù)型常量也有兩種表示方法:一是使用簡(jiǎn)單的十進(jìn)制計(jì)數(shù)法,例如:0.1、2.0、5.67等都是十進(jìn)制計(jì)數(shù)法表示的實(shí)數(shù)型常量。二是使用科學(xué)計(jì)數(shù)法,由數(shù)字和字符e或E組成,e或E的前面必須要有數(shù)字而且后面必須為整數(shù)。3、字符串型常量:字符串是雙引號(hào)內(nèi)的字符序列,但字符串不允許分成多行書寫。在表達(dá)式和賦值語句中,字符串要轉(zhuǎn)換成無符號(hào)整數(shù),用一串8位ASCII值表示,每一個(gè)8位ASCII碼代表一個(gè)字符。2.2.3變量及其數(shù)據(jù)類型1、線網(wǎng)型變量:線網(wǎng)類型是硬件電路中元件之間實(shí)際連線的抽象,如器件的引腳,內(nèi)部器件如與門的輸出等。線網(wǎng)型變量代表的是物理連線,不能儲(chǔ)存邏輯值,它的值由驅(qū)動(dòng)元件的值決定。當(dāng)線網(wǎng)型變量沒有被驅(qū)動(dòng)元件驅(qū)動(dòng)時(shí),線網(wǎng)的默認(rèn)值為高阻態(tài)z(線網(wǎng)trireg除外,它的默認(rèn)值為x)。2、寄存器型變量:寄存器類型表示一個(gè)抽象的數(shù)據(jù)存儲(chǔ)單元,它具有狀態(tài)保持作用。寄存器型變量只能在initial或always內(nèi)部被賦值。寄存器型變量在沒有被賦值前,它的默認(rèn)值是x。3、向量:線網(wǎng)和寄存器類型的數(shù)據(jù)可以聲明為向量(即位寬大于1)。如果未指定位寬,則默認(rèn)為變量(1位)。4、數(shù)組:線網(wǎng)和變量可以聲明為一個(gè)數(shù)組,數(shù)組中的每一個(gè)元素可以是標(biāo)量也可以是向量。2.2.4表達(dá)式1、操作數(shù):操作數(shù)包含多種數(shù)據(jù)類型,但是某些語法結(jié)構(gòu)要求特定類型的操作數(shù)。通常,操作數(shù)可以是常數(shù)、整數(shù)、實(shí)數(shù)、變量、參數(shù)、存儲(chǔ)器、位選(向量wire或reg型數(shù)據(jù)的其中一位)、域選(向量wire或reg型數(shù)據(jù)的其中一組選定的位)、函數(shù)調(diào)用等。2、位寬處理:表達(dá)式運(yùn)算結(jié)果的位寬由最大操作數(shù)的位寬決定,若出現(xiàn)在賦值語句中,由賦值等號(hào)左端的變量位寬決定。2.2.5運(yùn)算符及其優(yōu)先級(jí)1、運(yùn)算符Verilog:Verilog語言提供了30多個(gè)運(yùn)算符,按照功能,運(yùn)算符可以大致分算術(shù)運(yùn)算符、邏輯運(yùn)算符、關(guān)系運(yùn)算符、移位運(yùn)算符等幾大類。2、運(yùn)算符優(yōu)先級(jí):所有運(yùn)算符在表達(dá)式中都是從左向右結(jié)合(條件運(yùn)算符除外),使用圓括號(hào)可以改變運(yùn)算的順序。2.3描述方式2.3.1結(jié)構(gòu)化描述

2.3.2數(shù)據(jù)流描述2.3.3行為描述

2.3.4描述形式與電路建模2.3.1結(jié)構(gòu)化描述

結(jié)構(gòu)化描述方式與電路結(jié)構(gòu)一一對(duì)應(yīng),建模前必須設(shè)計(jì)好詳細(xì)、具體的電路圖,通過實(shí)例化調(diào)用已有的用戶編好的低層次模塊或Verilog預(yù)先定義的基本門級(jí)元件,并使用線網(wǎng)來連接各器件,描述出邏輯電路中元件或模塊彼此的連接關(guān)系。1、實(shí)例化基本門級(jí)元件

門類型實(shí)例名(輸出,輸入,控制信號(hào));例如:nandNAND1(out,in1,in2,in3);notNOT1(out1,out2,in);bufif0BUFF0(out,in,ctrl);2.3.1結(jié)構(gòu)化描述2、實(shí)例化底層模塊第一種方式是命名端口連接方式,其語法格式為模塊名實(shí)例名(.端口名(連線1),.端口名2(連線2),…);第二種方式是順序端口連接方式,其語法格式為模塊名實(shí)例名(連線名1,連線2,…);2.3.2數(shù)據(jù)流描述1、連續(xù)賦值語句Verilog的連續(xù)賦值語句是進(jìn)行數(shù)據(jù)流描述的基本語法。它表示對(duì)線網(wǎng)的賦值,且賦值發(fā)生在任意右邊信號(hào)發(fā)生變化時(shí)。連續(xù)賦值語句右邊表達(dá)式的值發(fā)生變化后,左邊變量值在同一時(shí)刻發(fā)生相應(yīng)改變,沒有時(shí)間上的間隔。連續(xù)賦值語句的功能等價(jià)于門級(jí)描述,但層次高于門級(jí)描述,可以方便、靈活地用來進(jìn)行組合邏輯的建模。連續(xù)賦值語句必須以assign開頭,出現(xiàn)在與門單元實(shí)例化相同的代碼層次。其語法如下:assign[延遲]wire型變量=表達(dá)式;2.3.3行為描述1、過程塊結(jié)構(gòu):主要包括initial過程快結(jié)構(gòu)和always過程塊結(jié)構(gòu)。(1)initial過程塊initial過程塊主要用于仿真測(cè)試,用來對(duì)變量進(jìn)行初始化或生產(chǎn)激勵(lì)波形,從模擬0時(shí)刻開始執(zhí)行,指定的內(nèi)容只執(zhí)行一次,一個(gè)模塊可以有多個(gè)initial塊結(jié)構(gòu),都是同時(shí)從0時(shí)刻開始并行執(zhí)行。其格式如下:initialbegin/fork 延時(shí)控制1行為語句1; 延時(shí)控制2行為語句2; … 延時(shí)控制n行為語句n;end/join2.3.3行為描述(2)always過程塊always過程塊是一直重復(fù)執(zhí)行的,可被綜合也可用于仿真,多個(gè)always過程塊并行執(zhí)行,與書寫前后順序無關(guān),其格式如下:always@(敏感信號(hào)列表)begin 行為語句1; 行為語句2; … 行為語句n;end2.3.3行為描述2、塊語句:塊語句包括串行塊begin…end和并行塊fork…join兩種。當(dāng)塊內(nèi)只有一條語句時(shí),可以省略begin…end或fork…join。串行塊內(nèi)的各條語句按它們?cè)趬K內(nèi)的位置順序執(zhí)行,如果在仿真時(shí)有延時(shí)控制,則每條語句的延時(shí)控制都是相對(duì)于前一條語句結(jié)束時(shí)刻的延時(shí)控制。并行塊內(nèi)各條語句各自獨(dú)立地同時(shí)開始執(zhí)行,各條語句的起始執(zhí)行時(shí)間都等于進(jìn)入該語句塊的時(shí)間。3、過程賦值語句:在initial和always過程塊結(jié)構(gòu)中的賦值語句為過程賦值語句,多用于對(duì)reg型變量進(jìn)行賦值,被賦值后其值保持不變,直到賦值進(jìn)程又被觸發(fā),變量才能賦予新值。過程賦值語句分為阻塞賦值和非阻塞賦值兩種。2.3.3行為描述(1)非阻塞(Non_Blocking)賦值方式(如b<=a;)①塊結(jié)束后才完成賦值操作。②b的值并不是立刻就改變的。③這是一種比較常用的賦值方法(特別在編寫可綜合模塊時(shí))。(2)阻塞(Blocking)賦值方式(如b=a;)①賦值語句執(zhí)行完后,塊才結(jié)束。②b的值在賦值語句執(zhí)行完后立刻就改變的。③可能會(huì)產(chǎn)生意想不到的結(jié)果。4、條件語句(1)if-else語句2.3.3行為描述if語句用來判定所給定的條件是否滿足,根據(jù)判定的結(jié)果(真或假)決定執(zhí)行給出的兩種操作之一。(2)case語句case語句是一種多分支選擇語句。if語句只有兩個(gè)分支可供選擇,而實(shí)際問題中常常需要用到多分支選擇,Verilog語言提供的case語句直接處理多分支選擇。5、循環(huán)語句在Verilog語言中存在著四種類型的循環(huán)語句,它們用來控制執(zhí)行語句的執(zhí)行次數(shù)。①forever連續(xù)的執(zhí)行語句。②repeat連續(xù)執(zhí)行一條語句n次。2.3.3行為描述③while執(zhí)行一條語句直到某個(gè)條件不滿足,如果一開始條件即不滿足(為假),則語句一次也不能被執(zhí)行。④for通過以下三個(gè)步驟來決定語句的循環(huán)執(zhí)行。a)先給控制循環(huán)次數(shù)的變量賦初值;b)判定控制循環(huán)的表達(dá)式的值,如為假則跳出循環(huán)語句,如為真則執(zhí)行指定的語句后,轉(zhuǎn)到c)步;c)執(zhí)行一條賦值語句來修正控制循環(huán)變量次數(shù)的變量的值,然后返回b)步。2.3.4描述形式與電路建模Verilog語言提供結(jié)構(gòu)化描述(或稱門級(jí)描述)、數(shù)據(jù)流描述和行為描述抽象層次的描述形式,從最低級(jí)的門級(jí)描述到最高級(jí)的行為描述,它們可以在不同的層次進(jìn)行電路的建模。不同層次的描述形式通常都可以用來對(duì)同一個(gè)功能電路進(jìn)行建模,即它們綜合處理的電路結(jié)構(gòu)都是相同的。高層次的描述方式可以比低層次的描述方式使用更少的代碼,并用直觀的方法描述電路模型,仿真速度快。低層次的描述形式通常與實(shí)際芯片的物理結(jié)構(gòu)接近。充分利用Verilog各種豐富的語法進(jìn)行電路建模,學(xué)會(huì)在各個(gè)層次進(jìn)行思維的切換,對(duì)于設(shè)計(jì)者設(shè)計(jì)出高效的可綜合的Verilog代碼非常必要。2.4邏輯仿真2.4.1Testbench簡(jiǎn)介

2.4.2激勵(lì)信號(hào)2.4.3系統(tǒng)自定義函數(shù)和任務(wù)2.4.1Testbench簡(jiǎn)介在仿真的時(shí)候,Testbench用來產(chǎn)生測(cè)試激勵(lì)信號(hào)給待測(cè)試設(shè)計(jì)(DUT),同時(shí)檢查待測(cè)設(shè)計(jì)的輸出是否與預(yù)期一致,從而達(dá)到驗(yàn)證設(shè)計(jì)功能的目的。2.4.2激勵(lì)信號(hào)

在進(jìn)行仿真激勵(lì)前,先對(duì)待測(cè)試設(shè)計(jì)進(jìn)行實(shí)例化,實(shí)例化方法參照模塊調(diào)用方法。接下來進(jìn)行仿真激勵(lì)編寫,快速掌握一些測(cè)試激勵(lì)的寫法是非常重要的,可以有效提高代碼的質(zhì)量,減少錯(cuò)誤產(chǎn)生,并能全面覆蓋測(cè)試信號(hào)。initial和always是兩種基本的過程結(jié)構(gòu)語句,在仿真開始時(shí)就相互并行執(zhí)行。通常來說,被動(dòng)地檢測(cè)響應(yīng)時(shí)使用always語句,而主動(dòng)地產(chǎn)生激勵(lì)時(shí)則使用initail語句。initial和always的區(qū)別是initial語句只執(zhí)行一次,而always語句不斷地重復(fù)執(zhí)行。2.4.2激勵(lì)信號(hào)1、產(chǎn)生時(shí)鐘信號(hào)(1)用initial語句產(chǎn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論