




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第第1010章章10.4 VHDL10.4 VHDL子程序子程序10.5 VHDL10.5 VHDL程序包程序包第第8章章 VHDL結(jié)構(gòu)結(jié)構(gòu)中國礦業(yè)大學(xué)計算機學(xué)院中國礦業(yè)大學(xué)計算機學(xué)院第10章 礦業(yè)大學(xué)計算機學(xué)院礦業(yè)大學(xué)計算機學(xué)院10.4 VHDL10.4 VHDL子程序子程序 10.4.1 VHDL函數(shù)函數(shù) FUNCTION 函數(shù)名函數(shù)名(參數(shù)表參數(shù)表) RETURN 數(shù)據(jù)類型數(shù)據(jù)類型 -函數(shù)函數(shù)首首FUNCTION 函數(shù)名函數(shù)名(參數(shù)表參數(shù)表)RETURN 數(shù)據(jù)類型數(shù)據(jù)類型 IS - 函數(shù)體函數(shù)體 說明部分說明部分 BEGIN 順序語句順序語句 ; END FUNCTION 函數(shù)名函數(shù)名;
2、 l由主程序調(diào)用由主程序調(diào)用l無法從本結(jié)構(gòu)體的并行語句或者無法從本結(jié)構(gòu)體的并行語句或者進程結(jié)構(gòu)中直接讀取信號或者向進程結(jié)構(gòu)中直接讀取信號或者向信號賦值。信號賦值。 由順序語句組成,與進程相似,但是不能直接讀取信由順序語句組成,與進程相似,但是不能直接讀取信號或向信號賦值,只能通過子程序調(diào)用及子程序的界面端口號或向信號賦值,只能通過子程序調(diào)用及子程序的界面端口通信。通信。l子程序利用順序語句來完成。子程序利用順序語句來完成。l子程序分兩類:函數(shù)和過程子程序分兩類:函數(shù)和過程第第8章章 VHDL結(jié)構(gòu)結(jié)構(gòu)中國礦業(yè)大學(xué)計算機學(xué)院中國礦業(yè)大學(xué)計算機學(xué)院第10章 礦業(yè)大學(xué)計算機學(xué)院礦業(yè)大學(xué)計算機學(xué)院【例例
3、8-1】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;PACKAGE packexp IS -定義程序包定義程序包 FUNCTION max( a,b : IN STD_LOGIC_VECTOR) -定義函數(shù)首定義函數(shù)首 RETURN STD_LOGIC_VECTOR ; FUNCTION func1 ( a,b,c : REAL ) -定義函數(shù)首定義函數(shù)首 RETURN REAL ; FUNCTION * ( a ,b : INTEGER ) -定義函數(shù)首定義函數(shù)首 RETURN INTEGER ; FUNCTION as2 (SIGNAL in1 ,in
4、2 : REAL ) -定義函數(shù)首定義函數(shù)首 RETURN REAL ; END ;PACKAGE BODY packexp IS FUNCTION max( a,b : IN STD_LOGIC_VECTOR) -定義函數(shù)體定義函數(shù)體 RETURN STD_LOGIC_VECTOR IS BEGIN IF a b THEN RETURN a; ELSE RETURN b; END IF; END FUNCTION max; -結(jié)束結(jié)束FUNCTION語句語句 END; -結(jié)束結(jié)束PACKAGE BODY語句語句 第第8章章 VHDL結(jié)構(gòu)結(jié)構(gòu)中國礦業(yè)大學(xué)計算機學(xué)院中國礦業(yè)大學(xué)計算機學(xué)院第10章
5、 礦業(yè)大學(xué)計算機學(xué)院礦業(yè)大學(xué)計算機學(xué)院 LIBRARY IEEE; - 函數(shù)應(yīng)用實例 USE IEEE.STD_LOGIC_1164.ALL; USE WORK.packexp.ALL ; ENTITY axamp IS PORT(dat1,dat2 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); dat3,dat4 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); out1,out2 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END; ARCHITECTURE bhv OF axamp IS BEGIN out1 =
6、 max(dat1,dat2); -用在賦值語句中的并行函數(shù)調(diào)用語句 PROCESS(dat3,dat4) BEGIN out2 b THEN RETURN a; ELSE RETURN b; END IF; END FUNCTION max; -結(jié)束FUNCTION語句 FUNCTION max( a,b :IN INTEGER) -定義函數(shù)體 RETURN INTEGER IS BEGIN IF a b THEN RETURN a; ELSE RETURN b; END IF; END FUNCTION max; -結(jié)束FUNCTION語句10.4 VHDL子程序子程序 第第8章章 VHD
7、L結(jié)構(gòu)結(jié)構(gòu)中國礦業(yè)大學(xué)計算機學(xué)院中國礦業(yè)大學(xué)計算機學(xué)院第10章 礦業(yè)大學(xué)計算機學(xué)院礦業(yè)大學(xué)計算機學(xué)院FUNCTION max( a,b :IN BIT_VECTOR) -定義函數(shù)體定義函數(shù)體 RETURN BIT_VECTOR IS BEGIN IF a b THEN RETURN a; ELSE RETURN b; END IF; END FUNCTION max; -結(jié)束結(jié)束FUNCTION語句語句 END; -結(jié)束結(jié)束PACKAGE BODY語句語句. . - 以下是調(diào)用重載函數(shù)以下是調(diào)用重載函數(shù)max的程序的程序: 10.4 VHDL子程序子程序 第第8章章 VHDL結(jié)構(gòu)結(jié)構(gòu)中國礦業(yè)大
8、學(xué)計算機學(xué)院中國礦業(yè)大學(xué)計算機學(xué)院第10章 礦業(yè)大學(xué)計算機學(xué)院礦業(yè)大學(xué)計算機學(xué)院LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; USE WORK.packexp.ALL; ENTITY axamp IS PORT(a1,b1 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); a2,b2 : IN BIT_VECTOR(4 DOWNTO 0); a3,b3 : IN INTEGER RANGE 0 TO 15; c1 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); c2 : OUT BIT_VECTOR(4 D
9、OWNTO 0); c3 : OUT INTEGER RANGE 0 TO 15); END; ARCHITECTURE bhv OF axamp IS BEGIN c1 = max(a1,b1); -對函數(shù)對函數(shù)max( a,b :IN STD_LOGIC_VECTOR)的調(diào)的調(diào)用用 c2 = max(a2,b2); -對函數(shù)對函數(shù)max( a,b :IN BIT_VECTOR) 的調(diào)用的調(diào)用 c3 value:=0101 ; WHEN 0101 = value:=0000 ; WHEN OTHERS = value:=1111 ; END CASE ;END PROCEDURE prg1
10、; 10.4 VHDL10.4 VHDL子程序子程序 第第8章章 VHDL結(jié)構(gòu)結(jié)構(gòu)中國礦業(yè)大學(xué)計算機學(xué)院中國礦業(yè)大學(xué)計算機學(xué)院第10章 礦業(yè)大學(xué)計算機學(xué)院礦業(yè)大學(xué)計算機學(xué)院10.4.5 VHDL過程過程 【例例10-7】 PROCEDURE comp ( a, r : IN REAL; m : IN INTEGER ; v1, v2: OUT REAL) IS VARIABLE cnt : INTEGER ; BEGIN v1 := 1.6 * a ; - 賦初始值賦初始值 v2 := 1.0 ; - 賦初始值賦初始值 Q1 : FOR cnt IN 1 TO m LOOP v2 := v2
11、* v1 ; EXIT Q1 WHEN v2 v1; - 當當v2 v1,跳出循環(huán),跳出循環(huán)LOOP END LOOP Q1 ASSERT (v2 v1 ) REPORT OUT OF RANGE - 輸出錯誤報告輸出錯誤報告 SEVERITY ERROR ; END PROCEDURE comp ; 10.4 VHDL10.4 VHDL子程序子程序 第第8章章 VHDL結(jié)構(gòu)結(jié)構(gòu)中國礦業(yè)大學(xué)計算機學(xué)院中國礦業(yè)大學(xué)計算機學(xué)院第10章 礦業(yè)大學(xué)計算機學(xué)院礦業(yè)大學(xué)計算機學(xué)院【例例10-8】LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;PACKAGE axamp
12、IS -過程首定義過程首定義 PROCEDURE nand4a (SIGNAL a,b,c,d : IN STD_LOGIC ; SIGNAL y : OUT STD_LOGIC ); END axamp;PACKAGE BODY axamp IS -過程體定義過程體定義 PROCEDURE nand4a (SIGNAL a,b,c,d : IN STD_LOGIC ; SIGNAL y : OUT STD_LOGIC ) IS BEGIN y 實參表達式實參表達式,形參名形參名=實參表達式實參表達式); (1)將將IN和和INOUT模式的實參值賦給欲調(diào)用的過程中與它模式的實參值賦給欲調(diào)用的過
13、程中與它們對應(yīng)的形參;們對應(yīng)的形參;(2)執(zhí)行這個過程;執(zhí)行這個過程;(3)將過程中將過程中OUT和和INOUT模式的形參值返回給對應(yīng)的實模式的形參值返回給對應(yīng)的實參。參。 10.4 VHDL10.4 VHDL子程序子程序 第第8章章 VHDL結(jié)構(gòu)結(jié)構(gòu)中國礦業(yè)大學(xué)計算機學(xué)院中國礦業(yè)大學(xué)計算機學(xué)院第10章 礦業(yè)大學(xué)計算機學(xué)院礦業(yè)大學(xué)計算機學(xué)院8.3 VHDL8.3 VHDL子程序子程序 8.3.7 子程序調(diào)用語句子程序調(diào)用語句 1.過程調(diào)用過程調(diào)用 【例例10-10】PACKAGE data_types IS - 定義程序包定義程序包SUBTYPE data_element IS INTEGER
14、 RANGE 0 TO 3 ;- 定義數(shù)據(jù)類型定義數(shù)據(jù)類型TYPE data_array IS ARRAY (1 TO 3) OF data_element;END data_types;USE WORK.data_types.ALL; -打開以上建立在當前工作庫的程序包打開以上建立在當前工作庫的程序包data_typesENTITY sort IS PORT ( in_array : IN data_array ; out_array : OUT data_array);END sort; ARCHITECTURE exmp OF sort IS BEGIN PROCESS (in_arra
15、y) - 進程開始,設(shè)進程開始,設(shè)data_types為敏感信號為敏感信號 PROCEDURE swap(data : INOUT data_array; - swap的形參名為的形參名為data、low、high low, high : IN INTEGER ) IS VARIABLE temp : data_element ; BEGIN - 開始描述本過程的邏輯功能開始描述本過程的邏輯功能 IF (data(low) data(high) THEN - 檢測數(shù)據(jù)檢測數(shù)據(jù) temp := data(low) ; data(low) := data(high); data(high) :=
16、temp ; END IF ; END swap ; - 過程過程swap定義結(jié)束定義結(jié)束 VARIABLE my_array : data_array ; - 在本進程中定義變量在本進程中定義變量my_array BEGIN - 進程開始進程開始 my_array := in_array ; - 將輸入值讀入變量將輸入值讀入變量 swap(my_array, 1, 2); - my_array、1、2是對應(yīng)于是對應(yīng)于data、low、high的實參的實參 swap(my_array, 2, 3); - 位置關(guān)聯(lián)法調(diào)用,位置關(guān)聯(lián)法調(diào)用, 第第2、第、第3元素交換元素交換 swap(my_arr
17、ay, 1, 2); - 位置關(guān)聯(lián)法調(diào)用,位置關(guān)聯(lián)法調(diào)用, 第第1、第、第2元素再次交換元素再次交換 out_array = my_array ; END Process ;ENDexmp; 第第8章章 VHDL結(jié)構(gòu)結(jié)構(gòu)中國礦業(yè)大學(xué)計算機學(xué)院中國礦業(yè)大學(xué)計算機學(xué)院第10章 礦業(yè)大學(xué)計算機學(xué)院礦業(yè)大學(xué)計算機學(xué)院2函數(shù)調(diào)用函數(shù)調(diào)用 函數(shù)調(diào)用與過程調(diào)用是十分相似的,不同之處函數(shù)調(diào)用與過程調(diào)用是十分相似的,不同之處是,調(diào)用函數(shù)將返還一個指定數(shù)據(jù)類型的值,函數(shù)是,調(diào)用函數(shù)將返還一個指定數(shù)據(jù)類型的值,函數(shù)的參量只能是輸入值。的參量只能是輸入值。 10.4 VHDL10.4 VHDL子程序子程序 第第8章章
18、 VHDL結(jié)構(gòu)結(jié)構(gòu)中國礦業(yè)大學(xué)計算機學(xué)院中國礦業(yè)大學(xué)計算機學(xué)院第10章 礦業(yè)大學(xué)計算機學(xué)院礦業(yè)大學(xué)計算機學(xué)院10.4 VHDL10.4 VHDL子程序子程序 10.4.7 RETUREN語句語句RETUREN;RETURN 表達式表達式; 前者用于結(jié)束過程,并沒有返回值,后者用于前者用于結(jié)束過程,并沒有返回值,后者用于函數(shù),有返回值。函數(shù),有返回值。第第8章章 VHDL結(jié)構(gòu)結(jié)構(gòu)中國礦業(yè)大學(xué)計算機學(xué)院中國礦業(yè)大學(xué)計算機學(xué)院第10章 礦業(yè)大學(xué)計算機學(xué)院礦業(yè)大學(xué)計算機學(xué)院10.4.8 并行過程調(diào)用語句并行過程調(diào)用語句 過程名過程名(關(guān)聯(lián)參量名關(guān)聯(lián)參量名); 【例例10-14】.PROCEDUREad
19、der(SIGNALa,b:INSTD_LOGIC;-過程名為過程名為adderSIGNALsum:OUTSTD_LOGIC);.adder(a1,b1,sum1);-并行過程調(diào)用并行過程調(diào)用.-在此,在此,a1、b1、sum1即為分別對應(yīng)于即為分別對應(yīng)于a、b、sum的關(guān)聯(lián)參量名的關(guān)聯(lián)參量名PROCESS(c1,c2);-進程語句執(zhí)行進程語句執(zhí)行BEGINAdder(c1,c2,s1);-順序過程調(diào)用,在此順序過程調(diào)用,在此c1、c2、s1即為分別對即為分別對ENDPROCESS;-應(yīng)于應(yīng)于a、b、sum的關(guān)聯(lián)參量名的關(guān)聯(lián)參量名10.4 VHDL10.4 VHDL子程序子程序 第第8章章 V
20、HDL結(jié)構(gòu)結(jié)構(gòu)中國礦業(yè)大學(xué)計算機學(xué)院中國礦業(yè)大學(xué)計算機學(xué)院第10章 礦業(yè)大學(xué)計算機學(xué)院礦業(yè)大學(xué)計算機學(xué)院10.4.8 并行過程調(diào)用語句并行過程調(diào)用語句 【例例10-15】PROCEDUREcheck(SIGNALa:INSTD_LOGIC_VECTOR;-在調(diào)用時在調(diào)用時SIGNALerror:OUTBOOLEAN)IS-再定位寬再定位寬VARIABLEfound_one:BOOLEAN:=FALSE;-設(shè)初始值設(shè)初始值BEGINFORiINaRANGELOOP-對位矢量對位矢量a的所有的位元素進行循環(huán)檢測的所有的位元素進行循環(huán)檢測IFa(i)=1THEN-發(fā)現(xiàn)發(fā)現(xiàn)a中有中有1IFfound_
21、oneTHEN-若若found_one為為TRUE,則表明發(fā)現(xiàn)了一個以上的,則表明發(fā)現(xiàn)了一個以上的1ERROR=TRUE;-發(fā)現(xiàn)了一個以上的發(fā)現(xiàn)了一個以上的1,令,令found_one為為TRUERETURN;-結(jié)束過程結(jié)束過程ENDIF;Found_one:=TRUE;-在在a中已發(fā)現(xiàn)了一個中已發(fā)現(xiàn)了一個1EndIF;EndLOOP;-再測再測a中的其他位中的其他位error=NOTfound_one;-如果沒有任何如果沒有任何1被發(fā)現(xiàn),被發(fā)現(xiàn),error將被置將被置TRUEENDPROCEDUREcheck;10.4 VHDL10.4 VHDL子程序子程序 第第8章章 VHDL結(jié)構(gòu)結(jié)構(gòu)中國
22、礦業(yè)大學(xué)計算機學(xué)院中國礦業(yè)大學(xué)計算機學(xué)院第10章 礦業(yè)大學(xué)計算機學(xué)院礦業(yè)大學(xué)計算機學(xué)院10.4.8 并行過程調(diào)用語句并行過程調(diào)用語句 .CHBLK:BLOCKSIGNALs1:STD_LOGIC_VECTOR(0TO0);-過程調(diào)用前設(shè)定位矢尺寸過程調(diào)用前設(shè)定位矢尺寸SIGNALs2:STD_LOGIC_VECTOR(0TO1);SIGNALs3:STD_LOGIC_VECTOR(0TO2);SIGNALs4:STD_LOGIC_VECTOR(0TO3);SIGNALe1,e2,e3,e4:Boolean;BEGINCheck(s1,e1);-并行過程調(diào)用,關(guān)聯(lián)參數(shù)名為并行過程調(diào)用,關(guān)聯(lián)參數(shù)名
23、為s1、e1Check(s2,e2);-并行過程調(diào)用,關(guān)聯(lián)參數(shù)名為并行過程調(diào)用,關(guān)聯(lián)參數(shù)名為s2、e2Check(s3,e3);-并行過程調(diào)用,關(guān)聯(lián)參數(shù)名為并行過程調(diào)用,關(guān)聯(lián)參數(shù)名為s3、e3Check(s4,e4);-并行過程調(diào)用,關(guān)聯(lián)參數(shù)名為并行過程調(diào)用,關(guān)聯(lián)參數(shù)名為s4、e4ENDBLOCK;.對對4個不同位寬的位矢量信號利用上個不同位寬的位矢量信號利用上述過程進行檢測的并行過程調(diào)用程序述過程進行檢測的并行過程調(diào)用程序10.4 VHDL10.4 VHDL子程序子程序 第第8章章 VHDL結(jié)構(gòu)結(jié)構(gòu)中國礦業(yè)大學(xué)計算機學(xué)院中國礦業(yè)大學(xué)計算機學(xué)院第10章 礦業(yè)大學(xué)計算機學(xué)院礦業(yè)大學(xué)計算機學(xué)院10
24、.5 VHDL10.5 VHDL程序包程序包回顧:庫的種類回顧:庫的種類 1. IEEE庫庫 2. STD庫庫 3. WORK庫庫 4. VITAL庫庫 第第8章章 VHDL結(jié)構(gòu)結(jié)構(gòu)中國礦業(yè)大學(xué)計算機學(xué)院中國礦業(yè)大學(xué)計算機學(xué)院第10章 礦業(yè)大學(xué)計算機學(xué)院礦業(yè)大學(xué)計算機學(xué)院 LIBRARY 庫名;庫名; USE 庫名庫名.程序包名程序包名.ALL ; LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.STD_ULOGIC ;USE IEEE.STD_LOGIC_1164.RISING_EDGE ; USE WORK.std_logic_1164.ALL; 10.5 VHDL10.5 VHDL程序包程序包回顧:庫的使用回顧:庫的使用第第8章章 VHDL結(jié)構(gòu)結(jié)構(gòu)中國礦業(yè)大學(xué)計算機學(xué)院中國礦業(yè)大學(xué)計算機學(xué)院第10章 礦業(yè)大學(xué)計算機學(xué)院礦業(yè)大學(xué)計算機學(xué)院定義程序包的一般語句結(jié)構(gòu)如下:定義程序包的一般語句結(jié)構(gòu)如下: PACKAGE 程序包名程序包名 IS - 程序包首程序包首 程序包首說明部分程序包首說明部分 END 程序包名程序包名; PACKAGE BODY 程序包名程序包名 IS - 程序包體程序包體 程序包體說明部分以及包體內(nèi)程
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年數(shù)控裁板鋸合作協(xié)議書
- 品牌市場推廣與銷售授權(quán)協(xié)議
- 2025年錘紋漆項目建議書
- 農(nóng)村土地流轉(zhuǎn)價格確認協(xié)議
- 農(nóng)業(yè)種植技術(shù)合作開發(fā)及轉(zhuǎn)讓合同
- 2025年鍋爐-汽機協(xié)調(diào)控制系統(tǒng)項目發(fā)展計劃
- 出口貿(mào)易業(yè)務(wù)合作及出口證明(8篇)
- 機械行業(yè)智能制造與裝配方案
- 2025年大型并網(wǎng)風(fēng)力發(fā)電機組項目發(fā)展計劃
- 市政建設(shè)中的能源管理策略試題及答案
- 三創(chuàng)賽獲獎-非遺文化創(chuàng)新創(chuàng)業(yè)計劃書
- MOOC 昆曲-江蘇開放大學(xué) 中國大學(xué)慕課答案
- 《大學(xué)生創(chuàng)業(yè)基礎(chǔ)系列課程》課件-第15課-商業(yè)計劃書-2學(xué)時
- 教你成為歌唱達人智慧樹知到期末考試答案2024年
- 河南省澠池縣上洼鉀長石礦礦山地質(zhì)環(huán)境保護與土地復(fù)墾方案
- 健康指南梅尼埃病的治療方法與康復(fù)計劃
- 當代美國幼小銜接政策的研究
- 《工廠改善報告》課件
- 老年人脊椎疾病的預(yù)防和康復(fù)
- 大學(xué)物理課件57波爾共振實驗
- 秦漢時期的服裝
評論
0/150
提交評論