VHDL并行語句ppt課件.ppt_第1頁
VHDL并行語句ppt課件.ppt_第2頁
VHDL并行語句ppt課件.ppt_第3頁
VHDL并行語句ppt課件.ppt_第4頁
VHDL并行語句ppt課件.ppt_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

六、VHDL語言的并行語句,1、并行信號賦值語句,4、進程語句,3、塊語句,2、條件信號賦值語句,5、元件例化語句,6、生成語句,7、并行過程調用語句,結構體,1,結構體中的并行語句模塊,2,1、并行信號賦值語句,賦值目標=表達式,例ARCHITECTUREcurtOFbc1ISSIGNALs1,e,f,g,h:STD_LOGIC;BEGINoutput1=aANDb;output2=c+d;g=eORf;h=eXORf;s1=g;ENDARCHITECTUREcurt;,3,2、條件信號賦值語句,賦值目標=表達式WHEN賦值條件ELSE表達式WHEN賦值條件ELSE.表達式;,例ENTITYmuxISPORT(a,b,c:INBIT;p1,p2:INBIT;z:OUTBIT);END;ARCHITECTUREbehvOFmuxISBEGINz=aWHENp1=1ELSEbWHENp2=1ELSEc;END;,4,選擇信號賦值語句,WITH選擇表達式SELECT賦值目標信號=表達式WHEN選擇值,表達式WHEN選擇值,.,表達式WHEN選擇值;,例.WITHseltSELECTmuxout=aWHEN0|1,-0或1bWHEN2TO5,-2或3,或4或5cWHEN6,dWHEN7,ZWHENOTHERS;.,5,3、塊語句,塊標號:BLOCK(塊保護表達式)接口說明;類屬說明;BEGIN并行語句;ENDBLOCK塊標號;,與大部分的VHDL語句不同,BLOCK語句的應用,包括其中的類屬說明和端口定義,都不會影響對原結構體的邏輯功能的仿真結果。,6,例.b1:BLOCKSIGNALs1:BIT;BEGINS1=aANDb;b2:BLOCKSIGNALs2:BIT;BEGINs2=cANDd;b3:BLOCKBEGINZ=s2;ENDBLOCKb3;ENDBLOCKb2;y=s1;ENDBLOCKb1;.,7,4、進程語句,進程標號:PROCESS(敏感信號參數(shù)表)IS進程說明部分BEGIN順序描述語句;ENDPROCESS進程標號;,PROCESS語句結構的一般表達格式如下,在一個結構體中多個PROCESS語句可以同時并發(fā)運行,而進程內部語句之間是順序關系。PROCESS語句在VHDL程序中,是描述硬件并行工作行為的最常用、最基本的語句。,8,PROCESS組成,PROCESS語句結構,進程說明,順序描述語句,敏感信號參數(shù)表,信號賦值語句,變量賦值語句,進程啟動語句,子程序調用語句,順序描述語句,進程跳出語句,9,(1)進程說明部分主要定義一些局部量,可包括數(shù)據(jù)類型、常數(shù)、屬性、子程序等。但需注意,在進程說明部分中不允許定義信號和共享變量。,(2)順序描述語句部分可分為賦值語句、進程啟動語句、子程序調用語句、順序描述語句和進程跳出語句等。,(3)為啟動進程,在進程中必須包含有一個顯式的敏感信號量表或者包含一個WAIT語句;敏感信號表應當緊跟在PROCESS之后,含有敏感信號表的進程語句中不允許再顯式出現(xiàn)WAIT語句。,說明,10,1.PROCESS為一無限循環(huán)語句,2.PROCESS語句具有順序/并行運行雙重性,3.進程必須由敏感信號的變化來啟動,4.信號是多個進程間的通信線,PROCESS語句特點,5.一個進程中只允許描述對應于一個時鐘信號的同步時序邏輯,11,例:ENTITYmulISPORT(a,b,c,selx,sely:INBIT;data_out:OUTBIT);ENDmul;ARCHITECTUREexOFmulISSIGNALtemp:BIT;BEGINp_a:PROCESS(a,b,selx)BEGINIF(selx=0)THENtemp=a;ELSEtemp=b;ENDIF;ENDPROCESSp_a;p_b:PROCESS(temp,c,sely)BEGINIF(sely=0)THENdata_out=temp;ELSEdata_out=c;ENDIF;ENDPROCESSp_b;ENDex;,12,上例的綜合結果,13,例:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT10ISPORT(CLR:INSTD_LOGIC;IN1:INSTD_LOGIC_VECTOR(3DOWNTO0);OUT1:OUTSTD_LOGIC_VECTOR(3DOWNTO0);ENDENTITYCNT10;ARCHITECTUREARTOFCNT10ISBEGINPROCESS(IN1,CLR)ISBEGINIF(CLR=1ORIN1=1001)THENOUT1S2,B=D1);-名字關聯(lián)方式U3:ND2PORTMAP(S1,S2,C=Z1);-混合關聯(lián)方式ENDARCHITECTUREARTORD41;,例:,20,6、生成語句,標號:FOR循環(huán)變量IN取值范圍GENERATE說明;BEGIN并行語句;ENDGENERATE標號;,表達式TO表達式;-遞增方式,如1TO5表達式DOWNTO表達式;-遞減方式,如5DOWNTO1,標號:IF條件GENERATE說明;BEGIN并行語句;ENDGENERATE標號;,取值范圍,生成語句有一種復制作用,在設計中,只要根據(jù)某些條件,設定好某一元件或設計單位,就可以利用生成語句復制一組完全相同的并行元件或設計單元電路結構。,:,生成語句的兩種形式,21,例:利用生成語句產生的八個相同的電路模塊,22,主要的VHDL程序如下:COMPONENTCOMPISPORT(X:INSTD_LOGIC;Y:OUTSTD_LOGIC);ENDCOMPONENTCOMP;SIGNALA,B:STD_LOGIC_VECTOR(0TO7);GEN:FORIINARANGEGENERATEU1:COMPPORTMAP(X=A(I),Y=B(I);ENDGENERATEGEN;,23,7、并行過程調用語句,PROCEDURE過程名(參數(shù)1;參數(shù)2;)IS聲明語句;BEGIN順序處理語句;END過程名;,并行過程調用語句可以作為一個并行語句直接出現(xiàn)在結構體或塊語句中。并行過程調用語句的功能等效于包含了同一個過程調用語句的進程。并行過程調用語句的語句調用格式與前面講的順序過程調用語句是相同的。,過程調用的實質內容要先裝入程序包中(Package):,24,過程名(關聯(lián)參數(shù)表);,并行過程調用:,位置關聯(lián)方式,名字關聯(lián)方式=,參數(shù)關聯(lián)方式,例:設有一過程PROCEDUREvect(a,b:INBIT;x,y:INOUTBIT);則調用時:位置關聯(lián)方式:vect(in1,in2,out1,out2);名字關聯(lián)方式:vect(a=in1,b=in2,x=out1,y=out2);,25,使用說明,1、過程的參數(shù)表中可以使用IN、OUT、INOUT三種;(不能理解為端口)2、過程可以返回多個變量(通過OUT、INOUT定義的參數(shù)返回);3、參數(shù)對象可以為常量(IN方式)、信號、變量;4、在進程外的過程調用為并行過程調用;在進程內的為順序過程調用;,26,函數(shù)調用:,FUNCTION函數(shù)名(參數(shù)1;參數(shù)2)RETURN數(shù)據(jù)類型名IS定義變量語句;BEGIN順序處理語句;RETURN返回變量名;END函數(shù)名;,函數(shù)調用的實質內容要先裝入程序包中(Package):,函數(shù)名(關聯(lián)參數(shù)表);,27,使用說明,1、函數(shù)的參數(shù)表中只能為IN的信號與常量;2、函數(shù)返回值只有一個(通過RETURN實現(xiàn),由函數(shù)名傳給調用者);3、也可以像過程一樣使用位置關聯(lián)方式和名字關聯(lián)方式;,1、過程可以有多個返回值,函數(shù)只有一個;2、參數(shù)傳遞方式不同:過程(INOUTINOUT)函數(shù)(IN),過程(Procedure)函數(shù)(Function)兩者的主要區(qū)別:,28,1庫的種類,A.IEEE庫,B.STD庫,C.WORK庫,D.VITAL庫,七、VHDL庫,29,2庫的用法,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.STD_ULOGIC;USEIEEE.STD_LOGIC_1164.RISING_EDGE;,USE語句的使用有兩種常用格式:USE庫名.程序包名.項目名;USE庫名.程序包名.ALL;,庫的作用范圍從一個實體說明開始到它所屬的結構體、配置為止,當有兩個實體時,第二個實體前要另加庫和包的說明。,30,程序包,常數(shù)說明,VHDL數(shù)據(jù)類型說明,元件定義,子程序,定義程序包的一般語句結構如下:PACKAGE程序包名IS-程序包首程序包首說明部分;END程序包名;PACKAGEBODY程序包名IS-程序包體程序包體說明部分以及包體內順序語句;END程序包名;,3VHDL程序包,31,例:程序包首,PACKAGElogicISTYPEthree_level_logicIS(0,1,z);-數(shù)據(jù)類型項目CONSTANTunknown_value:three_level_logic:=0;-常數(shù)項目FUNCTIONinvert(input:three_level_logic)RETURNthree_level_logic;-函數(shù)項目ENDlogic;,32,PACKAGEBODYlogicISFUNCTIONinvert(input:three_level_logic);-函數(shù)項目描述BEGINCASEinputISWHEN0=RETURN1;WHEN1=RETURN0;WHENZ=RETURNZ;ENDCASE;ENDinvert;ENDlogic;,程序包體,33,USElogic.three_level_logic,logic.invert;-使用數(shù)據(jù)類型和函數(shù)兩個項目ENTITYinverterISPORT(x:INthree_level_logic;y:OUTthree_level_logic);ENDinverter;ARCHITECTUREinverter_bodyOFinverterISBEGINkk:PROCESSBEGINY=invert(x)AFTER10ns;WAITONx;ENDPROCESS;ENDinverter_body;,該包使用例:,34,PACKAGEsevenISSUBTYPEsegmentsisBIT_VECTOR(0TO6);TYPEbcdISRANGE0TO9;ENDseven;USEWORK.seven.ALL;-WORK庫默認是打開的,ENTITYdecoderISPORT(input:bcd;drive:outsegments);ENDdecoder;ARCHITECTUREsimpleOFdecoderISBEGINWITHinputSELECTdrive=B1111110WHEN0,B0110000WHEN1,B1101101WHEN2,B1111001WHEN3,B0110011WHEN4,B1011011WHEN5,B1011111WHEN6,B1110000WHEN7,B1111111WHEN8,B1111011WHEN9,B0000000WHENOTHERS;ENDsimple;,例:,35,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論