版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
圖2.4VHDL程序設(shè)計基本結(jié)構(gòu)2.2VHDL程序基本結(jié)構(gòu)一個相對完整的VHDL程序通常包含實體(Entity)、結(jié)構(gòu)體(Architecture)、配置(Configuration)、程序包(Package)和庫(Library)5個部分。2021/6/271
(1)庫、程序包使用說明:用于打開(調(diào)用)本設(shè)計實體將要用到的庫、程序包;程序包存放各個設(shè)計模塊共享的數(shù)據(jù)類型、常數(shù)和子程序等;庫是專門存放預(yù)編譯程序包的地方。(2)實體:用于描述所設(shè)計的系統(tǒng)的外部接口信號,是可視部分;(3)結(jié)構(gòu)體:用于描述系統(tǒng)內(nèi)部的結(jié)構(gòu)和行為,建立輸入和輸出之間的關(guān)系,是不可視部分。
(4)配置說明語句:主要用于以層次化的方式對特定的設(shè)計實體進(jìn)行元件例化,或是為實體選定某個特定的結(jié)構(gòu)體。2021/6/272
實體(ENTITY)是一個設(shè)計實體的表層設(shè)計單元,其功能是對這個設(shè)計實體與外部電路進(jìn)行接口描述。它規(guī)定了設(shè)計單元的輸入輸出接口信號或引腳,是設(shè)計實體經(jīng)封裝后對外的一個通信界面。
1.實體語句結(jié)構(gòu)
實體說明單元的常用語句結(jié)構(gòu)如下:
ENTITY
實體名
IS[GENERIC(類屬表);][PORT(端口表);]END[ENTITY]
實體名;2.2.1實體2021/6/273
實體說明單元必須以語句“ENTITY實體名IS”開始,以語句“ENDENTITY
實體名;”結(jié)束。
實體名是設(shè)計者自己給設(shè)計實體的命名,可作為其他設(shè)計實體對該設(shè)計實體進(jìn)行調(diào)用時用。中間在方括號內(nèi)的語句描述,在特定的情況下并非是必須的。例如構(gòu)建一個VHDL仿真測試基準(zhǔn)等情況中可以省去方括號中的語句。2021/6/2742.類屬(GENERIC)說明語句
類屬(GENERIC)參量是一種端口界面常數(shù),常以一種說明的形式放在實體或塊結(jié)構(gòu)體前的說明部分。類屬為所說明的環(huán)境提供了一種靜態(tài)信息通道,類屬的值可以由設(shè)計實體外部提供。類屬說明的一般書寫格式如下:
GENERIC([常數(shù)名;數(shù)據(jù)類型[:設(shè)定值]{;常數(shù)名:數(shù)據(jù)類型[:設(shè)定值]});2021/6/275LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYAND2IS
GENERIC(RISEW:TIME:=1ns;
FALLW:TIME:=1ns);
PORT(A1:INSTD_LOGIC;
A0:INSTD_LOGIC;
Z0:OUTSTD_LOGIC);
ENDENTITYAND2;【例2.2】2輸入與門的實體描述
類屬說明中定義參數(shù)RISEW為上沿寬度,F(xiàn)ALLW為下沿寬度,它們分別為1ns,這兩個參數(shù)用于仿真模塊的設(shè)計。2021/6/276
實體端口說明的一般書寫格式如下:
PORT(端口名:端口模式數(shù)據(jù)類型;
{端口名:端口模式數(shù)據(jù)類型});
端口名是設(shè)計者為實體的每一個對外通道(系統(tǒng)引腳)所取的名字,一般用幾個英文字母組成;
端口模式(端口方向)是指這些通道上的數(shù)據(jù)流動方式,即定義引腳是輸入還是輸出;
數(shù)據(jù)類型是指端口上流動的數(shù)據(jù)的表達(dá)格式。
3.PORT端口說明2021/6/277圖2.5
端口模式符號圖
IEEE1076標(biāo)準(zhǔn)包中定義了4種常用的端口模式,各端口模式的功能及符號分別見表2.1和圖2.5。表2.1
端口模式說明2021/6/278PORT(n0,n1,select:INBIT;
q:OUTBIT;
bus:OUTBIT_VECTOR(7
DOWNTO0));【例2.3】端口模式及數(shù)據(jù)類型定義
說明:n0,n1,select
是輸入引腳,屬于BIT型;
q是輸出引腳,BIT型;
bus是一組8位二進(jìn)制總線,屬于BIT_VECTOR。2021/6/279
LIBRARYIEEE;
USEIEEE.STD_LOGIC.1164.ALL;
ENTITYmmIS
PORT(n0,n1,select:INSTD_LOGIC;
Q:OUTSTD_LOGIC;
Bus:OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDENTITYmm;【例2.4】端口模式及IEEE庫數(shù)據(jù)類型定義
例中端口數(shù)據(jù)類型取自IEEE標(biāo)準(zhǔn)庫(該庫中有數(shù)據(jù)類型和函數(shù)的說明),其中STD_LOGIC取值為“0”,“1”,“X”和“Z”。因為使用了庫,所以在實體說明前要增加庫說明語句。
2021/6/2710
2.2.2結(jié)構(gòu)體
結(jié)構(gòu)體(ARCHITECTURE)是設(shè)計實體的一個重要部分,結(jié)構(gòu)體將具體實現(xiàn)一個實體。結(jié)構(gòu)體不能單獨存在,它必須有一個界面說明,即一個實體。對于具有多個結(jié)構(gòu)體的實體,必須用CONFIGURATION配置語句指明用于綜合的結(jié)構(gòu)體和用于仿真的結(jié)構(gòu)體,即在綜合后的可映射于硬件電路的設(shè)計實體中,一個實體只對應(yīng)一個結(jié)構(gòu)體。在電路中,如果實體代表一個器件符號,則結(jié)構(gòu)體描述了這個符號的內(nèi)部行為。2021/6/2711ARCHITECTURE
結(jié)構(gòu)體名
OF
實體名IS
[說明語句]--內(nèi)部信號,常數(shù),數(shù)據(jù)類型,函數(shù)等的定義
BEGIN[功能描述語句]END[ARCHITECTURE][結(jié)構(gòu)體名];1.結(jié)構(gòu)體語句格式2021/6/2712
ENTITYmuxIS
PORT(a0,a1:INBIT;
Sel:INBIT;
Sh:OUTBIT);
ENDmux;
ARCHITECTUREdataflowOFmuxIS
BEGINsh<=(a0ANDsel)OR(NOTselANDa1);
ENDdataflow;
【例2.5】結(jié)構(gòu)體描述2021/6/2713
結(jié)構(gòu)體中的說明語句是對結(jié)構(gòu)體的功能描述語句中將要用到的信號(SIGNAL)、數(shù)據(jù)類型(TYPE)、常數(shù)(CONSTANT)、元件(COMPONENT)、函數(shù)(FUNCTION)和過程(PROCEDURE)等加以說明的語句。在一個結(jié)構(gòu)體中說明和定義的數(shù)據(jù)類型、常數(shù)、元件、函數(shù)和過程只能用于這個結(jié)構(gòu)體中,若希望其能用于其他的實體或結(jié)構(gòu)體中,則需要將其作為程序包來處理。2.結(jié)構(gòu)體說明語句2021/6/27143.功能描述語句
描述設(shè)計實體的具體行為,它包含兩類語句:
(1)并行語句:并行語句總是在進(jìn)程語句(PROCESS)的外部,語句的執(zhí)行與書寫順序無關(guān),總是同時被執(zhí)行。
(2)順序語句:順序語句總是在進(jìn)程語句(PROCESS)的內(nèi)部,該語句是順序執(zhí)行的。一個結(jié)構(gòu)體可以包含幾個類型的子結(jié)構(gòu)描述:BLOCK(塊)描述、PROCESS(進(jìn)程)描述、SUNPROGRAMS(子程序)描述。2021/6/2715
塊語句是由一系列并行執(zhí)行語句構(gòu)成的組合體,它的功能是將結(jié)構(gòu)體中的并行語句組成一個或多個模塊。
進(jìn)程語句定義順序語句模塊,用于將從外部獲得的信號值,或內(nèi)部的運算數(shù)據(jù)向其他的信號進(jìn)行賦值。
子程序調(diào)用語句用于調(diào)用一個已設(shè)計好的子程序。
信號賦值語句將設(shè)計實體內(nèi)的處理結(jié)果向定義的信號或界面端口進(jìn)行賦值。
元件例化語句對其他的設(shè)計實體作元件調(diào)用說明。2021/6/2716使用BLOCK語句描述的格式如下:
[塊標(biāo)號:]BLOCK
BEGIN
ENDBLOCK[塊標(biāo)號];1)BLOCK塊語句2021/6/2717
ENTITYmuxIS
PORT(d0,d1,sel:INBIT;
q:OUTBIT);
ENDmux;
ARCHITECTUREconnectOFmuxIS
SIGNALtmp1,tmp2,tmp3:BIT;
BEGIN
cale:BLOCK
BEGINtmp1<=d0ANDsel;
tmp2<=d1AND(NOTsel);
tmp3<=tmp1ORtmp2;
q<=tmp3;
ENDBLOCKcale;
ENDconnect;【例2.6】
用塊語句實現(xiàn)的二選一電路2021/6/2718進(jìn)程描述的格式如下:
[進(jìn)程名]:PROCESS(信號1,信號2,…)
BEGIN┇
ENDPROCESS[進(jìn)程名];進(jìn)程語句中總是帶有信號變量(敏感變量),只有當(dāng)信號變量發(fā)生變化時,進(jìn)程才被啟動,將進(jìn)程里的語句從上到下順序執(zhí)行一遍,執(zhí)行完了就回到開始的PROCESS語句。2)進(jìn)程(Process)語句描述2021/6/2719ENTITYmux2IS
PORT(d0,d1,sel:INBIT;
q:OUTBIT);
ENDmux2;
ARCHITECTUREconnectOFmux2IS
BEGIN
cale:PROCESS(d0,d1,sel)
VARIABLEtmp1,tmp2,tmp3:BIT;
BEGINtmp1:=d0ANDsel;
tmp2:=d1AND(NOTsel);
tmp3:=tmp1ORtmp2;
q<=tmp3
ENDPROCESScale;
ENDconnect;【例2.7】用進(jìn)程語句實現(xiàn)的二選一電路2021/6/2720子程序就是在主程序調(diào)用它以后能將處理結(jié)果返回給主程序。在VHDL中有2種類型:過程和函數(shù)?!襁^程語句
PROCEDURE
過程名(參數(shù)1,參數(shù)2)IS
[定義語句];
BEGIN
[順序處理語句];
END過程名;3)子程序語句描述2021/6/2721
●函數(shù)語句FUNCTION函數(shù)名(參數(shù)1,參數(shù)2)RETURN數(shù)據(jù)類型名IS
[定義語句];
BEGIN
[順序處理語句]RETURN[返回變量名]END函數(shù)名;2021/6/2722
FUNCTIONmin(x,y:INTEGER)RETURNINTEGER
IS
BEGIN
IFX<YTHEN
RETURN(x);
ELSE
RETURN(y);
ENDIF;
ENDmin;【例2.8】FUNCTION語句應(yīng)用舉例2021/6/2723
PROCEDUREvector_to_int(q:ININTEGER;
x_flag:OUTBOOLEAN;
z:INSTD_LOGIC_VECTOR)IS
BEGINq:=0;
x_flag:=FALSE;
FORiINz’RANGELOOPq:=q*2;
IF(z(i)=1)THENq:=q+1;
ELSEIF(z(i)/=0)THENx_flag:=TRUE;
ENDIF;
ENDLOOP;
ENDvector_to_int;
【例2.9】PROCEDURE語句應(yīng)用2021/6/27242.2.3庫
庫是經(jīng)編譯后的數(shù)據(jù)的集合,它存放包定義、實體定義、構(gòu)造定義和配置定義。使設(shè)計者可以共享已經(jīng)編譯的設(shè)計結(jié)果。VHDL中常用的庫如下:
IEEE庫
IEEE庫中包含IEEE標(biāo)準(zhǔn)的程序包,包括STD_LOGIC_1164、NUMERIC_BIT、NUMERIC_STD以及其他一些程序包。其中STD_LOGIC_1164是最主要的程序包,大部分可用于可編程邏輯器件的程序包都以這個程序包為基礎(chǔ)。
2021/6/2725STD庫
STD庫包含STANDARD和TEXTIO程序包。
STANDARD程序包中定義了許多基本的數(shù)據(jù)類型、子類型和函數(shù)。
TEXTIO是文件輸入/輸出程序包,是VHDL語言標(biāo)準(zhǔn)定義的。在VHDL的編譯和綜合過程中,系統(tǒng)都能自動調(diào)用因此不必在程序開始處打開該庫及其程序包。WORK庫
WORK庫是VHDL的現(xiàn)行工作庫,用于存放用戶設(shè)計和定義的一些單元和程序包。在使用該庫時無需進(jìn)行任何說明。2021/6/2726VITAL庫
使用VITAL可以提高門級時序仿真的精度,一般在VHDL語言程序進(jìn)行仿真時使用。主要包含兩個程序包:
VITAL_timing:時序仿真包;
VITAL_primitives:基本單元程序包?,F(xiàn)在的EDA開發(fā)工具都已將VITAL庫的程序包加到IEEE庫了。
2021/6/2727
在使用庫之前,一定要進(jìn)行庫說明和包說明。
庫和包的說明格式
LIBRARY
庫名;
USE
庫名.程序包名.項目名/all2.2.4程序包
包中羅列VHDL中用到的信號定義、常數(shù)定義、數(shù)據(jù)類型、元件語句、函數(shù)定義和過程定義,它是一個可編譯的設(shè)計單元,也是庫結(jié)構(gòu)中的一個層次,使用包時可以用USE語句說明,例如:USEIEEE.STD_LOGIC_1164.ALL2021/6/2728
程序包分為包首和包體。
(1)程序包首格式
PACKAGE
包名IS[說明語句]
END
包名;
(2)程序包體格式
PACKAGEBODY
包名IS[說明語句]
END[PACKAGEBODY]包名;2021/6/2729PACKAGElogicIS
TYPEthree_level_logicIS(‘0’,’1’,’z’);
CONSTANTunknown_value:three_level_logic:=’0’;
FUNCTIONinvert(input:three_level_logic)
RETURNthree_level_logic;END
logic;【例2.10】程序包首2021/6/2730PACKAGEBODYLOGICIS
FUNCTIONinvert(input:three_level_logic)
returnthree_level_logicis
bengin
Caseinputis
when‘0’=>return‘1’;
when‘1’=>return‘0’;
when‘z’=>return‘z’;
Endcase;
Endinvert;Endlogic;[例2.11]
程序包體2021/6
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 福建省南平市邵武第二中學(xué)高三語文期末試卷含解析
- 2024年公務(wù)員《常識判斷》練習(xí)題含答案(鞏固)
- 全國公開課一等獎統(tǒng)編版七年級語文上冊新教材(統(tǒng)編2024版)《皇帝的新裝》課件
- 2025年福建南平市建陽區(qū)城市建設(shè)投資集團有限公司招聘筆試參考題庫附帶答案詳解
- 2025年中國石油遼河石化公司招聘筆試參考題庫含答案解析
- 2024年安徽省安全員C證考試題庫及答案
- 2025年浙商食品集團有限公司招聘筆試參考題庫含答案解析
- 2025年貴陽產(chǎn)控物業(yè)有限公司招聘筆試參考題庫含答案解析
- 2025年福建閩海能源有限公司招聘筆試參考題庫含答案解析
- 二零二五年度房屋居間買賣合同附產(chǎn)權(quán)查檔及核實服務(wù)范本3篇
- 電氣安全的技術(shù)措施和組織措施參考
- 國際結(jié)算英文選擇題附答案
- 20以內(nèi)加減法口算題(10000道)(A4直接打印-每頁100題)
- 結(jié)售匯統(tǒng)計培訓(xùn)課件
- 精神病健康教育知識宣傳
- 咸寧職業(yè)技術(shù)學(xué)院學(xué)生實習(xí)鑒定表
- 工程技術(shù)資料管理方案
- 三年級上冊語文第27課《一個粗瓷大碗》同步練習(xí)(含答案)
- 河南省駐馬店市重點中學(xué)2023-2024學(xué)年九年級上學(xué)期12月月考語文試題(無答案)
- 咨詢服務(wù)協(xié)議書范本(完整版)
- 影像檢查診斷報告
評論
0/150
提交評論