第八章可編程邏輯器件verilog語(yǔ)言簡(jiǎn)介_(kāi)第1頁(yè)
第八章可編程邏輯器件verilog語(yǔ)言簡(jiǎn)介_(kāi)第2頁(yè)
第八章可編程邏輯器件verilog語(yǔ)言簡(jiǎn)介_(kāi)第3頁(yè)
第八章可編程邏輯器件verilog語(yǔ)言簡(jiǎn)介_(kāi)第4頁(yè)
第八章可編程邏輯器件verilog語(yǔ)言簡(jiǎn)介_(kāi)第5頁(yè)
已閱讀5頁(yè),還剩58頁(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、基于基于 Verilog HDL的的硬件描述語(yǔ)言簡(jiǎn)介硬件描述語(yǔ)言簡(jiǎn)介劉 杰 惠2012年5月25日目錄n什么是Verilog HDLnVerilog HDL語(yǔ)法n設(shè)計(jì)描述層次n組合邏輯和時(shí)序邏輯n設(shè)計(jì)測(cè)試和驗(yàn)證n可綜合的設(shè)計(jì)n設(shè)計(jì)注意事項(xiàng)什么是Verilog HDLnVerilog HDL是一種硬件描述語(yǔ)言是一種硬件描述語(yǔ)言用于數(shù)字系統(tǒng)的設(shè)計(jì)用于數(shù)字系統(tǒng)的設(shè)計(jì)n各種級(jí)別的邏輯設(shè)計(jì):各種級(jí)別的邏輯設(shè)計(jì):算法級(jí)、結(jié)構(gòu)級(jí)、門級(jí)到開(kāi)關(guān)級(jí)的多種抽算法級(jí)、結(jié)構(gòu)級(jí)、門級(jí)到開(kāi)關(guān)級(jí)的多種抽象設(shè)計(jì)層次的數(shù)字系統(tǒng)建模;象設(shè)計(jì)層次的數(shù)字系統(tǒng)建模;被建模的數(shù)字系統(tǒng)對(duì)象的復(fù)雜性可以介于被建模的數(shù)字系統(tǒng)對(duì)象的復(fù)雜性可以介于

2、簡(jiǎn)單的門和完整的復(fù)雜電子數(shù)字系統(tǒng)之間簡(jiǎn)單的門和完整的復(fù)雜電子數(shù)字系統(tǒng)之間(例如例如 CPU)什么是Verilog HDLn進(jìn)行數(shù)字邏輯系統(tǒng)的仿真驗(yàn)證、時(shí)序分析、進(jìn)行數(shù)字邏輯系統(tǒng)的仿真驗(yàn)證、時(shí)序分析、邏輯綜合邏輯綜合n特點(diǎn):特點(diǎn):從從C語(yǔ)言繼承了多種操作符和結(jié)構(gòu)語(yǔ)言繼承了多種操作符和結(jié)構(gòu)應(yīng)用廣泛應(yīng)用廣泛比比VHDL更簡(jiǎn)潔、靈活更簡(jiǎn)潔、靈活語(yǔ)法類似語(yǔ)法類似C,但思想不同,著眼于電路,但思想不同,著眼于電路Verilog HDL的歷史n1983年Gateway Design Automation 公司在C語(yǔ)言的基礎(chǔ)上,為其仿真器產(chǎn)品Verilog-XL開(kāi)發(fā)了一種專用硬件描述語(yǔ)言Verilog HDL

3、硬件描述語(yǔ)言的設(shè)計(jì)優(yōu)點(diǎn)n電路的邏輯功能容易理解;n便于計(jì)算機(jī)對(duì)邏輯進(jìn)行分析處理;n把邏輯設(shè)計(jì)與具體電路的實(shí)現(xiàn)分成兩個(gè)獨(dú)立的階段來(lái)操作;n邏輯設(shè)計(jì)與實(shí)現(xiàn)的工藝無(wú)關(guān);n邏輯設(shè)計(jì)的資源積累可以重復(fù)利用;n可以由多人共同更好更快地設(shè)計(jì)非常復(fù)雜的邏輯電路(幾十萬(wàn)門以上的邏輯系統(tǒng))。硬件描述語(yǔ)言的設(shè)計(jì)優(yōu)點(diǎn)nVerilog HDLn較多的第三方工具的支持n語(yǔ)法結(jié)構(gòu)比VHDL簡(jiǎn)單n學(xué)習(xí)起來(lái)比VHDL容易n仿真工具比較好使n測(cè)試激勵(lì)模塊容易編寫(xiě)硬件描述語(yǔ)言的設(shè)計(jì)優(yōu)點(diǎn)nVHDLn比VerilogHDL早幾年成為IEEE標(biāo)準(zhǔn);n語(yǔ)法/結(jié)構(gòu)比較嚴(yán)格,因而編寫(xiě)出的模塊風(fēng)格比較清晰;n比較適合由較多的設(shè)計(jì)人員合作完成的特

4、大型項(xiàng)目(一百萬(wàn)門以上)。 Verilog HDL的結(jié)構(gòu)n模塊(Module)-可對(duì)應(yīng)各種規(guī)模電路模塊Verilog HDL的結(jié)構(gòu)Verilog HDL的結(jié)構(gòu)Verilog HDL語(yǔ)法n模塊n數(shù)據(jù)類型及常量、變量n運(yùn)算符與表達(dá)式n條件與循環(huán)語(yǔ)句n結(jié)構(gòu)說(shuō)明語(yǔ)句模塊(module) nVerilog 基本設(shè)計(jì)單元:n一個(gè)電路模塊/一種邏輯功能n基本元素:接口,邏輯功能n命名:字母,數(shù)字,$,_,區(qū)分大小寫(xiě)第一個(gè)必須為:字母/_模塊(module) nVerilog 模塊的結(jié)構(gòu)由在module和endmodule 關(guān)鍵詞之間的四個(gè)主要部分組成:n端口信息: module block1(a, b, c

5、, d );n輸入/輸出說(shuō)明 : input a, b, c ;output d ;n內(nèi)部信號(hào): wire x;n功能定義: assign d = a | x ; assign x = ( b & c ); endmodule 模塊(module) 請(qǐng)?jiān)谙旅娴目崭裰刑钊脒m當(dāng)?shù)姆?hào)使其成為右圖的Verilog 模塊 :abcde模塊(module) 請(qǐng)?jiān)谙旅娴目崭裰刑钊脒m當(dāng)?shù)姆?hào)使其成為右圖的Verilog 模塊 :abcde模塊(module) n模塊實(shí)例化模塊名稱 實(shí)例化名稱(.接口名稱(信號(hào)名稱),);若接口按順序排列,可以省略接口名稱數(shù)據(jù)類型及其常量變量nVerilog HDL有下列四種

