硬件描述語言與數(shù)字邏輯電路設(shè)計VHDL:第5章 VHDL語言的主要描述語句2_第1頁
硬件描述語言與數(shù)字邏輯電路設(shè)計VHDL:第5章 VHDL語言的主要描述語句2_第2頁
硬件描述語言與數(shù)字邏輯電路設(shè)計VHDL:第5章 VHDL語言的主要描述語句2_第3頁
硬件描述語言與數(shù)字邏輯電路設(shè)計VHDL:第5章 VHDL語言的主要描述語句2_第4頁
硬件描述語言與數(shù)字邏輯電路設(shè)計VHDL:第5章 VHDL語言的主要描述語句2_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 2)數(shù)組的數(shù)值屬性 數(shù)組的數(shù)值屬性只有一個,即LENGTH。在給定數(shù)組類型后,用該屬性將得到一個數(shù)組的長度值。該屬性可用于任何標(biāo)量類數(shù)組和多維的標(biāo)量類區(qū)間的數(shù)組。 例524 PROCESS(a) TYPE bit4 IS ARRAY(0 TO 3)of BIT; TYPE bit_strange IS ARRAY(10 TO 20) OF BIT; VARIABLE 1enl,1en2:INTEGER; BEGIN 1enl:= bit4LENGTH; - - len14 1en2:= bit_strange LENGTH; - - 1en2 = 11 END PROCESS;VHDL5(2

2、)1 3)塊的數(shù)值屬性 塊的數(shù)據(jù)屬性有兩種 STRUCTURE BEHAVIOR 1這兩種屬性用于塊(BLOCK)和構(gòu)造體,通過它們可以得到塊和構(gòu)造體信息。 2如果塊有標(biāo)號說明,或者構(gòu)造體有構(gòu)造體名說明,而且在塊和構(gòu)造體中不存在COMPONENT語句,那么用屬性BEHAVIOR將得到“TRUE”的信息。 如果在塊和構(gòu)造體中只有COMPONENT語句或被動進程,那么用屬性STRUCTUR將得到“TRUE”的信息。 VHDL5(2)22函數(shù)類屬性 所謂函數(shù)類屬性是指屬性以函數(shù)的形式,讓設(shè)計人員得到有關(guān)數(shù)據(jù)類型、數(shù)組、信號的某些信息。 函數(shù)類屬性有以下3種: 數(shù)據(jù)類型屬性函數(shù) 數(shù)組屬性函數(shù) 信號屬性

3、函數(shù) 1)數(shù)據(jù)類型屬性函數(shù) 用數(shù)據(jù)類型屬性函數(shù)可以得到有關(guān)數(shù)據(jù)類型的各種信息。 數(shù)據(jù)類型屬性函數(shù)可以有以下6種屬性函數(shù): POS(x) 得到輸入x值的位置序號; VAL(x) 得到輸入位置序號x的值; SUCC(x) 得到輸入x值的下一個值; succeeding PRED(x) 得到輸入x值的前一個值; predict LEFTOF(x) 得到鄰接輸入x值左邊的值; RIGHTOF(x) 得到鄰接輸入x值右邊的值。VHDL5(2)3例528 PACKAGE ohms_law IS TYPE current IS RANGE 0 TO 1000000 UNITS A; mA = 1000A;

4、A = 1000mA; END UNITS; TYPE voltage IS RANGE 0 TO 1000000 UNITS V; mV = 1000V; V = 1000 mV; END UNITS TYPE resistance IS RANGE 0 TO 1000000 UNITS ohm; kohm = 1000ohm; mohm = 1000kohm; VHDL5(2)4 mohm = 1000kohm; END UNITS END ohms_law; USE workohm3_1awALL; ENTITY calc_resistance IS PORT(i:IN current;

5、 e: IN voltage; r:OUT resistance); END calc_resistance; ARCHITECTURE behav OF calc_resistance IS BEGIN ohm_proc:PROCESS(i,e) VARIABLE covi,cove,int_r: INTEGER; BEGIN convi := currentpos(i); 以微安為單位的電流值 conve := voltagepos(e); 以微伏為單位的電壓值 int_r := conveconvi; 以歐姆為單位的電阻值 r = resistanceVAL(int_r); END PR

