已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第4章VHDL程序設計基礎,4.1庫4.2程序包4.3元件庫4.4配置概述4.5子程序和重載4.6關于變量用法的進一步討論,4.1庫(LIBRARY),一、庫的一般結構,不同庫中的包有多有少,每個包中的內(nèi)容也沒有定數(shù)。包中存放的通常是一些基礎設計內(nèi)容,可供不同的設計實體訪問和調(diào)用。,二、庫的種類,STD庫:收錄了VHDL語言標準定義的兩個標準程序包,即STANDARD和TEXTIO程序包。WORK庫:是VHDL語言的工作庫,用于保存當前正在進行的設計。用戶的成品、半成品模塊、元件等會自動進入此庫存放。IEEE庫:是VHDL設計中最為常見的庫,它包含有IEEE標準的程序包和其他一些支持工業(yè)標準的程序包。EDA廠商庫:如:ALTERA公司的資源庫、SYNOPSYS公司的資源庫(有些包已并入了IEEE庫)等等。,三、庫的用法,庫的使用說明總是放在實體單元最前面,庫語句LIBRARY一般必須與USE語句同用。設計庫(STD庫、WORK庫)對當前項目是可見的、默認的。無需用Library子句、USE子句聲明。資源庫(IEEE庫、EDA廠商庫)必須用Library子句、USE子句聲明方可使用,聲明語句格式:LIBRARY庫名;USE庫名.程序包名.ALL(或項目名);-LIBRARY語句為其后的設計實體打開了以此庫名命名的庫,以便設計實體可以利用其中的程序包。-USE語句用來開放指定庫中指定程序包內(nèi)所有內(nèi)容(或指定項目)。VHDL要求一項含有多個設計實體的更大的系統(tǒng),每一個設計實體都必須有自己完整的庫說明語句和USE語句。,如:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;,如:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.STD_ULOGIC;USEIEEE.STD_LOGIC_1164.RISING_EDGE;,-以上的三條語句表示打開IEEE庫,再打開此庫中的STD_LOGIC_1164程序包和STD_LOGIC_UNSIGNED程序包的所有內(nèi)容。,為了使已定義的常數(shù)、數(shù)據(jù)類型、元件調(diào)用說明以及子程序能被更多的設計實體方便地訪問和共享,可以將它們收集在一個程序包中。多個程序包可以并入一個庫中,使之適用于更一般的訪問和調(diào)用范圍。這一點對于大系統(tǒng)開發(fā),多個或多組開發(fā)人員并行工作顯得尤為重要。程序包的內(nèi)容主要由如下四種基本結構組成,因此一個程序包中至少應包含以下結構中的一種。常數(shù)說明:主要用于預定義系統(tǒng)的寬度,如數(shù)據(jù)總線通道的寬度。數(shù)據(jù)類型說明:主要用于說明在整個設計中通用的數(shù)據(jù)類型,例如通用的地址總線數(shù)據(jù)類型定義等。元件定義:主要規(guī)定在VHDL設計中參與元件例化的文件(已完成的設計實體)對外的接口界面。子程序說明:用于說明在設計中任一處可調(diào)用的子程序。,4.2程序包(PACKAGE),PACKAGE程序包名IS-程序包首開始程序包首說明部分;ENDPACKAGE程序包名;-程序包首結束PACKAGEBODY程序包名IS-程序包體開始程序包體說明部分以及包體內(nèi)容;ENDPACKAGEBODY程序包名;-程序包體結束,一、程序包結構和定義,程序包由兩部分組成;程序包首和程序包體。名字要相同,在語句的表現(xiàn)上,包體比包首多了BODY一詞。包首是主設計單元,為程序包定義接口,聲明包中的類型、元件、函數(shù)和子程序,其方式與實體定義模塊接口非常相似。包首可獨立地編譯并插入設計庫中。包體是次設計單元,規(guī)定程序的實際功能,存放包首中說明的函數(shù)和子程序,其方式與結構體語句方法相同。包體可以在其對應的主設計單元后,獨立地編譯并插入設計庫中。,例:一個完整的程序包的范例。PACKAGEPkgexampleISCONSTANTpi:real:=3.1415926535897936;CONSTANTdeferredconstant:integer;FUNCTIONmean(a,b,c:real)RETURNreal;COMPONENTandgateISPORT(in1,in2:INbit);ENDandgate;ENDPkgexample;PACKAGEBODYPkgexampleISFUNCTIONmean(a,b,c:real)RETURNrealIS;BEGINRETURN(a+b+c)/3.0;ENDmean;ENDPkgexample;,包首的說明部分可收集多個不同的VHDL設計所需的公共信息,其中包括數(shù)據(jù)類型說明、信號說明、子程序說明及元件說明等。程序包結構中,包體并非是必須的,包首可以獨立定義和使用。,1程序包首,例1:PACKAGEPAC1IS-程序包首開始TYPEBYTEISRANGE0TO255;-定義數(shù)據(jù)類型BYTESUBTYPEBYTE1ISBYTERANGE0TO15;-定義子類型BYTE1CONSTANTC1:BYTE:=255;-定義常數(shù)C1SIGNAS1:BYTE1;-定義信號S1COMPONENTBYTE_ADDERIS-定義元件PORT(A,B:INBYTE;C:OUTBYTE;OVERFLOW:OUTBOOLEAN);ENDCOMPONENTBYTE_ADDER;FUNCTIONMY_FUNCTION(A:INBYTE)RETURNBYTE;-定義函數(shù)ENDPACKAGEPAC1;-程序包首結束,例2:在現(xiàn)行WORK庫中定義程序包并立即使用的示例。PACKAGESEVENIS-定義程序包SUBTYPESEGMENTSISBIT_VECTOR(0TO6);TYPEBCDISRANGE0TO9;ENDPACKAGESEVEN;USEWORK.SEVEN.ALL;-打開程序包,以便后面使用ENTITYDECODERISPORT(SR:INBCD;SC:OUTSEGMENTS);ENDENTITYDECODER;ARCHITECTUREARTOFDECODERISBEGIN,WITHSRSELECTSC=B“1111110”WHEN0,B“0110000”WHEN1,B“1101101”WHEN2,B“1111001”WHEN3,B“0110011”WHEN4,B“1011011”WHEN5,B“1011111”WHEN6,B“1110000”WHEN7,B“1111111”WHEN8,B“1111011”WHEN9,B“0000000”WHENOTHERS;ENDARCHITECTUREART;,包體用于定義在包首中已定義的子程序的子程序體。包體說明部分的組成可以是USE語句(允許對其他程序包的調(diào)用)、子程序定義、子程序體、數(shù)據(jù)類型說明、子類型說明和常數(shù)說明等。對于沒有子程序說明的包首,包體可以省去。程序包常用來封裝屬于多個設計單元分享的信息,程序包定義的信號、變量不能在設計實體之間共享。,程序包體,常用的預定義的程序包,STD庫中的STANDARD包定義了若干類型、子類型和函數(shù)。布爾類型位Bit類型字符類型出錯級別實數(shù)范圍整數(shù)范圍時間單位等子類型有:延遲長度自然數(shù)范圍整數(shù)范圍等,提示:包結構中的具體內(nèi)容參看P79。,STD庫中的TEXTIO包該包中定義了支持ASCI/O操作的若干類型和子程序。TEXTIO包不能自動與任意模型連接,需要在使用它的任一設計單元之前加一個USE子句:USESTD.TEXTIO.ALL;,IEEE庫中的Std_Logic_1164包訪問std_Logic_1164程序包,需聲明:LIBRARYIEEE;USEIEEE.std_Logic_1164.AlL;Std_Logic_1164程序包中含有:Std_Logic;Std_Logic_Vector;其他常用類型函數(shù)。,提示:包結構中的具體內(nèi)容參看P81。,IEEE庫中的Numeric_Std包該包中定義了用于綜合的數(shù)值類型和算術函數(shù)。其中數(shù)值類型為:Unsigned-表示向量形式的無符號數(shù)Signed-表示向量形式的帶符號數(shù),采用補碼形式。該包中還含有類型轉換函數(shù)、時鐘檢測函數(shù)和其他的實用函數(shù)等。,IEEE庫中的Numeric_Bit包VHDL綜合程序包Numeric_Bit的基本元素類型為Bit類型,而不是Std_Logic類型。在一些VHDL仿真中,把這個包預先編譯在Ieee庫中,使用這些功能也必須預先聲明,使這個程序包成為可見。,4.3元件庫,在VHDL程序設計中,始終貫穿著庫的使用,在一些標準庫中除了有許多有用的預定義的數(shù)據(jù)類型、函數(shù)、過程可調(diào)用外,并存放了各種已設計好的通用元件可供設計者調(diào)用。另外,有些EDA開發(fā)商在其EDA工具中,也為用戶提供了各種元件庫。而且用戶也可建立自己的元件庫。對元件庫運用來講,需要掌握的內(nèi)容是:,元件構造;元件打包;構建元件庫;元件的調(diào)用;,一、元件構造,要點是:元件設計要參數(shù)化,要帶有參數(shù)入口,使得元件的調(diào)用靈活、方便。據(jù)此應盡量做到通過參數(shù)傳遞(Generics)來指定元件的規(guī)模和參數(shù)的有關特性。,例:設計一個帶有異步復位端的D觸發(fā)器,為方便、靈活起見,創(chuàng)建的觸發(fā)器寬度任意,在將來的設計中用參數(shù)指定它的寬度。為此,有必要設計一個規(guī)模大小、電路性能都可以通過參數(shù)引用(Generics)進行指定的參數(shù)化元件。要求如下:,-設計一個通用的n位D觸發(fā)器-寬度(1,n)-CLK輸入時鐘-reset異步復位-d寄存器輸入-q寄存器輸出,輸出信號端口都使用buffer類型,作為n位元件內(nèi)部互連的端口。而in,out作為n位D觸發(fā)器組的外部端口與信號相連。參數(shù)傳遞size定義std_Logic_Vector型的信號d和q的寬度。,libraryieee;useieee.std_logic_1164.allentityrdffisgeneric(size:integer:=2);-參數(shù)設置port(clk,reset:instd_logic;d:instd_logic_vector(size-1downto0);q:bufferstd_logic_vector(size-1downto0);endrdff;architecturearchrdffofrdffisbeginP1:process(reset,clk)beginifreset=1thenq0);elsif(clkeventandclk=1)thenq=d;endif;endprocessP1;endarchrdff;,Beffer,size兩項是參數(shù)化元件設計的要點。,二、元件打包(即在包首中對元件定義),libraryieee;useieee.std_logic_1164.all;packageregs_pkgis-包首componentrdff-元件說明(定義)generic(size:integer:=2);-參數(shù)設置port(clk,reset:instd_logic;d:instd_logic_vector(size-1downto0);q:bufferstd_logic_vector(size-1downto0);endcomponent;endregs_pkg;-包首結束,例:將前例中已設計好的一個通用的n位D觸發(fā)器進行打包。,說明:此處是將元件rdff(n位D觸發(fā)器)打包在名為regs_pkg的包首中。方法是用元件調(diào)用語句(COMPONENT)在包首中對打包元件作說明即可。,其他元件說明,三、構建元件庫,將程序放入庫中,因不同的EDA工具,操作方法也不一致。MAX+plus的設計庫允許含:實體描述、結構體描述、配置描述、包描述、包體描述。用戶對編譯成功的VHDL設計文件,可以用SaveCAL(23,320,SIGN2);,別名的用途是對已有的對象定義一個替換名。語句寫格式:ALIAS替換名:子類型表示符IS目標名;ALIAS語句可以在ARCHITECTURE說明部分、ENTITY說明部分、PROCESS說明部分、PACKAGE說明部分、PACKAGEBODY語句和SUBPROGRAM說明部分。別名為指令的每個字段提供命名的機制,并且可由別名直接去引用這個字段。,四、別名(替換名),SIGNALinstruction:BIT_VECTOR(31DOWNTO0);ALIASopcode:BIT_VECTOR(3DOWNTO0)ISInstuction(31DOWNTO28);ALIASsrc_reg:BIT_VECTOR(4DOWNTO0)ISinstruction(27DOWNTO23);ALIASdst_reg:BIT_VECTOR(4DOWNTO0)ISinstruction(22DOWNTO18);,例:CPU模塊從存儲器讀取指令碼為32位數(shù)組,其中第3128位表示操作碼,第2723位表示源寄存器數(shù)據(jù),第2218位表示目標寄存器數(shù)據(jù),那么這些細分的字段用別名表示為:,信號對象已建立了別名,在賦值操作中引用別名非常方便。,一、信號和變量的區(qū)別,信號賦值有延遲,至少有傳輸延遲,而變量賦值沒有延遲。信號除當前值外,還有歷史信息(保存在預定義屬性中)和投影波型(保存在驅(qū)動源中)。進程對信號敏感,對變量不敏感。
溫馨提示
- 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年長春師范高等專科學校馬克思主義基本原理概論期末考試題帶答案解析(奪冠)
- 2025年江陽城建職業(yè)學院馬克思主義基本原理概論期末考試模擬題含答案解析(必刷)
- 2024年莆田學院馬克思主義基本原理概論期末考試題附答案解析(奪冠)
- 2024年達州職業(yè)技術學院馬克思主義基本原理概論期末考試題附答案解析(必刷)
- 2024年貴州航空職業(yè)技術學院馬克思主義基本原理概論期末考試題及答案解析(必刷)
- 2025年煙臺黃金職業(yè)學院馬克思主義基本原理概論期末考試模擬題含答案解析(必刷)
- 2025年南京開放大學馬克思主義基本原理概論期末考試模擬題及答案解析(奪冠)
- 2025年曲周縣幼兒園教師招教考試備考題庫及答案解析(必刷)
- 車輛保養(yǎng)培訓
- 煙氣脫硝裝置安裝單位工程質(zhì)量驗收表
- AQ 1046-2007 地勘時期煤層瓦斯含量測定方法(正式版)
- 軟裝配飾合同范本
- 蘇教版三年級下冊數(shù)學計算能手1000題帶答案
- 重癥感染治療指南
- 新媒體藝術的發(fā)展歷程及藝術特征
- 依法行醫(yī)教學課件
- 《日語零基礎學習》課件
- 講課學生數(shù)學學習成就
- 西葫蘆栽培技術要點
- 高中學生學籍表模板(范本)
評論
0/150
提交評論