6、基本的值:n0:邏輯0或假n1:邏輯1或真nX:未知nz:高阻ux,z值不區(qū)分大小寫(xiě)uz也可以用?表示數(shù)據(jù)類型及其常量變量nVerilog HDL 中有三類常量:n整型:缺省十進(jìn)制:1,-2基數(shù)表示: b/B,o/O,d/D,h/H 4b0101,8h42,-8d5 n實(shí)數(shù)型:1.234, -56.78, 3.6e4n字符串型:雙引號(hào)內(nèi),每個(gè)字母用8位的ASCII值表示。 如 “verilog!” 看作9個(gè)8位無(wú)符號(hào)整數(shù)u反斜杠()用于定義特殊轉(zhuǎn)義字符,例如 n, t。 u下劃線(_)可以用來(lái)分隔數(shù)的表達(dá)式以提高易讀性;但不能用于位寬和進(jìn)制處。例如:32b0010_1101_1110_1111

7、 = = 32b0010110111101111數(shù)據(jù)類型及其常量變量nVerilog HDL 變量最主要的數(shù)據(jù)類型:n線網(wǎng)類型(net type):表示Verilog結(jié)構(gòu)化元件間的物理連線。它的值由驅(qū)動(dòng)元件的值決定,例如連續(xù)賦值或門的輸出。如果沒(méi)有驅(qū)動(dòng)元件連接到線網(wǎng),線網(wǎng)的缺省值為z。類型:wire, wor, wand, tri1, tri0, supply1, supply0 n寄存器類型(register type)表示一個(gè)抽象的數(shù)據(jù)存儲(chǔ)單元,它只能在always語(yǔ)句和initial語(yǔ)句中被賦值,并且它的值從一個(gè)賦值到另一個(gè)賦值過(guò)程中被保存下來(lái)。寄存器類型缺省值為x。類型:reg, in

