數(shù)字邏輯基礎(chǔ) VerilogHDL語言基礎(chǔ)_第1頁
數(shù)字邏輯基礎(chǔ) VerilogHDL語言基礎(chǔ)_第2頁
數(shù)字邏輯基礎(chǔ) VerilogHDL語言基礎(chǔ)_第3頁
數(shù)字邏輯基礎(chǔ) VerilogHDL語言基礎(chǔ)_第4頁
數(shù)字邏輯基礎(chǔ) VerilogHDL語言基礎(chǔ)_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1第四章VerilogHDL語言基礎(chǔ)24.1什么是VerilogHDL?

VerilogHDL是目前應(yīng)用最為廣泛的硬件描述語言。VerilogHDL可以用來進(jìn)行各種層次的邏輯設(shè)計,也可以進(jìn)行數(shù)字系統(tǒng)的邏輯綜合,仿真驗證和時序分析等。

VerilogHDL適合算法級,寄存器級,邏輯級,開關(guān)級、系統(tǒng)級和版圖級等各個層次的設(shè)計和描述。

VerilogHDL進(jìn)行設(shè)計最大的優(yōu)點是其工藝無關(guān)性。這使得工程師在功能設(shè)計,邏輯驗證階段可以不必過多考慮門級及工藝實現(xiàn)的具體細(xì)節(jié),只需根據(jù)系統(tǒng)設(shè)計的要求施加不同的約束條件,即可設(shè)計出實際電路。3VerilogHDL模塊化設(shè)計理念

VerilogHDL支持以模塊集合的形式構(gòu)造數(shù)字系統(tǒng)。利用層次化、結(jié)構(gòu)化的設(shè)計方法,一個完整的硬件設(shè)計任務(wù)可以劃分成若干個模塊,每一個模塊又可以劃分成若干個子模塊,子模塊還可以進(jìn)一步劃分。各個模塊可以是自主開發(fā)的模塊,也可以是從商業(yè)渠道購買的具有知識產(chǎn)權(quán)的IP核。44.2VerilogHDL基礎(chǔ)知識

VerilogHDL的運算符與C語言的運算符幾乎完全相同,但數(shù)據(jù)類型是VerilogHDL特有的。在實際應(yīng)用中,要認(rèn)真體會、深入理解硬件描述語言與軟件編程語言的本質(zhì)區(qū)別。4.2.1VerilogHDL模塊結(jié)構(gòu)模塊是VerilogHDL的基本單元,用于描述某個設(shè)計的功能或結(jié)構(gòu)以及與其他模塊通信的外部端口。模塊的實際意義是代表硬件電路上的邏輯實體,每個模塊都實現(xiàn)特定的功能。5模塊的基本結(jié)構(gòu)6VerilogHDL語言描述F=AB+CD模塊結(jié)構(gòu)舉例

VerilogHDL模塊結(jié)構(gòu)完全嵌在module和endmodule關(guān)鍵字之間,包括四部分,即模塊聲明、端口定義、信號類型說明和邏輯功能定義。71.模塊聲明模塊聲明包括模塊名和模塊的端口列表。其格式如下:

Module模塊名(端口名1/端口名2,…,端口名n);

… //模塊的其他部分

endmodule //模塊結(jié)束關(guān)鍵字模塊端口列表中端口名的排列順序是任意的。82.端口(Port)定義端口是模塊與外界或其他模塊進(jìn)行連接、通信的信號線。因此,對端口列表中哪些端口是輸入端口、哪些端口是輸出端口要進(jìn)行明確說明。在VerilogHDL中有3種端口類型;輸入端口、輸出端口、雙向端口(既可用作輸入也可用作輸出)。91)用input定義輸入端口,格式如下:

input[位寬]端口名1,端口名2,…,端口名n;2)用output定義輸出端口,格式如下:

output[位寬]端口名1,端口名2,…,端口名n;3)用inout定義雙向端口,格式如下:

inout[位寬]端口名1,端口名2,…,端口名n;使用上述3種定義格式時應(yīng)注意:

.位寬的說明應(yīng)遵循[n:1]或[n-1:0]的規(guī)則;.不同位寬的端口應(yīng)分別定義;

.位寬說明省略時,默認(rèn)值為1。103.?dāng)?shù)據(jù)(信號)類型說明在模塊中用到的所有信號(包括端口信號、節(jié)點信號、中間變量等)都必須進(jìn)行數(shù)據(jù)類型的定義。VerilogHDL中提供了各種信號類型,最常用的是連線型(wire)、寄存器型(reg)和參數(shù)型(parameter)。數(shù)據(jù)類型定義的實例:

reg[4:1)cout;

//定義信號cout的數(shù)據(jù)類型為4位寄存器(reg)型

wirea,b,c;

//定義信號a,b,c為1位連線(wire)型注意:

輸入端口和雙向端口不能說明為寄存器型;端口信號的數(shù)據(jù)類型說明缺省時,EDA的綜合器將其默認(rèn)為wire型。114.邏輯功能定義模塊中的核心部分是邏輯功能的定義。

VerilogHDL提供了多種邏輯功能的定義方式,其中調(diào)用邏輯門元件(元件例化)、持續(xù)賦值語句(assign)、過程塊(always)3種定義方式比較常用。相對應(yīng)在模塊設(shè)計中的3種描述方法:門級描述方式、數(shù)據(jù)流描述方式、行為描述方式,以及以上混合描述方式。121)通過調(diào)用邏輯門元件(元件例化)定義通過調(diào)用VerilogHDL提供的內(nèi)置邏輯門元件,按照元件模型,進(jìn)行它們之間的信號連接,完成邏輯電路的結(jié)構(gòu)描述。采用這種方法可以將傳統(tǒng)的電路原理圖轉(zhuǎn)換成VerilogHDL文本形式。例1:

