【正文】
句將被執(zhí)行;如果條件不成立,程序跳過 IF語句所包含的順序處理語句,而執(zhí)行 IF語句后面的語句。第 7章 VHDL基本描述語句 順序描述語句 并發(fā)描述語句 順并描述語句 屬性描述語句 順序描述語句 ( Sequential) ?順序描述語句像在一般的軟件語言中一樣,其語句是按出現(xiàn)的次序加以執(zhí)行的。 IF (clk?EVENT AND clk=?1?) THEN q=d。 END ARCHITECTURE rtl。 END ENTITY mux4。 ELSIF語句作為 IF的后續(xù)語句,只需要 END IF 結(jié)束。 WHEN 2 = q=i2。的組合值,比如 XXXX01等 CASE 語句與 IF語句的區(qū)別: IF語句中的條件是按順序處理的; CASE語句中的條件(值)是并行處理的; 因此 IF語句可以描述優(yōu)先編碼電路,而 CASE語句不能; 例: 38譯碼器的 CASE描述 CASE indata IS WHEN 000 = y= 11111110 ; WHEN 001 = y= 11111101。 END CASE。 WHEN OTHERS= y= XXX。 h 1 M u x 23 39。 h 9 F F F 7 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 F F F F F F F F y=“111”。 ELSE y=“000”。 USE IEEE. STD_LOGIC_1l64. ALL。 y=tmp。 sum:=0。而 NEXT語句不結(jié)束 LOOP語句的執(zhí)行,只是結(jié)束一次循環(huán)。如果無標(biāo)號說明,下一條要執(zhí)行的語句是循環(huán)外的下一條語句。 wait on a,b。 ?該語句在表達(dá)式中將建立一個隱式的敏感信號表,當(dāng)表中的任何一個信號量發(fā)生變化時,就立即對表達(dá)式進(jìn)行一次評估。s。 WAIT UNTIL sendb=?0?。 END ARCHITECTURE wait_timeout。 7. NULL語句 NULL語句用來表示一種只占位置的空操作,該語句不執(zhí)行任何操作。在構(gòu)造體的結(jié)構(gòu)描述方式中實現(xiàn)高層次設(shè)計與低層次模塊的連接。 q=i0 WHEN sel= 00 ELSE il WHEN sel= 01 ELSE i2 WHEN sel= 10 ELSE i3 WHEN sel= 11 ELSE 39。 ENTITY mux IS PORT( il,i2,i3,a,b: IN STD_LOGIC。 ELSE 1 WHEN a=?139。 LIBRARY IEEE。 WITH sel SELECT q=i0 WHEN “00”, il WHEN “10” i2 WHEN “01”, i3 WHEN “11”, ?X39。 END CASE。 END GENERATE [標(biāo)號名 ]; 標(biāo)號: IF 條件 GENERATE 并發(fā)處理語句 。 b: OUT STD_LOGIC)。 END GENERATE。也就是說, FOR—GENERATE語句只能處理規(guī)則的構(gòu)造體。 ARCHITECTURE if_shift OF shift IS COMPONENT dff IS PORT(d,clk: IN STD_LOGIC。 g4:IF (i/=0) AND (i/=len1)) GENERATE dffx: dff PORT MAP (z(i),clk,z(i+1))。 ARCHITECTURE beh OF a_var IS BEGIN PROCESS(a,i) IS BEGIN output=a(i)。 斷言( ASSERT)語句 ?ASSERT語句主要用于程序仿真、調(diào)試中的人機(jī)對話,它可以輸出一個文字串作為警告和錯誤信息 ?在執(zhí)行 ASSERT語句時,對條件進(jìn)行判斷,如果條件為“真”,則向下執(zhí)行另一個語句;如果條件為“假”,則輸出錯誤信息和錯誤嚴(yán)重程度的級別。 VHDL規(guī)定,每一個對信號進(jìn)行賦值的操作都將為該信號創(chuàng)建一個驅(qū)動器,并且對信號的賦值將直接影響該驅(qū)動器的值。 c:OUT STD_LOGIC)。 例如:數(shù)組的長度、標(biāo)量類型的最低限制等。 屬性名 LEFT表示標(biāo)量類或子類區(qū)間的左端 , 它表示約束區(qū)間最左的入口點 。 SUBTYPE revers_tim IS tim RANGE month DOWNTO min。 得到 month tim6=revers_tim?RIGHT。 (month,day,hour,min) 2. 數(shù)組 類型數(shù)值屬性 一般數(shù)據(jù)的數(shù)值屬性有以下 2種: ?39。 TYPE bit_strange IS ARRARY (10 TO 20) OF BIT。 函數(shù)屬性有 3種: ? 離散 /物理類型的函數(shù)屬性 ? 數(shù)組類型的函數(shù)屬性 ? 信號的函數(shù)屬性 1. 離散 /物理類型的函數(shù)屬性 枚舉類型 、 整數(shù)類型和物理類型 數(shù)據(jù)類型屬性函數(shù)可以劃分為 6種屬性函數(shù): ?39。RIGHTOF(x)。PRED(x)=39。PRED(day)——得到 hous。LEFTOF(day)——得到 hous。 x:=time39。LEFT(n)——得到索引號為 n的區(qū)間的左端位置號。LOW(n)——得到索引號為 n的區(qū)間的低端位置號。RIGHT (n) =39。 PROCESS(a) IS TYPE bit_range IS ARRAY (0 TO 31) OF BIT。 信號的值被重新賦值稱為信號被刷新。 3. 信號的函數(shù)屬性 信號的函數(shù)屬性用來得到信號的行為信息。EVENT和 39。THEN q=d: END IF。電平,而且時鐘脈沖剛剛從其他電平變?yōu)?39。那么該語句也同樣認(rèn)為出現(xiàn)了上升沿,顯然這種情況是錯誤的。039。LAST_EVENT可得到信號上各種事件發(fā)生以來所經(jīng)過的時間。EVENT AND clk=39。LAST_EVENT將返回一個信號 d自最近一次變化以來到現(xiàn)在 clk 事件發(fā)生時( clk的上升沿)為止所經(jīng)過的時間。EVENT類似。其信號類型與該屬性所加的信號相同,即以屬性所加的信號為參考信號,經(jīng)括號內(nèi)的時間表達(dá)式所確定的時間延時后所得到的延遲信號。為實現(xiàn)同樣的功能,也可以用傳送延時賦值語句( Transport delay)來實現(xiàn)。 c:OUT STD_LOGIC)。DELAYED(a_ipd) AND b39。 USE 。STABLE 后面跟的括號中的時間值被說明為 0 ns或者未加說明,那么當(dāng)信號 a發(fā)生改變時,輸出信號 b在對應(yīng)的時間位置將產(chǎn)生 δ寬度的低電平。139。) AND (clk39。另外,對新的信號來說,是否需要該值都要求對其進(jìn)行刷新。TRANSACTION將建立一個數(shù)據(jù)類型為 BIT的信號,當(dāng)屬性所加的信號每次從 39。 SUBTYPE color_gun IS color RANGE red TO black。SUCC(green)。RANGE LOOP result:=result*2。 ATTRIBUTE capacitance : cap。 在對要使用的屬性進(jìn)行說明以后,接著就可以對數(shù)據(jù)類型、信號、變量、實體、構(gòu)造體、配置、子程序、元件、標(biāo)號進(jìn)行具體的描述。 END IF。 ?a39。 BEGIN a:=color_gun39?;?39。QUIET 屬性 39。039。LAST_VALUE=39。 BEGIN c=NOT(a)。 b: OUT boolean)。 END ARCHITECUTRE attr。 ARCHITECTURE int_signals OF and2 IS SIGNAL inta,intb:STD_LOGIC。 在使用 39。STABLE[(time)] ——該屬性可建立一個布爾信號,在括號內(nèi)的時間表達(dá)式所說明的時間內(nèi),若參考信號沒有發(fā)生事件,則該屬性可得到“真”的結(jié)果。LAST_ACTIVE返回一個時間值,與 39。ACTIVE 和 39。 THEN ASSERT(d39。 ( 2) 屬性 39。139。LAST_VALUE。電平。 END ARCHITECTURE dff。EVENT通常用于確定時鐘信號的邊沿,用它可以檢查信號是否處于某一個特殊值,以及信號是否剛好已發(fā)生變化。EVENT —— 如果在當(dāng)前仿真周期內(nèi)事件發(fā)生了, 屬性是一個為“真”的布爾量;否則為“假”; ?s?ACTIVE——如果在當(dāng)前仿真周期內(nèi)信號被刷新,屬性是 一個為“真”的布爾量,否則為“假”。 例如: JK觸發(fā)器當(dāng) J=K=39。 BEGIN left_range:=bit_range?LEFT。 VARIABLE left_range,right_range,uprange,lowrange:INTEGER。LEFT(n) =39。當(dāng) n 缺省時,就代表對一維區(qū)間進(jìn)行操作。 第二個表達(dá)式將引起運(yùn)行錯誤。RIGHTOF(hous)——得到 min。SUCC(hous)——得到 day。 PACKAGE t_time IS TYPE time IS (sec,min,hous,day,month,year)。PRED(x)=39。VAL(x)——得到輸入位置序號 x的值; ?39。 BEGIN len1:=bit4’LENGTH。當(dāng) n 缺省時,就代表對一維數(shù)組進(jìn)行操作。 得到 month tim8=revers_tim?LOW。 SIGNAL tim9,tim10: BOOLEAN 。 HIGH表示標(biāo)量類或子類區(qū)間的高端 , 表示約束區(qū)間的最大值 。LEFT —— 得到數(shù)據(jù)類或子類區(qū)間的最左端的值; ?T39。 ARCHITECTURE rtl OF multi_driver IS BEGIN c=a。 一個信號只能有一個驅(qū)動源,因此同一信號不能用兩條或更多的并行信號賦值語句進(jìn)行賦值。 ?SEVERITY后面跟的是錯誤嚴(yán)重程度的級別。 END ARCHITECTURRE beh。 END GENERATE。 END COMPONENT dff。 LIBRARY IEEE。 END ARCHITECTURE gen_shift。 ARCHITECTURE gen_shift OF shift IS COMPONENT dff IS PORT(d,clk: IN STD_LOGIC。所以 FOR—GENERATE結(jié)構(gòu)中不能使用 EXIT和 NEXT語句。 COMPONENT 語句及 PORT MAP 語句 COMPONENNT 元件名 IS [GENERIC 語句; ] 參數(shù)說明 PORT (端口列表); 端口說明 END COMPONENT [元件名 ]; 在構(gòu)造體的結(jié)構(gòu)描述中, COMPONENT語句是基本描述語句。 END ARCHITECTURE behave。 ENTITY mux IS PORT( il,i2,i3,a,b: IN STD_LOGIC。 ELSE 2 WHEN a=?039。 END ENTITY mux。 END ARCHITECTURE rtl。采用衛(wèi)式布爾表達(dá)式的 BLOCK語句內(nèi)部需要使用關(guān)鍵詞GUARDED控制賦值語句的執(zhí)行 一位全加器的 BLOCK的描述 D觸發(fā)器的 BLOCK的描述 選擇信號賦值語句 (Selective Signal Assignment) WITH 表達(dá)式 SELECT 目的信號量 =表達(dá)式 1 WHEN 條件