8、teger, real, time 數(shù)據(jù)類型及其常量變量nwire 型變量n格式wire n-1:0 name1,name2,namen;n舉例wire rdy,finish; /2個(gè)1位的連線wire 3:0 result; /1個(gè)4位的連線n可用作任何方程式的輸入,也可用作assign語(yǔ)句和元件的輸出。例如:assign result=a+b;數(shù)據(jù)類型及其常量變量nreg 型變量n格式reg n-1:0 name1,name2,namen;n舉例reg rdy,finish; / 2個(gè)1位寄存器reg 3:0 result; / 1個(gè)4位寄存器reg 3:0 mem63:0; / 64個(gè)4

9、位寄存器組,可表示存儲(chǔ)器n可取任意一位:result2表示4位寄存器的次高位;mem2表示一個(gè)4位寄存器;mem21:0表示一個(gè)4位寄存器中的低2位。數(shù)據(jù)類型及其常量變量n需要注意的是:寄存器(reg)類型不一定是觸發(fā)器,它只是在 always 塊中賦值的信號(hào)。用寄存器(reg)類型變量生成組合邏輯舉例:aout2BUFFERbINVout1運(yùn)算符與表達(dá)式n算術(shù)運(yùn)算符:+, -, *, /, %n賦值運(yùn)算符:=, , =, =n相等運(yùn)算符:=, !=, =, !=n邏輯運(yùn)算符:&, |, !n位運(yùn)算符:, &, |, , ,n移位運(yùn)算符:n條件運(yùn)算符: ?: assign result=exp

10、?exp1:exp2;n連接和復(fù)制操作符: assign cout,sum=a+b+cin;運(yùn)算符與表達(dá)式n表達(dá)式:操作數(shù)+運(yùn)算符n分類:n單目運(yùn)算符:帶一個(gè)操作數(shù) 如 clockn雙目運(yùn)算符:帶兩個(gè)操作數(shù) 如 a&bn三目運(yùn)算符:帶三個(gè)操作數(shù) 如 r=s?a:bn優(yōu)先級(jí):! * / % + - ,=, = != = != & | & | ?:塊語(yǔ)句n兩條或多條語(yǔ)句的組合,主要有兩種:nbegin_end 語(yǔ)句:順序塊塊內(nèi)的語(yǔ)句順序執(zhí)行;每條語(yǔ)句的延時(shí)為相對(duì)于前一語(yǔ)句;最后一句執(zhí)行完,才能跳出該塊。nfork_join語(yǔ)句:并行塊塊內(nèi)語(yǔ)句同時(shí)執(zhí)行;每條語(yǔ)句的延時(shí)為相對(duì)進(jìn)入塊仿真時(shí)間。條件與循環(huán)

11、語(yǔ)句nif else語(yǔ)句If (表達(dá)式) 語(yǔ)句;else if (表達(dá)式) 語(yǔ)句;else 語(yǔ)句;n多個(gè)語(yǔ)句須放在begin end間ncase 語(yǔ)句:多分支選擇語(yǔ)句case (表達(dá)式) case1,case2分支: 語(yǔ)句;default: 語(yǔ)句;endcase條件與循環(huán)語(yǔ)句nforever 連續(xù)執(zhí)行,常用于產(chǎn)生時(shí)鐘信號(hào)如:timescale 1ns/100ps forever #5 clk=clk; /產(chǎn)生100MHz的時(shí)鐘nwhile 執(zhí)行語(yǔ)句,直到某個(gè)條件不滿足While (表達(dá)式) begin 語(yǔ)句; end若開(kāi)始即不滿足條件,則不執(zhí)行 nrepeat 連續(xù)執(zhí)行語(yǔ)句n次repeat (

