【正文】
=TRUE)) FOR 5181。 END PROCESS B。 ( 2) BLOCK語句是一個獨立的子結(jié)構(gòu),可以包含PORT和 GENERIC語句。 USE IEEE. STD_LOGIC_1164. ALL。 END ARCHITECTURE behav。 WHEN OTHERS=q=?X?。 ENTITY shift IS PORT (a,clk: IN STD_LOGIC。 從上例可以發(fā)現(xiàn),在移位寄存器的輸入端和輸出端的信號連接無法用 FOR—GENERATE語句來實現(xiàn),只能用兩條信號代入語句來完成。 END GENERATE。 ARCHITECTURE … BEGIN PROCESS( z,q) IS BEGIN vector_to_int ( z, x_flag, q) ; …… END PROCESS; END ARCHITECTURE … 。 b: IN STD_LOGIC。 標(biāo)量類型數(shù)值屬性的書寫格式為: 標(biāo)量類型 39。 得到 sec tim5=revers_tim?LEFT。 屬性名 PROCESS(a) IS TYPE bit4 IS ARRAY (0 TO 3) OF BIT。SUCC(x)=39。 time39。PRED時, y:=sec。 ?39。 得到 0 END PROCESS。時,觸發(fā)器輸出信號在時鐘邊沿到來時保持,則認(rèn)為觸發(fā)器輸出信號被刷新,但是沒有事件發(fā)生。139。X39。LAST_EVENT 屬性 39。 屬性 d39。DELAYED[(time)] ——該屬性將產(chǎn)生一個延時信號。 PORT(a,b:IN STD_LOGIC。 LIBRARY IEEE。EVENT) AND (clk=39。STABLE需要建立一個額外的信號,這將使其使用更多的內(nèi)存。BASE do_nothing: PROCESS(x) IS TYPE color IS (red,blue,green,yellow,brown,black)。 BEGIN FOR i IN vect39。 用戶自定義的屬性 用戶自定義屬性的值在仿真中是不能改變的,也不能用于邏輯綜合。RANGE[(n)] ?a39。039。)) THEN …… END IF。 d=NOT(b AND c)。 (2) 屬性 39。DELAYED屬性時,如果所說明的延時時間事先未加定義,那么實際的延時時間就被賦值為 0 ns。LAST_EVENT類似。LAST_EVENT=setup_time) REPORT ” SETUP VIOLATION” SEVERITY ERROR。電平之前一定處于 39。 如果原來的電平為 39。 LIBRARY IEEE, USE IEEE. STD_LDGIC_1164. ALL, ENTITY dff IS PORT( d,clk: IN STD_LOGIC。139。 BEGIN left_range:=bit_range?LEFT。 ?39。 reverse_time39。 SUBTYPE revers_time IS time RANGE year DOWNTO sec。SUCC(x)——得到輸入 x值的下一個值; ?39。 ?39。 BEGIN tim1=tim?LEFT。RIGHT—— 得到數(shù)據(jù)類或子類區(qū)間的最右端的值; ?T39。 雖然 VHDL提供了使用判決函數(shù)處理多驅(qū)動源問題的機(jī)制,但一般在設(shè)計具體的邏輯電路時,不允許對同一信號使用多個并發(fā)語句進(jìn)行賦值。 信號賦值語句 過程調(diào)用語句( Procedure Call) PROCEDURE 過程名(參數(shù) 1;參數(shù) 2; … ) IS [定義語句 ]; (變量等定義) BEGIN [順序處理語句 ]; (過程的語句) END [PROCEDURE] 過程名; 在構(gòu)造體或 BLOCK語句中的過程調(diào)用語句為并發(fā)過程調(diào)用語句。 SIGNAL z:STD_LOGIC_VECTOR(1 to (len1))。 dff1: dff PORT MAP (z(0),clk,z(1))。 ?IF—GENERATE語句在條件為“真”時才執(zhí)行結(jié)構(gòu)內(nèi)部的語句,語句同樣是并發(fā)處理的,該結(jié)構(gòu)中沒有 ELSE項。 PROCESS( sel) IS BEGIN CASE sel IS WHEN “00” = q=i0。 AND b=?139。 注意幾點: 條件信號賦值語句與 IF語句的不同之處在于 ,后者只能在進(jìn)程內(nèi)部使用 (因 為它們是順序語句 )。PROCESS語句是 VHDL語言中描述硬件系統(tǒng)并發(fā)行為的最基本的語句 。 B: PRCOESS BEGIN WAIT UNTIL senda=?0?。 3. WAIT FOR WAIT FOR 時間表達(dá)式 。 1. WAIT ON [標(biāo)號 :] WAIT ON 敏感信號列表; 例如: WAIT ON a,b。 ?NEXT語句用在 LOOP語句中,實現(xiàn) LOOP語句的內(nèi)部循環(huán)控制。 END ENTITY parity_check。 ELSIF input(2)=?0? THEN y=“101”。 h 3 1 39。 WHEN 100 = y= 11101111。因此在 IF語句的條件表達(dá)式中只能使用關(guān)系運(yùn)算操作及邏輯運(yùn)算操作的組合表達(dá)式。如果所有設(shè)置的條件都不滿足,則執(zhí)行 ELSE和 END IF之間的順序處理語句。 VHDL語言中順序描述語句主要有: ?變量賦值語句; ?IF語句; ?CASE語句; ?LOOP語句; ?NEXT語句; ?EXIT語句; ?WAIT語句; ?斷言語句; ?NULL語句; 變量賦值語句 目的變量 :=表達(dá)式; 執(zhí)行該語句時,目的變量的值將由表達(dá)式所表達(dá)的新值代替; 表達(dá)式的數(shù)據(jù)類型、長度與目標(biāo)變量必須一致; 表達(dá)式可以是變量、信號或字符。 ARCHITECTURE rtl OF mux IS BEGIN PROCESS (a,b,sel) IS BEGIN IF (sel=?1? ) THEN c=a。 ELSE y=input(3)。與 39。 WHEN 11110111 = y= 011。 h 0 0 0 0 0 0 0 0 a [ 7 . . 0 ]y [ 2 . . 0 ]y=“XXX”。 [標(biāo)號 :] FOR 循環(huán)變量 IN 取值 范圍 LOOP 順序 處 理語句 。 END LOOP [標(biāo)號 ] 。 2) EXIT語句后跟 LOOP語句的標(biāo)號 此時 , 執(zhí)行 EXIT語句時 , 程序?qū)⑻了f明的標(biāo)號 。 錯誤語句 End process。 ARCHITECTURE wait_timeout OF wait_example IS SIGNAL senda:STD_LOGIC:=?0?。 WAIT UNTIL (sendb=?0?) FOR 1 us。 目的信號量 = 表達(dá)式 1 WHEN 條件 1 ELSE 表達(dá)式 2 WHEN 條件 2 ELSE 表達(dá)式 3 WHEN 條件 3 ELSE …… …… ELSE 表達(dá)式 n。 BEGIN WITH sel SELECT q=i0 WHEN 0, il WHEN 1, i2 WHEN 2, i3 WHEN 3, ?X39。 END ENTITY mux。 元件標(biāo)號名:元件名 [ GENERIC MAP(參數(shù)映射列表) ] PORT MAP (端口映射列表) 。 END COMPONENT dff。 ENTITY shift IS GENERIC(len:INTEGER:=4)。 DE N AQP R EC L RDE N AQP R EC L RDE N AQP R EC L RDE N AQP R EC L R\ g 1 : 0 : g 2 : d f f x \ g 1 : 1 : g 4 : d f f x \ g 1 : 2 : g 4 : d f f x \ g 1 : 3 : g 3 : d f f xacl kb 在 VHDL語言中存在一類語句,根據(jù)不同的使用場合,即可以作為順序執(zhí)行語句,又可作為并發(fā)執(zhí)行語句,在本教材中將該類語句稱為順并描述語句。 ASSERT 條件 [REPORT輸出信息 ] [SEVERITY級別 ]。 END ARCHITECTURE rtl。 當(dāng)數(shù)據(jù)類的區(qū)間用( a TO b)來定義時,那么 ba,此時‘ LEFT屬性的值通常等于’ LOW的值; 當(dāng)數(shù)據(jù)類區(qū)間用( b DOWNTO a)來定義時, ba,此時‘ LEFT屬性的值則與’ HIGH的屬性值相對應(yīng)。ASCENDING。 len2=11 END PROCESS。 對于遞減區(qū)間來說: 39。PRED(day)——得到 hous。PRED(y)要求提供比 sec更小的值,已超出了定義范圍。RIGHT(n) =39。 得到 31 uprange:=bit_range?HIGH。 ?s?LAST_ACTIVE——該屬性得到一個時間類型的值,即從信號的前一次被刷新到現(xiàn)在所經(jīng)過的時間。EVENT AND clk=39。EVENT AND clk=39。 data ENTITY dff IS GENERIC (setup_time,hold_time:time:=5 ns)。ACTIVE和 39。 ?s?TRANSACTION——該屬性可以建立一個 BIT類型信號,當(dāng)屬性所加的信號刷新時, 得到的 信號的值發(fā)生翻轉(zhuǎn)。 intb=TRANSPORT b after b_ipd。 ARCHITECTURE pulse_gen OF pulse_gen IS BEGIN b=a39。)) THEN …… END IF。STABLE相同的功能,但是兩者的區(qū)別在于,前者所加的信號只要被刷新,不管信號值是否發(fā)生改變,返回值為“假”。RIGHT。 RETURN result。 . 用戶自定義的屬性 ATTRIBUTE 屬性名 :數(shù)據(jù)類型名 /子類型名; ATTRIBUTE 屬性名 OF 目標(biāo)名:目標(biāo)集合 IS 表達(dá)式; ATTRIBUTE max_area : REAL。 a:=color_gun39。 (4) 屬性 39。STABLE) AND (clk=39。 END ARCHITECTURE pulse_gen。 END ARCHITECTURE int_signals。DELAYED 屬性 39。屬性 39。 q: OUT STD_LOGIC)。)AND (clk39。THEN 該語句描述了一個時鐘脈沖的上升沿,上升沿的發(fā)生是由兩個條件約束的,即時鐘脈沖目前處于 39。LAST_VALUE——該屬性得到信號的一個數(shù)值,即該值是信號最后一次改變以前的值。 得到 0 END PROCESS。LEFT (n) =39。在對數(shù)組的每一個元素進(jìn)行操作時,必須知道數(shù)組的區(qū)間。RIGHTOF(hous)——得到 day。LEFTOF(x)。 當(dāng)函數(shù)屬性以表達(dá)式形式使用時 (例如 POS(x)), 首先應(yīng)指定一個輸入的自變量值 (如 x), 函數(shù)調(diào)用后將得到一個返回值 。ASCENDING。 TYPE tim IS (sec,min,hour,day,month,year)。 數(shù)值