chapter6verilog hdl基本語法_第1頁
chapter6verilog hdl基本語法_第2頁
chapter6verilog hdl基本語法_第3頁
chapter6verilog hdl基本語法_第4頁
chapter6verilog hdl基本語法_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Verilog HDL基本語法計(jì)算機(jī)科學(xué)與工程學(xué)院計(jì)算機(jī)科學(xué)與程學(xué)院于永斌y y 指導(dǎo)思想 VerilogHDL是一種硬件語言,最終是為了產(chǎn)生實(shí)際的硬件電路或?qū)τ布娐愤M(jìn)行仿真 利用Verilog HDL編程時(shí)要時(shí)刻記得Verilog 利用Verilog HDL編程時(shí),要時(shí)刻記得Verilog是硬件語言,要時(shí)刻將Verilog與硬件電路對應(yīng)起來應(yīng)起來主要內(nèi)容主要內(nèi)容 Verilog的主要能力的主要能力 Verilog的基本描述單位的基本描述單位Verilog的基本描述單位的基本描述單位 Verilog語言要素語言要素 本章小結(jié)本章小結(jié) 參考資料參考資料參考資料參考資料 思考題思考題Verilo

2、g的主要能力的主要能力Verilog的主要能力的主要能力 基本邏輯門:內(nèi)置and、or、nand等 UDP創(chuàng)建的靈活性(組合邏輯、時(shí)序邏輯) 開關(guān)級基本結(jié)構(gòu)模型:內(nèi)置pmosnmos等 開關(guān)級基本結(jié)構(gòu)模型:內(nèi)置pmos、nmos等 端口到端口時(shí)延、路徑時(shí)延、設(shè)計(jì)的時(shí)序檢查種描述方式行為描述數(shù)據(jù)流結(jié)構(gòu)化 三種描述方式:行為描述、數(shù)據(jù)流、結(jié)構(gòu)化 提供兩類數(shù)據(jù)類型:線網(wǎng)類型、寄存器類型 能夠描述多層次設(shè)計(jì)(結(jié)構(gòu)描述) 設(shè)計(jì)規(guī)模可大可小 設(shè)計(jì)規(guī)??纱罂尚erilog的主要能力的主要能力(續(xù)續(xù))人機(jī)對話方便設(shè)計(jì)者與具間交互)Verilog的主要能力的主要能力(續(xù)續(xù)) 人機(jī)對話方便(設(shè)計(jì)者與EDA工具間

3、交互) 設(shè)計(jì)能在多個(gè)抽象級別上描述:開關(guān)級、門級、RTL級、算法級等 能夠使用內(nèi)置開關(guān)級原語對設(shè)計(jì)完整建模能夠使用內(nèi)置開關(guān)級原語對設(shè)計(jì)完整建模 可以創(chuàng)建測試激勵(lì)Testbench在行為級描述中能運(yùn)用RTL結(jié)構(gòu)算法 在行為級描述中能運(yùn)用:RTL、結(jié)構(gòu)、算法 內(nèi)置邏輯函數(shù):如&(按位與)、|(按位或) 高級語言結(jié)構(gòu):if語句、case語句、循環(huán)語句Verilog的主要能力(續(xù))的主要能力(續(xù))ASIC 和FPGA設(shè)計(jì)師可用它來編寫可綜合的代碼ASIC 和FPGA設(shè)計(jì)師可用它來編寫可綜合的代碼ASIC和FPGA設(shè)計(jì)師可用它來編寫可綜合的代碼 描述系統(tǒng)的結(jié)構(gòu),做高層次的仿真 驗(yàn)證工程師編寫各種

