




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 2)數組的數值屬性 數組的數值屬性只有一個,即LENGTH。在給定數組類型后,用該屬性將得到一個數組的長度值。該屬性可用于任何標量類數組和多維的標量類區間的數組。 例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)塊的數值屬性 塊的數據屬性有兩種 STRUCTURE BEHAVIOR 1這兩種屬性用于塊(BLOCK)和構造體,通過它們可以得到塊和構造體信息。 2如果塊有標號說明,或者構造體有構造體名說明,而且在塊和構造體中不存在COMPONENT語句,那么用屬性BEHAVIOR將得到“TRUE”的信息。 如果在塊和構造體中只有COMPONENT語句或被動進程,那么用屬性STRUCTUR將得到“TRUE”的信息。 VHDL5(2)22函數類屬性 所謂函數類屬性是指屬性以函數的形式,讓設計人員得到有關數據類型、數組、信號的某些信息。 函數類屬性有以下3種: 數據類型屬性函數 數組屬性函數 信號屬性
3、函數 1)數據類型屬性函數 用數據類型屬性函數可以得到有關數據類型的各種信息。 數據類型屬性函數可以有以下6種屬性函數: 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)數組屬性函數 利用數組屬性函數可得到數組的區間。在對數組的每一個元素進行操作時,必須知數組的區間。數組屬性函數可分以下4種: LEFT(n) 得到索引號為n的區間的左端位置號。在這里n實際上是多維數組中所定義的多維區間的序號。當n缺省時,就代表對一維區間進行操作。 RIGHT(n) 得到索引號為n的區間的右端位置號。 HIGH(n) 得到索引號為n的區間的高端位置號。 LOW(n) 得到索引號為n的區間的低端位置號。 VHDL5(2)6 上述屬性與數值數據類屬性一樣,在遞增區間和遞減區間存在著不同的對應關系。 在遞增區間,存在如下關系:
7、LEFTlOW 數組LEFT數組LOW RIGHTHIGHT 數組RIGHT數組HIGHT 在遞減區間,存在如下關系: LEFT = HIGHT RIGHT = LOWVHDL5(2)7 信號屬性函數用來得到信號的行為信息。例如,信號的值是否有變化;從最后一次變化到現在經過了多長時間;信號變化前的值為多少等。信號屬性函數共有5種,它們是:3)信號屬性函數VHDL5(2)8 sEVENT - -如果在當前一個相當小的時間間隔內,事件發生了,那么,函數將返回一個為“真”的布爾量,否則就返回 “假”。 sACTIVE - -如果在當前一個相當小的時間間隔內,信號發生了改變,那么,函數將返回一個為“真
8、”的布爾量;否則就返回 “假”。 sLAST_EVENT - -該屬性函數將返回一個時間值,即從信號前一個事件發生到現在所經過的時間。 sLAST_VALUE - -該屬性函數將返回一個值,即該值是信號最后一次改變以前的值。 sLAST_ACTIVE - -該屬性函數返回一個時間值,即從信號前一次改變到現在的時間。 VHDL5(2)9 屬性EVENT 通常用于確定時鐘信號的邊沿,用它可以檢查信號是否處于某一個特殊值,以及信號是否剛好已發生變化。下面就是一個用屬性EVENT檢出D觸發器時鐘脈沖上升沿的描述實例。 (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” (不定狀態),那么上例的描述同樣也被認為出現了上升沿,顯然這種情況是錯誤
10、的。為了避免出現這種邏輯錯誤,最好使用屬性,LAST_VALUE。這樣上例中的IF語句可以作如下改寫; IF(clk=1)AND(clkEVENT) AND(clklAST_VALUE=0)THEN q=d; END IF;VHDL5(2)12 信號類屬性用于產生一種特別的信號,這個特別的信號是以所加屬性的信號為基礎而形成的。信號類屬性有4種: 3信號類屬性VHDL5(2)13sDELAYED(time) 該屬性將產生一個延時的信號,其信號類型與該屬性所加的信號相同,即以屬性所加的信號為參考信號,經括號內時間表達式所確定的時間延時后所得的延遲信號。sSTABLE(time) 該屬性可建立一個布
11、爾信號,在括號內的時間表達式所說明的時間內,若參考信號沒有發生事件,則該屬性可以得到“真”的結果。sQUIET(time) 該屬性可建立一個布爾信號,在括號內的時間表達式所說明的時間內,若參考信號沒有發生轉換或其它事件,則該屬性可得到“真”的結果sTRANSACTION 該屬性可以建立一個BIT類型的信號,當屬性所加的信號發生轉換或事件時,其值都將發生改變。VHDL5(2)14 上述的信號類屬性不能用于子程序中,否則程序在編譯時會出現編譯錯誤信息。 (1)屬性DELAYED 屬性DELAYED可建立一個所加信號的延遲版本。為實現同樣的功能,也可以用傳送延時賦值語句(Transpont dela
12、y)來實現。兩者不同的是,后者要求編程人員用傳送延時賦值的方法記入程序中,而且帶有傳送延時賦值的信號是一個新的信號,它必須在程序中加以說明。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用來確定信號對應的有效電平,即它可以在一個指定的時間間隔內,確定信號是否正好發生改變或者沒有發生改變。用它可以觸發其它的進程。(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所示,當波形a加到本模塊時,即可得到輸出波形b。圖中的波形說明,每次信號a電平有一次改變,信號b的電平將從高電平變成低電子(即由“真”變為“假
15、”),持續時間為10ns(該值由屬性括號內的時間值確定)。 信號a在10ns和30ns處各有一次改變,因而對應的信號b在10ns和30ns處各有10ns的低電平時間。在55ns處和60ns處信號a又各有一次改變。但是,由于改變的間隔小于10ns,因此信號b從55ns處開始到70ns處結束,將變為低電平。 如果屬性STABLE后跟括號中的時間值被說明為0ns或者未加說明,那么當信號a發生改變時,輸出信號b在對應的時間位將產生寬度的低電平,如圖54所示。 該屬性與EVENT一樣也可以檢出信號的上升沿。VHDL5(2)19 利用該屬性可以得到數據類型的一個值。它僅僅是一種類型屬性,而且必需使用數值類
16、或函數類屬性的值來表示。 例如:tBASE 用該屬性可以得到數據t的類型或子類型。4數據類型類屬性VHDL5(2)20例537 數據類型類屬性的使用。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數據區間類屬性 在VHDL語言中有兩類數據區間類屬性,這兩類屬性僅用于受約束的數組類型數據并且可返回所選擇輸入參數的索引區間。這兩個屬性是: RANGE(n)將返回一個由參數n值所指出的第n個數據區間。 REVERSL_RANGE(n)將返回一個次序顛倒的數據區間。VHDL5(2)22例538屬性RANGE和REVERSE循環語句的循環次數的應用。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屬性名:數據子類型名; ATTRIBUTE屬性名 OF 目標名: 目標集合 IS 公式; 在對要使用的屬性進行說明以后,接著就可以對數
19、據類型、信號、變量、實體、構造體、配置、子程序、元件、標號進行具體的描述。例如:6用戶自定義的屬性VHDL5(2)24 在對要使用的屬性進行說明以后,接著就可以對數據類型、信號、變量、實體、構造體、配置、子程序、元件、標號進行具體的描述。例如: 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的設計工具、動態解析工具的數據的過渡。VHDL5(2)25 GENERATE語句用來產生多個相同的結構,它有FOR-GENERATE和IF-GENERATE兩種使用形式,如下所示: 1. 標號:FOR 變量 IN 不連續區間 GENERATE ; END GENERATE 標號名; 2. 標號:IF 條件 GENERATE ; END GENERATE 標號名; 533 GENERATE語句VHDL5(2)26 FORGENERATE和FORLOOP的語句不同,在FORGENERATE結構中所列舉的是并發處理語句。因此,在結構內部的語句不是按書寫順序執行的,而是并發執行的。這樣,結構中就不能使用EXIT語句和NEXT語句。 IFGENERATE語句在條件為“真”時才執行結構內部的語句,語句同樣是并發處理的。與IF語句不同的是該結構中沒有ELSE項。 該語句的典型應用場合是生成存貯器陣列和寄存器陣列等。 例5-39、5-40、5-41VHDL5(2)27 圖是一個由4個D觸發器組成的移位寄存器的原理框圖,例5-
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 衛生管理職業素養試題及答案
- 做賬實操-關稅調研報告
- 做賬實操-關稅對外貿受益股的影響分析
- 海外專利申請中的法律問題探討試題及答案
- 激光工程項目管理基本要求試題及答案
- 衡陽日報面試題及答案
- 職業心理素質評估工具試題及答案
- 船舶原理試題庫及答案
- 激光技術工程師考試的時間管理與試題及答案
- 復習策略與護士資格證考試相關的試題答案
- 生產節拍計算表格
- 高中語文中職語文《廉頗藺相如列傳》課件-完美版
- FZT 74005-2016 針織瑜伽服行業標準
- 2024年湖北省武漢市高考數學一調試卷
- 13區域分析與區域規劃(第三版)電子教案(第十三章)
- JJG 4-2015鋼卷尺行業標準
- 《公路橋涵養護規范》(JTG5120-2021)
- 晉升羽毛球一級裁判員考試試題
- 【課件】文明的瑰寶(藝術色彩)課件高中美術人教版(2019)選擇性必修1+繪畫
- 胰腺炎的中醫特色護理
- 世界強企業管理制度管理表格全集
評論
0/150
提交評論