6、OCESS; END behav;VHDL5(2)52)數(shù)組屬性函數(shù) 利用數(shù)組屬性函數(shù)可得到數(shù)組的區(qū)間。在對數(shù)組的每一個元素進行操作時,必須知數(shù)組的區(qū)間。數(shù)組屬性函數(shù)可分以下4種: LEFT(n) 得到索引號為n的區(qū)間的左端位置號。在這里n實際上是多維數(shù)組中所定義的多維區(qū)間的序號。當(dāng)n缺省時,就代表對一維區(qū)間進行操作。 RIGHT(n) 得到索引號為n的區(qū)間的右端位置號。 HIGH(n) 得到索引號為n的區(qū)間的高端位置號。 LOW(n) 得到索引號為n的區(qū)間的低端位置號。 VHDL5(2)6 上述屬性與數(shù)值數(shù)據(jù)類屬性一樣,在遞增區(qū)間和遞減區(qū)間存在著不同的對應(yīng)關(guān)系。 在遞增區(qū)間,存在如下關(guān)系:

7、LEFTlOW 數(shù)組LEFT數(shù)組LOW RIGHTHIGHT 數(shù)組RIGHT數(shù)組HIGHT 在遞減區(qū)間,存在如下關(guān)系: LEFT = HIGHT RIGHT = LOWVHDL5(2)7 信號屬性函數(shù)用來得到信號的行為信息。例如,信號的值是否有變化;從最后一次變化到現(xiàn)在經(jīng)過了多長時間;信號變化前的值為多少等。信號屬性函數(shù)共有5種,它們是:3)信號屬性函數(shù)VHDL5(2)8 sEVENT - -如果在當(dāng)前一個相當(dāng)小的時間間隔內(nèi),事件發(fā)生了,那么,函數(shù)將返回一個為“真”的布爾量,否則就返回 “假”。 sACTIVE - -如果在當(dāng)前一個相當(dāng)小的時間間隔內(nèi),信號發(fā)生了改變,那么,函數(shù)將返回一個為“真

8、”的布爾量;否則就返回 “假”。 sLAST_EVENT - -該屬性函數(shù)將返回一個時間值,即從信號前一個事件發(fā)生到現(xiàn)在所經(jīng)過的時間。 sLAST_VALUE - -該屬性函數(shù)將返回一個值,即該值是信號最后一次改變以前的值。 sLAST_ACTIVE - -該屬性函數(shù)返回一個時間值,即從信號前一次改變到現(xiàn)在的時間。 VHDL5(2)9 屬性EVENT 通常用于確定時鐘信號的邊沿,用它可以檢查信號是否處于某一個特殊值,以及信號是否剛好已發(fā)生變化。下面就是一個用屬性EVENT檢出D觸發(fā)器時鐘脈沖上升沿的描述實例。 (1)屬性EVENT和LAST_VALUEVHDL5(2)10例531 LIBRAR

9、Y IEEE USE IEEESTD_LOGIC_1164ALL, ENTITY dff IS PORT(d,clk:IN STD_LOGIC, q:OUTSTD_LOGIC); END dff; ARCHITECTURE dff OF dff IS BEGIN PROCESS(clk) BEGIN IF(clk=1)AND(clkEVENT)THEN q=d; END IF; END PROCESS; END dff;VHDL5(2)11 在上例中,如果原來的電平為“0”,那么邏輯是正確的。但是,如果原來的電平是“X” (不定狀態(tài)),那么上例的描述同樣也被認(rèn)為出現(xiàn)了上升沿,顯然這種情況是錯誤

10、的。為了避免出現(xiàn)這種邏輯錯誤,最好使用屬性,LAST_VALUE。這樣上例中的IF語句可以作如下改寫; IF(clk=1)AND(clkEVENT) AND(clklAST_VALUE=0)THEN q=d; END IF;VHDL5(2)12 信號類屬性用于產(chǎn)生一種特別的信號,這個特別的信號是以所加屬性的信號為基礎(chǔ)而形成的。信號類屬性有4種: 3信號類屬性VHDL5(2)13sDELAYED(time) 該屬性將產(chǎn)生一個延時的信號,其信號類型與該屬性所加的信號相同,即以屬性所加的信號為參考信號,經(jīng)括號內(nèi)時間表達式所確定的時間延時后所得的延遲信號。sSTABLE(time) 該屬性可建立一個布

