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

下載本文檔

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

文檔簡(jiǎn)介

1、 2)數(shù)組的數(shù)值屬性 數(shù)組的數(shù)值屬性只有一個(gè),即LENGTH。在給定數(shù)組類型后,用該屬性將得到一個(gè)數(shù)組的長(zhǎng)度值。該屬性可用于任何標(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)號(hào)說明,或者構(gòu)造體有構(gòu)造體名說明,而且在塊和構(gòu)造體中不存在COMPONENT語句,那么用屬性BEHAVIOR將得到“TRUE”的信息。 如果在塊和構(gòu)造體中只有COMPONENT語句或被動(dòng)進(jìn)程,那么用屬性STRUCTUR將得到“TRUE”的信息。 VHDL5(2)22函數(shù)類屬性 所謂函數(shù)類屬性是指屬性以函數(shù)的形式,讓設(shè)計(jì)人員得到有關(guān)數(shù)據(jù)類型、數(shù)組、信號(hào)的某些信息。 函數(shù)類屬性有以下3種: 數(shù)據(jù)類型屬性函數(shù) 數(shù)組屬性函數(shù) 信號(hào)屬性

3、函數(shù) 1)數(shù)據(jù)類型屬性函數(shù) 用數(shù)據(jù)類型屬性函數(shù)可以得到有關(guān)數(shù)據(jù)類型的各種信息。 數(shù)據(jù)類型屬性函數(shù)可以有以下6種屬性函數(shù): POS(x) 得到輸入x值的位置序號(hào); VAL(x) 得到輸入位置序號(hào)x的值; SUCC(x) 得到輸入x值的下一個(gè)值; succeeding PRED(x) 得到輸入x值的前一個(gè)值; 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ū)間。在對(duì)數(shù)組的每一個(gè)元素進(jìn)行操作時(shí),必須知數(shù)組的區(qū)間。數(shù)組屬性函數(shù)可分以下4種: LEFT(n) 得到索引號(hào)為n的區(qū)間的左端位置號(hào)。在這里n實(shí)際上是多維數(shù)組中所定義的多維區(qū)間的序號(hào)。當(dāng)n缺省時(shí),就代表對(duì)一維區(qū)間進(jìn)行操作。 RIGHT(n) 得到索引號(hào)為n的區(qū)間的右端位置號(hào)。 HIGH(n) 得到索引號(hào)為n的區(qū)間的高端位置號(hào)。 LOW(n) 得到索引號(hào)為n的區(qū)間的低端位置號(hào)。 VHDL5(2)6 上述屬性與數(shù)值數(shù)據(jù)類屬性一樣,在遞增區(qū)間和遞減區(qū)間存在著不同的對(duì)應(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 信號(hào)屬性函數(shù)用來得到信號(hào)的行為信息。例如,信號(hào)的值是否有變化;從最后一次變化到現(xiàn)在經(jīng)過了多長(zhǎng)時(shí)間;信號(hào)變化前的值為多少等。信號(hào)屬性函數(shù)共有5種,它們是:3)信號(hào)屬性函數(shù)VHDL5(2)8 sEVENT - -如果在當(dāng)前一個(gè)相當(dāng)小的時(shí)間間隔內(nèi),事件發(fā)生了,那么,函數(shù)將返回一個(gè)為“真”的布爾量,否則就返回 “假”。 sACTIVE - -如果在當(dāng)前一個(gè)相當(dāng)小的時(shí)間間隔內(nèi),信號(hào)發(fā)生了改變,那么,函數(shù)將返回一個(gè)為“真

8、”的布爾量;否則就返回 “假”。 sLAST_EVENT - -該屬性函數(shù)將返回一個(gè)時(shí)間值,即從信號(hào)前一個(gè)事件發(fā)生到現(xiàn)在所經(jīng)過的時(shí)間。 sLAST_VALUE - -該屬性函數(shù)將返回一個(gè)值,即該值是信號(hào)最后一次改變以前的值。 sLAST_ACTIVE - -該屬性函數(shù)返回一個(gè)時(shí)間值,即從信號(hào)前一次改變到現(xiàn)在的時(shí)間。 VHDL5(2)9 屬性EVENT 通常用于確定時(shí)鐘信號(hào)的邊沿,用它可以檢查信號(hào)是否處于某一個(gè)特殊值,以及信號(hào)是否剛好已發(fā)生變化。下面就是一個(gè)用屬性EVENT檢出D觸發(fā)器時(shí)鐘脈沖上升沿的描述實(shí)例。 (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)了上升沿,顯然這種情況是錯(cuò)誤

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

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

