教學(xué)第七章VHDL語言屬性描述課件_第1頁
教學(xué)第七章VHDL語言屬性描述課件_第2頁
教學(xué)第七章VHDL語言屬性描述課件_第3頁
教學(xué)第七章VHDL語言屬性描述課件_第4頁
教學(xué)第七章VHDL語言屬性描述課件_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第七章VHDL語言屬性描述屬性是指關(guān)于設(shè)計實體、結(jié)構(gòu)體、類型、信號等項目的指定特性。屬性提供了描述特定對象的多個側(cè)面值的手段信號屬性在檢測信號變化和建立詳細(xì)的時域模型時非常重要為什么要有屬性:電路元件需要時鐘信號同步需要控制信號控制整個電路的行為(進(jìn)程的執(zhí)行)時鐘信號與控制信號的使用多種多樣利用屬性可以使VHDL源代碼更加簡明扼要,便于理解第七章VHDL語言屬性描述屬性VHDL提供5類預(yù)定義屬性:1、數(shù)值類屬性2、函數(shù)類屬性3、信號類屬性4、數(shù)據(jù)類型類屬性5、數(shù)組范圍類屬性屬性VHDL提供5類預(yù)定義屬性:7.1.1常用數(shù)據(jù)的數(shù)值屬性

主要用于返回常用數(shù)據(jù)類型、數(shù)組或是塊的有關(guān)值: 例如:返回數(shù)組長度、數(shù)據(jù)類型的上下界等。常用數(shù)據(jù)類型的數(shù)值類屬性:’left:返回一個數(shù)據(jù)類型或子類型最左邊的值。’right:返回一個數(shù)據(jù)類型或子類型最右邊的值。’high:返回一個數(shù)據(jù)類型或子類型的最大值?!痩ow:返回一個數(shù)據(jù)類型或子類型的最小值。7.1數(shù)值類屬性7.1.1常用數(shù)據(jù)的數(shù)值屬性7.1數(shù)值類屬性屬性規(guī)則:上下限:對數(shù)值取最大、最小值;對枚舉類型數(shù)據(jù)下限取左邊界值,上限取右邊界值;對數(shù)組取數(shù)組區(qū)間的最大最小值。左右邊界:按書寫順序取左邊或右邊值。例:SUBTYPEnatISNaturalRange0to255;X:=nat’HIGH; --x等于255X:=nat’LOW; --x等于0X:=nat’RIGHT; --x等于255X:=nat’LEFT; --x等于07.1數(shù)值類屬性屬性規(guī)則:7.1數(shù)值類屬性PROCESS(a)TYPEbit16ISArray(15downto0)OFstd_logic;VARIABLElef,rig,up,low:NATURAL;BEGIN lef:=bit16’LEFT; --15 rig:=bit16’RIGHT; --0 up:=bit16’HIGH; --15 low:=bit16’LOW; --0ENDPROCESS;PROCESS(a)TYPEbit16ISArray(0to15)OFstd_logic;VARIABLElef,rig,up,low:NATURAL;BEGIN lef:=bit16’LEFT; --0 rig:=bit16’RIGHT; --15 up:=bit16’HIGH; --15 low:=bit16’LOW; --0ENDPROCESS;7.1數(shù)值類屬性在遞增區(qū)間‘LEFT=‘LOW‘RIGHT=‘HIGH在遞減區(qū)間‘LEFT=‘HIGH‘RIGHT=‘LOW例7-1:PROCESS(a)7.1數(shù)值類屬性在遞增區(qū)間在遞減區(qū)間例例7-2枚舉類型數(shù)據(jù)數(shù)值屬性描述ArchitecturevoltbofvoltaISTYPEvoltIS(uV,mV,V,kV);SUBTYPEs_voltISvoltRANGE(VDOWNTOmV);SIGNALS1,S2,S3,S4:VOLT;BEGIN S1<=volt’HIGH; --kV S2<=volt’LOW; --uV S3<=s_volt’LEFT; --V S4<=s_volt’RIGHT; --mVENDvoltb;7.1數(shù)值類屬性例7-2枚舉類型數(shù)據(jù)數(shù)值屬性描述7.1數(shù)值類屬性7.1.1數(shù)組的數(shù)值屬性

