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