【正文】
ATTRIBUTE capacitance OF clk, reset: SIGNAL IS 20 pF。 IF vect(i)=?1? THEN result:=result+1。a=yellow 區(qū)間屬性 (RANGE) 區(qū)間屬性僅用于受約束的數(shù)組類型數(shù)據(jù),并且可返回所選擇輸入?yún)?shù)的索引區(qū)間。 VARIABLE a:color。139。 (3) 屬性 39。LAST_VALUE=39。) AND (clk39。 ARCHITECTURE rtl OF entity_1 IS SIGNAL c,d:STD_LOGIC。 ENTITY pulse_gen IS PORT(a: IN STD_LOGIC。DELAYED(b_ipd) after c_opd。 END ENTITY and2。兩者不同的是,后者要求編程人員用傳送延時賦值的方法記入程序中,而且?guī)в袀魉脱訒r賦值語句的信號是一個新的信號,它必須在程序中加以說明。 ?s39。屬性 39。 ( 3) 屬性 39。139。該屬性常用于檢查定時時間,如檢查建立時間、保持時間和脈沖寬度等。) THEN 修改后的語句保證時鐘脈沖在變成 39。為了避免出現(xiàn)這種邏輯錯誤,最好使用屬性39。139。 END PROCESS。LAST_VALUE 屬性 39。 信號屬性函數(shù)共有 5種: ?s39。 信號被刷新不一定產生事件。 VARIABLE left_range,right_range,uprange,lowrange:INTEGER。LOW (n) PROCESS(a) IS TYPE bit_range IS ARRAY (31 DOWNTO 0) OF BIT。 遞增區(qū)間: 39。 n代表多維數(shù)組中所定義的多維區(qū)間序號。PRED(y)。 reverse_time39。 reverse_time39。RIGHTOF(x)。 39。POS(x)——得到輸入 x值得位置序號; ?39。 VARIABLE len1,len2:INTEGER。LENGTH(n) ——得到一個數(shù)組的長度值,該屬性可用于任何標量類數(shù)組和多維的標量類區(qū)間的數(shù)組。得到 min tim7=revers_tim?HIGH。 SIGNAL tim1,tim2,tim3,tim4,tim5,tim6,tim7,tim8:TIME。 RIGHT表示標量類或子類區(qū)間的右端 , 它表示約束區(qū)間最右的入口點 。 根據(jù)類型的不同,數(shù)值屬性主要包含兩類: ? 標量類型的數(shù)值屬性 ? 數(shù)組類型的數(shù)值屬性 1. 標量類型數(shù)值屬性 一般數(shù)據(jù)的數(shù)值屬性有以下 5種: ?T39。 END ENTITY multi_driver。 驅動源 : 影響驅動器的信號。 ?REPORT后面跟的是設計者所寫的文字串,通常說明錯誤的原因,文字串用雙引號括起來。 END PROCESS。 END GENERATE。 q: OUT STD_LOGIC)。為了解決不規(guī)則電路的統(tǒng)一描述方法,就可以采用 IF—GENERATE語句 。 b=z(4)。 END ENTITY shift。 END GENERATE [標號名 ]; GENERATE語句 ?FOR—GENERATE和 FOR—LOOP語句不同,前者的結構中采用并發(fā)處理語句,后者是順序處理語句。 END PROCESS。 WHEN OTHERS。 USE IEEE. STD_LOGIC_1164. ALL。 AND b=?039。 q: OUT STD_LOGIC)。X39。 ( 3)說明語句可以是子程序聲明或定義、類型定義、常數(shù)定義、信號定義、 COMPONENT元件聲明等 ( 4) BLOCK內部語句是并發(fā)描述語句 ( 5)衛(wèi)式布爾表達式說明了 BLOCK語句的執(zhí)行條件,只有條件為“真”時, BLOCK語句才執(zhí)行。 NULL。 A: PRCOESS BEGIN WAIT UNTIL (sendb=?1?) FOR 1 us。 senda=?0? after 10 ns。 nmi和 interrupt任何一個有一次新的變化; nmi和 interrupt任何一個取值為真; 5181。如果評估的結果使表達式返回一個“真”值,則進程脫離掛起狀態(tài),繼續(xù)執(zhí)行下一個語句。 End process。 WAIT語句 WAIT語句的 5種格式: ① WAIT 無限等待 ② WAIT ON 敏感信號量變化 ③ WAIT UNTIL 條件滿足 ④ WAIT FOR 時間到 ⑤多條件 WAIT語句 滿足所有條件中的一個或多個條件 進程在仿真運行中總是處于下述兩種狀態(tài)之一:執(zhí)行和掛起。 EXIT [標號 ] [WHEN條件 ]。 sbcd: WHILE (i10) LOOP sum:=i+sum; i:=i+1。 END PROCESS。 ENTITY parity_check IS PORT( a: IN STD_LOGICVECTOR( 7 DOWNTO 0)。 END IF。 6個 4input LUT 2個 2input LUT PROCESS(input) IS BEGIN IF input(0)=?0? THEN y=“111”。 h 3 1 39。 END CASE。 例: 210進制編碼器的 CASE描述 CASE input IS WHEN 01111111 = y= 111 ; WHEN 10111111 = y= 110。 WHEN 010 = y= 11111011。 WHEN 3 = q=i3。 ?只能在進程、過程或函數(shù)等順序執(zhí)行語句結構中使用。 ARCHITECTURE rtl OF mux4 IS BEGIN PROCESS (input,sel) IS BEGIN IF (sel=“00”) THEN y=input(0)。 3. 多重分支操作 IF語句 IF 分支條件表達式 1 THEN 順序處理語句 。 END IF; 2. 雙重分支操作 IF語句 IF 分支條件表達式 THEN 順序處理語句 。 ?順序描述語句只能出現(xiàn)在進程或子程序(過程和函數(shù))中,由它定義進程或子程序所執(zhí)行的算法。 END IF; 當程序執(zhí)行到該 IF語句時,就要判斷 IF語句所指定的條件是否成立。 END IF。 sel: IN STD_LOGIC_VECTOR(1 DOWNTO 0)。 IF 條件表達式 1 THEN IF 條件表達式 2 THEN …… IF 條件表達式 N THEN 順序處理語句; 分支 1,同時滿足條件 1~N ELSE 順序處理語句; 分支 2,同時滿足條件 1~N1 END IF; …… ELSE 順序處理語句; 分支 N,只滿足條件 1 END IF; ELSE 順序處理語句; 分支 N+1,所有條件都不滿足 END IF; 格式 2: ?IF語句不僅可以用于選擇器的設計,而且還可以用于比較器、譯碼器等凡是可以進行條件控制的邏輯電路設計。 CASE 語句 條件表達式 4種不同表示形式: 1) WHEN 值 =順序處理語句; 2) WHEN 值 | 值 |值 |……|= 順序處理語句; 3) WHEN 值 TO 值 =順序處理語句; 4) WHEN OTHERS= 順序處理語句; CASE sel IS WHEN 0 = q=i0。、39。 WHEN 111 = y= 01111111。 WHEN 11111101 = y= 001。 h 3 1 39。 h B 7 F F 7 F F F F F F F F F F F 7 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F a [ 7 . . 0 ]y [ 2 . . 0 ]M u x 02 5 6 39。 ELSIF input(5)=?0? THEN y=“010”。 LOOP語句中的循環(huán)變量的值在每次循環(huán)中都將發(fā)生變化 , 而 IN后跟的離散范圍則表示循環(huán)變量在循環(huán)過程中依次取值的范圍。 ; F0R i IN 0 TO 7 LOOP tmp: =tmp XOR a(i)。 如果條件為 假 ,則結束循環(huán)。 ?LOOP 語句嵌套時,通常 NEXT語句應標有“標號”和“ WHEN條件”。此時不管 EXIT語句是否有標號說明,都將執(zhí)行下一條語句。 End process。 2. WAIT UNTIL WAIT UNTIL [布爾表達式 ]。 WAIT FOR (a*(b+c))。 BEGIN A: PRCOESS BEGIN WAIT UNTIL sendb=?1?。 sendb=?1? after 10 ns。 senda=?0? after 10 ns。 BLOCK語句的書寫格式一般為 : BLOCK語句的特點: ( 1)塊名是必須要有的,不能省略。 BEGIN sel=b amp。 LIBRARY IEEE。 sel=0 WHEN a=?039。 ELSE 4。 BEGIN sel = a amp。, WHEN “11” = q=i3。 低層元件的端口信號與高層的實際連接信號 PORT MAP的映射關系聯(lián)系起來。 USE 。 BEGIN z(0)=a。 dff4: dff PORT MAP (z(3),clk,z(4))。 b: OUT STD_LOGIC)。 g3:IF i=(len1) GENERATE dffx: dff PORT MAP (z(i),clk,b)。 ?一個并發(fā)信號代入語句實際上是一個進程的縮寫; ARCHITECTURE beh OF a_var IS BEGIN output=a(i)。 ARCHITECTURE … BEGIN vector_to_int ( z, x_flag, q) ; …… END ARCHITECUTURE … 。如果 ASSERT語句在進程或子程序中使用,則為順序 ASSERT語句。 ENTITY muti_driver IS PORT(a: IN STD_LOGIC。 數(shù)值屬性 ( Value) 數(shù)值屬性是由于該類屬性得到的結果為數(shù)值,因此命名為數(shù)值屬性。ASECNDING ——得到標量類或子類是否為增區(qū)間,若按照升序定義,則得到 TURE,否則為 FALSE。 TYPE tim IS (sec,min,hour,day,month,year)。 得到 year tim4=tim?LOW。ASCENDING。 標量類型數(shù)值屬性的書寫格式為: 數(shù)組類型 39。 當函數(shù)屬性以表達式形式使用時 (例如 POS(x)), 首先應指定一個輸入的自變量值 (如 x), 函數(shù)調用后將得到一個返回值 。RIGHTOF(x)——得到鄰接輸入 x值右邊的值; 對于遞增區(qū)間來說: 39。LEFTOF(x)。SUCC(hous)——得到 day。RIGHTOF(hous)——得到 day。 SUCC和39。在對數(shù)組的每一個元素進行操作時,必須知道數(shù)組的區(qū)間。HIGH(n)——得到索引號為 n的區(qū)間的高端位置號。LEFT (n) =39。 得到 31 lowrange:=