VLSI電路設(shè)計課設(shè)20112_第1頁
VLSI電路設(shè)計課設(shè)20112_第2頁
VLSI電路設(shè)計課設(shè)20112_第3頁
VLSI電路設(shè)計課設(shè)20112_第4頁
VLSI電路設(shè)計課設(shè)20112_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

本文由fybysys貢獻(xiàn)pdf文檔可能在WAP端瀏覽體驗不佳。建議您優(yōu)先選擇TXT,或下載源文件到本機(jī)查看。VLSI電路設(shè)計ⅠVHDL語言基礎(chǔ)2011.3主要內(nèi)容硬件描述語言簡介VHDL基本結(jié)構(gòu)VHDL數(shù)據(jù)和表達(dá)式VHDL描述語句系統(tǒng)仿真綜合硬件描述語言HDLHardwareDescriptionLanguage廣義地說,描述電子實(shí)體的語言:邏輯圖,電路圖。硬件描述語言能在高層設(shè)計階段描述硬件。起源:大規(guī)模電路的出現(xiàn),使得邏輯圖、布爾方程不太適用,需要在更高層次上描述系統(tǒng);出現(xiàn)多種HDL語言,為便于信息交換和維護(hù),出現(xiàn)工業(yè)標(biāo)準(zhǔn)。?分類:VHDL、VerilogHDL等。硬件描述語言HDLHDL語言的特點(diǎn)用HDL語言設(shè)計電路能夠獲得非常抽象的描述–用HDL描述電路設(shè)計,在設(shè)計的前期就可以完成電路功能級的驗證–用HDL設(shè)計電路類似于計算機(jī)編程。帶有注解的文字描述更有利于電路的開發(fā)與調(diào)試能提供HDL模擬器的公司:Cadence、Altera、MentorGraphics、Synopsys等大型EDA公司和專門公司–學(xué)習(xí)HDL的幾點(diǎn)重要提示了解HDL的可綜合性問題HDL有兩種用途:系統(tǒng)仿真和硬件實(shí)現(xiàn)。如果程序只用于仿真,那么幾乎所有的語法和編程方法都可以使用。但如果我們的程序是用于硬件實(shí)現(xiàn)(例如:用于FPGA設(shè)計),那么我們就必須保證程序“可綜合”(程序的功能可以用硬件電路實(shí)現(xiàn))。不可綜合的HDL語句在軟件綜合時將被忽略或者報錯。我們應(yīng)當(dāng)牢記一點(diǎn):“所有的HDL描述都可以用于仿真,但不是所有的HDL描述都能用硬件實(shí)現(xiàn)?!庇糜布娐吩O(shè)計思想來編寫HDL學(xué)好HDL的關(guān)鍵是充分理解HDL語句和硬件電路的關(guān)系。編寫HDL,就是在描述一個電路,我們寫完一段程序以后,應(yīng)當(dāng)對生成的電路有一些大體上的了解,而不能用純軟件的設(shè)計思路來編寫硬件描述語言。要做到這一點(diǎn),需要我們多實(shí)踐,多思考,多總結(jié)。語法掌握貴在精,不在多30%的基本HDL語句就可以完成95%以上的電路設(shè)計,很多生僻的語句并不能被所有的綜合軟件所支持,在程序移植或者更換軟件平臺時,容易產(chǎn)生兼容性問題,也不利于其他人閱讀和修改。建議多用心鉆研常用語句,理解這些語句的硬件含義,這比多掌握幾個新語法要有用的多。VHDLvs.VerilogHDL●VHDL和VerilogHDL都是用于邏輯設(shè)計的硬件描述語言并且都已成為IEEE標(biāo)準(zhǔn)。VHDL是在1987年成為IEEE標(biāo)準(zhǔn),VerilogHDL則在1995年才正式成為IEEE標(biāo)準(zhǔn)。●VHDL和VerilogHDL共同的特點(diǎn):◆能形式化地抽象表示電路的行為和結(jié)構(gòu)◆支持邏輯設(shè)計中層次與范圍的描述,可借用高級語言的精巧結(jié)構(gòu)來簡化電路行為的描述◆具有電路仿真與驗證機(jī)制以保證設(shè)計的正確性◆支持電路描述由高層次到低層次的綜合轉(zhuǎn)換◆硬件描述與實(shí)現(xiàn)工藝無關(guān),有關(guān)工藝參數(shù)可通過語言提供的屬性包括進(jìn)去便于文檔管理,易于理解和設(shè)計重用。VHDLvs.VerilogHDLVerilogHDL和VHDL又各有其自己的特點(diǎn):◆VerilogHDL擁有更廣泛的設(shè)計群體,成熟的資源也遠(yuǎn)比VHDL豐富◆VerilogHDL是一種非常容易掌握的硬件描述語言(類C語言),而掌握VHDL設(shè)計技術(shù)就相對比較困難(語法要求嚴(yán)格)◆一般認(rèn)為VerilogHDL在系統(tǒng)級抽象方面比VHDL略差一些而在門級開關(guān)電路描述方面比VHDL強(qiáng)得多◆大學(xué)、研究機(jī)構(gòu)更多使用VHDL,而工業(yè)界更多使用VerilogHDLVHDLvs.VerilogHDL■五年前,設(shè)計者使用Verilog和VHDL的情況●美國:Verilog:60%,VHDL:40%●臺灣:Verilog:50%,VHDL:50%■目前,設(shè)計者使用Verilog和VHDL的情況●美國、臺灣:Verilog:80%,VHDL:20%■兩者的區(qū)別●VHDL側(cè)重于系統(tǒng)級描述,從而更多的為系統(tǒng)級設(shè)計人員所采用●Verilog側(cè)重于電路級描述,從而更多的為電路級設(shè)計人員所采用VHDLvs.VerilogHDLVHDL簡介1980由美國國防部(DOD)推動作為VHSIC計劃的一部分;1983IBM、Ti和Intermetrics公司的工程師開發(fā)一種新的基于語言的設(shè)計方法的規(guī)范;1985VHDL的第一個公開Version7.2;1987VHDL成為標(biāo)準(zhǔn),IEEE1076-1987;VHDL標(biāo)準(zhǔn)程序包,IEEE1164;美國國防部要求所有的電子設(shè)計使用VHDL描述,并決定在F-22戰(zhàn)斗機(jī)項目中使用VHDL。1994發(fā)布VHDL增強(qiáng)標(biāo)準(zhǔn),IEEE1076-1993;1996完全符合IEEE1076’93的VHDL商業(yè)仿真器和綜合器發(fā)布;用于綜合工具的程序包IEEE1076.3;IEEE1076.4(VITAL),用于ASIC和FPGA建庫;1997VHDL-AMS(IEEE1076.1)發(fā)布可以在一種語言下對數(shù)字、模擬和混合信號系統(tǒng)進(jìn)行描述和仿真;VHSIC(VeryHighSpeedIntegratedCircuit)計劃VHDL是美國國防部在二十世紀(jì)70年代末和80年代初提出的VHSIC(VeryHighSpeedIntegratedCircuit)計劃的產(chǎn)物。VHSIC計劃的目標(biāo)當(dāng)時是為下一代集成電路的生產(chǎn),推出在IC設(shè)計與制造應(yīng)達(dá)到的工藝極限(1μMcmos、1萬門和40MHz)。工藝方面的目標(biāo)實(shí)現(xiàn)以后,但當(dāng)時的工具很難完成10萬門級的設(shè)計。由于工具差不多是建立在門級基礎(chǔ)之上,完成10萬門級設(shè)計,必須制訂一項新的HDL的描述方法。VHSIC計劃和同期的ARPAR(先進(jìn)的計算機(jī)體系結(jié)構(gòu))計劃,成為了后來信息高速公路計劃的基礎(chǔ)。VHDL基本結(jié)構(gòu)VHDL語言五大要素實(shí)體-Entity結(jié)構(gòu)體-Architecture配置-Configuration包集合—Package/PackageBody:庫—Library:VHDL基本結(jié)構(gòu)示意···VHDL大小寫不敏感--Filename:eqcomp4.vhd--Author:HuXiaolingBJUT文件名和實(shí)體名一致--Data:04/07--Version:0.1--Abstract:Thisfileeqcomp4isafourbitequalitycomparator.LIBIARYIEEE;USEIEEE.std_logic_1164.all;ENTITYeqcomp4ISPORT(a,b:instd_logic_vector(3downto0);每行;結(jié)尾equal:outstd_logic);ENDeqcomp4;關(guān)鍵字END后跟實(shí)體名ARCHITECTUREdataflowOFeqcomp4ISBEGIN關(guān)鍵字BEGINequal<=‘1’whena=belse‘0’;ENDdataflow;關(guān)鍵字END后跟結(jié)構(gòu)體名--表示說明語句庫實(shí)體結(jié)構(gòu)體VHDL基本結(jié)構(gòu)—實(shí)體描述實(shí)體描述:實(shí)體在電路中主要是說明該電路的輸入、輸出關(guān)系,更具體地說就是用來定義實(shí)體與外部的連接關(guān)系以及需傳送給實(shí)體的參數(shù)。實(shí)體描述的一般格式為ENTITY實(shí)體名IS[GENERIC(類屬表說明);][PORT(端口表說明);][實(shí)體說明部分;]END[ENTITY][實(shí)體名];注意:[]中的部分為可缺省內(nèi)容VHDL不區(qū)分大小寫例:2輸入與非門的實(shí)體說明實(shí)體名類屬表說明ENTITYand2ISGENERIC(tpd_hl,tpd_lh:time:=2ns);PORT(input:INBit_vector(1TO0);output:OUTBit);ENDand2;端口說明注:類屬表和端口說明用于說明實(shí)體和其外部環(huán)境通信的對象。類屬為實(shí)體和其外部環(huán)境通信的靜態(tài)信息提供通道;最常用的信息是器件的上升沿到下降沿的延遲時間、負(fù)載電容和電阻、驅(qū)動能力以及功耗等。端口說明是對實(shí)體與外部接口的描述。例:全加器的實(shí)體說明ENTITYfull_adderISPORT(X,Y,Cin:INBit;Sum,Cout:OUTBit);ENDfull_adder;XYCin一位全加器框圖一位全加器CoutSum端口模式VHDL提供了五種端口模式輸入(IN):允許數(shù)據(jù)流入實(shí)體,而不允許數(shù)據(jù)流出實(shí)體。輸出(OUT):允許數(shù)據(jù)流出實(shí)體,而不允許數(shù)據(jù)流入實(shí)體。緩沖(BUFFER):與OUT類似,只是緩沖模式允許內(nèi)部引用該端口的信號。緩沖模式既能用于輸出,也能用于反饋。雙向(INOUT):可代替所有其他模式,但降低了程序的可讀性,一般用于與CPU的數(shù)據(jù)總線接口。鏈接模式(LINKAGE):用來說明端口無指定方向,可以與任意方向的信號相連。端口模式端口模式說明:IN不可以出現(xiàn)在<=或:=的左邊OUT不可以出現(xiàn)在<=或:=的右邊BUFFER可以出現(xiàn)在<=或:=的兩邊IN信號只能被引用,不能被賦值OUT信號只能被賦值,不能被引用BUFFER信號可以被引用,也可以被賦值Out與Buffer的區(qū)別Entitytest1isport(a:instd_logic;b,c:outstd_logic);endtest1;architectureaoftest1isbeginb<=not(a);c<=b;Errorenda;Entitytest2isport(a:instd_logic;b:bufferstd_logic;c:outstd_logic);endtest2;architectureaoftest2isbeginb<=not(a);c<=b;enda;VHDL基本結(jié)構(gòu)—結(jié)構(gòu)體描述結(jié)構(gòu)體描述:結(jié)構(gòu)體具體地描述了設(shè)計實(shí)體的邏輯功能或內(nèi)部電路結(jié)構(gòu)關(guān)系,從而建立設(shè)計實(shí)體輸入與輸出之間的關(guān)系。結(jié)構(gòu)體的格式為ARCHITECTURE結(jié)構(gòu)體名OF實(shí)體名IS[定義語句](內(nèi)部信號,常數(shù),數(shù)據(jù)類型,函數(shù)等的定義;)BEGIN[并行處理語句];END[ARCHITECTURE][結(jié)構(gòu)體名];VHDL基本結(jié)構(gòu)—結(jié)構(gòu)體描述說明:(1)結(jié)構(gòu)體名稱的命令。結(jié)構(gòu)體的名稱是對本結(jié)構(gòu)的命名,它是該結(jié)構(gòu)體的唯一名稱?!癘F”后面緊跟的實(shí)體名表明了該實(shí)體所對應(yīng)的是哪一個實(shí)體。用“IS”來結(jié)束結(jié)構(gòu)體的命名。(2)定義語句。位于“ARCHITECTURE”和“BEGIN”之間。用于對結(jié)構(gòu)體內(nèi)部所使用的信號常數(shù)、數(shù)據(jù)類型和函數(shù)等進(jìn)行定義。(3)并行處理語句。處于“BEGIN”和“END”之間。具體描述了結(jié)構(gòu)體的行為及其連接關(guān)系。結(jié)構(gòu)體有三種描述方式–––行為描述(behavioral)數(shù)據(jù)流描述(dataflow)結(jié)構(gòu)化描述(structural)結(jié)構(gòu)體的行為描述結(jié)構(gòu)體的行為描述表示輸入與輸出間轉(zhuǎn)換的關(guān)系,是對設(shè)計實(shí)體按算法的路徑來描述,不包含電子實(shí)體內(nèi)部的任何結(jié)構(gòu)信息。行為描述在EDA工程中稱為高層次描述或高級描述??磦€例題看個例題吧!??!吧!??!結(jié)構(gòu)體的行為描述Architecturebehavioralofeqcomp4isbegincomp:process(a,b)beginifa=bthenequal<=‘1’;elseequal<=‘0’;endif;endprocesscomp;endbehavioral;高層次的功能描述,不必考慮在電路中到底是怎樣實(shí)現(xiàn)的。結(jié)構(gòu)體的數(shù)據(jù)流描述它反映了從輸入數(shù)據(jù)到輸出數(shù)據(jù)之間所發(fā)生的邏輯變換,或者說描述了數(shù)據(jù)流程的運(yùn)動路徑、運(yùn)動方向和運(yùn)動結(jié)果??磦€例題看個例題吧?。?!吧!??!結(jié)構(gòu)體的數(shù)據(jù)流描述Architecturedataflow2ofeqcomp4isbeginequal<=not(a(0)xorb(0))andnot(a(1)xorb(1))andnot(a(2)xorb(2))andnot(a(3)xorb(3));enddataflow2;當(dāng)a和b的寬度發(fā)生變化時,需要修改設(shè)計,當(dāng)寬度過大時,設(shè)計非常繁瑣結(jié)構(gòu)體的結(jié)構(gòu)化描述結(jié)構(gòu)化描述就是把一個復(fù)雜的電子實(shí)體按其不同硬件電路功能劃分成若干部分,然后對各部件進(jìn)行具體的描述??磦€例題看個例題吧!??!吧!?。〗Y(jié)構(gòu)體的結(jié)構(gòu)化描述就這樣吧!結(jié)構(gòu)體的結(jié)構(gòu)化描述architecturestructofeqcomp4isbeginU0:xnor2portmap(a(0),b(0),x(0));U1:xnor2portmap(a(1),b(1),x(1));U2:xnor2portmap(a(2),b(2),x(2));U3:xnor2portmap(a(3),b(3),x(3));U4:and4portmap(x(0),x(1),x(2),x(3),equal);endstruct;類似于電路的網(wǎng)絡(luò)表,將各個器件通過語言的形式進(jìn)行連接,與電路有一一對應(yīng)的關(guān)系。一般用于大規(guī)模電路的層次化設(shè)計時。三種描述方式的比較描述方式優(yōu)點(diǎn)缺點(diǎn)適用場合結(jié)構(gòu)化描述連接關(guān)系清晰,電路模塊化清晰布爾函數(shù)定義明白電路特性清楚明了電路不易理解、繁瑣、復(fù)雜不易描述復(fù)雜電路,修改不易進(jìn)行綜合效率相對較低電路層次化設(shè)計數(shù)據(jù)流描述小門數(shù)設(shè)計行為描述大型復(fù)雜的電路模塊設(shè)計VHDL基本結(jié)構(gòu)—配置配置:是把元件具體安裝到實(shí)體的最基本設(shè)計單元,用于描述層與層之間的連接關(guān)系和實(shí)體與結(jié)構(gòu)體之間的連接關(guān)系。配置描述的一般格式為CONFIGURATION配置名OF實(shí)體名ISFOR選配構(gòu)造體名ENDFOR;END[配置名];元件配置體內(nèi)配置體外配置默認(rèn)配置包集合與庫包集合:包集合說明象C語言中include語句一樣,用來單純概括VHDL語言中所要用到的信號定義、常數(shù)定義、數(shù)據(jù)類型、元件語句、函數(shù)定義、過程定義。包集合的一般格式為:PACKAGE包集合名IS[說明語句];END包集合名;PACKAGEBODY包集合名IS[說明語句];ENDBODY;包集合包集合體VHDL基本結(jié)構(gòu)—庫庫:庫(Library)是經(jīng)編譯后的數(shù)據(jù)的集合,它存放包集合定義、實(shí)體定義、構(gòu)造體定義和器件配置定義。庫的種類在VHDL語言中存放的庫大致可以歸納為五種:IEEE庫、STD庫、VITAL庫、WORK庫、用戶定義的庫。庫的使用(1)庫的說明格式LIBRARYLIBRARY_name;USELIBRARY_name.package_name.ALL;(2)庫說明的作用范圍從一個實(shí)體說明開始到它所屬的構(gòu)造體、配置為止。VHDL基本結(jié)構(gòu)—庫IEEE標(biāo)準(zhǔn)程序包std_logic_1164多值邏輯體系std_logic_arith基本算術(shù)運(yùn)算std_logic_unsigned無符號向量的算術(shù)運(yùn)算std_logic_signed有符號向量的算術(shù)運(yùn)算例:LIBRAYRIEEEUSEIEEE.std_logic_1164.ALLUSEIEEE.std_logic_unsigned.ALLVHDL標(biāo)識符(Identifiers)標(biāo)識符是最常用的操作符,可以是常數(shù)、變量、信號、端口、子程序或參數(shù)的名字。VHDL基本標(biāo)識符的書寫遵守如下規(guī)則:基本標(biāo)識符由字母、數(shù)字和下劃線組成第一個字符必須是字母最后一個字符不能是下劃線不允許連續(xù)2個下劃線保留字(關(guān)鍵字)不能用于標(biāo)識符綜合、仿真時,大小寫是等效的VHDL數(shù)據(jù)對象(DataObjects)基本對象:在VHDL語言中,凡是可以賦予一個值的實(shí)體叫對象(Object)。VHDL中主要有四個基本類型:◆◆◆◆常量信號變量文件(文件是VHDL′93標(biāo)準(zhǔn)中新通過的)VHDL數(shù)據(jù)對象(DataObjects)常量(Constant)–––固定值,不能在程序中被改變增強(qiáng)程序的可讀性,便于修改程序可在Library、Entity、Architecture、Process中進(jìn)行定義,其有效范圍也相應(yīng)限定常量說明的一般格式:CONSTANT常量名:數(shù)據(jù)類型:=表達(dá)式;CONSTANTdata_bus_width:integer:=8;VHDL數(shù)據(jù)對象(DataObjects)信號(Signals)–––––代表連線,Port也是一種信號沒有方向性,可給它賦值,也可當(dāng)作輸入在Entity中和Architecture中定義設(shè)定的初始值在綜合時沒有用,只是在仿真時在開始設(shè)定一個起始值。用:=或<=進(jìn)行賦值信號書寫的一般格式:SIGNAL信號名:數(shù)據(jù)類型約束條件:=表達(dá)式;SIGNALcount:bit_vector(3downto0):=“0011”;T1<=T2after20ns;VHDL數(shù)據(jù)對象(DataObjects)變量(Variable)臨時數(shù)據(jù),沒有物理意義–只能在Process和Function中定義,并只在其內(nèi)部有效–要使其全局有效,先轉(zhuǎn)換為Signal–用:=進(jìn)行賦值變量書寫的一般格式:VARIABLE變量名數(shù)據(jù)類型約束條件:=表達(dá)式;–VARIABLEcount:integerrange0TO255:=10;信號與變量的區(qū)別architectureaofstartissignaltmp:std_logic;beginprocess(a_bus)begintmp<='1';foriin3downto0looptmp<=a_bus(i)andtmp;endloop;carryout<=tmp;endprocess;enda;architectureaofstartisbeginprocess(a_bus)variabletmp:std_logic;begintmp:='1';foriin3downto0looptmp:=a_bus(i)andtmp;endloop;carryout<=tmp;endprocess;enda;VHDL數(shù)據(jù)對象(DataObjects)文件(Files)-傳送大量數(shù)據(jù)-可包含一些專門數(shù)據(jù)類型的數(shù)值-在仿真時,測試激勵數(shù)據(jù)的輸入和仿真結(jié)果的輸出都要用文件來進(jìn)行VHDL數(shù)據(jù)類型標(biāo)量類型(Scalar)––––枚舉(Enumeration)整數(shù)(Integer)浮點(diǎn)數(shù)(Float)物理(Physical)復(fù)合類型(Composite)VHDL數(shù)據(jù)類型--枚舉列舉數(shù)據(jù)對象可能存在的值,一般用于定義狀態(tài)機(jī)的狀態(tài)––Typestatesis(idle,start,running,pause,stop)Signalcurrent_state:states;Typebooleanis(False,True)Typebitis(‘0’,‘1’)Signala:bit;IEEE1076標(biāo)準(zhǔn)中預(yù)定義了兩個枚舉類型–––VHDL數(shù)據(jù)類型--枚舉IEEE1164標(biāo)準(zhǔn)中預(yù)定義了一個枚舉類型Typestd_logicis(‘U’,‘X’,‘0’,‘1’,‘Z’,–––‘W’,‘L’,‘H’,‘-’);該類型能比較全面地包括數(shù)字電路中信號會出現(xiàn)的幾種狀態(tài),因此一般情況把這種類型代替bitSignala:std_logic;注意:這里的大小寫是敏感的VHDL數(shù)據(jù)類型整數(shù)、浮點(diǎn)數(shù)方便用于數(shù)值方面的運(yùn)算:加減乘除–整數(shù)范圍:-231~231–1,經(jīng)常用于計數(shù)器–實(shí)數(shù)范圍:-1.0E38~+1.0E38,不被Max+PLusII支持Variablea:integerrange–255to+255;–物理類型–主要用于調(diào)試VHDL數(shù)據(jù)類型--復(fù)合類型ArrayTypes多個相同類型成員組成的隊列,一般用于定義數(shù)據(jù)總線、地址總線等。Signala:std_logic_vector(7downto0);a<=B“00111010”;a<=X“3A”;–可自定義復(fù)合類型Typewordisarray(15downto0)ofbit;Signalb:word;Typetable8x4isarray(0to7,0to3)ofbit;–VHDL數(shù)據(jù)類型--復(fù)合類型RecordTypes–相同或不同類型的元素組成,類似C中的結(jié)構(gòu)–具有模型抽象能力,用于描述一個功能模塊–TypeiocellisrecordEnable:bit;DataBus:bit_vector(7downto0);endrecord;singalbus:iocell;bus.Enable<=‘1’;bus.DataBus<=“00110110”;屬性(Attributes)提供Entity、Architecture、Type和Signals的信息。有許多預(yù)定義的值、信號和范圍的屬性一個最常用的屬性是’event–ifclk’eventandclk=‘1’then’left,’right,’high,’low,’length–typecountisintegerrange0to127–count’left=0;count’right=127;–count’high=127;count’low=0;–count’length=128;VHDL運(yùn)算符VHDL語言中預(yù)定義的運(yùn)算符有四種。分別為算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符合其他運(yùn)算符。各類別包含的運(yùn)算符見下表。算術(shù)運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符+-*/MODREM**SLLSRLSLASRAROLRORABS=/=<><=>=ANDORNOTNANDNORXORXNORVHDL描述語句-順序語句變量與信號賦值語句VHDL有兩種賦值符號:(1)“:=”為立即賦值符,將右邊表達(dá)式的值立即賦給左邊的對象。(2)“<=“為延遲賦值符,將右邊表達(dá)式的值經(jīng)一定時間間隔之后賦給左邊的對象。常量和變量以及信號的初始值用立即賦值符“:=”賦值。延遲賦值符“<=”用于在信號轉(zhuǎn)播、變化過程中對信號賦值,對象只能被賦予與該對象數(shù)據(jù)類型相一致的數(shù)據(jù)。VHDL描述語句-順序語句IF語句IF語句的一般格式如下:IF布爾表達(dá)式1THEN順序語句1;[ELSIF布爾表達(dá)式2THEN順序語句2;][ELSE順序語句3;]ENDIF;例:IFmode=‘0’THENd<=aORb;ENDIF;VHDL描述語句-順序語句CASE語句CASE語句的一般格式為:CASE條件表達(dá)式ISWHEN表達(dá)式值1=>順序處理語句1;[WHEN表達(dá)式值2=>順序處理語句2;][WHENOTHERS=>順序處理語句3;]ENDCASE;注意:各表達(dá)式不能有重復(fù),OTHERS只能放在所有分支之后。若CASE語句中沒有OTHERS分支,則各表達(dá)式分支應(yīng)涵蓋表達(dá)式的所有可能值。順序語句例:YesCNT=8?NoCNT←0CNT←CNT+1CASEcntISWHEN8=>cnt:=0;WHENOTHERS=>cnt:=cnt+1;ENDCASECASE語句中的WHEN選項可以是一個范圍。VHDL描述語句-順序語句LOOP語句FOR循環(huán)變量形成的LOOP語句的格式為:[標(biāo)號]:FOR循環(huán)變量IN離散范圍LOOP<順序處理語句>ENDLOOP[標(biāo)號];WHILE條件下的LOOP語句格式為:[標(biāo)號]:WHILE條件LOOP<順序處理語句>ENDLOOP[標(biāo)號];在LOOP語句中可以安排一個EXIT退出循環(huán)。VHDL描述語句-并行語句并行信號賦值語句并行信號賦值語句代表著對該信號賦值得等價的進(jìn)程語句。它有兩種形式:條件型信號賦值語句條件型信號賦值語句的格式為:目標(biāo)信號名<=表達(dá)式1WHEN(條件1)ELSE……表達(dá)式N-1WHEN(條件N-1)ELSE表達(dá)式N;根據(jù)條件(布爾表達(dá)式)滿足與否決定將哪個表達(dá)式的值賦給待賦值的信號。VHDL描述語句-并行語句選擇型信號賦值語句選擇型信號賦值語句的格式為:WITH表達(dá)式SELECT目標(biāo)信號名<=表達(dá)式1WHEN條件1,表達(dá)式2WHEN條件2,……表達(dá)式NWHEN條件N;根據(jù)多值表達(dá)式的值進(jìn)行相應(yīng)的賦值,其功能與CASE語句相仿。用這種語句來表示真值表達(dá)式的譯碼電路較為方便。VHDL描述語句-并行語句進(jìn)程語句進(jìn)程語句的一般格式為:[進(jìn)程名:]PROCESS[(敏感信號表)][IS][變量說明語句];BEGIN順序說明語句;ENDPROCESS[進(jìn)程名];變量說明語句用于說明除信號外的局部數(shù)據(jù)環(huán)境。信號是全局量,必須在進(jìn)程外說明,在進(jìn)程內(nèi)使用。結(jié)構(gòu)體中進(jìn)程模型進(jìn)程語句中的等待語句等待語句是一種特殊的順序語句,執(zhí)行等待語句的結(jié)果是,進(jìn)程立即被掛起,同時建立起進(jìn)程再次被激活的條件。等待語句常用幾種格式WAITON<敏感信號表>WAITUNTIL<條件表達(dá)式>WAITFOR<時間表達(dá)式>WAIT;--無限等待,需謹(jǐn)慎使用進(jìn)程語句實(shí)例Architecturebehavioralofeqcomp4isbegincomp:process(a,b)beginifa=bthenequal<=‘1’;elseequal<=‘0’;endif;endprocesscomp;endbehavioral;VHDL描述語句-并行語句斷言語句:斷言語句(ASSERT)既可以作為順序語句,又可作為并行語句。前者位于進(jìn)程或過程之內(nèi),而后者位于進(jìn)程或過程之外。斷言語句主要用于程序仿真、調(diào)試中的人-機(jī)對話。斷言語句的格式為:ASSERT條件[REPORT報告信息][SEVERITY出錯級別]斷言語句有十條使用規(guī)則。其中,REPORT子句的默認(rèn)報告信息為AssertionViolation。SEVERITY的默認(rèn)出錯級別為error。VHDL描述語句-并行語句生成語句生成語句用來產(chǎn)生多個相同的結(jié)構(gòu)和描述規(guī)則結(jié)構(gòu)。FOR語法的形式為:生成標(biāo)號:FOR變量IN不連續(xù)區(qū)間GENERATE<并發(fā)處理的生成語句〉ENDGENERATE[生成標(biāo)號];IF語句的形式為:生成標(biāo)號:IF條件GENERATE<并發(fā)處理的生成語句〉ENDGENERATE[生成標(biāo)號];VHDL描述語句-并行語句塊語句:塊(BLOCK)可以看成是結(jié)構(gòu)體中的子模塊,BLOCK可以把許多并行語句包裝在一起。(主要用于模塊化電路描述)BLOCK語句的一般格式為:塊名:BLOCK[(保護(hù)表達(dá)式)]{[類屬子句類屬接口表;]}{[端口子句端口接口表;]}〈塊說明部分〉BEGIN〈并行語句〉ENDBLOCK[塊標(biāo)號]子程序及其引用函數(shù)語句的定義與引用函數(shù)的作用是求值,它有若干參數(shù)輸入,但只有一個返回值作為輸出。函數(shù)語句的一般格式為:FUNCTION函數(shù)名(參數(shù)表);RETURN數(shù)據(jù)類型IS[說明語句];BEGIN[順序處理語句];END[FUNCTION][函數(shù)名];FUNCTION語句中括號內(nèi)的所有參數(shù)都是輸入?yún)?shù)或輸出參數(shù)。函數(shù)語句的定義與引用例:FUNCTIONmax(a,b:integer);RETURNintegerISBEGIN[y為a、b中大的數(shù)];ENDmax;調(diào)用函數(shù)語句z<=max(d1,d2);子程序及其引用過程語句的定義與應(yīng)用過程是通過參數(shù)來進(jìn)行內(nèi)、外信息的傳遞。參數(shù)需說明類別、類別以及傳遞方向。過程語句的一般格式為:PROCEDURE過程名(參數(shù)表)IS[說明語句]BEGIN順序語句;END[PROCEDURE][過程名]參數(shù)的說明類別有:信號、變量、常量。參數(shù)的傳遞方向有:IN、OUT、INOUT。元件的調(diào)用元件:是一個完整的VHDL文件,作為底層設(shè)計,可以重復(fù)調(diào)用。Component語句的格式COMPONENT元件名GENERIC(類屬表說明)PORT(端口說明)ENDCOMPONENT元件的調(diào)用例化語句的使用COMPONENT<低層設(shè)計名稱>ISPORT(<端口名稱>:<端口類型><數(shù)據(jù)類型>;…..<端口名稱>:<端口類型><數(shù)據(jù)類型>;)ENDCOMPONENT;元件配置:用于映射端口<實(shí)例名稱>:<低層設(shè)計名稱>PORTMAP(<低層端口名稱>=><本層端口名稱>;…;<低層端口名稱>=><本層端口名稱>;)元件的例化元件例化格式標(biāo)號名:元件名PORTMAP(信號1,信號2,······)位置映射PORTMAP映射關(guān)系有兩類名稱映射例:port(A,B:instd_logic;Z:outstd_logic);U1:nandPORTMAP(d0,sel,aa);U2:nandPORTMAP(A=>d0,B=>sel,Z=>aa);元件例化語句說明低層次元件嵌入到高一層的設(shè)計中,并把相應(yīng)端口正確連接起來,就是元件例化語句的功能。體現(xiàn)層次化設(shè)計、模塊化設(shè)計思想;應(yīng)用廣泛,避免大量重復(fù)工作;用Component語句指明結(jié)構(gòu)體所要調(diào)用的元件、單元或模塊;用PortMap語句進(jìn)行元件端口信號映射(包括位置映射和名稱映射);元件描述:用于聲明端口類型和數(shù)據(jù)類型元件調(diào)用與例化實(shí)例例:圖a中所示的全加器,x、y、cin依次表示被加數(shù)加數(shù)、進(jìn)位輸入;sum和cout分別為和數(shù)與進(jìn)位輸入。圖b為一種實(shí)現(xiàn)方案。xycin全加器圖acoutsumxycina半加器b圖b半加器c≥1sumcoutLibraryIEEE;UseIEEE.std_logic_1164.all;Entityhalf_adderISport(x,y:instd_logic;sum,cout:outstd_logic);Endhalf_adder;Architecturehalf_adderofhalf_adderISBegin……Endhalf_adder;LibraryIEEE;UseIEEE.std_logic_1164.all;EntityadderISport(x,y,cin:instd_logic;sum,cout:outstd_logic);Endadder;ArchitectureadderofadderIScomponenthalf_adder--元件調(diào)用語句port(x,y:instd_logic;sum,cout:outstd_logic);endcomponent;signalx,y,cin,sum,cout,a,b,c:std_logic;Beginu0:half_adderportmap(x,y,b,a);--被測元件作為實(shí)例放入測試基準(zhǔn)中,位置關(guān)聯(lián)的實(shí)例語句u1:half_adderportmap(b,cin,sum,c);cout<=aorc;Endadder;VHDL程序結(jié)構(gòu)ENTITY(實(shí)體)ARCHITECTURE1(結(jié)構(gòu)體1)PROCESS(進(jìn)程)ARCHITECTUREN(結(jié)構(gòu)體N)BLOCK(塊結(jié)構(gòu))······SUBPROGRAMES(子程序)PROCEDURE(過程)FUNCTION(函數(shù))如何確定我們用VHDL語言描述的數(shù)字系統(tǒng)能夠符合我們的設(shè)計要求呢???VHDL系統(tǒng)仿真(Simulation)我們將用VHDL描述的電路系統(tǒng)看作一個黑匣子,給它一定的輸入(激勵或者測試向量),它就會按照一定的算法給出一組輸出信號(響應(yīng))。檢查系統(tǒng)輸出結(jié)果是否跟我們預(yù)期的結(jié)果一樣,就可以驗證系統(tǒng)的VHDL描述是否正確。undertestsystemtestbenchverify系統(tǒng)仿真模式VHDL系統(tǒng)仿真(Simulation)系統(tǒng)仿真可分為三個階段:★系統(tǒng)行為仿真:對系統(tǒng)的VHDL描述的系統(tǒng)行為進(jìn)行驗證。不帶任何時延信息。★門級仿真:對VHDL描述的數(shù)字系統(tǒng)進(jìn)行邏輯綜合和優(yōu)化以后生成的網(wǎng)表文件進(jìn)行仿真。包含庫文件中的單元延時信息。★后仿真:主要指布局布線并且提取寄生參數(shù)以后進(jìn)行的系統(tǒng)功能驗證,這時的仿真帶有所有延時信息,包括連線上的寄生電容電阻帶來的時延等。設(shè)計的測試與驗證一般需要編寫測試文件對設(shè)計進(jìn)行仿真測試,稱為testbenchTestbench一般采用行為級描述,產(chǎn)生一定的輸入激勵,得到設(shè)計的輸出響應(yīng),并檢查輸出結(jié)果的正確性在規(guī)范的模塊設(shè)計中,每一個模塊都需要編寫?yīng)毩⒌臏y試文件對模塊進(jìn)行充分的測試注意選擇合適的輸入激勵,保證測試能夠覆蓋典型輸入和特殊輸入VHDL激勵的實(shí)現(xiàn)VHDL產(chǎn)生激勵信號:--VHDL產(chǎn)生時鐘信號SIGNALclk:std_logic:=’0’;--clk時鐘信號說明,初始值為’0’clk<=

溫馨提示

  • 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

提交評論