4、層次的測試模塊對具體電路ASIC和FPGA設(shè)計(jì)師可用它來編寫可綜合的代碼 描述系統(tǒng)的結(jié)構(gòu),做高層次的仿真 驗(yàn)證工程師編寫各種層次的測試模塊對具體電路 驗(yàn)證工程師編寫各種層次的測試模塊對具體電路設(shè)計(jì)工程師所設(shè)計(jì)的模塊進(jìn)行全面細(xì)致的驗(yàn)證 庫模型的設(shè)計(jì):可以用于描述ASIC 和FPGA的基 驗(yàn)證工程師編寫各種層次的測試模塊對具體電路設(shè)計(jì)工程師所設(shè)計(jì)的模塊進(jìn)行全面細(xì)致的驗(yàn)證 庫模型的設(shè)計(jì):可以用于描述ASIC 和FPGA的基 庫模型的設(shè)計(jì):可以用于描述ASIC和FPGA的基本單元(Cell)部件,也可以描述復(fù)雜的宏單元(Macro Cell) 庫模型的設(shè)計(jì):可以用于描述ASIC和FPGA的基本單元(C

5、ell)部件,也可以描述復(fù)雜的宏單元(Macro Cell)(MacroCell)(MacroCell)Verilog的基本描述單位的基本描述單位moduleVerilog的基本描述單位的基本描述單位modulemod le mod le name (port list);module module_name (port_list);port declarationsdata type declarationsdata type declarationscircuit functionalitysequential rulesequential ruleendmoduleNOTE 1:所有的關(guān)

6、鍵字都小寫空白用于提高可讀性分NOTE1:所有的關(guān)鍵字都小寫,空白用于提高可讀性,分號是聲明結(jié)束符NOTE 2時(shí)序規(guī)范用于仿真NOTE2:時(shí)序規(guī)范用于仿真Verilog的基本描述單位的基本描述單位module端口(模塊與外部其它模塊進(jìn)行信號傳遞的通Verilog的基本描述單位的基本描述單位module端模塊與外部其模塊行信號傳遞的道或信號線)元器件的引腳或接口模型(1)端口列表 端口名稱列表,例如:(1)端口列表端口名稱列表,例如:module multi_acc (out, ina, inb, clk, clr);(2)端口類型i (d fl )/型數(shù)據(jù)(2)端口類型wire(default

7、)/reg型數(shù)據(jù) input 輸入端口 output 輸出端口inout雙向端口inout雙向端口(3)端口聲明t tt ;Verilog的基本描述單位的基本描述單位module example1Verilog的基本描述單位的基本描述單位module半加器:半加器:sum=ABcarry=ABcarry=AB關(guān)于時(shí)延(時(shí)滯)關(guān)于時(shí)延(時(shí)滯)assign #2 sum=AB;#2指2個(gè)時(shí)間單位 時(shí)延可細(xì)分為兩種類型 時(shí)延可細(xì)分為兩種類型:1)語句間時(shí)延:語句執(zhí)行的時(shí)延sum=(AB)Cin;#3 T1=A&Cin;2)語句內(nèi)時(shí)延:右邊數(shù)值計(jì)算與左邊賦值間的時(shí)延)語句內(nèi)時(shí)延右邊數(shù)值計(jì)算與左

8、邊賦值間的時(shí)延sum=#4 (AB) Cin; 時(shí)間單位通過編譯指令與物理時(shí)間相關(guān)聯(lián) 時(shí)間單位通過編譯指令與物理時(shí)間相關(guān)聯(lián)timescale1ns/100ps;即時(shí)延時(shí)間單位為1ns,時(shí)間精度為100ps 時(shí)間精度#5.21/對應(yīng)5.2ns/ 對應(yīng)#6.17/對應(yīng)6.2nsVerilog的基本描述單位的基本描述單位module example2Verilog的基本描述單位的基本描述單位moduleVerilog的基本描述單位的基本描述單位moduleVerilog的基本描述單位的基本描述單位module example3module muxtwo(out a b s1);module muxt

9、wo(out, a, b, s1);input a, b, s1;output out;output out;reg out;always (s1 or a or b)always (s1 or a or b) / s1 or a or b,若有1個(gè)變化就執(zhí)行下面的語句if (! s1) out = a;if (! s1) out = a;else out = b;endmoduleendmoduleVerilog的基本描述單位的基本描述單位module二選一多路選擇器的門級結(jié)構(gòu)Verilog的基本描述單位的基本描述單位module選多路選擇器的門級結(jié)構(gòu)Verilog的基本描述單位的基本描述單

10、位module二選一多路器門級結(jié)構(gòu)的Verilog HDL程序Verilog的基本描述單位的基本描述單位module選多路器門級結(jié)構(gòu)的g程序module muxtwo (out, a, b, s1);module muxtwo (out, a, b, s1);input a, b, s1;output out;input a, b, s1;output out;wire ns1, sela, selb;assign ns1=s1;output out;not u1(ns1,s1);assign sela=a&ns1;assign selb=b&s1;and #1 u2(sela

