版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第八章VHDL結(jié)構(gòu)電子信息工程學(xué)院董素鴿主要內(nèi)容VHDL實體、結(jié)構(gòu)體VHDL子程序VHDL庫VHDL程序包VHDL配置VHDL文字規(guī)則VHDL數(shù)據(jù)類型VHDL操作符8.1/8.2VHDL實體結(jié)構(gòu)體設(shè)計實體為電路描述的整體,包含實體和結(jié)構(gòu)體。設(shè)計庫結(jié)構(gòu)體實體設(shè)計實體子程序8.3VHDL子程序子程序(SUBPROGRAM)是一個VHDL程序模塊。該模塊利用順序語句來完成定義和某些算法描述。(類似于進程)子程序可以作為一個模塊被定義在程序包、結(jié)構(gòu)體和進程中。子程序函數(shù)過程定義調(diào)用8.3.1VHDL函數(shù)用戶自定義函數(shù)和庫中預(yù)定義函數(shù)自定義函數(shù)格式FUNCTION函數(shù)名(參數(shù)表)RETURN數(shù)據(jù)類型
--函數(shù)首FUNCTION函數(shù)名(參數(shù)表)RETURN數(shù)據(jù)類型IS--函數(shù)體
[說明部分]BEGIN
順序語句ENDFUNCTION函數(shù)名;在進程或結(jié)構(gòu)體中定義的函數(shù)不必定義函數(shù)首,在程序包中必須定義函數(shù)首索引實物Mux21“*”如何定義函數(shù)?如何使用定義好的函數(shù)?
例8-1在程序包中定義一個函數(shù)Libraryieee;Useieee.std_logic_1164.all;Packagepackexpis--定義程序包
functionmax(a,b:in
std_logic_vector)--定義函數(shù)首
returnstd_logic_vector;functionfunc1(a,b,c:real)--定義函數(shù)首
returnreal;function“*”(a,b:integer)--定義函數(shù)首
returninteger;functionas2(signalin1,in2:real)--定義函數(shù)首
returnreal;End;函數(shù)首放在程序包的聲明部分,建立一個程序包中函數(shù)的索引例8-1函數(shù)體的定義Packagebodypackexpisfunctionmax(a,b:in
std_logic_vector)--定義函數(shù)體
returnstd_logic_vectorisbeginifa>bthenreturna;elsereturnb;endif;endfunctionmax;end;函數(shù)體的定義放在程序包的內(nèi)容聲明部分例8-1函數(shù)調(diào)用部分Libraryieee;Useieee.std_logic_1164.all;Usework.packexp.all;EntityaxampisPort(data1,data2:instd_logic_vector(3downto0);data3,data4:instd_logic_vector(3downto0);out1,out2:outstd_logic_vector(3downto0));end;Architecturebhvofaxampisbeginout1<=max(data1,data2);process(data3,data4)beginout2<=max(data3,data4);endprocess;end;調(diào)用函數(shù),可順序,可并行例8-2
在結(jié)構(gòu)體中定義和調(diào)用函數(shù)實例LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYfuncISPORT(a:INSTD_LOGIC_VECTOR(0TO2);m:OUTSTD_LOGIC_VECTOR(0TO2));ENDENTITYfunc;ARCHITECTUREdemoOFfuncISFUNCTIONsam(x,y,z:STD_LOGIC)RETURNSTD_LOGICISBEGINRETURN(xANDy)ORz;ENDFUNCTIONsam;BEGIN
PROCESS(a)BEGINm(0)<=sam(a(0),a(1),a(2));m(1)<=sam(a(2),a(0),a(1));m(2)<=sam(a(1),a(2),a(0));ENDPROCESS;ENDARCHITECTUREdemo;函數(shù)體的定義放在architecture和begin之間函數(shù)定義及調(diào)用總結(jié)1、在程序包中定義函數(shù)用PACKAGE聲明一個程序包,并將所要定義的函數(shù)的函數(shù)首放在程序包聲明部分,創(chuàng)建索引。該程序包包含在默認工程工作庫WORK中在程序包結(jié)構(gòu)部分定義函數(shù)的函數(shù)體在設(shè)計實體中打開聲明的程序包,在電路描述時調(diào)用函數(shù)2、在結(jié)構(gòu)體中定義的函數(shù)在ARCHITECTURE和BEGIN之間定義函數(shù)體在電路描述中調(diào)用函數(shù)8.3.2VHDL重載函數(shù)運算符的重載--如何由來?重載函數(shù),即允許所定義的函數(shù)具有相同的函數(shù)名,但函數(shù)中定義的操作數(shù)具有不同的數(shù)據(jù)類型。以操作數(shù)數(shù)據(jù)類型區(qū)分的同名函數(shù)稱為重載函數(shù)(OVERLOADEDFUNCTION)重載函數(shù)如何定義和使用重載函數(shù)?
例8-3重載函數(shù)定義及調(diào)用實例LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;PACKAGEpackexpISFUNCTIONmax(a,b:IN
STD_LOGIC_VECTOR)RETURNSTD_LOGIC_VECTOR;FUNCTIONmax(a,b:IN
BIT_VECTOR)RETURNBIT_VECTOR;FUNCTIONmax(a,b:IN
INTEGER)RETURNINTEGER;END;例8-3函數(shù)體定義部分PACKAGEBODYpackexpISFUNCTIONmax(a,b:INSTD_LOGIC_VECTOR)RETURNSTD_LOGIC_VECTORISBEGINIFa>bTHENRETURNa;ELSERETURNb;ENDIF;ENDFUNCTIONmax;FUNCTIONmax(a,b:ININTEGER)RETURNINTEGERISBEGINIFa>bTHENRETURNa;ELSERETURNb;ENDIF;ENDFUNCTIONmax;FUNCTIONmax(a,b:INBIT_VECTOR)RETURNBIT_VECTORISBEGINIFa>bTHENRETURNa;ELSERETURNb;ENDIF;ENDFUNCTIONmax;END;例8-3函數(shù)調(diào)用部分LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEWORK.packexp.ALL;ENTITYaxampISPORT(a1,b1:INSTD_LOGIC_VECTOR(3DOWNTO0);a2,b2:INBIT_VECTOR(4DOWNTO0);a3,b3:ININTEGERRANGE0TO15;c1:OUTSTD_LOGIC_VECTOR(3DOWNTO0);c2:OUTBIT_VECTOR(4DOWNTO0);c3:OUTINTEGERRANGE0TO15);END;ARCHITECTUREbhvOFaxampISBEGIN
c1<=max(a1,b1);
c2<=max(a2,b2);
c3<=max(a3,b3);END;運算符的重載VHDL不允許不同數(shù)據(jù)類型的操作數(shù)間直接操作或運算。當(dāng)對不同數(shù)據(jù)類型的操作數(shù)運算時,怎么辦?在程序包STD_LOGIC_UNSIGNED中預(yù)定義了運算符重載函數(shù),這些函數(shù)對不同數(shù)據(jù)類型間的操作數(shù)運算做了定義。在使用運算符重載函數(shù)時,打開STD_LOGIC_UNSIGNED程序包即可運算符重載函數(shù)長什么樣?沒有調(diào)用函數(shù)如何進行函數(shù)重載?例8-4函數(shù)名即運算符,因此,在不同數(shù)據(jù)類型操作時,運算符本身已經(jīng)暗含了函數(shù)的調(diào)用調(diào)用運算符重載函數(shù),打開IEEE.STD_LOGIC_UNSIGNED程序包WHY?8.3.3VHDL轉(zhuǎn)換函數(shù)VHDL是一種強類型語言,當(dāng)數(shù)據(jù)類型不一致時,需要轉(zhuǎn)換一致才能給信號賦值或完成各種運算操作。對于強類型語言,需要預(yù)定義類型轉(zhuǎn)換函數(shù),在操作數(shù)類型不一致時,調(diào)用類型轉(zhuǎn)換函數(shù)。在VHDL的IEEE庫中,預(yù)定義了很多類型轉(zhuǎn)換函數(shù),主要是數(shù)據(jù)類型轉(zhuǎn)換函數(shù)。如需VHDL庫以外的新的轉(zhuǎn)換函數(shù),則需要用戶自己定義。VHDL預(yù)定義轉(zhuǎn)換函數(shù)
表8-1IEEE庫類型轉(zhuǎn)換函數(shù)表VHDL預(yù)定義轉(zhuǎn)換函數(shù)使用實例
例8-5LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYexgIS
PORT(a,b:INBIT_VECTOR(3DOWNTO0);q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));END;ARCHITECTURErtlOFexgISBEGINq<=TO_STDLOGICVECTOR(aANDb);END;例8-6用戶自定義轉(zhuǎn)換函數(shù)
例8-70-255自然數(shù)轉(zhuǎn)換為8位二進制數(shù)例8-7自定義轉(zhuǎn)換函數(shù)的調(diào)用實例8.3.4VHDL決斷函數(shù)決斷函數(shù)用于解決信號被多個驅(qū)動源驅(qū)動時,驅(qū)動信號間的競爭問題。決斷函數(shù)通過決斷條件來確定多驅(qū)動源的信號具體被哪一個驅(qū)動源驅(qū)動。8.3.5VHDL過程函數(shù)子程序過程過程與函數(shù)有諸多相似之處,但也有不同過程的定義,調(diào)用方法VHDL過程定義過程的定義也分為過程首和過程體過程語句的格式:PROCEDURE過程名(參數(shù)表)--過程首PROCEDURE過程名(參數(shù)表)IS[說明部分]BEGIN--過程體
順序語句;ENDPROCEDURE過程名;同函數(shù)一樣,在結(jié)構(gòu)體和進程中定義的過程不需要過程首,而在程序包中必須定義過程首。VHDL過程中的參數(shù)表函數(shù)定義參數(shù)表:functionmax(a,b:in
std_logic_vector)--輸入?yún)?shù)表returnstd_logic_vector;--返回值(輸出)過程定義參數(shù)表:PROCEDUREpro1(VARIABLE
a,b:INOUTREAL);PROCEDUREpro2(CONSTANTa1:ININTEGER;
VARIABLE
b:OUTINTEGER);PROCEDUREpro3(SIGNAL
sig:INOUTBIT);VHDL過程參數(shù)表參數(shù)類型:數(shù)據(jù)對象常數(shù),變量,信號參數(shù)工作模式:IN,OUT,INOUT工作模式:默認為IN參數(shù)類型:模式為IN時,默認為常量,模式為INOUT或OUT時,默認為變量VHDL過程的定義
例8-8例8-9VHDL過程的調(diào)用順序調(diào)用和并行調(diào)用順序調(diào)用相當(dāng)于在順序語句中插入了一條順序語句并行調(diào)用相當(dāng)于一個進程,當(dāng)過程體中定義的任一IN或INOUT的目標參量發(fā)生改變時,將啟動過程。VHDL過程定義及調(diào)用實例
例8-10例8-10調(diào)用部分區(qū)別于函數(shù)調(diào)用c1<=max(a1,b1);8.3.6VHDL重載過程兩個或兩個以上有相同的過程名不同的參數(shù)表的過程成為重載過程(OVERLOADEDPROCEDURE)PROCEDUREcalcu(v1,v2:INREAL;SIGNALout1:INOUTINTEGER);PROCEDUREcalcu(v1,v2:ININTEGER;SIGNALout1:INOUTREAL);…calcu(20.15,1.42,sign1);calcu(23,320,sign2);…8.3.7子程序調(diào)用語句子程序調(diào)用包含函數(shù)調(diào)用和過程調(diào)用過程調(diào)用與函數(shù)調(diào)用的區(qū)別:過程調(diào)用直接將過程名及參數(shù)表作為一條語句使用函數(shù)調(diào)用是將函數(shù)作為一個一條語句中的一個因子,即一個操作數(shù)或者是一個賦值源等。在實際的工程開發(fā)中,子程序的定義與調(diào)用一般分別進行,子程序首和子程序體的定義放在公共的程序包中,調(diào)用者打開程序包即可調(diào)用子程序。過程調(diào)用格式過程調(diào)用格式:過程名[([形參名=>]實參表達式{,[形參名=>]實參表達式})];兩種關(guān)聯(lián)方式:名字關(guān)聯(lián)法和位置關(guān)聯(lián)法PROCEDUREcalcu(v1,v2:INREAL;SIGNALout1:INOUTINTEGER);calcu(v1=>20.15,v2=>1.42,out1=>sign1);--名字關(guān)聯(lián)calcu(20.15,1.42,sign1);--位置關(guān)聯(lián)過程調(diào)用完成的工作:1、傳遞輸入?yún)?shù)給形參2、執(zhí)行該過程3、傳遞輸出的形參給對應(yīng)的實參過程調(diào)用實例
例8-12例8-12例8-13過程調(diào)用實例2
順序調(diào)用8.3.8并行過程調(diào)用語句例8-15對例8-15中定義的過程進行調(diào)用子程序定義及調(diào)用總結(jié)函數(shù)、過程的定義、調(diào)用函數(shù)與過程相同點函數(shù)與過程不同點函數(shù)、過程的定義總結(jié)均可以定義在程序包,結(jié)構(gòu)體或進程中在程序包中定義的函數(shù)或過程需要有函數(shù)首或過程首,在結(jié)構(gòu)體和進程中定義的不需要有函數(shù)首或過程首在程序包中定義函數(shù)或過程,首先在聲明程序包部分定義函數(shù)首或過程首在函數(shù)包體部分描述函數(shù)體或過程體在結(jié)構(gòu)體中定義的函數(shù)或過程定義在ARCHITECTURE和BEGIN之間函數(shù)、過程定義的不同函數(shù)定義的參數(shù)表均為輸入?yún)?shù),函數(shù)輸出參數(shù)以返回值的形式functionmax(a,b:in
std_logic_vector)--輸入?yún)?shù)表returnstd_logic_vector;--返回值(輸出)過程定義參數(shù)表可以為輸入和輸出參數(shù),過程沒有返回值,輸出直接通過輸出參數(shù)傳遞PROCEDUREpro1(VARIABLE
a,b:INOUTREAL);函數(shù)、過程的調(diào)用總結(jié)定義在程序包中的函數(shù)或過程,在調(diào)用前將程序包打開定義在結(jié)構(gòu)體或進程中的函數(shù)或過程,直接調(diào)用函數(shù)和過程的調(diào)用都可以是并行調(diào)用或順序調(diào)用函數(shù)的調(diào)用作為語句因子出現(xiàn)c1<=max(a1,b1);過程的調(diào)用單獨為一條語句calcu(20.15,1.42,sign1);END8.4VHDL庫VHDL庫:存放預(yù)定義的數(shù)據(jù)類型,子程序,設(shè)計實體等公共信息包的倉庫設(shè)計庫:用戶設(shè)定的文件目錄所對應(yīng)的WORK庫資源庫:常規(guī)元件和標準模塊存放的庫IEEESTDWORKVITALIEEE庫最常用的設(shè)計庫,包含有IEEE標準的程序包和其他一些支持工業(yè)標準的程序包STD_LOGIC_1164STD_LOGIC_ARITHSTD_LOGIC_SIGNEDSTD_LOGIC_UNSIGNEDIEEE庫不是VHDL的標準庫,使用時,需顯式打開STD庫存放標準程序包和文件操作相關(guān)的程序包的庫STANDARDTEXTIO(文件輸入輸出程序包)STD庫符合VHDL標準,默認打開,不必顯式打開WORK庫存放用戶設(shè)計和定義的一些設(shè)計單元和程序包的庫,用戶自己的工作庫默認為用戶設(shè)計工程存放的文件夾該庫不允許設(shè)定在根目錄下,因此每一個工程必須對應(yīng)一個文件夾該庫默認打開,不需顯式打開VITAL庫該庫中存放了仿真精度相關(guān)的程序包,使用VITAL庫可以提高門級仿真時的精度VITAL_TIMINGVITAL_PRIMITIVED一般不需要打開此庫庫的用法放在實體設(shè)計的最前面需要顯式打開的庫用LIBRARY關(guān)鍵詞打開用USE語句調(diào)用庫中的程序包USE庫名.程序包名.項目名;(打開程序包中的特定項目)USE庫名.程序包名.ALL;(打開程序包中的所有項目)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.STD_ULOGIC;USEIEEE.STD_LOGIC_1164.RISING_EDGE;使用USE庫名.程序包名.ALL;這種方法會極大的浪費時間和資源WHY?庫的用法最好的庫設(shè)置方法是自定義一個資源庫,把以往相關(guān)的設(shè)計資料分類裝入自建的資源庫備用WORK庫只作為當(dāng)前的設(shè)計庫,每次設(shè)計前把與當(dāng)前設(shè)計相關(guān)的資料裝入WORK中,包括標準庫的有用資料。復(fù)制資料源程序到WORK庫所在的文件夾,編譯即可用。USEWORK.STD_LOGIC_1164.ALL;8.5VHDL程序包預(yù)定義程序包:存放VHDL預(yù)定義好的數(shù)據(jù)類型,子程序,元器件等用戶自定義程序包:用戶自己設(shè)計的用于存放公共的數(shù)據(jù)類型,子程序,元器件等的包程序包的基本組成:常數(shù)說明VHDL數(shù)據(jù)類型說明元件定義子程序程序包的結(jié)構(gòu)程序包分程序包首和程序包體程序包結(jié)構(gòu):PACKAGE程序包名IS--程序包首
程序包首說明部分END程序包名;PACKAGEBODY程序包名IS--程序包體
程序包體說明部分及包體內(nèi)容END程序包名;程序包體為非必須內(nèi)容,當(dāng)程序包中沒有元件和子程序說明時,不需要有程序包體幾個主要的預(yù)定義程序包STD_LOGIC_1164最常用的程序包,定義了常用的基本數(shù)據(jù)類型、子類型和函數(shù)的定義STD_LOGIC_ARITH擴展了三個新的數(shù)據(jù)類型,定義了相關(guān)的算術(shù)運算符和數(shù)據(jù)類型轉(zhuǎn)換函數(shù)STD_LOGIC_UNSIGNEDSTD_LOGIC_SIGNED定義有符號和無符號相關(guān)的運算操作符STANDSRD定義基本的數(shù)據(jù)類型,子類型和函數(shù)TEXTIO文件輸入輸出操作相關(guān)程序包程序包應(yīng)用實例例8-16程序包定義方法及定義內(nèi)容例8-17無程序包體的程序包定義及使用先定義,再打開,再使用程序包中的內(nèi)容8.6VHDL配置為設(shè)計實體指定結(jié)構(gòu)體或為例化元件實體制定希望的結(jié)構(gòu)體一個設(shè)計實體可以對應(yīng)不同的結(jié)構(gòu)體,通過配置可以驗證不同結(jié)構(gòu)體的優(yōu)劣配置格式:CONFIGURATION配置名OF實體名IS配置說明END配置名;實例8.7VHDL文字規(guī)則數(shù)字字符串標識符下標名8.7VHDL文字規(guī)則數(shù)字:整數(shù):十進制數(shù)5,678,0,156E2=1560045_234_287=45234287實數(shù):帶有小數(shù)點的數(shù)(不可綜合)1.335,88_607_551.453_90944.99E-2以數(shù)制基數(shù)表示的數(shù)字:基數(shù)#數(shù)據(jù)#10#170#16#FE#字符串字符是用單引號括起來的ASCII字符,可以是數(shù)值,也可以是符號或字母‘R’,‘a(chǎn)’,‘*’,‘Z’,‘11’,‘0’字符串是一維的字符數(shù)組,需放在雙引號中字符串有數(shù)位字符串和文字字符串文字字符串“ERROR”,“BothSandQequalto1”數(shù)位字符串基數(shù)符“數(shù)據(jù)”B“1_1101_1110”O(jiān)“15”X“AD0”標識符標識符是常數(shù),變量,信號,端口,子程序或參數(shù)的名字等書寫規(guī)則:有效字符包括26個大小寫英文字母,數(shù)字0-9,以及下劃線“_”只能以英文字母起始字母不分大小寫下劃線不能連用下標名下標名用于只是數(shù)組型變量或信號的某一元素標識符(表達式)y<=a(m);z<=a(3)如果下標名的表達式不是具體的數(shù)值,可能會造成不可計算,資源浪費也較大,因此,如不是必須,盡量不使用未知表達式做下標名8.8VHDL數(shù)據(jù)類型VHDL數(shù)據(jù)類型有預(yù)定義數(shù)據(jù)類型和自定義數(shù)據(jù)類型VHDL數(shù)據(jù)類型可以分為4大類:標量型:實數(shù)、整數(shù)、枚舉、時間復(fù)合類型:數(shù)組型,記錄型存取類型:為數(shù)據(jù)對象提供存取方式文件類型:提供多值存取類型預(yù)定義數(shù)據(jù)類型布爾(BOOLEAN)類型TYPEBOOLEANIS(FALSE,TURE);位(BIT)數(shù)據(jù)類型TYPEBITIS(‘0’,‘1’);位矢量(BIT_VECTOR)類型TYPEBIT_VECTORISARRAY(NATURALRANGE<>)OFBIT;預(yù)定義數(shù)據(jù)類型字符(CHARACTER)類型用單引號括起來,區(qū)分大小寫,‘B’,‘b’整數(shù)(INTEGER)類型有符號,無符號整數(shù),用RANGE限定范圍實數(shù)(REAL)類型浮點數(shù),1.6,只能仿真,不能綜合。用數(shù)字電路表示浮點數(shù)常困難預(yù)定義數(shù)據(jù)類型字符串(STRING)類型用雙引號標明,可以綜合時間(TIME)類型VHDL中唯一的預(yù)定義物理數(shù)據(jù)類型,只能用于仿真,不能綜合文件(FILES)類型傳輸大量數(shù)據(jù)時一般使用文件類型,比如時序仿真的激勵信號和仿真波形輸出等,在TEXTIO程序包中定義了文件I/O傳輸方法8.8.2IEEE預(yù)定義標準邏輯位與矢量1.標準邏輯位STD_LOGIC數(shù)據(jù)類型9種取值2.標準邏輯矢量STD_LOGIC_VECTOR數(shù)據(jù)類型數(shù)組型數(shù)據(jù)類型IEEE庫不是VHDL的標準庫,因此在IEEE中定義的這兩個數(shù)據(jù)類型在使用時要顯式打開其所在的庫和程序包8.8.3其他預(yù)定義標準數(shù)據(jù)類型在程序包STD_LOGIC_ARITH中定義了三個新的數(shù)據(jù)類型,分別是:無符號型(UNSIGNED)有符號型(SIGNED)小整型(SMALL_INT)對于無符號數(shù),所有位都是有效數(shù)據(jù)為,對于有符號數(shù),最左位為符號位UNSIGNED(0TO10)“10000000001”=1025SIGNED(0TO10)“10000000001”=-18.8.4VHDL數(shù)組類型一維多維(綜合器只支持一維)數(shù)組元素:任何一種數(shù)據(jù)類型數(shù)組長度:可以限定,可以非限定TYPE數(shù)組名ISARRAY(數(shù)組范圍)OF數(shù)據(jù)類型;TYPE數(shù)組名ISARRAY(數(shù)組下標名RANGE<>)OF數(shù)據(jù)類型;例8-18,8-19,8-20例8-18LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYampISPORT(a1,a2:INBIT_VECTOR(3DOWNTO0);c1,c2,c3:INSTD_LOGIC_VECTOR(3DOWNTO0);b1,b2,b3:INTEGERRANGE0TO15;d1,d2,d3,d4:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDamp;…d1<=TO_STDLOGICVECTOR(a1ANDa2);--(1)d2<=CONV_STD_LOGIC_VECTOR(b1,4)WHENCONV_INTEGER(b2)=9elseCONV_STD_LOGIC_VECTOR(b3,4);--(2)d3<=c1WHENCONV_INTEGER(c2)=8ELSEc3;--(3)d4<=c1WHENc2=8elsec3;--(4)…例8-19LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYdecoder3to8ISPORT(input:INSTD_LOGIC_VECTOR(2DOWNTO0);output:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDdecoder3to8;ARCHITECTUREbehaveOFdecoder3to8ISBEGINPROCESS(input)BEGINoutput<=(OTHERS=>'0');output(CONV_INTEGER(input))<='1';ENDPROCESS;ENDbehave;例8-20FUNCTIONTo_bit(s:std_ulogic;xmap:BIT:='0')RETURNBIT;FUNCTIONTo_bitvector(s:std_logic_vector;xmap:BIT:='0')RETURNBIT_VECTOR;FUNCTIONTo_bitvector(s:std_ulogic_vector;xmap:BIT:='0')RETURNBIT_VECTOR;下面是轉(zhuǎn)換函數(shù)To_bitvector的函數(shù)體:FUNCTIONTo_bitvector(s:std_logic_vector;xmap:BIT:='0')RETURNBIT_VECTORISALIASsv:std_logic_vector(s'LENGTH-1DOWNTO0)ISs;VARIABLEresult:BIT_VECTOR(s'LENGTH-1DOWNTO0);BEGINFORiINresult'RANGELOOPCASEsv(i)ISWHEN'0'|'L'=>result(i):='0';WHEN'1'|'H'=>result(i):='1';WHENOTHERS=>result(i):=xmap;ENDCASE;ENDLOOP;RETURNresult;END;8.9VHDL操作符邏輯操作符(LogicOperator)關(guān)系操作符(RelationalOperator)算術(shù)操作符(ArithmeticOperator)符號操作符(SignOperator)VHDL操作符使用規(guī)則嚴格遵循在基本操作符間操作數(shù)是同數(shù)據(jù)類型的規(guī)則當(dāng)操作數(shù)數(shù)據(jù)類型不同時,要使用運算符的重載嚴格遵循操作數(shù)的數(shù)據(jù)類型必須與操作符所要求的數(shù)據(jù)類型完全一致的規(guī)則VHDL操作符優(yōu)先級邏輯運算符使用規(guī)則:1、位寬要相等2、運算符相同且為AND,OR,XOR時,不需要加括號,其余情況需要加括號例8-21SIGNALa,b,c:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALd,e,f,g:STD_LOGIC_VECTOR(1DOWNTO0);SIGNALh,I,j,k:STD_LOGIC;SIGNALl,m,n,o,p:BOOLEAN;...a<=bANDc;--b、c相與后向a賦
溫馨提示
- 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 移動優(yōu)化策略與趨勢-洞察分析
- 通風(fēng)性能評估方法-洞察分析
- 頁巖氣開發(fā)技術(shù)研究-洞察分析
- 施工承包方與業(yè)主、監(jiān)理單位的配合協(xié)調(diào)措施
- 信息技術(shù)四年級上冊教學(xué)計劃
- 線上教學(xué)與返校開學(xué)的教學(xué)銜接計劃
- 地方標準編制說明范文
- 施工準備工作計劃
- 園林綠化工程施工文明施工措施
- 施工機械投入保障措施勞動力需求計劃保證措施材料設(shè)備進場計劃保證措施
- 生產(chǎn)計劃控制程序文件
- 山東省濟南市2022年中考英語情景運用拔高練習(xí)(Word版含答案)
- 中學(xué)校本課程教材《生活中的化學(xué)》
- 污水處理站運行維護管理方案
- 農(nóng)村公路養(yǎng)護工程施工組織設(shè)計
- 個人如何開辦婚介公司,婚介公司經(jīng)營和管理
- 公司物流倉儲規(guī)劃方案及建議書
- 天津市歷年社會保險繳費基數(shù)、比例
- 2024國家開放大學(xué)電大??啤秾W(xué)前兒童發(fā)展心理學(xué)》期末試題及答案
- 汽車座椅面套縫紉工時定額的研究
- 立體幾何常考定理總結(jié)(八大定理)
評論
0/150
提交評論