數(shù)組屬性只有一個:取數(shù)組的長度值。格式: <數(shù)組名>‘LENGTH(n);其中n是多維數(shù)組的維數(shù);如二維數(shù)組n=2;對一維數(shù)組n缺省。例7-3一維數(shù)組數(shù)值屬性描述PROCESS(b)TYPEbit8ISarray(7downto0)ofbit;TYPEbit31_8ISarray(31downto8)ofbit;VARIABLEb1,b2:integer;BEGIN b1:=bit8’LENGTH; --b1=8 B2:=BIT31_8’LENGTH; --b2=24ENDPROCESS7.1數(shù)值類屬性7.1.1數(shù)組的數(shù)值屬性7.1數(shù)值類屬性指屬性以函數(shù)的形式返回有關(guān)數(shù)據(jù)類型、數(shù)組或是信號的信息。函數(shù)類屬性使用時以函數(shù)表達(dá)式的形式出現(xiàn),屬性根據(jù)輸入的自變量值去執(zhí)行函數(shù),返回一個相應(yīng)的值。該返回值可能是數(shù)組區(qū)間的某一個值,也可能是信號的變化值,或是枚舉數(shù)據(jù)的位置序號等。函數(shù)類屬性分三類:數(shù)據(jù)類型屬性函數(shù)數(shù)組類型屬性函數(shù)信號屬性函數(shù)7.2函數(shù)類屬性指屬性以函數(shù)的形式返回有關(guān)數(shù)據(jù)類7.2函數(shù)類屬性7.2.1

數(shù)據(jù)類型屬性函數(shù)主要用來得到數(shù)據(jù)類型的各種相關(guān)信息,共6種:(1)’POS(數(shù)據(jù)值)--返回數(shù)據(jù)類型定義中輸入的X值的位置序號(2)’VAL(位置序號)--返回輸入的位置序號X處的值(3)’SUCC(數(shù)據(jù)值)--返回數(shù)據(jù)類型定義中該值的下一個對應(yīng)值(4)’PRED(數(shù)據(jù)值)--返回數(shù)據(jù)類型定義中該值的前一個對應(yīng)值(5)’LEFTOF(數(shù)據(jù)值)--返回數(shù)據(jù)類型定義中該值的左邊值(6)’RIGHTOF(數(shù)據(jù)值)--返回數(shù)據(jù)類型定義中該值的右邊值對于遞增區(qū)間:’SUCC(x)=’RIGHTOF(x)

’PRED(x)=’LEFTOF(x)

對于遞減區(qū)間:’SUCC(x)=’LEFTOF(x)

’PRED(x)=’RIGHTOF(x)

7.2函數(shù)類屬性7.2.1數(shù)據(jù)類型屬性函數(shù)7.2函數(shù)類屬性例7-4PACKAGEw_packISTYPEweekIS(sun,mon,tue,wed,thu,fri,sat);TYPEr_weekISweekRANGEsatDOWNTOsun;ENDw_pack;求自定義類型的屬性:week’SUCC(mon) --得tueweek’PRED(mon) --得sunweek’LEFTOF(mon) --得sunweek’RIGHTOF(mon) --得tuer_week’SUCC(mon) --得tuer_week’PRED(mon) --得sunr_week’LEFTOF(mon) --得tuer_week’RIGHTOF(mon) --得sun7.2函數(shù)類屬性例7-47.2函數(shù)類屬性7.2.2