12、y)來實(shí)現(xiàn)。兩者不同的是,后者要求編程人員用傳送延時(shí)賦值的方法記入程序中,而且?guī)в袀魉脱訒r(shí)賦值的信號(hào)是一個(gè)新的信號(hào),它必須在程序中加以說明。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用來確定信號(hào)對(duì)應(yīng)的有效電平,即它可以在一個(gè)指定的時(shí)間間隔內(nèi),確定信號(hào)是否正好發(fā)生改變或者沒有發(fā)生改變。用它可以觸發(fā)其它的進(jìn)程。(2)屬性STABLEVHDL5(2)17例

14、535 一個(gè)使用屬性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加到本模塊時(shí),即可得到輸出波形b。圖中的波形說明,每次信號(hào)a電平有一次改變,信號(hào)b的電平將從高電平變成低電子(即由“真”變?yōu)椤凹?/p>

15、”),持續(xù)時(shí)間為10ns(該值由屬性括號(hào)內(nèi)的時(shí)間值確定)。 信號(hào)a在10ns和30ns處各有一次改變,因而對(duì)應(yīng)的信號(hào)b在10ns和30ns處各有10ns的低電平時(shí)間。在55ns處和60ns處信號(hào)a又各有一次改變。但是,由于改變的間隔小于10ns,因此信號(hào)b從55ns處開始到70ns處結(jié)束,將變?yōu)榈碗娖健?如果屬性STABLE后跟括號(hào)中的時(shí)間值被說明為0ns或者未加說明,那么當(dāng)信號(hào)a發(fā)生改變時(shí),輸出信號(hào)b在對(duì)應(yīng)的時(shí)間位將產(chǎn)生寬度的低電平,如圖54所示。 該屬性與EVENT一樣也可以檢出信號(hào)的上升沿。VHDL5(2)19 利用該屬性可以得到數(shù)據(jù)類型的一個(gè)值。它僅僅是一種類型屬性,而且必需使用數(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ū)間。這兩個(gè)屬性是: RANGE(n)將返回一個(gè)由參數(shù)n值所指出的第n個(gè)數(shù)據(jù)區(qū)間。 REVERSL_RANGE(n)將返回一個(gè)次序顛倒的數(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 公式; 在對(duì)要使用的屬性進(jìn)行說明以后,接著就可以對(duì)數(shù)

19、據(jù)類型、信號(hào)、變量、實(shí)體、構(gòu)造體、配置、子程序、元件、標(biāo)號(hào)進(jìn)行具體的描述。例如:6用戶自定義的屬性VHDL5(2)24 在對(duì)要使用的屬性進(jìn)行說明以后,接著就可以對(duì)數(shù)據(jù)類型、信號(hào)、變量、實(shí)體、構(gòu)造體、配置、子程序、元件、標(biāo)號(hào)進(jìn)行具體的描述。例如: 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è)計(jì)工具、動(dòng)態(tài)解析工具的數(shù)據(jù)的過渡。VHDL5(2)25 GENERATE語句用來產(chǎn)生多個(gè)相同的結(jié)構(gòu),它有FOR-GENERATE和IF-GENERATE兩種使用形式,如下所示: 1. 標(biāo)號(hào):FOR 變量 IN 不連續(xù)區(qū)間 GENERATE ; END GENERATE 標(biāo)號(hào)名; 2. 標(biāo)號(hào):IF 條件 GENERATE ; END GENERATE 標(biāo)號(hà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語句在條件為“真”時(shí)才執(zhí)行結(jié)構(gòu)內(nèi)部的語句,語句同樣是并發(fā)處理的。與IF語句不同的是該結(jié)構(gòu)中沒有ELSE項(xiàng)。 該語句的典型應(yīng)用場(chǎng)合是生成存貯器陣列和寄存器陣列等。 例5-39、5-40、5-41VHDL5(2)27 圖是一個(gè)由4個(gè)D觸發(fā)器組成的移位寄存器的原理框圖,例5-

溫馨提示

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

評(píng)論

0/150

提交評(píng)論