11、, a, ns1);and #1 u3(selb, b, s1);assign out=sela | selb;endmoduleor#1 u4(out, sela, selb);endmoduleendmoduleVerilog的基本描述單位的基本描述單位moduleNOTE:?Verilog HDL的原語(primitive):and(與門),or(Verilog的基本描述單位的基本描述單位module或門),not(非門)(1)規(guī)定了接口順序和用法(2)門級延遲(3)實(shí)例名稱(3)實(shí)例名稱?綜合(synthesis)與某種藝的基本件對應(yīng)(1)與某種工藝的基本元件對應(yīng)(2)布局布線(3)版

12、圖文件哪種代碼不能綜合哪種可以綜合Question:哪種代碼不能綜合,哪種可以綜合?Verilog的基本描述單位的基本描述單位module測試模塊Verilog的基本描述單位的基本描述單位module(1)Verilog HDL不僅提供描述設(shè)計(jì)的能力,而且提供對激勵(lì)控制存儲響應(yīng)和設(shè)計(jì)驗(yàn)證的建模能力激勵(lì)對激勵(lì)、控制、存儲響應(yīng)和設(shè)計(jì)驗(yàn)證的建模能力。激勵(lì)和控制可用初始化語句(initial)產(chǎn)生(2)加入激勵(lì)來對功能行為邏輯網(wǎng)表門級結(jié)構(gòu)等(2)加入激勵(lì)來對功能行為、邏輯網(wǎng)表、門級結(jié)構(gòu)等進(jìn)行測試,即行為級仿真、RTL級仿真、門級仿真、后仿真等(參照Top-Down設(shè)計(jì))仿真等(參照Top-Down設(shè)計(jì)

13、)Verilog的基本描述單位的基本描述單位moduleVerilog的基本描述單位的基本描述單位modulemodule trist2(out, in, enable);output out; example4pinput in, enable;bufif1 mybuf(out, in, enable);/如何實(shí)例化(實(shí)例引用)?如何實(shí)例化(實(shí)例引用)?endmoduleVerilog的基本描述單位的基本描述單位moduleNOTEVerilog的基本描述單位的基本描述單位moduleNOTE:(1)引用/調(diào)用現(xiàn)成的元件或模塊的方法稱為實(shí)例化(或?qū)嵗没蚰K調(diào)用)(或?qū)嵗没蚰K調(diào)用)(

14、2)本質(zhì)上是從模塊模板生成實(shí)際的電路結(jié)構(gòu)對象的操作(這樣的電路結(jié)構(gòu)對象被稱為模塊實(shí)例)的操作(這樣的電路結(jié)構(gòu)對象被稱為模塊實(shí)例)(3)一個(gè)Verilog模塊可以被任意多個(gè)其他模塊調(diào)用在Verilog HDL語言中模塊不能被嵌套定義但在Verilog HDL語言中,模塊不能被嵌套定義,但是卻可以包含其他模塊的拷貝,即調(diào)用其他模塊的實(shí)例。模塊的定義和模塊的實(shí)例是兩個(gè)不同的概念在個(gè)設(shè)計(jì)中有通過模塊用實(shí)例化才,在一個(gè)設(shè)計(jì)中,只有通過模塊調(diào)用(實(shí)例化)才能使用一個(gè)模塊Verilog的基本描述單位的基本描述單位moduleVerilog的基本描述單位的基本描述單位module(4)模塊調(diào)用(實(shí)例化)和函數(shù)