andmyand3(out,a,b)例2:

andu3(f,a,b,c);132)用持續(xù)賦值語句(assign)定義

assign語句一般用在數(shù)據(jù)流描述方式中,常用來描述組合邏輯電路的功能,稱為持續(xù)賦值方式。這種描述方式比較簡單,只需將傳統(tǒng)邏輯表達(dá)式轉(zhuǎn)換成符合VerilogHDL規(guī)范的表達(dá)式放在關(guān)鍵字assign后面即可。例如:

assignF=~(A&B)|(C&D);3)用過程塊(always)定義行為描述方式中采用always定義邏輯功能時,可不關(guān)心電路結(jié)構(gòu),只描述電路的行為,即在某種輸入情況下產(chǎn)生相應(yīng)的輸出。硬件描述語言支持與邏輯電路結(jié)構(gòu)無關(guān)的行為描述。行為描述轉(zhuǎn)化為具體電路結(jié)構(gòu)的工作由EDA工具完成。14例、用always過程塊描述一個4位計數(shù)器。

modulecounter(out,reset,clk);

output[4:1]out;

inputreset,clk;

reg[4:1]out;

always@(posedgeclk)begin if(reset)out<=0;

elseout<=out+1;

endendmodule15164.2.2詞法表示171819204.2.3數(shù)據(jù)類型數(shù)據(jù)類型(DataType)也稱為變量類型。在VerilogHDL中,數(shù)據(jù)類型用來表示數(shù)字電路中的物理連線、數(shù)據(jù)存儲和數(shù)據(jù)傳送等物理量。

VerilogHDL中共有19種數(shù)據(jù)類型,分成連線型(NetType)和寄存器型(RegisterType)兩類。

其中最常用的是wire型、reg型和parameter型。211.連線型數(shù)據(jù)用來描述電路中的各種物理連接,沒有狀態(tài)保持能力,輸出隨著輸入變化而變化。必須對網(wǎng)絡(luò)型數(shù)據(jù)進(jìn)行連續(xù)的驅(qū)動。有兩種驅(qū)動連線型數(shù)據(jù)的方式,一是在結(jié)構(gòu)描述中將其連接到邏輯門的輸出端或其他模塊的輸出端;另一種是用assign語句進(jìn)行賦值。當(dāng)沒有獲得驅(qū)動時,它的取值為z。

VerilogHDL中的連線型數(shù)據(jù)包括wire型、tri型、wor型、trior型、wand型、triand型、tril型、trio型、trireg型、vectored型、large型、medium型、scalared型、small型。其中,在可綜合模塊中最常用的是wire型。22wire型數(shù)據(jù)用來表示用assign語句賦值的組合邏輯信號。VerilogHDL模塊輸入輸出端口信號類型說明缺省時,自動定義為wire型。

wire型變量可以用作任何表達(dá)時的輸入,也可用作assign語句、元件調(diào)用語句和模塊調(diào)用語句的輸出。

wire型變量的取值可為0、1、X、Z。wire型數(shù)據(jù)的定義格式如下:

wire<[位寬]>數(shù)據(jù)名1,數(shù)據(jù)名2,…,數(shù)據(jù)名n;位寬遵循[n:1]或[n-1:0]規(guī)則進(jìn)行說明,可定義多位的wire型向量;位寬說明缺省時,默認(rèn)定義1位的wire型變量(標(biāo)量)。不同位寬的wire型數(shù)據(jù)必須分別定義。23242.寄存器型數(shù)據(jù)是物理電路中數(shù)據(jù)存儲單元的抽象,對應(yīng)數(shù)字電路中具有狀態(tài)保持作用的元件,如觸發(fā)器、寄存器等。其特點是:具有記憶功能,必須明確賦值才能改變其狀態(tài),否則一直保持上一次的賦值狀態(tài)。設(shè)計中,寄存器型變量只能在過程塊(例如always)中,通過過程賦值語句進(jìn)行賦值。換言之,在過程塊(如always)內(nèi)被賦值的每一個信號,都必須在數(shù)據(jù)類型說明時定義成寄存器型。在VerilogHDL中有5種寄存器型數(shù)據(jù),它們是reg型、integer型、parameter型、real型和time型。可綜合模塊中使用的是integer型、reg型和parameter型。25常用寄存器型數(shù)據(jù)介紹

integer型數(shù)據(jù)是一種純數(shù)學(xué)的抽象描述,能定義帶符號的32位整型數(shù)據(jù),不對應(yīng)任何具體的硬件電路。用作for循環(huán)語句中的循環(huán)變量。格式:

integer變量名1,變量名2,…,變量名n;

reg型數(shù)據(jù)通常用作在always過程塊中被賦值的信號,也可用于表達(dá)式的輸入。格式:

reg<[位寬]>,數(shù)據(jù)名1,數(shù)據(jù)名2,…,數(shù)據(jù)名n;可定義多位的reg型向量;位寬說明缺省時,默認(rèn)定義1位的reg型變量(標(biāo)量)。不同位寬的reg型數(shù)據(jù)必須分別定義。在使用reg型數(shù)據(jù)時,可以域選或全選。26類型定義和使用舉例27284.2.4VerilogHDL的運算符

VerilogHDL提供了豐富的運算符(Operators),按功能分成9大類,包括算術(shù)運算符、邏輯運算符、位運算符、關(guān)系運算符、等式運算符、歸約運算符、移位運算符、條件運算符以及拼接運算符。按運算符所帶操作數(shù)的個數(shù)來區(qū)分,可分為3類:

單目運算符(unaryoperator):帶一個操作數(shù)。o-雙目運算符(binaryoperator):帶兩個操作數(shù)。

溫馨提示

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

評論

0/150

提交評論