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