數(shù)組屬性函數(shù)主要用來得到數(shù)組的信息。共有4種屬性:(1)’LEFT(n)--得到n區(qū)間的左端邊界號(2)’RIGHT(n)--得到n區(qū)間的右端邊界號(3)’HIGH(n)--得到n區(qū)間的高端邊界號(4)’LOW(n)--得到n區(qū)間的低端邊界號其中n表示數(shù)組的區(qū)間序號(即維數(shù))。當(dāng)n=1時可以缺省,默認(rèn)為一維數(shù)組。在遞減區(qū)間‘LEFT=‘HIGH‘RIGHT=‘LOW在遞增區(qū)間‘LEFT=‘LOW‘RIGHT=‘HIGH7.2函數(shù)類屬性7.2.2數(shù)組屬性函數(shù)TYPEmatrixISARRAY(0TO7,15DOWNTO0)OFstd_logic;i<=matrix’left(1); --i=0;i<=matrix’right(1); --i=7;i<=matrix’high(1); --i=7;i<=matrix’low(1); --i=0;i<=matrix’left(2); --i=15;i<=matrix’right(2); --i=0;i<=matrix’high(2); --i=15;i<=matrix’low(2); --i=0;TYPEmatrixISARRAY(0TO7,7.2函數(shù)類屬性7.2.3

信號類型屬性函數(shù)主要用來得到信號的各種行為功能信息:包括信號值的變化、信號變化后經(jīng)過的時間、變化前的信號值等。共有5種屬性:(1)’EVENT--當(dāng)前很短的時間內(nèi)信號發(fā)生了變化,則返回TRUE,否則返回FALSE。(2)’ACTIVE--當(dāng)前很短的時間內(nèi)信號活躍,則返回TRUE,否則返回FALSE。(3)’LAST_EVENT--返回信號從前一個事件發(fā)生到現(xiàn)在的時間值。(4)’LAST_VALUE--返回信號在最近一個事件發(fā)生以前的值(5)’LAST_ACTIVE--返回信號從前一次活躍到現(xiàn)在的時間值7.2函數(shù)類屬性7.2.3信號類型屬性函數(shù)7.2函數(shù)類屬性1

屬性函數(shù)’EVENT和’LAST_VALUE

’EVENT主要用來檢測脈沖信號的正跳變或負(fù)跳變邊沿,也可以檢查信號是否剛發(fā)生變化并且正處于某一個電平值。例7-9D觸發(fā)器時鐘脈沖上升沿的檢測libraryieee;useieee.std_logic_1164.all;entitydffISPORT(d,clk:INcal_resiststd_logic;q:OUTstd_logic);enddff;ARCHITECTUREdffOFdffISBEGINPROCESS(clk)BEGINIFclk=‘1’ANDclk’EVENTTHEN q<=d;ENDIF;ENDPROCESS;ENDdff;7.2函數(shù)類屬性1屬性函數(shù)’EVENT和’LAST_V2

屬性函數(shù)’LAST_EVENT

例7-10D觸發(fā)器建立時間的檢測libraryieee;useieee.std_logic_1164.all;entitydffISGENERIC(setup_time,hold_time:TIME);PORT(d,clk:INcal_resiststd_logic;q:OUTstd_logic);enddff;ARCHITECTUREdff_behavOFdffISBEGINSetup_check:PROCESS(clk)BEGINIFclk’LAST_VALUE=‘0’ANDclk’EVENTTHEN ASSERT(d’LAST_EVENT>=setup_time) REPORT“SETUPVIOLATON” SEVERITYERROR;ENDIF;7.2函數(shù)類屬性2屬性函數(shù)’LAST_EVENT7.2函數(shù)類屬性ENDPROCESS;Dff_process:PROCESS(clk)BEGINIFclk’LAST_VALUE=‘0’ANDclk’EVENTTHEN q<=d;ENDIF;ENDPROCESS;ENDdff_behav;7.2函數(shù)類屬性dclkqHoldtimeSetuptimeENDPROCESS;7.2函數(shù)類屬性dcl

根據(jù)所加屬性的信號去建立一個新的信號,稱信號類屬性。

信號類屬性有4種:’DELAYED(t):t為時間表達(dá)式,該屬性將產(chǎn)生一個特別的延遲信號,該信號使主信號按t確定的時間產(chǎn)生附加的延遲。新信號與主信號類型相同。該屬性可以用來檢查信號的保持時間?!疭TABLE(t):當(dāng)所加屬性的信號在時間t內(nèi)沒有發(fā)生變化,則返回true,否則返回false.

該屬性中當(dāng)t=0時可以得到與屬性’EVENT相反的值。’QUIET(t)

:信號在時間t內(nèi)不活躍,則返回true,否則返回false。典型應(yīng)用是用來對中斷優(yōu)先處理機(jī)制進(jìn)行建模。‘TRANSACTION:所加屬性的信號活躍時將對所建立的bit數(shù)據(jù)取反。

7.3信號類屬性根據(jù)所加屬性的信號去建立一個新的信號,稱信號類屬7.3信號類屬性1

屬性

’DELAYED(t)

可以用’DELAYED(t)屬性的信號建立一個延遲信號附加在該信號上。例7-11二輸入與門附加延遲的描述c_opda_ipdb_ipdintbintaabc7.3信號類屬性1屬性’DELAYED(t)c_op7.3信號類屬性libraryieee;useieee.std_logic_1164.all;entityand2ISGENERIC(a_ipd,b_ipd,c_opd:TIME);PORT(a,b:INcal_resiststd_logic;c:OUTstd_logic);endand2;ARCHITECTUREint_signalsOFand2ISSIGNALinta,intb:std_logic;BEGIN inta<=TRANSPORTaAFTERa_ipd; intb<=TRANSPORTbAFTERb_ipd; c<=intaANDintbAFTERc_opd;ENDint_signals;ARCHITECTUREattrOFand2ISBEGIN c<=a’DELAYED(a_ipd)ANDb’DELAYED(b_ipd)AFTERc_opd;ENDattr;7.3信號類屬性libraryieee;7.3信號類屬性

還可以用’DELAYED(t)屬性檢測信號的保持時間。例7-12D觸發(fā)器的保持時間檢測的描述libraryieee;useieee.std_logic_1164.all;entitydffISGENERIC(setup_time,hold_time:TIME);PORT(d,clk:INcal_resiststd_logic;q:OUTstd_logic);enddff;ARCHITECTUREdff_behavOFdffISBEGINSetup_check:PROCESS(clk)BEGINIFclk’LAST_VALUE=‘0’ANDclk’EVENTTHEN ASSERT(d’LAST_EVENT>=setup_time) REPORT“SETUPVIOLATON” SEVERITYERROR;ENDIF;7.3信號類屬性還可以用’DELAYED(t)7.3信號類屬性hold_check:PROCESS(clk’DELAYED(2*hold_time))BEGINIF(clk’DELAYED(hold_time*2)=‘1’)AND(clk’DELAYED(hold_time*2)’EVENT)then

ASSERT((d’LAST_EVENT=0ns)OR(d’LAST_EVENT<hold_time)) REPORT“HOLDVIOLATON” SEVERITYERROR;ENDIF;ENDPROCESS;Dff_process:PROCESS(clk)BEGINIFclk’LAST_VALUE=‘0’ANDclk’EVENTTHEN q<=d;ENDIF;ENDPROCESS;ENDdff_behav;7.3信號類屬性hold_check:PROCESS(cl7.3信號類屬性2

屬性

’STABLE(TIME)

可以用’STABLE(TIME)屬性確定在指定的時間內(nèi),參考信號是否變化從而返回一個布爾值,可以用這個布爾值賦給另外一個信號,使這個信號產(chǎn)生變化。例7-13信號屬性’STABLE(TIME)的描述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYexamISPORT(a:INstd_logic; b:OUTstd_logic);ENDENTITY;ARCHITECTUREpulseOFexamISBEGINb<=a’STABLE(10ns);ENDPULSE;7.3信號類屬性2屬性’STABLE(TIME)7.3信號類屬性102030405060708090nsVab圖7-4屬性STABLE得到的輸入輸出波形如果屬性STABLE(TIME)中TIME的時間值為0(也是默認(rèn)值),則時間值可以沒有。則可以檢測信號的邊沿。7.3信號類屬性102030405060708090nsV7.3信號類屬性3

屬性

’QUIET(TIME)

可以用’QUIET(TIME)屬性確定在指定的時間內(nèi),參考信號是否變化從而返回一個布爾值,可以用這個布爾值賦給另外一個信號,使這個信號產(chǎn)生變化。7.3信號類屬性3屬性’QUIET(TIME)例7-14具有優(yōu)先級中斷的描述ARCHITECTUREtestOFtestISTYPEt_intIS(int1,int2,int3,int4,int5);signalint,intsig1,intsig2,intsig3:t_int;signallock_out:BOOLEAN;BEGIN

int1_proc:PROCESSbegin………..WAITONtrigger1;WAITUNTILclk=‘1’;IFNOT(lock_our)THEN intsig1<=int1;ENDIF;ENDPROCESS;

int2_proc:PROCESSbegin………..WAITONtrigger2;WAITUNTILclk=‘1’;IFNOT(lock_our)THEN intsig2<=int2;ENDIF;ENDPROCESS;

int3_proc:PROCESSbegin………..WAITONtrigger3;WAITUNTILclk=‘1’;IFNOT(lock_our)THEN intsig3<=int3;ENDIF;ENDPROCESS;

7.3信號類屬性例7-14具有優(yōu)先級中斷的描述int2_proc:PRint<=intsig1WHENNOT(intsig1’QUIET)ELSEintsig2WHENNOT(intsig2’QUIET)ELSEintsig3WHENNOT(intsig3’QUIET)ELSEint;Int_handle:PROCESSbeginWAITONint’TRANSACTION; lock_out<=TRUE;WAITFOR10ns; CASEintIS WHENint1=> …… WHENint2=> …… WHENint3=> …… WHENint4=> …… WHENint5=> …… ENDCASE; lock_out<=FALSE;ENDPROCESS;ENDTEST7.3信號類屬性int<=intsig1WHENNOT(in

根據(jù)所加屬性可以得到一個數(shù)據(jù)類型值。只有一種:類型名’BASE用該屬性可以得到一個數(shù)據(jù)類型或子類型的基本類型,并且使用時只能作為其他屬性的前綴來使用。例:Do_nothing:process(x)

TYPEcolorIS(red,blue,green,yellow,brown,black);

SUBTYPEcolor_gunIScolorRANGEredtogreen; VARIABLEa:color;Begin a:=color_gun’BASE’RIGHT; a:=color’BASE’LEFT; a:=color_gun’BASE’SUCC(green);ENDPROCESS;7.4數(shù)據(jù)類型屬性根據(jù)所加屬性可以得到一個數(shù)據(jù)類型值。只有一種:7該屬性按指定輸入?yún)?shù)可以得到一個確定的數(shù)組區(qū)間范圍。只能用于數(shù)組,只有2種:1.‘RANGE(n)其中n是輸入?yún)?shù),該屬性可以得到一個遞增順序的數(shù)組區(qū)間范圍:0toN2. ‘REVERSE_RANGE(n)該屬性可以得到一個遞減順序的數(shù)組區(qū)間范圍:Ndownto07.5數(shù)組區(qū)間類屬性該屬性按指定輸入?yún)?shù)可以得到一個確定的數(shù)組區(qū)間范例:FUNCTIONvector_to_int(vect:std_logic_vector) RETURNintegerIS VARIABLEresult:integer:=0;Begin FORiINvect’RANGELOOP result:=result*2; IFvect(I)=‘1’THEN result:=result+1; ENDIF; ENDLOOP; RETURNresult;ENDvector_to_int;7.5數(shù)組區(qū)間類屬性例:7.5數(shù)組區(qū)間類屬性第七章VHDL語言屬性描述屬性是指關(guān)于設(shè)計實體、結(jié)構(gòu)體、類型、信號等項目的指定特性。屬性提供了描述特定對象的多個側(cè)面值的手段信號屬性在檢測信號變化和建立詳細(xì)的時域模型時非常重要為什么要有屬性:電路元件需要時鐘信號同步需要控制信號控制整個電路的行為(進(jìn)程的執(zhí)行)時鐘信號與控制信號的使用多種多樣利用屬性可以使VHDL源代碼更加簡明扼要,便于理解第七章VHDL語言屬性描述屬性VHDL提供5類預(yù)定義屬性:1、數(shù)值類屬性2、函數(shù)類屬性3、信號類屬性4、數(shù)據(jù)類型類屬性5、數(shù)組范圍類屬性屬性VHDL提供5類預(yù)定義屬性:7.1.1常用數(shù)據(jù)的數(shù)值屬性

