【正文】
bpac。 RETURN tmp。 ELSE tmp := b。 b: STD_LOGIC_VECTOR) 章目錄 第一節(jié) 第二節(jié) 第三節(jié) 第四節(jié) 第五節(jié) 總目錄 RETURN STD_LOGIC_VECTOR IS VARIABLE tmp: STD_LOGIC_VECTOR (a’RANGE)。 END bpac。 PACKAGE bpac IS FUNCTION max (a: STD_LOGIC_VECTOR。 LIBRARY IEEE。 這個(gè)過程名為 vector_to_int實(shí)現(xiàn)將位矢量轉(zhuǎn)換成整數(shù)的功能,在過程語句執(zhí)行結(jié)束后,將輸入值拷貝到調(diào)用者的 OUT和 INOUT所定義的變量中,完成子程序和主程序之間的數(shù)據(jù)傳遞。 END LOOP。 *: 乘, **:乘方 章目錄 第一節(jié) 第二節(jié) 第三節(jié) 第四節(jié) 第五節(jié) 總目錄 ELSE (a (i) /=1) THEN x_flag := TRUE。 FOR i IN a’RANGE LOOP q := q*2。 q: INOUT INTEGER) IS BEGIN q := 0。 章目錄 第一節(jié) 第二節(jié) 第三節(jié) 第四節(jié) 第五節(jié) 總目錄 例:用過程語句設(shè)計(jì)的子程序 矢量轉(zhuǎn)換成整數(shù) PROCEDURE vector_to_int (a: IN STD_LOGIC_VECTOR。 子程序模塊是利用順序語句定義和完成算法的 , 但子程序不能像進(jìn)程那樣可以從本結(jié)構(gòu)體的其他塊或進(jìn)程結(jié)構(gòu)中讀取信號值或向信號賦值 , 只能通過子程序調(diào)用與子程序的界面端口進(jìn)行通信 。子程序內(nèi)部的值不能保持,子程序返回后才能被再次調(diào)用并初始化。 END behave。 END CASE。 WHEN OTHERS = y =39。 WHEN 11= y =39。 WHEN 10= y =39。 WHEN 01= y =39。 CASE b IS WHEN 00= y =39。 例:兩輸入或非門 y = NOT( a OR b); 章目錄 第一節(jié) 第二節(jié) 第三節(jié) 第四節(jié) 第五節(jié) 總目錄 BEGIN b := a amp。 END nor2_v2。 ENTITY nor2_v2 IS PORT(a,b: IN STD_LOGIC。 [進(jìn)程標(biāo)號 ] PROCESS [( 敏感信號表 ) ] [IS] [進(jìn)程說明語句 ] BEGIN 順序描述語句 END PROCESS [進(jìn)程標(biāo)號 ]; 章目錄 第一節(jié) 第二節(jié) 第三節(jié) 第四節(jié) 第五節(jié) 總目錄 LIBRARY IEEE。但是進(jìn)程標(biāo)號并不是必需的。 一個(gè)結(jié)構(gòu)體中可以有多個(gè)并行運(yùn)行的進(jìn)程結(jié)構(gòu),每一個(gè)進(jìn)程內(nèi)部是由一系列順序語句來構(gòu)成的。與 BLOCK語句一樣,利用 PROCESS語句結(jié)構(gòu)可以描述一個(gè)功能獨(dú)立的電路。 END BLOCK B1。 END BLOCK B2。 B3: BLOCK BEGIN Z = s2。 塊、子程序和進(jìn)程 章目錄 第一節(jié) 第二節(jié) 第三節(jié) 第四節(jié) 第五節(jié) 總目錄 BLOCK塊語句的結(jié)構(gòu): 塊標(biāo)號: BLOCK 接口說明 類屬說明 BEGIN 并行塊語句 END BLOCK(塊標(biāo)號); 章目錄 第一節(jié) 第二節(jié) 第三節(jié) 第四節(jié) 第五節(jié) 總目錄 例: B1: BLOCK SIGNAL s1: BIT; BEGIN s1 = a AND b。 章目錄 第一節(jié) 第二節(jié) 第三節(jié) 第四節(jié) 第五節(jié) 總目錄 結(jié)構(gòu)體構(gòu)造圖 : 結(jié)構(gòu)體( ARCHITECTURE) 說明語句 功能描述語句 塊語句( BLOCK) 進(jìn)程語句 (PROCESS) 信號賦值語句 子程序調(diào)用語句 元件例化語句 由一系列并行語句構(gòu) 成的組合體,它的功能是將結(jié)構(gòu)體中的并行語句組成一個(gè)或多個(gè)子模塊 定義順序語句模塊,用以將從外部獲得的信號值或內(nèi)部運(yùn)算數(shù)據(jù)向其他的信號進(jìn)行賦值 將設(shè)計(jì)實(shí)體內(nèi)的處理結(jié)果向定義的信號或界面端口進(jìn)行賦值 可以調(diào)用進(jìn)程或參數(shù),并將獲得的結(jié)果賦值于信號 對其他的設(shè)計(jì)實(shí)體做元件調(diào)用說明,并將此元件的端口與其他元件、信號或高層實(shí)體的界面端口進(jìn)行連接 章目錄 第一節(jié) 第二節(jié) 第三節(jié) 第四節(jié) 第五節(jié) ( Flash演示) 總目錄 ENTTITY mux2 IS PORT ( d0, d1: IN BIT; sel: IN BIT; s: OUT BIT) ; END mux2; ARCHITECTURE dataflow OF mux2 IS SIGNAL sig: BIT; BEGIN Sig = (d0 AND sel) OR (NOT sel AND d1); S=sig; END dataflow; 例 : 2選 1數(shù)據(jù)選擇器 信號定義語句(內(nèi)部信號,無方向) 功能描述語句 章目錄 第一節(jié) 第二節(jié) 第三節(jié) 第四節(jié) 第五節(jié) 總目錄 ( BLOCK) 在較大規(guī)模的電子系統(tǒng)設(shè)計(jì)中,傳統(tǒng)的硬件電路設(shè)計(jì)通常包括一張系統(tǒng)總電路原理圖和若干張子原理圖。 結(jié)構(gòu)體的功能描述語句可以含有 5種不同類型的并行語句,如圖所示。 ┇ BEGIN ┇ END rtl; 例:結(jié)構(gòu)體的信號定義實(shí)例 。 結(jié)構(gòu)體信號定義語句 需要注意的是:實(shí)體說明中定義的信號是外部信號,而結(jié)構(gòu)體定義的信號為該結(jié)構(gòu)體的內(nèi)部信號,它只能用于這個(gè)結(jié)構(gòu)體中。 結(jié)構(gòu)體中的信號定義和端口說明一樣,應(yīng)有信號名稱和數(shù)據(jù)類型定義。 這 3個(gè)名稱體現(xiàn)了 3種不同結(jié)構(gòu)體的描述方式,使得閱讀 VHDL語言程序時(shí),能直接了解設(shè)計(jì)者采用的描述方式。 結(jié)構(gòu)體的語句格式為: 章目錄 第一節(jié) 第二節(jié) 第三節(jié) 第四節(jié) 第五節(jié) 總目錄 結(jié)構(gòu)體名 結(jié)構(gòu)體名由設(shè)計(jì)者自行定義, OF后面的實(shí)體名指明了該結(jié)構(gòu)體所對應(yīng)的是哪個(gè)實(shí)體。 行為描述(基本設(shè)計(jì)單元的數(shù)學(xué)模型描述)、寄存器傳輸描述(數(shù)據(jù)流描述)和結(jié)構(gòu)描述(邏輯元件連接描述) 結(jié)構(gòu)體 結(jié)構(gòu)體也叫構(gòu)造體,結(jié)構(gòu)體描述了基本設(shè)計(jì)單元(實(shí)體)的結(jié)構(gòu)、行為、元件及內(nèi)部連接關(guān)系,也就是說它定義了設(shè)計(jì)實(shí)體的功能,規(guī)定了設(shè)計(jì)實(shí)體的數(shù)據(jù)流程,制定了實(shí)體內(nèi)部元件的連接關(guān)系。從端口的名稱、模式就能一目了然地指導(dǎo)信號的用途、性質(zhì)、來源和去向。 端口模式可用下圖說明,圖中方框代表一個(gè)設(shè)計(jì)實(shí)體或模塊。緩沖端口既能用于輸出也能用于反饋。