15、調(diào)用非常相似,但是在本質(zhì)上又有很大差別:1)一個(gè)模塊代表擁有特定功能的一個(gè)電路塊,每當(dāng)一個(gè)模塊在其他模塊內(nèi)被調(diào)用一次,被調(diào)用模塊當(dāng)個(gè)模塊在其他模塊內(nèi)被調(diào)用次,被調(diào)用模塊所表示的電路結(jié)構(gòu)就會在調(diào)用模塊代表的電路內(nèi)部被復(fù)制一次(即生成被調(diào)用模塊的一個(gè)實(shí)例)被復(fù)制次(即生成被調(diào)用模塊的個(gè)實(shí)例)2)但是模塊調(diào)用不能像函數(shù)調(diào)用一樣具有“退出調(diào)用”的操作因?yàn)橛布娐方Y(jié)構(gòu)不會隨著時(shí)間而調(diào)用的操作,因?yàn)橛布娐方Y(jié)構(gòu)不會隨著時(shí)間而發(fā)生變化,被復(fù)制的電路塊將一直存在Verilog語言要素語言要素Verilog語言要素語言要素 標(biāo)識符(identifier)(1)Verilog HDL中的標(biāo)識符可以是任意一組字母、

16、數(shù)字、$符號和 (下劃線)符號的組合,但標(biāo)識符的第一個(gè)字字符號_(下劃線)符號但標(biāo)識符第個(gè)字符必須是字母或者下劃線。另外,標(biāo)識符是區(qū)分大小寫的。例如:Count COUNT_R1_D2 R56_68FIVE$(2)轉(zhuǎn)義標(biāo)識符(escaped identifier)可以在一條標(biāo)識符中轉(zhuǎn)(p)包含任何可打印字符。轉(zhuǎn)義標(biāo)識符以(反斜線)符號開頭,以空白結(jié)尾。例如:7400 .*.$ * Q OutGateVerilog語言要素語言要素 注釋在VerilogHDL中有兩種形式的注釋1) /*第一種形式:可以擴(kuò)展至多行*/)2) /第二種形式:在本行結(jié)束)Verilog語言要素語言要素 格式規(guī)范Veri