12、表達(dá)式) begin 語(yǔ)句; end在此表達(dá)式通常為常量表達(dá)式條件與循環(huán)語(yǔ)句nfor for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 語(yǔ)句;例: for ( i=0; i4; i=i+1) ai= bi;執(zhí)行過(guò)程:(1)求解表達(dá)式1;(2)求解表達(dá)式2,若為真,則執(zhí)行語(yǔ)句,轉(zhuǎn)到(3);若為假,結(jié)束循環(huán),轉(zhuǎn)到(5);(3)若表達(dá)式2為真,執(zhí)行語(yǔ)句后,求解表達(dá)式3;(4)轉(zhuǎn)回(2)繼續(xù);(5)執(zhí)行for語(yǔ)句后面的語(yǔ)句。結(jié)構(gòu)說(shuō)明語(yǔ)句ninitial仿真開(kāi)始時(shí)對(duì)各變量初始化生成激勵(lì)波形作為電路測(cè)試信號(hào)只執(zhí)行一次程序模塊中可有多個(gè),并行執(zhí)行nalways always(觸發(fā)條件) begin 語(yǔ)句; end 若

13、觸發(fā)條件滿足,則被執(zhí)行,滿足一次執(zhí)行一次可有多個(gè)always塊,并行執(zhí)行結(jié)構(gòu)說(shuō)明語(yǔ)句nfunction n返回一個(gè)用于表達(dá)式的值n調(diào)用:將函數(shù)作為表達(dá)式中的操作數(shù)實(shí)現(xiàn)word=getbyte(a), getbyte(b);n規(guī)則:不能包含時(shí)間控制語(yǔ)句,不能啟動(dòng)任務(wù),至少有一個(gè)輸入,必須存在給與函數(shù)名同名變量賦值語(yǔ)句。結(jié)構(gòu)說(shuō)明語(yǔ)句ntaskn支持多種目的,可計(jì)算多個(gè)結(jié)果值n調(diào)用:my_task(v, w, x, y, z);n特點(diǎn):可定義自己的仿真時(shí)間單位可以啟動(dòng)其他task和function阻塞賦值與非阻塞賦值n非阻塞賦值 如:b = an塊結(jié)束后才完成賦值操作nb的值并不是立刻改變n常用于沿

14、觸發(fā)的always塊n阻塞賦值 如:b = an賦值語(yǔ)句執(zhí)行完后,塊才結(jié)束nb的值在賦值語(yǔ)句執(zhí)行后立刻改變n常用于組合邏輯的賦值設(shè)計(jì)描述層次nVerilog HDL既是一種行為描述語(yǔ)言,也是一種結(jié)構(gòu)描述語(yǔ)言。也就是說(shuō),既可以用電路的邏輯功能描述,也可以用元器件和它們之間的連接來(lái)建立所設(shè)計(jì)電路的Verilog HDL模型。例:nMUX的行為描述abslout設(shè)計(jì)描述層次nMUX的結(jié)構(gòu)描述abslselbselanslout設(shè)計(jì)描述層次nVerilog HDL語(yǔ)言本身提供了各種層次抽象的表述,可以用詳細(xì)程度有很大差別的的多層次模塊組合來(lái)描述一個(gè)電路系統(tǒng)。n行為級(jí):技術(shù)指標(biāo)和算法的Verilog描述

15、,有關(guān)行為和技術(shù)指標(biāo)模塊,容易理解nRTL級(jí):邏輯功能的Verilog描述,有關(guān)邏輯執(zhí)行步驟的模塊,較難理解n門級(jí):邏輯結(jié)構(gòu)的Verilog描述,有關(guān)邏輯門以及邏輯門之間的連接關(guān)系的模塊,很難理解n開(kāi)關(guān)級(jí):具體的晶體管物理器件的描述,有關(guān)物理形狀和布局參數(shù)的模塊,非常難理解設(shè)計(jì)描述層次n算法(行為)級(jí)描述n結(jié)構(gòu)級(jí)描述n寄存器傳輸級(jí)(RTL)描述n開(kāi)關(guān)級(jí)(門級(jí))描述n混合層次描述設(shè)計(jì)描述層次n算法級(jí)描述(行為級(jí)描述)n主要用于快速驗(yàn)證算法的正確性n不一定可以綜合成實(shí)際電路結(jié)構(gòu)設(shè)計(jì)描述層次n結(jié)構(gòu)級(jí)描述n電路的層次化描述n類似于電路框圖使用兩個(gè)半加器構(gòu)造的全加器設(shè)計(jì)描述層次nRTL描述n更貼近實(shí)際電