主要用于返回常用數(shù)據(jù)類型、數(shù)組或是塊的有關(guān)值: 例如:返回數(shù)組長度、數(shù)據(jù)類型的上下界等。常用數(shù)據(jù)類型的數(shù)值類屬性:’left:返回一個數(shù)據(jù)類型或子類型最左邊的值?!痳ight:返回一個數(shù)據(jù)類型或子類型最右邊的值?!痟igh:返回一個數(shù)據(jù)類型或子類型的最大值?!痩ow:返回一個數(shù)據(jù)類型或子類型的最小值。7.1數(shù)值類屬性7.1.1常用數(shù)據(jù)的數(shù)值屬性7.1數(shù)值類屬性屬性規(guī)則:上下限:對數(shù)值取最大、最小值;對枚舉類型數(shù)據(jù)下限取左邊界值,上限取右邊界值;對數(shù)組取數(shù)組區(qū)間的最大最小值。左右邊界:按書寫順序取左邊或右邊值。例:SUBTYPEnatISNaturalRange0to255;X:=nat’HIGH; --x等于255X:=nat’LOW; --x等于0X:=nat’RIGHT; --x等于255X:=nat’LEFT; --x等于07.1數(shù)值類屬性屬性規(guī)則:7.1數(shù)值類屬性PROCESS(a)TYPEbit16ISArray(15downto0)OFstd_logic;VARIABLElef,rig,up,low:NATURAL;BEGIN lef:=bit16’LEFT; --15 rig:=bit16’RIGHT; --0 up:=bit16’HIGH; --15 low:=bit16’LOW; --0ENDPROCESS;PROCESS(a)TYPEbit16ISArray(0to15)OFstd_logic;VARIABLElef,rig,up,low:NATURAL;BEGIN lef:=bit16’LEFT; --0 rig:=bit16’RIGHT; --15 up:=bit16’HIGH; --15 low:=bit16’LOW; --0ENDPROCESS;7.1數(shù)值類屬性在遞增區(qū)間‘LEFT=‘LOW‘RIGHT=‘HIGH在遞減區(qū)間‘LEFT=‘HIGH‘RIGHT=‘LOW例7-1:PROCESS(a)7.1數(shù)值類屬性在遞增區(qū)間在遞減區(qū)間例例7-2枚舉類型數(shù)據(jù)數(shù)值屬性描述ArchitecturevoltbofvoltaISTYPEvoltIS(uV,mV,V,kV);SUBTYPEs_voltISvoltRANGE(VDOWNTOmV);SIGNALS1,S2,S3,S4:VOLT;BEGIN S1<=volt’HIGH; --kV S2<=volt’LOW; --uV S3<=s_volt’LEFT; --V S4<=s_volt’RIGHT; --mVENDvoltb;7.1數(shù)值類屬性例7-2枚舉類型數(shù)據(jù)數(shù)值屬性描述7.1數(shù)值類屬性7.1.1數(shù)組的數(shù)值屬性