11、爾信號,在括號內(nèi)的時間表達式所說明的時間內(nèi),若參考信號沒有發(fā)生事件,則該屬性可以得到“真”的結(jié)果。sQUIET(time) 該屬性可建立一個布爾信號,在括號內(nèi)的時間表達式所說明的時間內(nèi),若參考信號沒有發(fā)生轉(zhuǎn)換或其它事件,則該屬性可得到“真”的結(jié)果sTRANSACTION 該屬性可以建立一個BIT類型的信號,當(dāng)屬性所加的信號發(fā)生轉(zhuǎn)換或事件時,其值都將發(fā)生改變。VHDL5(2)14 上述的信號類屬性不能用于子程序中,否則程序在編譯時會出現(xiàn)編譯錯誤信息。 (1)屬性DELAYED 屬性DELAYED可建立一個所加信號的延遲版本。為實現(xiàn)同樣的功能,也可以用傳送延時賦值語句(Transpont dela

12、y)來實現(xiàn)。兩者不同的是,后者要求編程人員用傳送延時賦值的方法記入程序中,而且?guī)в袀魉脱訒r賦值的信號是一個新的信號,它必須在程序中加以說明。VHDL5(2)15例533 LIBRARY IEEE; USE IEEESTD_LOGIC_1164ALL; ENTITY and2 1S GENERIC(a_ipd,b_ipd,c_opd:TIME); PORT(a,b:IN STD_LOGIC; c:OUT STD_LOGIC); END and2; ARCHITECTURE int_signals OF and2 1S SIGNAL inta,intb:STD_LOGIC; BEGIN inta

13、TRANSPORT a AFTER a_ipd; intb TRANSPORT b AFTER b_ipd; c inta AND intb AFTER c_opd; END int_signals; ARCHITECTURE attr OF and2 1S BEGIN c aDELAYED(a_ipd) AND bDELAYED(b_ipd)AFTER c_opd; END attr; VHDL5(2)16 屬性STABLE用來確定信號對應(yīng)的有效電平,即它可以在一個指定的時間間隔內(nèi),確定信號是否正好發(fā)生改變或者沒有發(fā)生改變。用它可以觸發(fā)其它的進程。(2)屬性STABLEVHDL5(2)17例

14、535 一個使用屬性STABLE的例子。 LIBRARY IEEE; USE IEEESTD_LOGlC_1164ALL; ENTITY pulse_gen IS PROT(a:IN STD_LOGIC; b:OUT STD_LOGIC); END pulse_gen; ARCHITECTURE pulse_gen OF pulse_gen IS BEGIN b = aSTABLE(10ns); END pulse_gen;VHDL5(2)18 如圖53所示,當(dāng)波形a加到本模塊時,即可得到輸出波形b。圖中的波形說明,每次信號a電平有一次改變,信號b的電平將從高電平變成低電子(即由“真”變?yōu)椤凹?/p>

15、”),持續(xù)時間為10ns(該值由屬性括號內(nèi)的時間值確定)。 信號a在10ns和30ns處各有一次改變,因而對應(yīng)的信號b在10ns和30ns處各有10ns的低電平時間。在55ns處和60ns處信號a又各有一次改變。但是,由于改變的間隔小于10ns,因此信號b從55ns處開始到70ns處結(jié)束,將變?yōu)榈碗娖健?如果屬性STABLE后跟括號中的時間值被說明為0ns或者未加說明,那么當(dāng)信號a發(fā)生改變時,輸出信號b在對應(yīng)的時間位將產(chǎn)生寬度的低電平,如圖54所示。 該屬性與EVENT一樣也可以檢出信號的上升沿。VHDL5(2)19 利用該屬性可以得到數(shù)據(jù)類型的一個值。它僅僅是一種類型屬性,而且必需使用數(shù)值類