16、路結(jié)構(gòu)的描述n描述的細(xì)節(jié)到寄存器內(nèi)容傳輸級(jí)別n可以精確描述電路的工作原理、執(zhí)行順序n細(xì)化到寄存器級(jí)別的結(jié)構(gòu)描述也就是RTL級(jí)描述,并無(wú)絕對(duì)劃分標(biāo)準(zhǔn) 設(shè)計(jì)描述層次n開(kāi)關(guān)級(jí)(門級(jí))描述n完整描述了電路的細(xì)節(jié)n最底層的電路描述n可以描述MOS管設(shè)計(jì)描述層次n混合層次描述n以上各種層次描述方式可以任意混合使用,因此一個(gè)設(shè)計(jì)可能某些模塊使用了行為描述的方式,而另外一些模塊使用了開(kāi)關(guān)級(jí)描述。n在實(shí)際設(shè)計(jì)中,功能復(fù)雜的模塊可以先用行為級(jí)或結(jié)構(gòu)級(jí)的描述來(lái)表示,而對(duì)功能簡(jiǎn)單的模塊則使用RTL級(jí)的描述,以盡早完成系統(tǒng)的仿真和算法的驗(yàn)證;在設(shè)計(jì)的過(guò)程中逐步細(xì)化復(fù)雜模塊,替代原來(lái)的行為描述,直至設(shè)計(jì)可以綜合并滿足設(shè)計(jì)

17、指標(biāo)。組合邏輯電路n組合邏輯:輸出只是當(dāng)前輸入邏輯電平的函數(shù),與電路的原始狀態(tài)無(wú)關(guān)的邏輯電路。n組合邏輯由與、或、非門組成的網(wǎng)絡(luò),如:多路器、比較器、加法器、乘法器等n描述方式:nassign 語(yǔ)句n& | 操作符nand, or, not門組合組合邏輯電路n加法器Assign和操作符描述 基本門組合時(shí)序邏輯電路n時(shí)序邏輯:輸出不只是當(dāng)前輸入的邏輯電平的函數(shù),還與電路目前所處的狀態(tài)有關(guān)的邏輯電路。n由多個(gè)觸發(fā)器和多個(gè)組合邏輯塊組成,如計(jì)數(shù)器、同步有限狀態(tài)機(jī)、移位寄存器等n描述方式:nalways(posedge clk)n非阻塞賦值, =, , , &, |, 等運(yùn)算符 n=, = , ass

18、ign等賦值語(yǔ)句nalways塊可綜合的設(shè)計(jì)n不可綜合的語(yǔ)法舉例ninitial塊nforever塊nfor,while,repeat,force,release,task,enable,disable一般不可綜合(某些特定情況下for,while等可能可以綜合)n系統(tǒng)函數(shù)如$display等n除法,求模運(yùn)算,實(shí)數(shù)運(yùn)算等復(fù)雜算術(shù)運(yùn)算一般不可綜合(若綜合器有庫(kù)可以引用,則可綜合)n#延時(shí)賦值語(yǔ)句一般綜合時(shí)會(huì)被忽略n可綜合的設(shè)計(jì)ncase語(yǔ)句一般對(duì)應(yīng)多選器分支要完全,default分支的使用賦值為“x”為無(wú)關(guān)項(xiàng),綜合結(jié)果最簡(jiǎn)潔n避免出現(xiàn)latch生成組合邏輯的always塊中,賦值表達(dá)式右邊出現(xiàn)的信號(hào)都必須在敏感列表中列出n異步狀態(tài)機(jī)不能

溫馨提示

  • 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)論