版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第3章 VHDL程序結(jié)構(gòu)n一個完整的設(shè)計實體的最低要求應(yīng)該能為 VHDL 綜合器所接受 并能作為一個獨立設(shè)計單元 即元件的形式而存在的 VHDL 程序,這里的所謂元件,既可以被高層次的系統(tǒng)所調(diào)用,成為該系統(tǒng)的一部分,也可以作為一個電路功能塊而獨立存在和獨立運(yùn)行。第3章 VHDL程序結(jié)構(gòu) 圖3-1 VHDL程序設(shè)計基本結(jié)構(gòu)第3章 VHDL程序結(jié)構(gòu)n在 VHDL 程序中 實體 ENTITY 和結(jié)構(gòu)體 ARCHITECTURE 這兩個基本結(jié)構(gòu)是必需的 它們可以構(gòu)成最簡單的 VHDL 程序。通常,最簡單的 VHDL 程序結(jié)構(gòu)中還應(yīng)包括另一重要的部分,即庫 LIBRARY和程序包 PACKAGE 一個實
2、用的 VHDL 程序可以由一個或多個設(shè)計實體構(gòu)成,可以將一個設(shè)計實體作為一個完整的系統(tǒng)直接利用,也可以將其作為其它設(shè)計實體的一個低層次的結(jié)構(gòu) 即元件來例化。元件調(diào)用和連接,就是用實體來說明一個具體的器件。 圖 3-1 中配置 CONFIGURATION 結(jié)構(gòu)的設(shè)置 常用于行為仿真中,如用于對特定結(jié)構(gòu)體的選擇控制。第3章 VHDL程序結(jié)構(gòu)n3.1 實體(ENTITY)n 實體作為一個設(shè)計實體的組成部分,其功能是對這個設(shè)計實體與外部電路進(jìn)行接口描述。實體是設(shè)計實體的表層設(shè)計單元,實體說明部分規(guī)定了設(shè)計單元的輸入輸出接口信號或引腳。它是設(shè)計實體對外的一個通信界面。就一個設(shè)計實體而言,外界所看到的僅僅
3、是它的界面上的各種接口。設(shè)計實體可以擁有一個或多個結(jié)構(gòu)體,用于描述此設(shè)計實體的邏輯結(jié)構(gòu)和邏輯功能,對于外界來說 這一部分是不可見的。n 不同邏輯功能的設(shè)計實體可以擁有相同的實體描述。這是因為實體類似于原理圖中的一個部件符號,而其具體的邏輯功能是由設(shè)計實體中結(jié)構(gòu)體的描述確定的。實體是 VHDL的基本設(shè)計單元 它可以對一個門電路、一個芯片、一塊電路板乃至整個系統(tǒng)進(jìn)行接口描述。第3章 VHDL程序結(jié)構(gòu)n1. 實體語句結(jié)構(gòu)n以下是實體說明單元的常用語句結(jié)構(gòu):nENTITY 實體名 ISn GENERIC ( 類屬表 ) ;n PORT ( 端口表 ) ;nEND ENTITY 實體名;n實體說明單元必
4、須按照這一結(jié)構(gòu)來編寫 實體應(yīng)以語句 ENTITY 實體名 IS 開始,以語句 END ENTITY 實體名 結(jié)束。其中的實體名可以由設(shè)計者自己添加,中間在方括號內(nèi)的語句描述,在特定的情況下并非是必需的。第3章 VHDL程序結(jié)構(gòu)n2. 實體名n一個設(shè)計實體無論多大和多復(fù)雜,在實體中定義的實體名即為這個設(shè)計實體的名稱在例化。(已有元件的調(diào)用和連接)中, 即可以用此名對相應(yīng)的設(shè)計實體進(jìn)行調(diào)用。nCOMPONENT h_adder - 元件調(diào)用說明n PORT ( a b : IN STD_LOGIC ;n co so : OUT STD_LOGIC );n END COMPONENT;n .n u1
5、 : h_adder PORT MAP ( a =ain b =bin co=d so =e);n . - 這里的符號 = 是端口關(guān)聯(lián)符號第3章 VHDL程序結(jié)構(gòu)n3. GENERIC類屬說明語句n類屬 GENERIC 參量是一種端口界面常數(shù) 常以一種說明的形式放在實體或塊結(jié)構(gòu)體前的說明部分,類屬為所說明的環(huán)境提供了一種靜態(tài)信息通道,類屬與常數(shù)不同 常數(shù)只能從設(shè)計實體的內(nèi)部得到賦值,且不能再改變 而類屬的值可以由設(shè)計實體外部提供。因此,設(shè)計者可以從外面通過類屬參量的重新設(shè)定而容易地改變一個設(shè)計實體或一個元件的內(nèi)部電路結(jié)構(gòu)和規(guī)模。n類屬說明的一般書寫格式如下:nGENERIC( 常數(shù)名:數(shù)據(jù)類型
6、 : 設(shè)定值 n 常數(shù)名 :數(shù)據(jù)類型 : 設(shè)定值 ) ;第3章 VHDL程序結(jié)構(gòu)n 程序3-2n ENTITY mcu1 ISn GENERIC (addrwidth : INTEGER := 16);n PORT(n add_bus : OUT STD_LOGIC_VECTOR(addrwidth-1 DOWNTO 0) );第3章 VHDL程序結(jié)構(gòu)n程序3-4nLIBRARY IEEE;n USE IEEE.STD_LOGIC_1164.ALL;nENTITY andn ISn GENERIC ( n : INTEGER );n PORT(a : IN STD_LOGIC_VECTOR(n
7、-1 DOWNTO 0);n c : OUT STD_LOGIC);n END;n ARCHITECTURE behav OF andn ISn BEGINn PROCESS (a)n VARIABLE int : STD_LOGIC;n BEGINn int := 1;n FOR i IN aLENGTH - 1 DOWNTO 0 LOOPn IF a(i)=0 THENn int := 0;n END IF;nEND LOOP;n c 2)n PORT MAP (a(0)=d1,a(1)=d2,c=q1); u2: andn GENERIC MAP (n =5)n PORT MAP (a(
8、0)=d3,a(1)=d4,a(2)=d5,n a(3)=d6,a(4)=d7, c=q2);n END;第3章 VHDL程序結(jié)構(gòu)n4. PORT 端口說明n實體端口說明的一般書寫格式如下n PORT ( 端口名 : 端口模式 數(shù)據(jù)類型 n 端口名 : 端口模式 數(shù)據(jù)類型 ) ;n其中的端口名是設(shè)計者為實體的每一個對外通道所取的名字 端口模式是指這些通道上的數(shù)據(jù)流動方式 如輸入或輸出等,數(shù)據(jù)類型是指端口上流動的數(shù)據(jù)的表達(dá)格式或取值類型,這是由于 VHDL 是一種強(qiáng)類型語言 即對語句中的所有的端口信號,內(nèi)部信號和操作數(shù)的數(shù)據(jù)類型有嚴(yán)格的規(guī)定,只有相同數(shù)據(jù)類型的端口信號和操作數(shù)才能相互作用。n一個
9、實體通常有一個或多個端口 端口類似于原理圖部件符號上的管腳 實體與外界交流的信息必須通過端口通道流入或流出。第3章 VHDL程序結(jié)構(gòu)n端口對應(yīng)于器件符號的外部引腳。端口名作為外部引腳的名稱,端口模式用來定義外部引腳的信號流向。n常用端口模式:nIN 模式:IN 定義的通道確定為輸入端口 并規(guī)定為單向只讀模式 可以通過此端口將變量 Variable 信息或信號 Signal 信息讀入設(shè)計實體中。nOUT:模式 OUT 定義的通道確定為輸出端口 并規(guī)定為單向輸出模式 可以通過此端口將信號輸出設(shè)計實體 或者說可以將設(shè)計實體中的信號向此端口賦值。nINOUT:模式 INOUT 定義的通道確定為輸入輸出
10、雙向端口, 即從端口的內(nèi)部看可以對此端口進(jìn)行賦值,也可以通過此端口讀入外部的數(shù)據(jù)信息。而從端口的外部看,信號既可以從此端口流出 也可以向此端口輸入信號。第3章 VHDL程序結(jié)構(gòu)n程序3-7n.nENTITY MCS51 ISn PORT ( - 與8031接口的各端口定義 :n P0 : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0); - 雙向地址/數(shù)據(jù)口n P2 : IN STD_LOGIC_VECTOR(7 DOWNTO 0); - 高8位地址線n RD WR : IN STD_LOGIC; - 讀 寫允許n.nEND MCS51;n.n PROCESS( WR_E
11、NABLE2 )n BEGINn IF (WR_ENABLE2EVENT AND WR_ENABLE2 = 1)n THEN LATCH_OUT2 = P0; END IF; -從P0口讀入外部信息n END PROCESS;n PROCESS( P2,LATCH_ADDRES,READY,RD )n BEGINn IF (LATCH_ADDRES=01111110) AND (P2=10011111)n AND (READY=1) AND (RD=0) THENn P0 = LATCH_IN1 ; - 寄存器中的數(shù)據(jù)輸入 P0口,由P0向外輸出n ELSE P0 = ZZZZZZZZ ;n
12、END IF - 禁止讀數(shù) P0口輸出呈高阻態(tài)n END PROCESS;n。第3章 VHDL程序結(jié)構(gòu)nBUFFER模式:BUFFER定義的通道確定為具有數(shù)據(jù)讀入功能的輸出端口,它與雙向端口的區(qū)別在于只能接受一個驅(qū)動源。BUFFER 模式從本質(zhì)上將仍是 OUT 模式,只是在內(nèi)部結(jié)構(gòu)中具有將輸出至外端口的信號回讀的功能,即允許內(nèi)部回讀輸出的信號,即允許反饋,如計數(shù)器的設(shè)計,可將計數(shù)器輸出的計數(shù)信號回讀 以作下一計數(shù)值的初值 與INOUT 模式相比。顯然 BUFFER 的區(qū)別在于回讀(輸入)的信號不是由外部輸入的,而是由內(nèi)部產(chǎn)生,向外輸出的信號,有時往往在時序上有所差異。第3章 VHDL程序結(jié)構(gòu)n
13、通常實現(xiàn)內(nèi)部反饋有兩種方式 即利用BUFFER建立一個緩沖模式的端口 如程序3-8所示,或在結(jié)構(gòu)體內(nèi)定義一個緩沖節(jié)點信號 SIGNAL 如程序 3-9 所示。它們的邏輯功能和綜合后的電路都是一樣的。第3章 VHDL程序結(jié)構(gòu)n程序3-8nLIBRARY IEEE;nUSE IEEE.STD_LOGIC_1164.ALL ;nENTITY bfexp ISn PORT(n clk,rst,din : IN STD_LOGIC ;n q1 : BUFFER STD_LOGIC ;n q2 : OUT STD_LOGICn ) ;nEND bfexp ;nARCHITECTURE behav1 OF
14、bfexp ISn BEGINn PROCESS(clk,rst)n BEGINn IF rst =0 THENn q1 = 0 ;n q2 = 0 ;n ELSIF clkEVENT AND clk = 1 THENn q2 = din ; -將由din讀入的數(shù)據(jù)向q1輸出n q1 = q1 ; -將向q1輸出的數(shù)據(jù)回讀,并向q2賦值n END IF;n END PROCESS;n END;第3章 VHDL程序結(jié)構(gòu)n程序3-9nLIBRARY IEEE;nUSE IEEE.STD_LOGIC_1164.ALL ;nENTITY bfexp ISn PORT(clk,rst,din : IN
15、STD_LOGIC ;n q1 : OUT STD_LOGIC ;n q2 : OUT STD_LOGIC ) ;nEND bfexp ;nARCHITECTURE behav1 OF bfexp ISn SIGNAL qbuf : STD_LOGIC; -定義數(shù)據(jù)暫存緩沖信號qbufn BEGINn PROCESS(clk,rst)n BEGINn IF rst =0 THENn qbuf = 0 ;n q2 = 0 ;n ELSIF clkEVENT AND clk = 1 THENn qbuf = din ; -將由din讀入的數(shù)據(jù)暫存于qbufn q2 = qbuf ; -將緩沖信號q
16、buf中的數(shù)據(jù)向q2賦值n END IF;n q1 l_time,gb2 = s_time) ; - 局部端口參量設(shè)定n PORT (pb : IN BIT; pb2 : INOUT BIT ); - 塊結(jié)構(gòu)中局部端口定義n PORT MAP (pb1 = b1, pb2 = a1 ) ; - 塊結(jié)構(gòu)端口連接說明n CONSTANT delay : Time := 1 ms ; - 局部常數(shù)定義n SIGNAL s1 : BIT ; - 局部信號定義n BEGINn s1 = pb1 AFTER delay ;n pb2 = s1 AFTER gb1, b1 AFTER gb2 ;n END
17、BLOCK blk1 ;n END ARCHITECTURE func ;n程序3-12n.n b1 : BLOCKn SIGNAL s1: BIT ; n BEGINn S1 = a AND b ; n b2 : BLOCKn SIGNAL s2: BIT ;n BEGINn s2 = c AND d ; n b3 : BLOCKn BEGINn Z = s2 ; n END BLOCK b3 ;n END BLOCK b2 ;n y = s1 ; n END BLOCK b1 ;n.第3章 VHDL程序結(jié)構(gòu)n3. BLOCK語句在綜合中的地位n與大部分的 VHDL 語句不同。BLOCK 語
18、句的應(yīng)用,包括其中的類屬說明和端口定義都不會影響對原結(jié)構(gòu)體的邏輯功能的仿真結(jié)果。n如以下的程序 3-13 和程序 3-14 的仿真結(jié)果是完全相同的。第3章 VHDL程序結(jié)構(gòu)n程序3-13na1 : out1 = 1 after 3 ns ;n blk1 : BLOCKn BEGINn A2 : out2 = 1 AFTER 3 ns ;n A3 : out3 = 0 AFTER 2 ns ;n END BLOCK blk1 ;n程序3-14na1 : out1 = 1 AFTER 3 ns ;na2 : out2 = 1 AFTER 3 ns ;na3 : out3 output output
19、 output output b THEN RETURN a;n ELSE RETURN b;n END IF;n END FUNCTION max; -結(jié)束FUNCTION語句n END; -結(jié)束PACKAGE BODY 語句n .n USE WORK. packexp.ALLn ENTITY axamp ISn PORT(.);n END;n ARCHITECTURE bhv OF axamp ISn BEGINn .n out1 = max(dat1,dat2); -用在賦值語句中的并行函數(shù)調(diào)用語句n PROCESS(dat3,dat4)n BEGINn out2 b THEN RETU
20、RN a;n ELSE RETURN b; END IF;n END FUNCTION max; -結(jié)束FUNCTION語句n n FUNCTION max( a,b IN INTEGER) -定義函數(shù)體n RETURN INTEGER ISn BEGINn IF a b THEN RETURN a;n ELSE RETURN b; END IF;n END FUNCTION max; -結(jié)束FUNCTION語句n n FUNCTION max( a,b IN BIT_VECTOR) -定義函數(shù)體n RETURN BIT_VECTOR ISn BEGINn IF a b THEN RETURN
21、 a;n ELSE RETURN b; END IF;n END FUNCTION max; -結(jié)束FUNCTION語句n END; -結(jié)束PACKAGE BODY 語句n- 以下是調(diào)用重載函數(shù)max的程序n LIBRARY IEEE ;n USE IEEE.STD_LOGIC_1164.ALL ;n USE WORK.packexp.ALLn ENTITY axamp ISn PORT(a1,b1 : IN STD_LOGIC_VECTOR(3 DOWNTO 0);n a2,b2 : IN BIT_VECTOR(4 DOWNTO 0);n a3,b3 : IN INTEGER 0 TO 15
22、;n c1 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);n c2 : OUT BIT_VECTOR(4 DOWNTO 0);n c3 : OUT INTEGER 0 TO 15);n END;n ARCHITECTURE bhv OF axamp ISn BEGINn c1 = max(a1,b1); -對函數(shù)max( a,b IN STD_LOGIC_VECTOR)的調(diào)用n c2 = max(a2,b2); -對函數(shù)max( a,b IN BIT_VECTOR) 的調(diào)用n c3 v1; - 當(dāng)v2 v1 跳出循環(huán)LOOPn END LOOP Q1nEND PROCE
23、DURE comp ;第3章 VHDL程序結(jié)構(gòu)n重載過程 (OVERLOADED PROCEDURE)n兩個或兩個以上有相同的過程名和互不相同的參數(shù)數(shù)量及數(shù)據(jù)類型的過程稱為重載過程,對于重載過程,也是靠參量類型來辨別究竟調(diào)用哪一個過程。n程序3-26nPROCEDURE calcu ( v1, v2 : IN REAL ;n SIGNAL out1 : INOUT INTEGER) ;n PROCEDURE calcu ( v1, v2 : IN INTEGER ;n SIGNAL out1 : INOUT REAL) ;n .n calcu (20.15, 1.42, signl) ; -
24、調(diào)用第一個重載過程calcun calcu (23 320 sign2 ) - 調(diào)用第二個重載過程 calcu第3章 VHDL程序結(jié)構(gòu)n3.6 庫 LIBRARYn可以把庫看成是一種用來存儲預(yù)先完成的程序包 ,數(shù)據(jù)集合體和元件的倉庫。n如果要在一項 VHDL 設(shè)計中用到某一程序包,就必須在這項設(shè)計中預(yù)先打開這個程序包,使此設(shè)計能隨時使用這一程序包中的內(nèi)容。在綜合過程中,每當(dāng)綜合器在較高層次的 VHDL 源文件中遇到庫語言,就將隨庫指定的源文件讀入,并參與綜合。n 通常 庫中放置不同數(shù)量的程序包 而程序包中又可放置不同數(shù)量的子程序,子程序中又含有函數(shù)、過程、設(shè)計實體、元件等基礎(chǔ)設(shè)計單元。第3章
25、VHDL程序結(jié)構(gòu)nVHDL 語言的庫分為兩類:n 一類是設(shè)計庫,如在具體設(shè)計項目中設(shè)定的目錄所對應(yīng)的WORK 庫,另一類是資源庫,資源庫是常規(guī)元件和標(biāo)準(zhǔn)模塊存放的庫,如 IEEE 庫。 設(shè)計庫對當(dāng)前項目是默認(rèn)可視的,無需用 LIBRARY和 USE等語句以顯式聲明。n庫 LIBRARY 的語句格式如下:nLIBRARY 庫名;n如語句 LIBRARY IEEE ; 表示打開IEEE庫。第3章 VHDL程序結(jié)構(gòu)n1. 庫的種類nVHDL程序設(shè)計中常用的庫有以下幾種:(1)IEEE庫nIEEE 庫中的標(biāo)準(zhǔn)程序包主要包括 STD_LOGIC_1164,NUMERIC_BIT 和 NUMERIC_ST
26、D 等程序包,其中的 STD_LOGIC_1164 是最重要和最常用的程序包,大部分基于數(shù)字系統(tǒng)設(shè)計的程序包都是以此程序包中設(shè)定的標(biāo)準(zhǔn)為基礎(chǔ)的。第3章 VHDL程序結(jié)構(gòu)n還有一些程序包雖非 IEEE 標(biāo)準(zhǔn),但由于其已成事實上的工業(yè)標(biāo)準(zhǔn),也都并入了 IEEE 庫,這些程序包中,最常用的是 Synopsys 公司的 STD_LOGIC_ARITH、STD_LOGIC_SIGNED和STD_LOGIC_UNSIGNED程序包。目前流行于我國的大多數(shù)EDA工具都支持 Synopsys 公司的程序包,一般基于大規(guī)??删幊踢壿嬈骷臄?shù)字系統(tǒng)設(shè)計IEEE庫中的四個程序包STD_LOGIC_1164、STD_
27、LOGIC_ARITH、STD_LOGIC_SIGNED和 STD_LOGIC_UNSIGNED 已足夠使用。另外需要注意的是,在 IEEE 庫中符合 IEEEn標(biāo)準(zhǔn)的程序包并非符合 VHDL語言標(biāo)準(zhǔn),如 STD_LOGIC_1164程序包,因此在使用VHDL設(shè)計實體的前面必須以顯式表達(dá)出來。第3章 VHDL程序結(jié)構(gòu)n(2) STD庫nVHDL 語言標(biāo)準(zhǔn)定義了兩個標(biāo)準(zhǔn)程序包,即 STANDARD 和 TEXTIO 程序包 (文件輸入/輸出程序包)它們都被收入在 STD 庫中,只要在 VHDL 應(yīng)用環(huán)境中,即可隨時調(diào)用這兩個程序包中的所有內(nèi)容,即在編譯和綜合過程中 VHDL 的每一項設(shè)計都自動地
28、將其包含進(jìn)去了。由于 STD 庫符合 VHDL 語言標(biāo)準(zhǔn) 在應(yīng)用中不必如 IEEE 庫那樣以顯式表達(dá)出來。第3章 VHDL程序結(jié)構(gòu)n (3) WORK庫nWORK 庫是用戶的 VHDL 設(shè)計的現(xiàn)行工作庫,用于存放用戶設(shè)計和定義的一些設(shè)計單元和程序包。因而是用戶的臨時倉庫,用戶設(shè)計項目的成品、半成品模塊,以及先期已設(shè)計好的元件都放在其中。WORK 庫自動滿足 VHDL 語言標(biāo)準(zhǔn),在實際調(diào)用中,也不必以顯式預(yù)先說明。第3章 VHDL程序結(jié)構(gòu)n (4) VITAL庫n使用 VITAL 庫,可以提高 VHDL 門級時序模擬的精度,因而只在 VHDL 仿真器中使用。庫中包含時序程序包 VITAL_TIM
29、ING 和 ITAL_PRIMITIVES VITAL 程序包已經(jīng)成為 IEEE 標(biāo)準(zhǔn),在當(dāng)前的 VHDL 仿真器的庫中 VITAL 庫中的程序包都已經(jīng)并到 IEEE庫中。實際上 由于各 FPGA/CPLD生產(chǎn)廠商的適配工具,都能為各自的芯片生成帶時序信息的 VHDL 門級網(wǎng)表。用 VHDL 仿真器仿真該網(wǎng)表可以得到非常精確的時序仿真結(jié)果 因此,基于實用的觀點,在 FPGA/CPLD 設(shè)計開發(fā)過程中 一般并不需要VITAL庫中的程序包。第3章 VHDL程序結(jié)構(gòu)n2 庫的用法n在 VHDL 語言中,庫的說明語句總是放在實體單元前面,這樣,在設(shè)計實體內(nèi)的語句就可以使用庫中的數(shù)據(jù)和文件。由此可見,庫
30、的用處在于使設(shè)計者可以共享已經(jīng)編譯過的設(shè)計成果 VHDL 允許在一個設(shè)計實體中同時打開多個不同的庫 但庫之間必須是相互獨立的。n例:n LIBRARY IEEE ;n USE IEEE.STD_LOGIC_1164.ALL ;n USE IEEE.STD_LOGIC_UNSIGNED.ALL ;n表示打開 IEEE 庫,再打開此庫中的 STD_LOGIC_1164 程序包和 STD_LOGIC_UNSIGNED程序包的所有內(nèi)容。第3章 VHDL程序結(jié)構(gòu)n對于必須以顯式表達(dá)的庫及其程序包的語言表達(dá)式應(yīng)放在每一項設(shè)計實體最前面成為這項設(shè)計的最高層次的設(shè)計單元,庫語句一般必須與 USE 語句同用,庫
31、語句關(guān)鍵詞LIBRARY 指明所使用的庫名,USE 語句指明庫中的程序包。一旦說明了庫和程序包,整個設(shè)計實體都可進(jìn)入訪問或調(diào)用,但其作用范圍僅限于所說明的設(shè)計實體。VHDL 要求一項含有多個設(shè)計實體的更大的系統(tǒng)中,每一個設(shè)計實體都必須有自己完整的庫說明語句和USE語句。第3章 VHDL程序結(jié)構(gòu)nUSE語句的使用有兩種常用格式:n USE 庫名.程序包名.項目名 ;n USE 庫名.程序包名.ALL;n第一語句格式的作用是,向本設(shè)計實體開放指定庫中的特定程序包內(nèi)所選定的項目。n第二語句格式的作用是,向本設(shè)計實體開放指定庫中的特定程序包內(nèi)所有的內(nèi)容。n例如:USE IEEE.STD_LOGIC_1
32、164.ALL ;n表明打開 IEEE 庫中的 STD_LOGIC_1164 程序包,并使程序包中所有的公共資源對于本語句后面的 VHDL 設(shè)計實體程序全部開放,即該語句后的程序可任意使用程序包中的公共資源。第3章 VHDL程序結(jié)構(gòu)n3.7 程序包 PACKAGEn已在設(shè)計實體中定義的數(shù)據(jù)類型,子程序或數(shù)據(jù)對象對于其它設(shè)計實體是不可用的或者說是不可見的。為了使已定義的常數(shù)、數(shù)據(jù)類型、元件調(diào)用說明以及子程序能被更多的 VHDL 設(shè)計實體方便地訪問和共享,可以將它們收集在一個 VHDL 程序包中。多個程序包可以并入一個 VHDL 庫中,使之適用于更一般的訪問和調(diào)用范圍。這一點對于大系統(tǒng)開發(fā),多個或
33、多組開發(fā)人員同步并行工作顯得尤為重要。第3章 VHDL程序結(jié)構(gòu)n程序包的內(nèi)容主要由如下四種基本結(jié)構(gòu)組成,因此一個程序包中至少應(yīng)包含以下結(jié)構(gòu)中的一種。n(1) 常數(shù)說明,在程序包中的常數(shù)說明結(jié)構(gòu)主要用于預(yù)定義系統(tǒng)的寬度,如數(shù)據(jù)總線通道的寬度。n(2) VHDL 數(shù)據(jù)類型說明,主要用于在整個設(shè)計中通用的數(shù)據(jù)類型,例如通用的地址總線數(shù)據(jù)類型定義等。n(3) 元件定義,元件定義主要規(guī)定在 VHDL 設(shè)計中參與文件例化的文件 已完成的設(shè)計實體 對外的接口界面。n(4) 子程序,并入程序包的子程序有利于在設(shè)計中任一處進(jìn)行方便地調(diào)用。第3章 VHDL程序結(jié)構(gòu)n通常程序包中的內(nèi)容應(yīng)具有更大的適用面和良好的獨立
34、性,以供各種不同設(shè)計需求的調(diào)用,如STD_LOGIC_1164程序包定義的數(shù)據(jù)類型STD_LOGIC 和STD_LOGIC_VECTORn一旦定義了一個程序包,各種獨立的設(shè)計就能方便地調(diào)用。第3章 VHDL程序結(jié)構(gòu)n定義程序包的一般語句結(jié)構(gòu)如下n PACKAGE 程序包名 IS - 程序包首n 程序包首說明部分 n END 程序包名;n PACKAGE BODY 程序包名 IS - 程序包體n 程序包體說明部分以及包體內(nèi) n END 程序包名;第3章 VHDL程序結(jié)構(gòu)n1. 程序包首n程序包首的說明部分可收集多個不同的 VHDL 設(shè)計所需的公共信息,其中包括數(shù)據(jù)類型說明 信號說明 子程序說明及
35、元件說明等。所有這些信息雖然也可以在每一個設(shè)計實體中進(jìn)行逐一單獨的定義和說明,但如果將這些經(jīng)常用到的 并具有一般性的說明定義放在程序包中供隨時調(diào)用,顯然可以提高設(shè)計的效率和程序的可讀性。nPACKAGE seven ISn SUBTYPE segments is BIT_VECTOR(0 TO 6) ;n TYPE bcd IS RANGE 0 TO 9 ;n END seven ;n USE WORK.seven.ALL ;n ENTITY decoder ISn PORT (input: bcd; drive : out segments) ;n END decoder ;n ARCHIT
36、ECTURE simple OF decoder ISn BEGINn WITH input SELECTn drive = B1111110 WHEN 0 ,n B0110000 WHEN 1 ,n B1101101 WHEN 2 ,n B1111001 WHEN 3 ,n B0110011 WHEN 4 ,n B1011011 WHEN 5 ,n B1011111 WHEN 6 ,n B1110000 WHEN 7 ,n B1111111 WHEN 8 ,n B1111011 WHEN 9 ,n B0000000 WHEN OTHERS ;n END simple ;第3章 VHDL程序結(jié)構(gòu)n2. 程序包體n程序包體將包括在程序包首中已定義的子程序的子程序體。程序包體說明部分的組成內(nèi)容可以是 USE 語句(允許對其它程序包的調(diào)用)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年鋰輝石合作協(xié)議書
- 2025年氣體檢測設(shè)備合作協(xié)議書
- 2025年印刷品、記錄媒介復(fù)制品合作協(xié)議書
- 2025年買賣個人房屋合同(4篇)
- 2025年臨時工聘用合同協(xié)議標(biāo)準(zhǔn)版本(三篇)
- 山西省2024七年級道德與法治上冊第二單元成長的時空第七課在集體中成長情境基礎(chǔ)小練新人教版
- 2025年臨時工解除合同樣本(2篇)
- 2025年人防門制作安裝工程施工合同模板(2篇)
- 2025年個人無息借款合同經(jīng)典版(2篇)
- 2025年二人合作經(jīng)營協(xié)議參考模板(三篇)
- 物流托運(yùn)單模板
- 【員工關(guān)系管理研究國內(nèi)外文獻(xiàn)綜述2800字】
- 六年級語文下冊閱讀及參考答案(12篇)
- 《發(fā)展?jié)h語(第二版)中級綜合(Ⅰ)》第7課+課件
- 第四章《數(shù)列》復(fù)習(xí)小結(jié)示范公開課教學(xué)PPT課件【高中數(shù)學(xué)人教A版】
- 蘇教版(蘇少版)九年級美術(shù)下冊全冊課件
- 2022年江蘇省鹽城市中考英語試題及參考答案
- 中國文化簡介英文版(ChineseCultureintroduction)課件
- 文化差異與跨文化交際課件(完整版)
- 工程經(jīng)濟(jì)學(xué)完整版課件全套ppt教程
- 鼻空腸營養(yǎng)的護(hù)理及注意事項ppt
評論
0/150
提交評論