![fpga設(shè)計參考書高級verilog集hdl硬件描述語言_第1頁](http://file4.renrendoc.com/view/a6a7f2cf489a1615ad8626323f971dd9/a6a7f2cf489a1615ad8626323f971dd91.gif)
![fpga設(shè)計參考書高級verilog集hdl硬件描述語言_第2頁](http://file4.renrendoc.com/view/a6a7f2cf489a1615ad8626323f971dd9/a6a7f2cf489a1615ad8626323f971dd92.gif)
![fpga設(shè)計參考書高級verilog集hdl硬件描述語言_第3頁](http://file4.renrendoc.com/view/a6a7f2cf489a1615ad8626323f971dd9/a6a7f2cf489a1615ad8626323f971dd93.gif)
![fpga設(shè)計參考書高級verilog集hdl硬件描述語言_第4頁](http://file4.renrendoc.com/view/a6a7f2cf489a1615ad8626323f971dd9/a6a7f2cf489a1615ad8626323f971dd94.gif)
![fpga設(shè)計參考書高級verilog集hdl硬件描述語言_第5頁](http://file4.renrendoc.com/view/a6a7f2cf489a1615ad8626323f971dd9/a6a7f2cf489a1615ad8626323f971dd95.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
本章介紹VerilogHDL的基本要素,包括標(biāo)識符、注釋、數(shù)值、編譯程序指令、系統(tǒng)任務(wù)和系統(tǒng)函數(shù)。另外,本章還介紹了erilog硬件描述語言中的兩種數(shù)據(jù)類型。VerilogHDL中的標(biāo)識符(identifier)可以是任意一組字母、數(shù)字、$符號和_(下劃線)符號的組合,但標(biāo)識符的第一個字符必須是字母或者下劃線。另外,標(biāo)識符是區(qū)分大小寫的。以下Coun //與Count_R1_DFIVE$轉(zhuǎn)義標(biāo)識符(escapedidentifier)可以在一條標(biāo)識符中包含任何可打印字符。轉(zhuǎn)義標(biāo)識符以\(反斜線)符號開頭,以空白結(jié)尾(空白可以是一個空格、一個制表字符或換行符。下面例舉\OutGat 與OutGate相同最后這個例子解釋了在一條轉(zhuǎn)義標(biāo)識符中,反斜線和結(jié)束空格并不是轉(zhuǎn)義標(biāo)識符的一部分。也就是說,標(biāo)識符\OutGate和標(biāo)識符OutGateVerilogHDL定義了一系列保留字,叫做,它僅用于某些上下文中。附錄A列出了語言中的所有保留字。注意只有小寫的才是保留字。例如,標(biāo)識符always(這是個)與標(biāo)識符ALWAYS(非)是不同的。另外,轉(zhuǎn)義標(biāo)識符與并不完全相同。標(biāo)識符\initial與標(biāo)識符initial(這是個)在VerilogHDL多行*///第二種形式:VerilogHDL區(qū)分大小寫。也就是說大小寫不同的標(biāo)識符是不同的。此外,VerilogHDL自由格式的,即結(jié)構(gòu)可以多行寫,也可以在行內(nèi)編寫。(新行、制表符和格)沒有特殊意義。下面通過實(shí)例解釋說明。initialbeginTop=3'b001;#2Top=3'b011;和下面的指令一樣Top=3'#2Top=3'以$字符開始的標(biāo)識符表示系統(tǒng)任務(wù)或系統(tǒng)函數(shù)。任務(wù)提供了一種封裝行為的機(jī)制。這種0個或多個值。函數(shù)除只能返回一個值以外與任務(wù)相同。此外,函數(shù)在0時刻執(zhí)行,即不允許延遲,而任務(wù)可以帶有延遲。$disy("Hi,youhavereachedLT/*$disy系統(tǒng)任務(wù)在新的一行中顯示。//該系統(tǒng)任以`(反引號)elog語言編譯時,特定的編譯器指令在整個編譯過程中有效(編譯過程可多個文件,直到遇到其它的不同編譯程序指令。完整的標(biāo)準(zhǔn)編譯器指令如下:`define,`ifdef,`else,`default_nettype`unconnected_drive,`nounconnected_drive`celldefine,`define指令用于文本替換,它很像C語言中的#define指令,如`defineMAX_BUS_SIZ..reg[`MAX_BUS_SIZE-1:0]AddRe一旦`define `define指令,MAX_BUS_SIZE`undef指令取消前面定義的宏。例如`defineWORD16建立一個文本宏替代..wire[`WORD:1]16VerilogHDL..`undef//在`undef編譯指令后,WORD的宏定義不再有效`ifdef、`else和`ifdefWINDOWparameterWORD_SIZE=parameterWORD_SIZE=在編譯過程中,果已定義了字為WINDOWS的文本宏,就選擇第一種參數(shù),否則選擇第二種參數(shù)說明。`else程序指令對于`ifdef`default_nettype該實(shí)例定義的缺省的線網(wǎng)為線與類型。因此,如果在此指令后面的任何模塊中沒有說明的連線,那么該線網(wǎng)被假定為線與類型。`include編譯器指令用于嵌入內(nèi)嵌文件的內(nèi)容。文件既可以用相對路徑名定義,也可以用全路徑名定義,例如:`include"../..在VerilogHDL模型中,所有時延都用單位時間表述。使用`timescale編譯器指令將時間單位與實(shí)際時間相關(guān)聯(lián)。該指令用于定義時延的單位和時延精度。`timescale編譯器指令格式`timescaletime_unit/time_precisiotime_unit和time_precision由值1、10、和100以及單位s、ms、us、ns、ps和fs`timescale表示時延單位為1ns,時延精度為100ps。`timescale編譯器指令在模塊說明外部出現(xiàn),并且影響`timescale1ns/moduleAndFunc(Z,A,outputinputA,and#(5.22,6.17)Al(Z,A,//規(guī)定了上升及下降時延值編譯器指令定義時延以ns1/10ns(100ps。因此,時延值5.225.2ns,時延6.17對應(yīng)6.2ns。如果用如下的`timescale程序指令代替上例中的編譯器指令`timescale那么5.22對應(yīng)52ns,6.17對應(yīng)62ns`timescale指令影響這一編譯器指令后面所有模塊中的時延值,直至遇到另一個`timescale指令或`resetall`timescale編譯指令時將發(fā)生什么?在這種情況下,模擬器總是定位在所有模塊的最小時延精度上,并且所有時延都相應(yīng)地?fù)Q算為最小時延精度。例如,`timescale1ns/100psmoduleAndFunc(Z,A,outputinputA,and#(5.22,6.17)Al(Z,A,`timescale10ns/moduleTregPutA,PutwireGetPutA=PutB=#5.21PutB=1;#10.4PutA=1;#15PutB=0;AndFuncAF1(GetO,PutA,Put在這個例子中,每個模塊都有自身的`timescale編譯器指令。`timescale編譯器指令第一次5.22對應(yīng)5.2ns,6.17對應(yīng)6.2ns;在第二個模塊中5.21對應(yīng)52ns,10.4對應(yīng)104ns,15對應(yīng)150ns。如果仿真模塊TB,設(shè)計中的所有模塊最小時間精度為100ps。因此,所有延遲(TB中的延遲)100ps。延遲52ns現(xiàn)在對應(yīng)520*100ps,對應(yīng)*100ps,對應(yīng)*100ps。更重要的是,仿真使用100ps為時間精度。如果仿真模 AndFunc,由于模塊TB不是模塊AddFunc的子模塊,模 TB中18VerilogHDL`unconnected_drive和在模塊實(shí)例化中,出現(xiàn)在這兩個編譯器指令間的任何未連接的輸入端口或者為正偏電路狀態(tài)或者為反偏電路狀態(tài)。`unconnected_drive../*在這兩個程序指令間的所有未連接的輸入端口為正偏電路狀態(tài)(連接到高電平 `unconnected_drive../*在這兩個程序指令間的所有未連接的輸入端口為反偏電路狀態(tài)(連接到低電平 `celldefinemoduleFD1S3AX(D,CK..某些PLI例程使用單
HDL有下列四種基本的值:0:邏輯01:邏輯1xz注意這四種值的解釋都內(nèi)置于語言中。如一個為z的值總是意味著高阻抗,一個為0的值在門的輸入或一個表達(dá)式中的為“z”的值通常解釋成“x”。此外,x值和z值都是不分大小寫的,也就是說,值0x1z與值0X1Z相同。VerilogHDL中的常量是由以上這四類基本值組成VerilogHDL中有三整實(shí)數(shù)字符基數(shù)這種形式的整數(shù)定義為帶有一個可選的“+”(一元)或“-”(一元)操作符的數(shù)字序 十進(jìn)制數(shù) 這種形式的整數(shù)值代表一個有符號的數(shù)。負(fù)數(shù)可使用兩種補(bǔ)碼形式表示。因此32在5位的二進(jìn)制形式中為10000,在位二進(jìn)制形式中為;-在位二進(jìn)制形式中為,在6[size]'basevalusizebase為o或O(表示八進(jìn)制),b或B(表示二進(jìn)制),d或D(表示十進(jìn)制),h或H(表示十六進(jìn)制)value是基于base的值的數(shù)字序列。值x和z以及十5'O374'B1x_01
4十進(jìn)制數(shù)二進(jìn) 位x(擴(kuò)展的x),即 4z(擴(kuò)展的z),即4'd- :數(shù)值不能為8'h2 在位長和字符之間, `和基數(shù)b之間不允許出現(xiàn)空 :制中代表1位x(或z?;鶖?shù)格式計數(shù)形式的數(shù)通常為無符號數(shù)。這種形式的整型數(shù)的長度定義是可選的。如果沒有定義一個整數(shù)型的長度,數(shù)的長度為相應(yīng)值中定義的位數(shù)。下面是兩個例子: 八進(jìn) 位十六進(jìn)制如果定義的長度比為常量指定的長度長,通常在左邊填0 左邊添0占位 左邊添x占位3'b1001_0011與3'b011相5'H0FFF與5'H1F相實(shí)20VerilogHDL十進(jìn)制;例 /法:小數(shù)點(diǎn)兩側(cè)必須有1位數(shù)科學(xué) 這種形式的實(shí)數(shù)舉例如下 其值為23510.0;忽略下劃 360.0e(與E相同 erilog語言定義了實(shí)數(shù)如何隱式地轉(zhuǎn)換為整數(shù)。實(shí)數(shù)通過四舍五入被轉(zhuǎn)換為最相近的整數(shù)。42.446, 轉(zhuǎn)換為整數(shù)92.5 轉(zhuǎn)換為整數(shù) "INTERNALERROR"用8位ASCII值表示的字符可看作是無符號整數(shù)。因此字符串是8位ASCII值的序列。為字符串“INTERNALERROR”,變量需要8*14位。reg[1:8*14]Messag..Message="INTERNAL 換行 制表 字符\ 字符 八進(jìn)制數(shù)206VerilogHDL線網(wǎng)類型。nettype表示Verilog結(jié)構(gòu)化元件間的物理連線。它的值由驅(qū)動元件的值決定,例如連續(xù)賦值或門的輸出。如果沒有驅(qū)動元件連接到線網(wǎng),線網(wǎng)的缺省值為z。寄存器類型。 type表示一個抽象的數(shù)據(jù)單元,它只能在always語句和 net_kind[msb:lsb]net1,net2,...,netnet_kindmsb和lsb是用于定義線網(wǎng)范圍的常量表達(dá)式;范圍定義是可選的;如果沒有定義范圍,缺省的線網(wǎng)類型為1位。下面是線網(wǎng)類型說明實(shí)例。wireRdy,Star //2個1wand[2:0]Addr;//Addr是3位線與當(dāng)一個線網(wǎng)有多個驅(qū)動器時,即對一個線網(wǎng)有多個賦值時,不同的線網(wǎng)產(chǎn)生不同的行為。例如,worRd.assignRde=Blt&Wyl.assignRde=Kbl|Ki本例中,Rde有兩個驅(qū)動源,分別來自于兩個連續(xù)賦值語句。由于它是線或線網(wǎng),Rde的有(tri)網(wǎng)語法和語義一致;三態(tài)線wireResewire[3:2]Cla,Pla,Sltri[MSB-1:LSB+1]Artwire01xz00xx01x1x1xxxxxz01xzassignCla=Pla&Sl.assignCla=Pla^Sl在這個實(shí)例中,Cla有兩個驅(qū)動源。兩個驅(qū)動源的值(右側(cè)表達(dá)式的值)22VerilogHDL以便決定ClaCla是一個向量,每位的計算是相關(guān)的。例如,如果第一個右側(cè)表達(dá)式的值為01x,1,那么Cla的有效值是x1x(第一位0在表中索引到x,第二位1和1在表中索引到1,第三位x和在表中索引到x)。trior[MAX-1:MIN-1]Rdx,Sdx,Bdwor(或 001x011111xx1xxz01xz線與(wand)網(wǎng)指如果某個驅(qū)動源為00。線與和三態(tài)線與(triand)網(wǎng)在語wand[-7:0]DbutriandReset,Clwand(或 此線網(wǎng)數(shù)值(類似于寄存器),并且用于電容節(jié)點(diǎn)的建模。當(dāng)三態(tài)寄存器(trireg)的所有驅(qū)動源都處于高阻態(tài),也就是說,值為z時,三態(tài)寄存器線網(wǎng)保存作用網(wǎng)上的最后一個值。此外,三態(tài)寄存器線網(wǎng)的缺省初始值為x。trireg[1:8]Dbus,Abu這類線網(wǎng)可用于線邏輯的建模,即線網(wǎng)有多于一個驅(qū)動源。tri0(tri1)線網(wǎng)的特征是,若無驅(qū)動源驅(qū)動,它的值為0(tri1的值為1)。tri0[-3:3]GndButri1[0:-5]OtBus,ItButri001xz00xx01x1x1xxxxxz01x6.supply0和supply1supply00;supply11;例如supply0Gnd,supply1[2:0]3.7.2在VerilogHDL中,有可能不 某種線網(wǎng)類型。在這樣的情況下,缺省線網(wǎng)類型為`default_nettypenet_kin 在定義向量線網(wǎng)時可選用scalared或vectored。如果一個線網(wǎng)定義時使用了vectored,那么就不允許位選擇和部分選擇該線網(wǎng)。換句話說,必須對線網(wǎng)整體賦值(位選擇wirevectored[3:1]Gr//不允許位選擇Grb[2]和部分選擇Grbworscalared[4:0]Best//與wor[4:0]Best相同,允許位選擇Best[2]和部分選擇Best[3:1]reg[msb:lsb]reg1,reg2,...regmsb和lsb定義了范圍,并且均為常數(shù)值表達(dá)式。范圍定義是可選的;如果沒有定義范圍,缺省值為1位寄存器。例如:reg[3:0]SatregCntreg[1:32]KispPisp//位寄存器Lis,reg[1:4]Com24VerilogHDLComb b的值為14(1110),1110是2的補(bǔ)碼Comb= //Comb的值為15(0101)器reg[msb:1sb]memory1[upper1:lowermemory2[upper2:lower2],...reg[0:3]MyMem//MyMem為64個4位寄存器的數(shù)組regBog//Bog為5個1位寄存器的數(shù)組MyMem和Bog都是器。數(shù)組的維數(shù)不能大于2。注意器屬于寄存器數(shù)組類型。線網(wǎng)數(shù)parameterADDR_SIZE=16,WORD_SIZE=reg[1:WORD_SIZE]RamPar[ADDR_SIZE-1:0],DataReRamPar是器,是16個8位寄存器數(shù)組,而DataReg是8位寄存器在賦值語句中需要注意如下區(qū)別:器賦值不能在一條賦值語句中完成,但是寄存器可以。因此在器被賦值時,需要定義一個索引。下例說明它們之間的不同。reg[1:5]Dig;//Dig為5位寄存器Dig=上述賦值都是正確的,regBOg[1:5];//Bog為5個1位寄存器的器Bog=reg[0:3]XromXrom[1]=4'hA;Xrom[2]=4'h8;Xrom[3]=4'hF;Xrom[4]=4'h2;$readmemb(加載二進(jìn)制值$readmemb(加載十六進(jìn)制值這些系統(tǒng)任務(wù)從指定的文本文件中數(shù)據(jù)并加載到器。文本文件必須包含相應(yīng)的二進(jìn)制或者十六進(jìn)制數(shù)。例如:reg[1:4]RomB[7:1]$readmemb("ram.patt",RomB);Romb是器。文件“ram.patt”必須包含二進(jìn)制值。文件也可以包含空間和注釋。 $readmemb("ram.patt",RomB,5,在這種情況下只有Romb[5],Romb[4]和Romb[3]@hex_addressvalu $readmemb("rom.patt",RomB,//從地址6開始,并且持續(xù)到1$readmemb("rom.patt",RomB,6,//從地址6讀到地址4整數(shù)寄存器包含整數(shù)值。整數(shù)寄存器可以作為普通寄存器使用,典型應(yīng)用為次行為建模。使用整數(shù)型說明形式如下:integerinteger1,integer intergerN[msb:1sb]msb和lsb是定義整數(shù)數(shù)組界限的常量表達(dá)式,數(shù)組界限的定義是可選的。注意容許無位界限的情況。一個整數(shù)最少容納32位。但是具體實(shí)現(xiàn)可提供的位。下面是整數(shù)說明的實(shí)integerA,B,C;三個整數(shù)型寄存器integerHist[3:6];//一組四個寄存器整數(shù)不作為向量。如,于上的整數(shù),B[6]和B[20:10]是。一種截取位值的方法是將整數(shù)賦值給一般的reg類型變量,然后從中選取相應(yīng)的位,如下所reg[31:0]BreintegerBint.//Bint[6]和Bint[20:10]是不允許的Breg=Bint/*現(xiàn)在,Breg[6]和Breg[20:10]是允許的,并且從整數(shù)Bint獲取相應(yīng)的位值。上例說明了如何通過簡單的賦值將整數(shù)轉(zhuǎn)換為位向量。類型轉(zhuǎn)換自動完成,不必使用特:26VerilogHDLintegerJreg[3:0]BcJ= /J/的值為32'b0000...00110Bcq=J //Bcq的值為4'b0110Bcq=J=Bc //J的值為32'b0000...00101J= /J/的值為32'b1111...11010Bcq=J //Bcq的值為4'b1010注意賦值總是從最右端的位向最左邊的位進(jìn)行;任何多余的位被截斷。如果你能夠回憶起整數(shù)是作為2的補(bǔ)碼位向量表示的,就很容易理解類型轉(zhuǎn)換。timetime_id1,time_id2,...,t
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 班主任心理健康與壓力管理的培訓(xùn)總結(jié)
- 公交掃惡除霸承諾書范本
- 2025-2030全球船用防火窗行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國運(yùn)動刺激療法行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國矩形橋式起重機(jī)行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球便攜式鼻腔沖洗器行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球農(nóng)用氧化亞銅行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國鋼制螺旋錐齒輪行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國戶外電氣箱行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球軸承精密滾珠行業(yè)調(diào)研及趨勢分析報告
- 蛋糕店服務(wù)員勞動合同
- 土地買賣合同參考模板
- 2025高考數(shù)學(xué)二輪復(fù)習(xí)-專題一-微專題10-同構(gòu)函數(shù)問題-專項(xiàng)訓(xùn)練【含答案】
- 2025年天津市政建設(shè)集團(tuán)招聘筆試參考題庫含答案解析
- 2024-2030年中國烘焙食品行業(yè)運(yùn)營效益及營銷前景預(yù)測報告
- 2025年上半年水利部長江水利委員會事業(yè)單位招聘68人(湖北武漢)重點(diǎn)基礎(chǔ)提升(共500題)附帶答案詳解
- 寧德時代筆試題庫
- 五年級下冊北京版英語單詞
- 康復(fù)醫(yī)院患者隱私保護(hù)管理制度
- 新課標(biāo)I、Ⅱ卷 (2024-2020) 近五年高考英語真題滿分作文
- 浙江省嘉興市2023-2024學(xué)年六年級(上)期末數(shù)學(xué)試卷
評論
0/150
提交評論