數(shù)組屬性只有一個:取數(shù)組的長度值。格式: <數(shù)組名>‘LENGTH(n);其中n是多維數(shù)組的維數(shù);如二維數(shù)組n=2;對一維數(shù)組n缺省。例7-3一維數(shù)組數(shù)值屬性描述PROCESS(b)TYPEbit8ISarray(7downto0)ofbit;TYPEbit31_8ISarray(31downto8)ofbit;VARIABLEb1,b2:integer;BEGIN b1:=bit8’LENGTH; --b1=8 B2:=BIT31_8’LENGTH; --b2=24ENDPROCESS7.1數(shù)值類屬性7.1.1數(shù)組的數(shù)值屬性7.1數(shù)值類屬性指屬性以函數(shù)的形式返回有關(guān)數(shù)據(jù)類型、數(shù)組或是信號的信息。函數(shù)類屬性使用時以函數(shù)表達(dá)式的形式出現(xiàn),屬性根據(jù)輸入的自變量值去執(zhí)行函數(shù),返回一個相應(yīng)的值。該返回值可能是數(shù)組區(qū)間的某一個值,也可能是信號的變化值,或是枚舉數(shù)據(jù)的位置序號等。函數(shù)類屬性分三類:數(shù)據(jù)類型屬性函數(shù)數(shù)組類型屬性函數(shù)信號屬性函數(shù)7.2函數(shù)類屬性指屬性以函數(shù)的形式返回有關(guān)數(shù)據(jù)類7.2函數(shù)類屬性7.2.1

