【正文】
END vector_to_int。a=black。而后者必須是信號值發(fā)生改變才返回“假”。 IF(NOT (clk39。STABLE(10 ns)。 c=inta AND intb after c_opd。 (1) 屬性 39。LAST_ACTIVE在信號被刷新時被觸發(fā),不管信號值是否發(fā)生改變。 PORT(d,clk: IN STD_LOGIC。139。139。 ?s39。 得到 31 lowrange:=bit_range?LOW。HIGHT(n) 遞減區(qū)間: 39。 2. 數(shù)組類型的函數(shù)屬性 利用數(shù)組類型的函數(shù)屬性可得到數(shù)組區(qū)間的信息。 time39。SUCC(x)=39。 2. 數(shù)組 類型數(shù)值屬性 函數(shù)屬性 所謂函數(shù)屬性是指以函數(shù)的形式 , 讓設計人員得到有關數(shù)據(jù)類型或信號等的某些信息 。 得到 TRUE tim10=revers_tim39。 對于整數(shù)和實數(shù)來說,數(shù)值的位置序號值與數(shù)本身的值相等,而對于枚舉類型、數(shù)組類型等用戶自定義的數(shù)據(jù)來說,在說明中較早出現(xiàn)的數(shù)據(jù),其位置序號值低于較后說明的數(shù)據(jù)。 屬性描述語句 VHDL語言中預定義的屬性類型有以下幾種: ? 數(shù)值屬性 ? 函數(shù)屬性 ? 信號屬性 ? 數(shù)據(jù)類型類屬性 ? 數(shù)據(jù)范圍類屬性 除預定義屬性外,用戶可以自定義屬性。 在構造體或 BLOCK語句使用的 ASSERT語句為并發(fā)ASSERT語句。 VHDL語言中順并描述語句主要有: ?信號賦值語句; ?過程調用語句; ?斷言語句 ?報告語句 順并描述語句 信號賦值語句 目的信號 =表達式; ?信號賦值語句可以在進程中內部使用,此時它作為順序語句形式出現(xiàn);信號賦值語句也可以在構造體的進程之外使用,此時它作為并發(fā)語句出現(xiàn)。 PORT (a,clk: IN STD_LOGIC。 SIGNAL z:STD_LOGIC_VECTOR(0 to 4)。 元件標號名加在元件名的前面,在該構造體的說明中該標號名一定是唯一的。 ARCHITECTURE behav OF mux IS SIGNAL sel: STD_LOGIC_VECTOR(1 DOWNTO 0)。 WHEN OTHERS。 ARCHITECTURE rtl OF mux4 IS SIGNAL sel: STD_LOGIC_VECTOR( l DOWNTO 0)。 ASSERT (sendb=?0?) REPORT”sendb timed out at ?0?” SEVERITY ERROR。 SIGNAL sendb:STD_LOGIC。 如果 PROCESS語句已含有敏感信號量說明,則進程中不能再使用 WAIT ON語句。 3) EXIT語句后跟“ WHEN條件”語句 當程序執(zhí)行到該語句時,只有所說明的” WHEN條件”為“真”時,才跳出循環(huán)的 LOOP語句。 在該 LOOP語句中 ,如果條件為 真 ,則進行循環(huán) 。 END LOOP [ 標號 ]。 3個 4input LUT S E L [ 7 . . 0 ]D A T A [ 2 5 5 . . 0 ]O U TM U XS E L [ 7 . . 0 ]D A T A [ 2 5 5 . . 0 ]O U TM U XS E L [ 7 . . 0 ]D A T A [ 2 5 5 . . 0 ]O U TM U XM u x 22 5 6 39。 WHEN 11111011 = y= 010。039。 END IF; END PROCESS; END ARCHITECTURE rtl。 ELSE c=b。 ?順序描述語句所涉及到的系統(tǒng)行為有時序流、條件、控制和迭代等; ?順序描述語句的功能操作有算術、邏輯運算,信號和變量的賦值,子程序調用等。 分支 1 ELSIF 分支條件表達式 2 THEN 順序處理語句; 分支 2 ………… ELSIF分支條件表達式 N THEN 順序處理語句; 分支 N ELSE 順序處理語句; 分支 N+1 END IF; 在這種多選擇控制的IF語句中,設置了多個條件,當滿足所設置的多個條件之一時,就執(zhí)行該條件后跟的順序處理語句。 ?IF語句描述時鐘邊沿時,只能使用單分支操作 IF語句格式,即不能含有 ELSE項 ?IF語句的條件判斷輸出是布爾量,即真( TRUE)或假( FALSE)。 WHEN 011 = y= 11110111。 B U F ( D C )0S E L [ 3 . . 0 ]D A T A [ 1 5 . . 0 ]O U TM U XS E L [ 3 . . 0 ]D A T A [ 1 5 . . 0 ]O U TM U XS E L [ 3 . . 0 ]D A T A [ 1 5 . . 0 ]O U TM U XB U F ( D C )co m b ~0M u x 03 39。 ELSIF input(1)=?0? THEN y=“110”。 y: OUT STD_LOGIC)。 END LOOP sbcd; FORLOOP與 WHILELOOP的區(qū)別舉例: NEXT 語句 NEXT [標號 ] [WHEN條件 ]。 進程狀態(tài)的變化受 WAIT語句的控制,當進程執(zhí)行到WAIT語句時,就將被掛起,并設置好再次執(zhí)行的條件。 例如: WAIT UNTIL((x*10)100)。 END PROCESS A。 并發(fā) ( Concurrent) 描述語句 在 VHDL語言中能進行并發(fā)處理的語句有: 進程 (PROCESS)語句 塊 (BLOCK)語句 選擇信號號代入 (Selective Signal Assignment )語句 條件信號代入 (Conditional Signal Assignment)語句 COMPONENT語句和 PORT MAP語句 GENERATE語句 進程語句是一種并發(fā)處理語句 ,在一個構造體中多個 PROCESS語句可以同時并發(fā)運行 。 END ARCHITECTURE rtl。 ELSE 2 WHEN a=?039。 END ARCHITECTURE behave。所以 FOR—GENERATE結構中不能使用 EXIT和 NEXT語句。 END ARCHITECTURE gen_shift。 END COMPONENT dff。 END ARCHITECTURRE beh。 一個信號只能有一個驅動源,因此同一信號不能用兩條或更多的并行信號賦值語句進行賦值。LEFT —— 得到數(shù)據(jù)類或子類區(qū)間的最左端的值; ?T39。 SIGNAL tim9,tim10: BOOLEAN 。當 n 缺省時,就代表對一維數(shù)組進行操作。VAL(x)——得到輸入位置序號 x的值; ?39。 PACKAGE t_time IS TYPE time IS (sec,min,hous,day,month,year)。RIGHTOF(hous)——得到 min。當 n 缺省時,就代表對一維區(qū)間進行操作。 VARIABLE left_range,right_range,uprange,lowrange:INTEGER。 例如: JK觸發(fā)器當 J=K=39。EVENT通常用于確定時鐘信號的邊沿,用它可以檢查信號是否處于某一個特殊值,以及信號是否剛好已發(fā)生變化。電平。139。 THEN ASSERT(d39。LAST_ACTIVE返回一個時間值,與 39。 在使用 39。 END ARCHITECUTRE attr。 BEGIN c=NOT(a)。039。或 39。 ?a39。 在對要使用的屬性進行說明以后,接著就可以對數(shù)據(jù)類型、信號、變量、實體、構造體、配置、子程序、元件、標號進行具體的描述。RANGE LOOP result:=result*2。 SUBTYPE color_gun IS color RANGE red TO black。另外,對新的信號來說,是否需要該值都要求對其進行刷新。139。 USE 。 c:OUT STD_LOGIC)。其信號類型與該屬性所加的信號相同,即以屬性所加的信號為參考信號,經(jīng)括號內的時間表達式所確定的時間延時后所得到的延遲信號。LAST_EVENT將返回一個信號 d自最近一次變化以來到現(xiàn)在 clk 事件發(fā)生時( clk的上升沿)為止所經(jīng)過的時間。LAST_EVENT可得到信號上各種事件發(fā)生以來所經(jīng)過的時間。那么該語句也同樣認為出現(xiàn)了上升沿,顯然這種情況是錯誤的。THEN q=d: END IF。 3. 信號的函數(shù)屬性 信號的函數(shù)屬性用來得到信號的行為信息。 PROCESS(a) IS TYPE bit_range IS ARRAY (0 TO 31) OF BIT。LOW(n)——得到索引號為 n的區(qū)間的低端位置號。 x:=time39。PRED(day)——得到 hous。RIGHTOF(x)。 TYPE bit_strange IS ARRARY (10 TO 20) OF BIT。 得到 month tim6=revers_tim?RIGHT。 屬性名 LEFT表示標量類或子類區(qū)間的左端 , 它表示約束區(qū)間最左的入口點 。 c:OUT STD_LOGIC)。 斷言( ASSERT)語句 ?ASSERT語句主要用于程序仿真、調試中的人機對話,它可以輸出一個文字串作為警告和錯誤信息 ?在執(zhí)行 ASSERT語句時,對條件進行判斷,如果條件為“真”,則向下執(zhí)行另一個語句;如果條件為“假”,則輸出錯誤信息和錯誤嚴重程度的級別。 g4:IF (i/=0) AND (i/=len1)) GENERATE dffx: dff PORT MAP (z(i),clk,z(i+1))。也就是說, FOR—GENERATE語句只能處理規(guī)則的構造體。 b: OUT STD_LOGIC)。 END CASE。 LIBRARY IEEE。 ENTITY mux IS PORT( il,i2,i3,a,b: IN STD_LOGIC。在構造體的結構描述方式中實現(xiàn)高層次設計與低層次模塊的連接。 END ARCHITECTURE wait_timeout。s。 wait on a,b。而 NEXT語句不結束 LOOP語句的執(zhí)行,只是結束一次循環(huán)。 y=tmp。 ELSE y=“000”。 h 1 M u x 23 39。 END CASE。 WHEN 2 = q=i2。 END ENTITY mux4。 IF (clk?EVENT AND clk=?1?) THEN q=d。如果條件成立,則 IF語句所包含的順序處理語句將被執(zhí)行;如果條件不成立,程序跳過 IF語句所包含的順序處理語句,而執(zhí)行 IF語句后面的語句。 y:OUT STD_LOGIC)。 WHEN 1 = q=i1。 WHEN OTHERS= y= XXXXXXXX。 h 1 1 39。 ELSIF input(6)=?0? THEN y=“001”。 END LOOP。 如果 EXIT后面沒有跟 標號 和 WHEN條件 ,則程序執(zhí)行到該語句時就無條件地從 LOOP語句中跳出 ,結束循環(huán)狀態(tài) ,繼續(xù)執(zhí)行 LOOP 語句后繼的語句 , 7. 1. 6 EXIT語句 EXIT語句是 LOOP語句中使用的循環(huán)控制語句,執(zhí)行EXIT語句將結束循環(huán)狀態(tài),即從 LOOP語句中跳出,結束 LOOP語句的正常執(zhí)行。 Process Begin y=a and b。 4. 多條件 WAIT 語句 WAIT ON nmi, interrupt UNTIL ((nmi=TRUE) OR (interrupt