Verilog HDL入門與功能仿真_第1頁
Verilog HDL入門與功能仿真_第2頁
Verilog HDL入門與功能仿真_第3頁
Verilog HDL入門與功能仿真_第4頁
Verilog HDL入門與功能仿真_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

VerilogHDL入門與功能仿真1.1硬件描述語言簡介2VerilogHDL入門與功能仿真1.2VerilogHDL程序的基本結(jié)構(gòu)1.3邏輯功能的仿真驗證過程1.4ModelSim仿真軟件的使用1.5VerilogHDL功能仿真常用命令1.1硬件描述語言簡介硬件描述語言HDL(HardwareDescriptionLanguag)類似于高級程序設計語言.它是一種以文本形式來描述數(shù)字系統(tǒng)硬件的結(jié)構(gòu)和行為的語言,用它可以表示邏輯電路圖、邏輯表達式,復雜數(shù)字邏輯系統(tǒng)的邏輯功能。用HDL編寫設計說明文檔易于存儲和修改,并能被計算機識別和處理.HDL是高層次自動化設計的起點和基礎.目前,IEEE推出兩種標準:VHDL和VerilogHDL(1)VHDL的起源與發(fā)展VeryhighspeedintegratedHardwareDescriptionLanguage(VHDL)它是70年代末和80年代初,起源于美國國防部提出的超高速集成電路VHSIC研究計劃,目的是為了把電子電路的設計意義以文字或文件的方式保存下來,以便其他人能輕易地了解電路的設計意義。1981年6月成立了VHDL小組。1983年第三季度,由IBM公司、TI公司、Intermetric公司成立開發(fā)小組。1986年3月,IEEE開始致力于VHDL的標準化工作,討論VHDL語言標準。IEEE于1987年12月公布了VHDL的標準版本(IEEESTD1076/1987);1993年VHDL修訂,形成新的標準即IEEESTD1076-1993)。(2)VerilogHDL的起源與發(fā)展1981年GatewayAutomation硬件描述語言公司成立;1983~84年間該公司發(fā)布“VerilogHDL”及其仿真器Verilog-XL;1986年PhilMoorby提出快速門級仿真的XL算法并獲得成功,Verilog語言迅速得到推廣。Verilog-XL較快,特別在門級,能處理萬門以上的設計。1987年Synonsys公司開始使用Verilog行為語言作為它綜合工具的輸入;1989年12月Cadence公司并購了Gateway公司;1990年初Cadence公司把VerilogHDL和Verilog-XL分成單獨產(chǎn)品,公開發(fā)布了VerilogHDL,與VHDL競爭。并成立OpenVerilogInternational(OVI)組織,負責Verilog的發(fā)展和標準的制定。1993年幾乎所有ASIC廠商支持VerilogHDL,認為Verilog-XL是最好的仿真器。OVI推出1.0版本的VerilogHDL規(guī)范,IEEE接受了將OVI的Verilog1.0作為IEEE標準的提案。1995年12月,定出VerilogHDL的標準IEEE1364。2001年3月IEEE正式批準了Verilog-2001標準(即IEEE1364-2001)。

Verilog-2001標準在Verilog-1995的基礎上有幾個重要的改進。新標準有力地支持可配置的IP建模,大大提高了深亞微米(DSM)設計的精確性,并對設計管理作了重大改進。(2)VerilogHDL的起源與發(fā)展

能力(capability)VHDL結(jié)構(gòu)建模抽象能力強系統(tǒng)級-算法級-RTL級-邏輯級-門級Verilog結(jié)構(gòu)建模具體物理建模能力強算法級-RTL級-邏輯級-門級-版圖級(3)兩種語言的比較(能力、數(shù)據(jù)類型、易學性、效率)

數(shù)據(jù)類型(datatype)VHDL是一種數(shù)據(jù)類型性極強的語言。支持用戶定義的數(shù)據(jù)類型。當對象的數(shù)據(jù)類型不一樣時必須用類型轉(zhuǎn)換函數(shù)轉(zhuǎn)換。可以使用抽象(比如枚舉)類型為系統(tǒng)建模。能利用數(shù)據(jù)類型檢查編程的錯誤。Verilog數(shù)據(jù)類型簡單。只能由語言本身定義,不能由用戶定義。適于硬件結(jié)構(gòu)的建模,不適于抽象的硬件行為建模。