數(shù)據(jù)類型屬性函數(shù)主要用來得到數(shù)據(jù)類型的各種相關(guān)信息,共6種:(1)’POS(數(shù)據(jù)值)--返回數(shù)據(jù)類型定義中輸入的X值的位置序號(2)’VAL(位置序號)--返回輸入的位置序號X處的值(3)’SUCC(數(shù)據(jù)值)--返回數(shù)據(jù)類型定義中該值的下一個對應(yīng)值(4)’PRED(數(shù)據(jù)值)--返回數(shù)據(jù)類型定義中該值的前一個對應(yīng)值(5)’LEFTOF(數(shù)據(jù)值)--返回數(shù)據(jù)類型定義中該值的左邊值(6)’RIGHTOF(數(shù)據(jù)值)--返回數(shù)據(jù)類型定義中該值的右邊值對于遞增區(qū)間:’SUCC(x)=’RIGHTOF(x)

’PRED(x)=’LEFTOF(x)

對于遞減區(qū)間:’SUCC(x)=’LEFTOF(x)

’PRED(x)=’RIGHTOF(x)

7.2函數(shù)類屬性7.2.1數(shù)據(jù)類型屬性函數(shù)7.2函數(shù)類屬性例7-4PACKAGEw_packISTYPEweekIS(sun,mon,tue,wed,thu,fri,sat);TYPEr_weekISweekRANGEsatDOWNTOsun;ENDw_pack;求自定義類型的屬性:week’SUCC(mon) --得tueweek’PRED(mon) --得sunweek’LEFTOF(mon) --得sunweek’RIGHTOF(mon) --得tuer_week’SUCC(mon) --得tuer_week’PRED(mon) --得sunr_week’LEFTOF(mon) --得tuer_week’RIGHTOF(mon) --得sun7.2函數(shù)類屬性例7-47.2函數(shù)類屬性7.2.2