16、或函數(shù)類屬性的值來表示。 例如:tBASE 用該屬性可以得到數(shù)據(jù)t的類型或子類型。4數(shù)據(jù)類型類屬性VHDL5(2)20例537 數(shù)據(jù)類型類屬性的使用。do_nothing:PROCESS(x) TYPE color IS(red,blue,green,yellow,brown,black); SUBTYPE color_gun IS color RANGE red TO green;VARIABLE a:color; BEGIN a:= color_gunBASERIGHT; - - a = black a:= colorBASELEFT; - - a = red a:= co1orBASES

17、UCC(green) - - a = yellowEND PROCESS do_nothing;VHDL5(2)215數(shù)據(jù)區(qū)間類屬性 在VHDL語言中有兩類數(shù)據(jù)區(qū)間類屬性,這兩類屬性僅用于受約束的數(shù)組類型數(shù)據(jù)并且可返回所選擇輸入?yún)?shù)的索引區(qū)間。這兩個屬性是: RANGE(n)將返回一個由參數(shù)n值所指出的第n個數(shù)據(jù)區(qū)間。 REVERSL_RANGE(n)將返回一個次序顛倒的數(shù)據(jù)區(qū)間。VHDL5(2)22例538屬性RANGE和REVERSE循環(huán)語句的循環(huán)次數(shù)的應(yīng)用。FUNCTION vector_to_int(vect:STD_LOGIC_VECTOR) RETURN INTEGER IS VA

18、RIABLE result:INTEGER:= 0;BEGIN FOR i IN vectRANGE LOOP result:= result * 2; IF vect(i)lTHEN result:= result + 1; END IF; END LOOP;RETURN result;END vector_to_int;VHDL5(2)23 除了上面在VHDL語言中所定義的屬性以外,還可以有由用戶自定義的屬性,用戶自定義屬性的書寫格式為: ATTRIBUTE屬性名:數(shù)據(jù)子類型名; ATTRIBUTE屬性名 OF 目標(biāo)名: 目標(biāo)集合 IS 公式; 在對要使用的屬性進行說明以后,接著就可以對數(shù)

19、據(jù)類型、信號、變量、實體、構(gòu)造體、配置、子程序、元件、標(biāo)號進行具體的描述。例如:6用戶自定義的屬性VHDL5(2)24 在對要使用的屬性進行說明以后,接著就可以對數(shù)據(jù)類型、信號、變量、實體、構(gòu)造體、配置、子程序、元件、標(biāo)號進行具體的描述。例如: ATTRIBUTE max_area:REAL; ATTRIBUTE max_area OF fifo:ENTITY IS 150.0; ATTRIBUTE capacitance:cap; ATTRIBUTE capacitance OF clk,reset:SIGNAL IS 20 pF; 用戶自定義屬性的值在仿真中是不能改變的,也不能用于邏輯綜合

20、。用戶自定的屬性主要用于從VHDL到邏輯綜合及ASIC的設(shè)計工具、動態(tài)解析工具的數(shù)據(jù)的過渡。VHDL5(2)25 GENERATE語句用來產(chǎn)生多個相同的結(jié)構(gòu),它有FOR-GENERATE和IF-GENERATE兩種使用形式,如下所示: 1. 標(biāo)號:FOR 變量 IN 不連續(xù)區(qū)間 GENERATE ; END GENERATE 標(biāo)號名; 2. 標(biāo)號:IF 條件 GENERATE ; END GENERATE 標(biāo)號名; 533 GENERATE語句VHDL5(2)26 FORGENERATE和FORLOOP的語句不同,在FORGENERATE結(jié)構(gòu)中所列舉的是并發(fā)處理語句。因此,在結(jié)構(gòu)內(nèi)部的語句不是按書寫順序執(zhí)行的,而是并發(fā)執(zhí)行的。這樣,結(jié)構(gòu)中就不能使用EXIT語句和NEXT語句。 IFGENERATE語句在條件為“真”時才執(zhí)行結(jié)構(gòu)內(nèi)部的語句,語句同樣是并發(fā)處理的。與IF語句不同的是該結(jié)構(gòu)中沒有ELSE項。 該語句的典型應(yīng)用場合是生成存貯器陣列和寄存器陣列等。 例5-39、5-40、5-41VHDL5(2)27 圖是一個由4個D觸發(fā)器組成的移位寄存器的原理框圖,例5-

溫馨提示

  • 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論