易學性(easiesttolearn)VHDL是一種數(shù)據(jù)類型很強的語言,欠直觀。加之同一種電路有多種建模方法,通常需要一定的時間和經(jīng)驗,才能高效的完成設計。VHDL根植于ADA,有時簡潔,有時冗繁,如行為描述簡潔,結(jié)構(gòu)描述冗繁。Verilog由于Verilog為直接仿真語言,數(shù)據(jù)類型較簡單,語法很直觀,故Verilog更易理解和好學。Verilog更像C,約有50%的結(jié)構(gòu)來自C,其余部分來自ADA。

效率VHDL由于數(shù)據(jù)類型嚴格,模型必須精確定義和匹配數(shù)據(jù)類型,這造成了比同等地verilog效率要低。Verilog不同位寬的信號可以彼此賦值,較小位數(shù)的信號可以從大位數(shù)信號中自動截取自己的位號。在綜合過程中可以刪掉不用的位,這些特點使之簡潔,效率較高。

近年來,VHDL又有了一些新的發(fā)展。例如,為了大幅度提高EDA工具的設計能力,出現(xiàn)了一系列對HDL語言的擴展。OO-VHDL(Object-OritetedVHDL,即面向?qū)ο蟮腣HDL)

模型的代碼比VHDL模型短30%~50%,縮短了開發(fā)時間,提高了設計效率。美國杜克大學擴展的DE-VHDL(DukeExtendedVHDL)通過增加3條語句,使設計者可以在VHDL描述中調(diào)用不可綜合的子系統(tǒng)(包括連接該子系統(tǒng)和激活相應功能)。杜克大學用DE-VHDL進行一些多芯片系統(tǒng)的設計,極大地提高了設計能力。(4)VHDL語言的新進展OVI組織1999年公布了可用于模擬和混合信號系統(tǒng)設計的硬件描述語言Verilog-AMS語言參考手冊的草案,Verilog-AMS語言是符合IEEE1364標準的VerilogHDL子集。目前Verilog-AMS還在不斷的發(fā)展和完善中。(5)VerilogHDL語言的新進展HDL主要用于數(shù)字電路與系統(tǒng)的建模、仿真和自動設計。目前有兩種標準的硬件描述語言:Verilog和VHDL。由于Verilog簡單易學,所以我建議大家學習VerilogHDL語言。我國國家技術(shù)監(jiān)督局于1998年正式將《集成電路/硬件描述語言Verilog》列入國家標準,國家標準編號為GB/T18349-2001,從2001年10月1日起實施。相信該標準的制定對我國集成電路設計技術(shù)的發(fā)展有重要的推動作用。結(jié)論1.2VerilogHDL程序的基本結(jié)構(gòu)1.1.1

簡單VerilogHDL程序?qū)嵗?.1.2VerilogHDL程序的基本結(jié)構(gòu)1.每個模塊先要進行端口的定義,并說明輸入(input)

、輸出(output)和雙向(inout),然后對模塊功能進行描述。1.1.1簡單VerilogHDL程序?qū)嵗齎erilog使用大約100個預定義的關鍵詞定義該語言的結(jié)構(gòu)1.VerilogHDL程序由模塊構(gòu)成。每個模塊的內(nèi)容都是嵌在關鍵詞module和endmodule兩個語句之間。每個模塊實現(xiàn)特定的功能。3.除了endmodule語句外,每個語句后必須有分號。4.可以用/*---*/和//…..,對VerilogHDL程序的任何部分做注釋。1.1.1簡單VerilogHDL程序?qū)嵗?*Gate-leveldescriptionofahalfadder*/moduleHalfAdder_GL(A,B,Sum,Carry);

inputA,B; //輸入端口聲明

outputSum,Carry;//輸出端口聲明

wireA,B,Sum,Carry;

xorX1(Sum,A,B);

andA1(Carry,A,B);

endmodule端口類型說明功能描述模塊名數(shù)據(jù)類型說明1.1.1簡單VerilogHDL程序?qū)嵗?*Dataflowdescriptionofahalfadder*/moduleHalfAdder_DF(A,B,Sum,Carry);

inputA,B; outputSum,Carry;wireA,B,Sum,Carry;assignSum=A^B;

assignCarry=A&B;

endmodule/*Behavioraldescriptionofahalfadder*/moduleHalfAdder_BH(A,B,Sum,Carry);

inputA,B; outputSum,Carry;

regSum,Carry;//聲明端口數(shù)據(jù)類型為寄存器

always@(AorB)begin Sum=A^B; //用過程賦值語句描述邏輯功能

Carry=A&B;endendmodulemodulemux2to1(a,b,sel,out);inputa,b,sel;//定義輸入信號