數(shù)組屬性函數(shù)主要用來得到數(shù)組的信息。共有4種屬性:(1)’LEFT(n)--得到n區(qū)間的左端邊界號(2)’RIGHT(n)--得到n區(qū)間的右端邊界號(3)’HIGH(n)--得到n區(qū)間的高端邊界號(4)’LOW(n)--得到n區(qū)間的低端邊界號其中n表示數(shù)組的區(qū)間序號(即維數(shù))。當(dāng)n=1時可以缺省,默認(rèn)為一維數(shù)組。在遞減區(qū)間‘LEFT=‘HIGH‘RIGHT=‘LOW在遞增區(qū)間‘LEFT=‘LOW‘RIGHT=‘HIGH7.2函數(shù)類屬性7.2.2數(shù)組屬性函數(shù)TYPEmatrixISARRAY(0TO7,15DOWNTO0)OFstd_logic;i<=matrix’left(1); --i=0;i<=matrix’right(1); --i=7;i<=matrix’high(1); --i=7;i<=matrix’low(1); --i=0;i<=matrix’left(2); --i=15;i<=matrix’right(2); --i=0;i<=matrix’high(2); --i=15;i<=matrix’low(2); --i=0;TYPEmatrixISARRAY(0TO7,7.2函數(shù)類屬性7.2.3

信號類型屬性函數(shù)主要用來得到信號的各種行為功能信息:包括信號值的變化、信號變化后經(jīng)過的時間、變化前的信號值等。共有5種屬性:(1)’EVENT--當(dāng)前很短的時間內(nèi)信號發(fā)生了變化,則返回TRUE,否則返回FALSE。(2)’ACTIVE--當(dāng)前很短的時間內(nèi)信號活躍,則返回TRUE,否則返回FALSE。(3)’LAST_EVENT--返回信號從前一個事件發(fā)生到現(xiàn)在的時間值。(4)’LAST_VALUE--返回信號在最近一個事件發(fā)生以前的值(5)’LAST_ACTIVE--返回信號從前一次活躍到現(xiàn)在的時間值7.2函數(shù)類屬性7.2.3信號類型屬性函數(shù)7.2函數(shù)類屬性1

屬性函數(shù)’EVENT和’LAST_VALUE

’EVENT主要用來檢測脈沖信號的正跳變或負(fù)跳變邊沿,也可以檢查信號是否剛發(fā)生變化并且正處于某一個電平值。例7-9D觸發(fā)器時鐘脈沖上升沿的檢測libraryieee;useieee.std_logic_1164.all;entitydffISPORT(d,clk:INcal_resiststd_logic;q:OUTstd_logic);enddff;ARCHITECTUREdffOFdffISBEGINPROCESS(clk)BEGINIFclk=‘1’ANDclk’EVENTTHEN q<=d;ENDIF;ENDPROCESS;ENDdff;7.2函數(shù)類屬性1屬性函數(shù)’EVENT和’LAST_V2

屬性函數(shù)’LAST_EVENT

例7-10D觸發(fā)器建立時間的檢測libraryieee;useieee.std_logic_1164.all;entitydffISGENERIC(setup_time,hold_time:TIME);PORT(d,clk:INcal_resiststd_logic;q:OUTstd_logic);enddff;ARCHITECTUREdff_behavOFdffISBEGINSetup_check:PROCESS(clk)BEGINIFclk’LAST_VALUE=‘0’ANDclk’EVENTTHEN ASSERT(d’LAST_EVENT>=setup_time) REPORT“SETUPVIOLATON” SEVERITYERROR;ENDIF;7.2函數(shù)類屬性2屬性函數(shù)’LAST_EVENT7.2函數(shù)類屬性ENDPROCESS;Dff_process:PROCESS(clk)BEGINIFclk’LAST_VALUE=‘0’ANDclk’EVENTTHEN q<=d;ENDIF;ENDPROCESS;ENDdff_behav;7.2函數(shù)類屬性dclkqHoldtimeSetuptimeENDPROCESS;7.2函數(shù)類屬性dcl

根據(jù)所加屬性的信號去建立一個新的信號,稱信號類屬性。

信號類屬性有4種:’DELAYED(t):t為時間表達(dá)式,該屬性將產(chǎn)生一個特別的延遲信號,該信號使主信號按t確定的時間產(chǎn)生附加的延遲。新信號與主信號類型相同。該屬性可以用來檢查信號的保持時間?!疭TABLE(t):當(dāng)所加屬性的信號在時間t內(nèi)沒有發(fā)生變化,則返回true,否則返回false.

該屬性中當(dāng)t=0時可以得到與屬性’EVENT相反的值?!疩UIET(t)

:信號在時間t內(nèi)不活躍,則返回true,否則返回false。典型應(yīng)用是用來對中斷優(yōu)先處理機(jī)制進(jìn)行建模。‘TRANSACTION:所加屬性的信號活躍時將對所建立的bit數(shù)據(jù)取反。

7.3信號類屬性根據(jù)所加屬性的信號去建立一個新的信號,稱信號類屬7.3信號類屬性1

屬性

’DELAYED(t)

可以用’DELAYED(t)屬性的信號建立一個延遲信號附加在該信號上。例7-11二輸入與門附加延遲的描述c_opda_ipdb_ipdintbintaabc7.3信號類屬性1屬性’DELAYED(t)c_op7.3信號類屬性libraryieee;useieee.std_logic_1164.all;entityand2ISGENERIC(a_ipd,b_ipd,c_opd:TIME);PORT(a,b:INcal_resiststd_logic;c:OUTstd_logic);endand2;ARCHITECTUREint_signalsOFand2ISSIGNALinta,intb:std_logic;BEGIN inta<=TRANSPORTaAFTERa_ipd; intb<=TRANSPORTbAFTERb_ipd; c<=intaANDintbAFTERc_opd;ENDint_signals;ARCHITECTUREattrOFand2ISBEGIN c<=a’DELAYED(a_ipd)ANDb’DELAYED(b_ipd)AFTERc_opd;ENDattr;7.3信號類屬性libraryieee;7.3信號類屬性

還可以用’DELAYED(t)屬性檢測信號的保持時間。例7-12D觸發(fā)器的保持時間檢測的描述libraryieee;useieee.std_logic_1164.all;entitydffISGENERIC(setup_time,hold_time:TIME);PORT(d,clk:INcal_resiststd_logic;q:OUTstd_logic);enddff;ARCHITECTUREdff_behavOFdffISBEGINSetup_check:PROCESS(clk)BEGINIFclk’LAST_VALUE=‘0’ANDclk’EVENTTHEN ASSERT(d’LAST_EVENT>=setup_time) REPORT“SETUPVIOLATON” SEVERITYERROR;ENDIF;7.3信號類屬性還可以用’DELAYED(t)7.3信號類屬性hold_check:PROCESS(clk’DELAYED(2*hold_time))BEGINIF(clk’DELAYED(hold_time*2)=‘1’)AND(clk’DELAYED(hold_time*2)’EVENT)then

ASSERT((d’LAST_EVENT=0ns)OR(d’LAST_EVENT<hold_time)) REPORT“HOLDVIOLATON” SEVERITYERROR;ENDIF;ENDPROCESS;Dff_process:PROCESS(clk)BEGINIFclk’LAST_VALUE=‘0’ANDclk’EVENTTHEN q<=d;ENDIF;ENDPROCESS;ENDdff_behav;7.3信號類屬性hold_check:PROCESS(cl7.3信號類屬性2

屬性

’STABLE(TIME)

可以用’STABLE(TIME)屬性確定在指定的時間內(nèi),參考信號是否變化從而返回一個布爾值,可以用這個布爾值賦給另外一個信號,使這個信號產(chǎn)生變化。例7-13信號屬性’STABLE(TIME)的描述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYexamISPORT(a:INstd_logic; b:OUTstd_logic);ENDENTITY;ARCHITECTUREpulseOFexamISBEGINb<=a’STABLE(10ns);ENDPULSE;7.3信號類屬性2屬性’STABLE(TIME)7.3信號類屬性102030405060708090nsVab圖7-4屬性STABLE得到的輸入輸出波形如果屬性STABLE(TIME)中TIME的時間值為0(也是默認(rèn)值),則時間值可以沒有。則可以檢測信號的邊沿。7.3信號類屬性102030405060708090nsV7.3信號類屬性3

屬性

’QUIET(TIME)

可以用’QUIET(TIME)屬性確定在指定的時間內(nèi),參考信號是否變化從而返回一個布爾值,可以用這個布爾值賦給另外一個信號,使這個信號產(chǎn)生變化。7.3信號類屬性3屬性’QUIET(TIME)例7-14具有優(yōu)先級中斷的描述ARCHITECTUREtestOFtestISTYPEt_intIS(int1,int2,int3,int4,int5);signalint,intsig1,intsig2,intsig3:t_int;signallock_out:BOOLEAN;BEGI

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論