17、log語言要素語言要素(1)VerilogHDL區(qū)分大小寫(1)VerilogHDL區(qū)分大小寫(2)VerilogHDL是自由格式的,即結(jié)構(gòu)可以跨越多行編寫也可以在行內(nèi)編寫白空(新行制表符行編寫,也可以在一行內(nèi)編寫。白空(新行、制表符和空格)沒有特殊意義。例如:initial begin Top= 3b001; #2 Top = 3 b011; endinitial begin Top= 3b001; #2 Top = 3 b011; end和下面的指令一樣:initialinitialbeginTop = 3b001;Top = 3b001;#2 Top = 3b 0 1 1 ;endend

18、Verilog語言要素語言要素 系統(tǒng)任務(wù)(task)與函數(shù)()與函數(shù)(function)Verilog語言要素語言要素(1)以$字符開始的標(biāo)識符表示系統(tǒng)任務(wù)或系統(tǒng)函數(shù)(2)任務(wù)提供了種封裝行為的機(jī)制這種機(jī)制可在(2)任務(wù)提供了一種封裝行為的機(jī)制。這種機(jī)制可在設(shè)計(jì)的不同部分被調(diào)用。任務(wù)可以返回0個(gè)或多個(gè)值(3)函數(shù)除只能返回個(gè)值以外與任務(wù)相同(3)函數(shù)除只能返回一個(gè)值以外與任務(wù)相同(4)此外,函數(shù)在0時(shí)刻執(zhí)行,即不允許延遲,而任務(wù)可帶有延遲務(wù)可帶有延遲?$display (Hi, you have reached LT today);/* $dil系統(tǒng)任務(wù)在新的行中顯示* /* $display

19、 系統(tǒng)任務(wù)在新的一行中顯示。* /?$time/該系統(tǒng)任務(wù)返回當(dāng)前的模擬時(shí)間Verilog語言要素語言要素 VerilogHDL提供了內(nèi)置的系統(tǒng)任務(wù)和系統(tǒng)函數(shù),即在語言中預(yù)定義的任務(wù)和函數(shù),用戶可以隨意調(diào)用。而且用戶可以根據(jù)自己的需要基于V il仿真系統(tǒng)提供的PLI(Pi己的需要,基于Verilog仿真系統(tǒng)提供的PLI(ProgrammingLanguageInterface)編程接口編制特殊的系統(tǒng)任務(wù)和系統(tǒng)函數(shù)。根據(jù)系統(tǒng)任務(wù)和系統(tǒng)函數(shù)實(shí)現(xiàn)的功能不同,可將其分為:。根據(jù)系統(tǒng)任務(wù)和系統(tǒng)函數(shù)實(shí)現(xiàn)的功能不同,可將其分為:?顯示任務(wù)(displaytask)?文件輸入/輸出任務(wù)(File I/O ta

20、sk)?文件輸入/輸出任務(wù)(FileI/Otask)?時(shí)間標(biāo)度任務(wù)(timescaletask)?模擬控制任務(wù)(simulationcontroltask)模擬控制任務(wù)()?時(shí)序驗(yàn)證任務(wù)(timingchecktask)?PLA建模任務(wù)(PLAmodelingtask)?隨機(jī)建模任務(wù)(stochasticmodelingtask)?實(shí)數(shù)變換函數(shù)(conversionfunctionsforreal)?概率分布函數(shù)(probabilisticdistributionfunction)Verilog語言要素語言要素 編譯指令Verilog語言要素語言要素(1)以(反引號)開始的某些標(biāo)識符是編譯器指

21、令器指令(2)在Verilog語言編譯時(shí),特定的編譯器指令在整個(gè)編譯過程中有效(編譯過程可令在整個(gè)編譯過程中有效(編譯過程可跨越多個(gè)文件),直到遇到其它的不同編譯程序指令。編譯程序指令。例如:timescaletimescaledefine, undefincludeincludeVerilog語言要素語言要素timescaleVerilog語言要素語言要素(1)在il模型中所有時(shí)延都用單位時(shí)間表(1)在Verilog HDL模型中,所有時(shí)延都用單位時(shí)間表述。使用timescale編譯器指令將時(shí)間單位與實(shí)際時(shí)間相關(guān)聯(lián)相關(guān)聯(lián)。(2)該指令用于定義時(shí)延單位和時(shí)延精度。timescale編譯器指令格

22、式 ilii / ii i編譯器指令格式:timescale time_unit/ time_ precision/ time_unit和time_precision由值1、10、和100以及單位s、和f 組成例如ms、us、ns、ps和fs組成。例如timescale 1 ns / 100 ps /表示時(shí)延單位為1ns, 時(shí)延精度為100為100 ps(3)timescale編譯器指令在模塊說明外部出現(xiàn), 并且影響后面所有的時(shí)延值影響后面所有的時(shí)延值Verilog語言要素語言要素define,undefVerilog語言要素語言要素(1)define指令用于文本替換它很像C語言中的(1) d

23、efine指令用于文本替換,它很像C語言中的#define 指令,如:define SIZE 32define SIZE 32regSIZE -1:0 AddReg;(2)一旦define指令被編譯其在整個(gè)編譯過程中都(2)一旦 define指令被編譯,其在整個(gè)編譯過程中都有效。例如,通過另一個(gè)文件中的define指令,SIZE能被多個(gè)文件使用被多個(gè)文件使用(3)undef指令取消前面定義的宏。例如:define WORD 16/建立個(gè)文本宏替代define WORD 16/建立一個(gè)文本宏替代wire WORD : 1 Bus;undef WORD/ 在d f編譯指令后 WORD的宏定義不再有

24、效undef WORD/ 在undef編譯指令后,WORD的宏定義不再有效Verilog語言要素語言要素includeVerilog語言要素語言要素il d 編譯器指令用于嵌入內(nèi)嵌文件的內(nèi)容文include編譯器指令用于嵌入內(nèi)嵌文件的內(nèi)容。文件既可以用相對路徑名定義,也可以用全路徑名定義 例如定義, 例如:incl de / /primiti esinclude . ./. ./primitives.v /編譯時(shí),這一行由文件“. ./. ./primitives.v”的內(nèi)容替代容替代Verilog語言要素語言要素 值集合Verilog語言要素語言要素(1)Verilog HDL有內(nèi)置了下列四

25、種基本的值:)邏輯 或“假”1)0:邏輯0或“假”2)1:邏輯1或“真”)未知3) x:未知4)z:高阻(2) 值和 值都是不分大小寫的(2)x值和z值都是不分大小寫的。即:值0 x1z與值0X1Z相同。Verilog語言要素語言要素 VerilogHDL中有三類常量中有三類常量Verilog語言要素語言要素1)整型)2)實(shí)數(shù)型3)字符串型)下劃線符號(_)可以隨意用在整數(shù)或?qū)崝?shù)中,它們就數(shù)量本身沒有意義。它們能用來提高易讀性;們就數(shù)本身沒有義們能用來提高易讀性;唯一的限制是下劃線符號不能用作為首字符。Verilog語言要素語言要素 整型數(shù)Verilog語言要素語言要素整型數(shù)整型數(shù)可以按如下兩

26、種方式書寫:1)簡單的十進(jìn)制數(shù)格式1)簡單的十進(jìn)制數(shù)格式32 -152)基數(shù)表示法2)基數(shù)表示法格式:size base value例如:5O37/ 5位八進(jìn)制數(shù)例如:5O37/ 5位八進(jìn)制數(shù)4D2 /4位十進(jìn)制數(shù)4B1x 01/ 4位二進(jìn)制數(shù)4B1x_01 / 4位二進(jìn)制數(shù)8h2 A/ 8位十六進(jìn)制數(shù)Verilog語言要素語言要素 實(shí)數(shù)Verilog語言要素語言要素 字符串整型數(shù)可以按如下兩種方式書寫字符串是雙引號內(nèi)的字符序列字符串不能分書寫:1) 十進(jìn)制計(jì)數(shù)法十進(jìn)制計(jì)數(shù)法3 25 67820 1符序列。字符串不能分成多行書寫。例如: INTERNAL ERROR3.2 5.678 2. 0

27、.12) 科學(xué)計(jì)數(shù)法科學(xué)計(jì)數(shù)法例如23 5 1e2/ 23510 0 INTERNAL ERROR REACHEDHERE 例如:23_5.1e2/ 23510.03.6E2 /360 0 (e與E相同)/360.0 (e與E相同)5e-3 / 0.005Verilog語言要素語言要素 數(shù)據(jù)類型(代表了不同的硬件結(jié)構(gòu))Verilog語言要素語言要素Verilog HDL 有兩大類數(shù)據(jù)類型1) 線網(wǎng)類型。net type 表示Verilog結(jié)構(gòu)化元件間的物理1) 線網(wǎng)類型。net type 表示Verilog結(jié)構(gòu)化元件間的物理連線。它的值由驅(qū)動元件的值決定,例如:連續(xù)賦值或門的輸出門的輸出如果沒

28、有驅(qū)動元件連接到線網(wǎng),線網(wǎng)的缺省值為z2) 寄存器類型。register type表示一個(gè)抽象的數(shù)據(jù)存儲單2) 寄存器類型。register type表示個(gè)抽象的數(shù)據(jù)存儲單元,它只能在always語句和initial語句中被賦值,并且它的值從一個(gè)賦值到另一個(gè)賦值被保存下來。寄存器類型的值從個(gè)賦值到另個(gè)賦值被保存下來。寄存器類型的變量具有x的缺省值線網(wǎng)類型Verilog語言要素語言要素線網(wǎng)類型(1)wire- represents a node(2)tri- represents a tri-state node(2)tri represents a tri state node(3)Bus D

29、eclarations: MSB : LSB ; LSB : MSB ; LSB : MSB ;(4)Examples: wire s1 ;i15 0 dd i wire 15:0 add, ins ;類型功能可綜合性wiretri標(biāo)準(zhǔn)內(nèi)部連接線wire,tri標(biāo)準(zhǔn)內(nèi)部連接線supply1,supply0電源和地supp y ,supp y0電源和地wand,triand多驅(qū)動源線與wor,trior多驅(qū)動源線或tri1,tri0無驅(qū)動時(shí)上拉/下拉trireg能保存電荷的netVerilog語言要素語言要素在一個(gè)線網(wǎng)類型聲明中可以指定兩類強(qiáng)度Verilog語言要素語言要素在一個(gè)線網(wǎng)類型聲明中,

30、可以指定兩類強(qiáng)度:1)電荷量強(qiáng)度(charge strength)一個(gè)trireg線網(wǎng)型數(shù)據(jù)用于模擬電荷存儲。電荷量強(qiáng)度可由下面的關(guān)鍵字來制定電容量的相對大?。簊mallmedium(默認(rèn))large一個(gè)trireg線網(wǎng)制定電容量的相對大?。簊mall、medium(默認(rèn))、large。個(gè)trireg線網(wǎng)型數(shù)據(jù)能夠模擬一個(gè)電荷存儲節(jié)點(diǎn),該節(jié)點(diǎn)的電荷量將隨時(shí)間而逐漸衰減。對一trireg線網(wǎng)型數(shù)據(jù)在仿真時(shí),其電荷衰減時(shí)間應(yīng)當(dāng)制定為延遲時(shí)間對g線網(wǎng)型數(shù)據(jù)在仿真時(shí),其電荷衰減時(shí)間應(yīng)當(dāng)制定為延遲時(shí)間2)驅(qū)動強(qiáng)度(drive strength)在個(gè)線網(wǎng)型數(shù)據(jù)的聲明語句中如果對數(shù)據(jù)對象進(jìn)行了連續(xù)賦值就可以

31、在一個(gè)線網(wǎng)型數(shù)據(jù)的聲明語句中如果對數(shù)據(jù)對象進(jìn)行了連續(xù)賦值,就可以為生命的數(shù)據(jù)對象指定驅(qū)動強(qiáng)度Verilog語言要素語言要素 寄存器類型Verilog語言要素語言要素(1)reg-unsigned variable of any bit size(2)integer-signed variable (usually 32 bits)Examples:reg cin;reg 7 : 0 sum ;Verilog語言要素語言要素)型數(shù)據(jù)常用來表示內(nèi)的指定信號對Verilog語言要素語言要素(3)reg型數(shù)據(jù)常用來表示always內(nèi)的指定信號,對應(yīng)的是具有狀態(tài)保持作用的硬件電路,如觸發(fā)器、鎖存器等鎖存

32、器等(4)寄存器型變量與線網(wǎng)數(shù)據(jù)的區(qū)別主要在于:寄存器型變量保持最后一次的賦值,而wire型數(shù)據(jù)需要有連續(xù)的驅(qū)動(5)寄存器型變量只能在initial或always內(nèi)部被賦值在always內(nèi)被賦值的每一個(gè)信號都必須定義成reg型在always內(nèi)被賦值的每個(gè)信號都必須定義成reg型Verilog語言要素語言要素Verilog語言要素語言要素Inaword: 線網(wǎng)數(shù)據(jù)類型表示進(jìn)程之間的物理互聯(lián)(活線網(wǎng)數(shù)據(jù)類型表示進(jìn)程之間的物理互聯(lián)活動流程) 寄存器數(shù)據(jù)類型表示暫時(shí)存儲數(shù)據(jù)的變量 寄存器數(shù)據(jù)類型表示暫時(shí)存儲數(shù)據(jù)的變量,可以表示寄存或者組合節(jié)點(diǎn)Verilog語言要素語言要素 操作符Verilog語言要

33、素語言要素Verilog HDL中的操作符可以分為下述類型:1) 算術(shù)操作符)2) 按位操作符3) 相等操作符)4) 邏輯操作符5) 關(guān)系操作符)6) 歸約操作符7) 移位操作符)8) 條件操作符9) 連接和復(fù)制操作符)Verilog語言要素語言要素算術(shù)操作符Verilog語言要素語言要素算術(shù)操作符Verilog語言要素語言要素按位操作符Verilog語言要素語言要素按位操作符Verilog語言要素語言要素歸約操作符Verilog語言要素語言要素歸約操作符Verilog語言要素語言要素關(guān)系操作符Verilog語言要素語言要素關(guān)系操作符Verilog語言要素語言要素相等關(guān)系操作符Verilog語

34、言要素語言要素相等關(guān)系操作符Vil語言要素語言要素邏輯操作符Verilog語言要素語言要素邏輯操作符語言要素語言要素移位操作符Verilog語言要素語言要素移位操作符Vil語言要素語言要素條件連接復(fù)制操作符Verilog語言要素語言要素條件、連接、復(fù)制操作符Vil語言要素語言要素優(yōu)先級Verilog語言要素語言要素 優(yōu)先級元加右移+ 一元加-一元減! 一元邏輯非元按位求反 右移 小于 大于 = 大于等于= = 邏輯相等!邏輯不等 歸約異或或 歸約異或非| 歸約或 |歸約或非! = 邏輯不等= = = 全等! = = 非全等&按位與 | 歸約或非* 乘/ 除%取模& 按位與 按位

35、異或 or 按位異或非|按位或% 取模+ 二元加_ 二元減 左移| 按位或& & 邏輯與| | 邏輯或? :條件操作符 左移? : 條件操作符Verilog語言要素語言要素 語句塊Verilog語言要素語言要素語句塊提供將兩條或更多條語句組合成語法結(jié)構(gòu)上語句塊提供將兩條或更多條語句組合成語法結(jié)構(gòu)上相當(dāng)于一條語句的機(jī)制。在Verilog HDL中有兩類語句塊,即:句塊,即:1) 順序語句塊(begin . end):語句塊中的語句按給定次序順序執(zhí)行次序順序執(zhí)行2) 并行語句塊(fork . join):語句塊中的語句并行執(zhí)行行Verilog語言要素語言要素順序語句塊中的語句按順序

36、方式執(zhí)行。每條語句中Verilog語言要素語言要素順序語句塊中的語句按順序方式執(zhí)行。每條語句中的時(shí)延值與其前面的語句執(zhí)行的模擬時(shí)間相關(guān)例如:例如:begin#2 St1#2 Stream = 1;#5 Stream = 0;#3 St1#3 Stream = 1;#4 Stream = 0;#2 Stream1;#2 Stream = 1;#5 Stream = 0; End順序語句塊中的累積時(shí)延EndVerilog語言要素語言要素并行語句塊帶有定界符fork和和join,并行語句塊中的各語句并行執(zhí)行并行語句塊內(nèi)的各條語句指定的Verilog語言要素語言要素各語句并行執(zhí)行。并行語句塊內(nèi)的各條語

37、句指定的時(shí)延值都與語句塊開始執(zhí)行的時(shí)間相關(guān)例如:fork#2 Stream = 1; #7 Stream = 0;#10 Stream = 1;#14 Stream = 0;#16 Stream = 1;#21 Stream = 0; 并行語句塊中的相對時(shí)延join并行語句塊中的相對時(shí)延Verilog語言要素語言要素 過程性賦值(進(jìn)程賦值)Verilog語言要素語言要素進(jìn)程賦值是在initial語句或always語句內(nèi)的賦值,它只能對寄存器數(shù)據(jù)類型的變量賦值。表達(dá)式的右端可以是任何表達(dá)式。 過程性賦值(進(jìn)程賦值)分兩類:1) 阻塞性過程賦值(=)2) 非阻塞性過程賦值(=)Verilog語言要

38、素語言要素阻塞賦值(=)Verilog語言要素語言要素阻塞賦值在其后所有語句執(zhí)行前執(zhí)行,即在下一語句執(zhí)行前該賦值語句完成執(zhí)行。執(zhí)行前該賦值語句完成執(zhí)行。 例如:always (A or B or Cin)always (A or B or Cin) beginreg T1, T2, T3 ;reg T1, T2, T3 ;T1 = A & B ;T2 = B & Cin;/T1賦值生效后執(zhí)行T2賦值T2 B & Cin; /T1賦值生效后執(zhí)行T2賦值T3 = A & Cin;Cout= T1 | T2 | T3;Cout T1 | T2 | T3;endVeri

39、log語言要素語言要素非阻塞賦值(=)Verilog語言要素語言要素通常非阻塞賦值執(zhí)行次序彼此不相關(guān)例如:initialbeginA =B ; ;B =A ; /執(zhí)行結(jié)果是A與B取值互換endVerilog語言要素語言要素連續(xù)賦值與過程賦值的比較Verilog語言要素語言要素Verilog語言要素語言要素Verilog語言要素語言要素 其它語句(1)if語句其它語句(2)case語句(3)循環(huán)語句1) forever循環(huán)2) repeat循環(huán))p3) while循環(huán)4) for 循環(huán))Inaword1、一個(gè)復(fù)雜電路系統(tǒng)的完整Verilog HDL模型(程序)是由若干個(gè)Verilog HDL模塊構(gòu)成的每一個(gè)模塊又可以由若干個(gè)Verilog HDL模塊構(gòu)成的,每一個(gè)模塊又可以由若干個(gè)子模

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論