outputout;//定義輸出信號

wireselnot,a1,b1;//定義內(nèi)部節(jié)點信號數(shù)據(jù)類型

//下面對電路的邏輯功能進行描述

notU1(selnot,sel);andU2(a1,a,selnot);andU3(b1,b,sel);

orU4(out,a1,b1);

endmodule結(jié)構(gòu)描述(門級描述)電路結(jié)構(gòu)描述例2選1數(shù)據(jù)選擇器的程序?qū)嵗齧odulemux2_1(out,a,b,sel);outputout;inputa,b;inputsel;

assignout=sel?b:a;endmodule數(shù)據(jù)流描述modulemux2_1(out,a,b,sel);outputout;inputa,b;inputsel;

assignout=(sel&b)|(~sel&a);endmodule數(shù)據(jù)流描述abselout01例2選1數(shù)據(jù)選擇器的程序?qū)嵗齧odulemux2_1(out,a,b,sel);outputout;inputa,b;inputsel;regout;always@(seloraorb)beginif(sel)out=b;elseout=a;endendmodulemodulemux2_1(out,a,b,sel);outputout;inputa,b;inputsel;

regout;always@(seloraorb)begincase(sel)1’b0:out=a;1’b1:out=b;endcaseendendmodule行為描述例2選1數(shù)據(jù)選擇器的程序?qū)嵗K定義的一般語法結(jié)構(gòu)如下:1.1.2VerilogHDL程序的基本結(jié)構(gòu)行為描述方式:一般使用下述語句描述,可以對組合、時序邏輯電路建模。

1)initial

語句

2)always

語句數(shù)據(jù)流描述方式:一般使用assign語句描述,主要用于對組合邏輯電路建模。結(jié)構(gòu)描述(門級描述)方式:一般使用Primitive(內(nèi)部元件)、自定義的下層模塊對電路描述。主要用于層次化設計中。幾種描述方式小結(jié):1.3邏輯功能的仿真驗證過程HDL產(chǎn)生的最初動因就是為了能夠模擬硬件系統(tǒng),可以分析系統(tǒng)的性能,驗證其功能是否正確。

要測試一個設計塊是否正確,就要用Verilog再寫一個測試模塊。這個測試模塊應包括以下三個方面的內(nèi)容:

測試模塊中要調(diào)用到設計塊,只有這樣才能對它進行測試;

測試模塊中應包含測試的激勵信號源;

測試模塊能夠?qū)嵤敵鲂盘柕臋z測,并報告檢測結(jié)果;StimulusandcontrolResponseGenerationandVerificationDesignBlock

DUT:DeviceUnderTest寫出測試模塊的過程又稱為搭建測試平臺(testbench)例:2選1數(shù)據(jù)選擇器的測試模塊:modulemux2to1(out,a,b,sel);outputout;inputa,b,sel;

not(selnot,sel);and(a1,a,selnot);and(b1,b,sel);or(out1,a1,b1);endmodulemoduletest_mux;rega,b,s;wireout;

mux2to1u1(out,a,b,s);initialbegina=0;b=1;s=0;#10a=1;b=1;s=0;#10a=1;b=0;s=0;#10a=1;b=0;s=1;#10a=1;b=1;s=1;#10a=0;b=1;s=1;#10$finish;end

initial$monitor($time,“a=%bb=%bs=%bout=%b”,a,b,s,out);endmodule0a=0b=1s=0out=010a=1b=1s=0out=120a=1b=0s=0out=130a=1b=0s=1out=040a=1b=1s=1out=150a=0b=1s=1out=1

測試激勵塊與設計塊之間的關系moduletest_mux;

rega,b,s;

wireout;

mux2to1u1(out,a,b,s);module

mux2to1(out,a,b,sel);

input

a,b,sel;output

out;

仿真時,信號線a、b、s上要加一組測試激勵信號,這組激勵信號的產(chǎn)生,是通過initial內(nèi)部的過程語句產(chǎn)生的,而過程語句只能給reg型變量賦值。仿真時,信號線a、b、s上的激勵信號是不能消失的,需要有“寄存”效應,能夠描述這種“寄存”行為的,只能是reg型。1.3.2仿真過程簡介使用軟件ModelSim-Altera6.5bStarterEdition進行仿真驗證的大致過程圖1.3.2基于工程項目仿真的基本流程編譯設計文件,進行仿真調(diào)試結(jié)果在項目中添加設計文件創(chuàng)建一個項目1.4ModelSim仿真

溫馨提示

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

評論

0/150

提交評論