




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第3章章 VHDL語(yǔ)法基礎(chǔ)語(yǔ)法基礎(chǔ)3.1 順序語(yǔ)句順序語(yǔ)句3.2 并行語(yǔ)句并行語(yǔ)句3.1 順序語(yǔ)句順序語(yǔ)句 VHDL有兩種類型語(yǔ)句:順序語(yǔ)句和并行語(yǔ)句并發(fā)語(yǔ)句)。有兩種類型語(yǔ)句:順序語(yǔ)句和并行語(yǔ)句并發(fā)語(yǔ)句)。 順序語(yǔ)句的執(zhí)行指仿真執(zhí)行順序是與它們的書寫順序基本順序語(yǔ)句的執(zhí)行指仿真執(zhí)行順序是與它們的書寫順序基本一致的。一致的。 并行語(yǔ)句的執(zhí)行是同步進(jìn)行的,或者說(shuō)是并行運(yùn)行的,其執(zhí)行并行語(yǔ)句的執(zhí)行是同步進(jìn)行的,或者說(shuō)是并行運(yùn)行的,其執(zhí)行方式與書寫的順序無(wú)關(guān)。方式與書寫的順序無(wú)關(guān)。 順序語(yǔ)句又分兩種情況:一種是真正的順序語(yǔ)句。另一種具有順序語(yǔ)句又分兩種情況:一種是真正的順序語(yǔ)句。另一種具有順序語(yǔ)句
2、與并行語(yǔ)句的雙重特性,放在進(jìn)程、塊、子程序之內(nèi)順序語(yǔ)句與并行語(yǔ)句的雙重特性,放在進(jìn)程、塊、子程序之內(nèi)是順序語(yǔ)句,被放在進(jìn)程、塊、子程序之外是并行語(yǔ)句。是順序語(yǔ)句,被放在進(jìn)程、塊、子程序之外是并行語(yǔ)句。IF語(yǔ)句是一種條件語(yǔ)句,根據(jù)語(yǔ)句中所設(shè)置的一種或多種語(yǔ)句是一種條件語(yǔ)句,根據(jù)語(yǔ)句中所設(shè)置的一種或多種條件,有選擇地執(zhí)行指定的順序語(yǔ)句。條件,有選擇地執(zhí)行指定的順序語(yǔ)句。條件值是布爾型條件值是布爾型TRUE或或FALSE)。)。條件條件=TRUE,執(zhí)行,執(zhí)行THEN后順序語(yǔ)句,條件全為后順序語(yǔ)句,條件全為FALSE時(shí),時(shí),才會(huì)執(zhí)行才會(huì)執(zhí)行ELSE后順序語(yǔ)句或結(jié)束語(yǔ)句后順序語(yǔ)句或結(jié)束語(yǔ)句END IF。
3、一、一、IF語(yǔ)句語(yǔ)句IF 條件句條件句 THEN 順序語(yǔ)句;順序語(yǔ)句;ELSIF 條件句條件句 THEN 順序語(yǔ)句順序語(yǔ)句;ELSE 順序語(yǔ)句順序語(yǔ)句;END IF; 語(yǔ)句結(jié)構(gòu):語(yǔ)句結(jié)構(gòu): 根據(jù)大括號(hào)和方括號(hào)部分可選情況,共有三種結(jié)構(gòu)。根據(jù)大括號(hào)和方括號(hào)部分可選情況,共有三種結(jié)構(gòu)。例例1: IF (ABTHEN OUTPUTB)檢測(cè)結(jié)果為檢測(cè)結(jié)果為TRUE,則向信號(hào),則向信號(hào)OUTPUT賦值賦值1,否則此信號(hào)維持原值。,否則此信號(hào)維持原值。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY EXAMPLE IS PORT (A,B,C: IN BOO
4、LEAN;OUTPUT:OUT BOOLEAN);END ENTITY EXAMPLE;ARCHITECTURE ART OF EXAMPLE ISBEGIN PROCESS(A,B,C) IS VARIABLE N: BOOLEAN; BEGIN IF A THEN N:=B; ELSE N:=C; END IF; OUTPUT =N; END PROCESS;END ARCHITECTURE ART;CABOUTPUT對(duì)應(yīng)的硬件電路對(duì)應(yīng)的硬件電路例例2:用:用IF語(yǔ)句描述圖示硬件電路。語(yǔ)句描述圖示硬件電路。此處的庫(kù)、程序包使用此處的庫(kù)、程序包使用說(shuō)明是否必要說(shuō)明是否必要P1P2BCBASB
5、ASAZMUX21MUX21SIGNA A,B,C,P1,P2,Z: BIT;.IF (P1=1) THENZ=A; -執(zhí)行條件是執(zhí)行條件是(P1=1)ELSIF (P2=0) THENZ=B; -執(zhí)行條件是執(zhí)行條件是(P1=0)AND (P2=0)ELSEZ=C; -執(zhí)行條件是執(zhí)行條件是(P1=0)AND (P2=1)END IF;例例3: 由兩個(gè)由兩個(gè)2選選1多路選擇器構(gòu)成的電路邏輯描述如圖所示,多路選擇器構(gòu)成的電路邏輯描述如圖所示,其中,當(dāng)其中,當(dāng)P1和和P2為高電平時(shí)下端的通道接通。為高電平時(shí)下端的通道接通。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.AL
6、L;ENTITY CODER ISPORT ( SR:IN STD_LOGIC_VECTOR(0 TO 7); SC:OUT STD_LOGIC_VECTOR(0 TO 2);END ENTITY CODER;ARCHITECTURE ART OF CODER ISBEGINPROCESS(SR) ISBEGIN IF(SR(7)=0) THEN SC=000; -(SR(7)=0) ELSIF(SR(6)=0) THEN SC =100; -(SR(7)=1) AND (SR(6)=0)ELSIF(SR (5)=0) THEN SC =010; -(SR (7)=1)AND(SR (6)=1
7、)AND(SR (5)=0)例:例:ELSIF(SR (4)=0) THEN SC =110; ELSIF(SR (3)=0) THEN SC =001;ELSIF(SR (2)=0) THEN SC =101; ELSIF(SR (1)=0) THEN SC =011; ELSESC 順序語(yǔ)句;順序語(yǔ)句; WHEN 選擇值選擇值 =順序語(yǔ)句;順序語(yǔ)句; WHEN OTHERS =順序語(yǔ)句;順序語(yǔ)句; END CASE;二、二、CASE 語(yǔ)句語(yǔ)句 符號(hào)符號(hào)=相當(dāng)于相當(dāng)于THEN。 執(zhí)行時(shí),首先計(jì)算表達(dá)式的值,然后將該值與執(zhí)行時(shí),首先計(jì)算表達(dá)式的值,然后將該值與WHEN中的選中的選擇值比較,相同
8、執(zhí)行對(duì)應(yīng)的順序語(yǔ)句,否則執(zhí)行擇值比較,相同執(zhí)行對(duì)應(yīng)的順序語(yǔ)句,否則執(zhí)行OTHERS 后后的順序語(yǔ)句或結(jié)束語(yǔ)句的順序語(yǔ)句或結(jié)束語(yǔ)句END CASE。 語(yǔ)句中的選擇值必須列舉窮盡,又不能重復(fù)。語(yǔ)句中的選擇值必須列舉窮盡,又不能重復(fù)。 選擇值不能列舉窮盡時(shí),語(yǔ)句選擇值不能列舉窮盡時(shí),語(yǔ)句WHEN OTHERS =順序語(yǔ)句;順序語(yǔ)句;通常不能缺省。通常不能缺省。 語(yǔ)句結(jié)構(gòu):語(yǔ)句結(jié)構(gòu):例:用例:用CASE語(yǔ)句描述語(yǔ)句描述4選選1多路選擇器。多路選擇器。S1S2CBADCABDS2 S1ZLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX41 ISPOR
9、T(S1,S2: IN STD_LOGIC;A,B,C,D:IN STD_LOGIC; Z: OUT STD_LOGIC);END ENTITY MUX41;ARCHITECTURE ART OF MUX41 ISSIGNA S :STD_LOGIC_VECTOR(1 DOWNTO 0);BEGINSZZZZZ=X; END CASE;END PROCESS;END ARCHITECTURE ART;S1S2CBADCABDS2 S1Z注意:本例的第五個(gè)條件名是必需的,因?yàn)閷?duì)于定義注意:本例的第五個(gè)條件名是必需的,因?yàn)閷?duì)于定義STD_LOGIC_VECTOR數(shù)據(jù)類型的數(shù)據(jù)類型的S,在,在VHD
10、L綜合過(guò)程中,它綜合過(guò)程中,它可能的選擇值除了可能的選擇值除了00、01、10和和11外,還可以有其他定義于外,還可以有其他定義于STD_LOGIC的選擇值。的選擇值。如果使用如果使用BIT_VECTOR數(shù)據(jù)類型,數(shù)據(jù)類型, WHEN OTHERS句句子就不必了。子就不必了。 X-強(qiáng)未知的強(qiáng)未知的注:書上的設(shè)計(jì)描述方法與此處不同。注:書上的設(shè)計(jì)描述方法與此處不同。三、三、LOOP語(yǔ)句語(yǔ)句 FOR-LOOP語(yǔ)句:語(yǔ)句: 標(biāo)號(hào)標(biāo)號(hào):FOR 循環(huán)變量循環(huán)變量 IN 循環(huán)次數(shù)范圍循環(huán)次數(shù)范圍 LOOP 順序語(yǔ)句順序語(yǔ)句 END LOOP 標(biāo)號(hào)標(biāo)號(hào); 循環(huán)變量的值在每一次的循環(huán)中都會(huì)發(fā)生變化。循環(huán)變量的
11、值在每一次的循環(huán)中都會(huì)發(fā)生變化。 循環(huán)次數(shù)范圍表示循環(huán)變量在循環(huán)過(guò)程中的取值范圍,顯然循環(huán)次數(shù)范圍表示循環(huán)變量在循環(huán)過(guò)程中的取值范圍,顯然FOR模式的循環(huán)次數(shù)是明確的。模式的循環(huán)次數(shù)是明確的。 LOOP語(yǔ)句就是循環(huán)語(yǔ)句,它可以使所包含的一組順序語(yǔ)句語(yǔ)句就是循環(huán)語(yǔ)句,它可以使所包含的一組順序語(yǔ)句被循環(huán)執(zhí)行,其執(zhí)行次數(shù)可由設(shè)定的循環(huán)參數(shù)決定,循環(huán)的被循環(huán)執(zhí)行,其執(zhí)行次數(shù)可由設(shè)定的循環(huán)參數(shù)決定,循環(huán)的方式由方式由NEXT和和EXIT語(yǔ)句來(lái)控制。語(yǔ)句來(lái)控制。例例1: 利用利用LOOP語(yǔ)句中的循環(huán)變量簡(jiǎn)化同類順序語(yǔ)句的表達(dá)語(yǔ)句中的循環(huán)變量簡(jiǎn)化同類順序語(yǔ)句的表達(dá)式式的使用。的使用。 SIGNA A,B,C
12、: STD_LOGIC_VECTOR(1 TO 3); FOR N IN 1 TO 3 LOOP A(N)=B(N) AND C(N); END LOOP; 說(shuō)明:此段程序等效于順序執(zhí)行以下三個(gè)信號(hào)賦值操作。說(shuō)明:此段程序等效于順序執(zhí)行以下三個(gè)信號(hào)賦值操作。A(1)=B(1) AND C(1);A(2)=B(2) AND C(2);A(3)=B(3) AND C(3);例例2: FOR-LOOP語(yǔ)句的使用語(yǔ)句的使用8位奇偶校驗(yàn)邏輯電路)。位奇偶校驗(yàn)邏輯電路)。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY P_CHECK IS PORT (
13、A:IN STD_LOGIC_VECTOR(7 DOWNTO 0); Y:OUT STD_LOGIC); END ENTITY P_CHECK;ARCHITECTURE ART OF P_CHECK IS SIGNAL TMP: STD_LOGIC;BEGIN PROCESS(A) IS BEGIN TMP =0; FOR N IN 0 TO 7 LOOPTMP =TMP XOR A(N); END LOOP; Y= TMP; END PROCESS;END ARCHITECTURE ART;結(jié)果:結(jié)果:Y=0 A含偶數(shù)個(gè)含偶數(shù)個(gè)1, Y=1 A含含奇數(shù)個(gè)奇數(shù)個(gè)1。WHILE-LOOP語(yǔ)句:語(yǔ)
14、句: 標(biāo)號(hào)標(biāo)號(hào):WHILE 循環(huán)控制條件循環(huán)控制條件 LOOP 順序語(yǔ)句順序語(yǔ)句 END LOOP 標(biāo)號(hào)標(biāo)號(hào); 循環(huán)控制條件為真執(zhí)行順序語(yǔ)句;為假結(jié)束循環(huán)。顯然循環(huán)控制條件為真執(zhí)行順序語(yǔ)句;為假結(jié)束循環(huán)。顯然WHILE模式的循環(huán)次數(shù)是未知的。模式的循環(huán)次數(shù)是未知的。 例:例: WHILE-LOOP語(yǔ)句的使用。語(yǔ)句的使用。SHIFT1: PROCESS(INPUTX) IS VARIABLE N: POSITIVE:=1; BEGIN L1: WHILE N=8 LOOP -這里的這里的“=”是小于等于的意思是小于等于的意思 OUTPUTX(N)F); S3:B(k+8):=0;K:=K+1;E
15、ND LOOP L2;END LOOP L1;EXIT- LOOP語(yǔ)句語(yǔ)句EXIT LOOP 標(biāo)號(hào)標(biāo)號(hào) WHEN 條件表達(dá)式條件表達(dá)式; EXIT語(yǔ)句用來(lái)結(jié)束語(yǔ)句用來(lái)結(jié)束LOOP語(yǔ)句。分四種控制:語(yǔ)句。分四種控制: 單獨(dú)單獨(dú)EXIT時(shí),無(wú)條件結(jié)束時(shí),無(wú)條件結(jié)束LOOP語(yǔ)句的執(zhí)行。語(yǔ)句的執(zhí)行。 EXIT LOOP 標(biāo)號(hào)標(biāo)號(hào),跳轉(zhuǎn)到指定的,跳轉(zhuǎn)到指定的LOOP標(biāo)號(hào)處。標(biāo)號(hào)處。 EXIT WHEN 條件條件,條件值,條件值=TRUE,跳出,跳出LOOP語(yǔ)句;條件語(yǔ)句;條件值值=FALSE,繼續(xù),繼續(xù)LOOP循環(huán)。循環(huán)。 全不缺省時(shí),條件值全不缺省時(shí),條件值=TRUE,跳出,跳出LOOP語(yǔ)句;條件值語(yǔ)
16、句;條件值=FALSE,跳到指定的,跳到指定的LOOP標(biāo)號(hào)處。標(biāo)號(hào)處。 例:例: SIGNAL A,B:STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL A_LESS_B:BOOLEAN;A_LESS_B=FLASE; -設(shè)初始值設(shè)初始值FOR I IN 1 DOWNTO 0 LOOPIF (A(I)=1 AND B(I)=0) THENA_LESS _B=FALSE;EXIT;ELSIF (A(I)=0 AND B(I)=1) THENA_LESS _B=TRUE; -ABEXIT; ELSE NULL;END IF;END LOOP; -當(dāng)當(dāng)I=1時(shí)返回時(shí)返回LOOP
17、語(yǔ)句繼續(xù)比較語(yǔ)句繼續(xù)比較#金金 語(yǔ)句格式:語(yǔ)句格式:標(biāo)號(hào)標(biāo)號(hào) REPORT “輸出字符串輸出字符串” SEVERIY 出錯(cuò)級(jí)別出錯(cuò)級(jí)別 REPORT語(yǔ)句不增加硬件的任何功能,仿真時(shí)可用該語(yǔ)句提語(yǔ)句不增加硬件的任何功能,仿真時(shí)可用該語(yǔ)句提高可讀性。高可讀性。 REPORT語(yǔ)句等價(jià)于斷言語(yǔ)句。語(yǔ)句等價(jià)于斷言語(yǔ)句。 出錯(cuò)級(jí)別默認(rèn)為出錯(cuò)級(jí)別默認(rèn)為NOTE。四、四、REPORT語(yǔ)句語(yǔ)句例:例:WHILE COUNTER 50 THEN REPORT THE COUNTER IS OVER 50; END IF; END LOOP;NULL;空操作語(yǔ)句不完成任何操作,它惟一的功能就是使邏輯運(yùn)行流程空操作語(yǔ)
18、句不完成任何操作,它惟一的功能就是使邏輯運(yùn)行流程跨入下一步語(yǔ)句的執(zhí)行。跨入下一步語(yǔ)句的執(zhí)行。NULL常用于常用于CASE語(yǔ)句中,為滿足所有可能的條件,利用語(yǔ)句中,為滿足所有可能的條件,利用NULL來(lái)表示所余的不用條件下的操作行為。來(lái)表示所余的不用條件下的操作行為。五、空操作語(yǔ)句五、空操作語(yǔ)句(NULL)例:在例:在CASE語(yǔ)句中,語(yǔ)句中,NULL用于排除一些不用的條件。用于排除一些不用的條件。CASE OPCODE IS WHEN “001”= TMP := REGA AND REGB; WHEN “101”= TMP := REGA OR REGB; WHEN “110”= TMP := N
19、OT REGA; WHEN OTHERS = NULL; END CASE;#成成3.2 并行語(yǔ)句并行語(yǔ)句相對(duì)于傳統(tǒng)的軟件描述語(yǔ)言,并行語(yǔ)句結(jié)構(gòu)是相對(duì)于傳統(tǒng)的軟件描述語(yǔ)言,并行語(yǔ)句結(jié)構(gòu)是VHDL特色。特色。在在VHDL中,并行語(yǔ)句具有多種語(yǔ)句格式,各種并行語(yǔ)句在中,并行語(yǔ)句具有多種語(yǔ)句格式,各種并行語(yǔ)句在結(jié)構(gòu)體中的執(zhí)行是同步進(jìn)行的并行運(yùn)行),其執(zhí)行方式與結(jié)構(gòu)體中的執(zhí)行是同步進(jìn)行的并行運(yùn)行),其執(zhí)行方式與書寫的順序無(wú)關(guān)。書寫的順序無(wú)關(guān)。在執(zhí)行中,并行語(yǔ)句之間可以有信息往來(lái),也可以是互為獨(dú)在執(zhí)行中,并行語(yǔ)句之間可以有信息往來(lái),也可以是互為獨(dú)立、互不相關(guān)、異步運(yùn)行立、互不相關(guān)、異步運(yùn)行(如多時(shí)鐘情況
20、如多時(shí)鐘情況)。并行語(yǔ)句在結(jié)構(gòu)體中的使用格式如下:并行語(yǔ)句在結(jié)構(gòu)體中的使用格式如下:ARCHITECTURE 結(jié)構(gòu)體名結(jié)構(gòu)體名 OF 實(shí)體名實(shí)體名 IS 說(shuō)明語(yǔ)句;說(shuō)明語(yǔ)句;BEGIN 并行語(yǔ)句;并行語(yǔ)句;END ARCHITECTURE 結(jié)構(gòu)體名;結(jié)構(gòu)體名;結(jié)構(gòu)體中的并行語(yǔ)句模塊結(jié)構(gòu)體中的并行語(yǔ)句模塊 生生成成語(yǔ)語(yǔ)句句條條件件信信號(hào)號(hào)賦賦值值語(yǔ)語(yǔ)句句元元件件例例化化語(yǔ)語(yǔ)句句并并行行信信號(hào)號(hào)賦賦值值語(yǔ)語(yǔ)句句塊塊語(yǔ)語(yǔ)句句進(jìn)進(jìn)程程語(yǔ)語(yǔ)句句并并行行過(guò)過(guò)程程調(diào)調(diào)用用語(yǔ)語(yǔ)句句信號(hào)信號(hào)信號(hào)信號(hào)信號(hào)信號(hào)信號(hào)信號(hào)信號(hào)信號(hào)信號(hào)信號(hào)ARCHITECTUREEND ARCHITECTURE結(jié)構(gòu)體中各種并行語(yǔ)句運(yùn)行的
21、示意圖如下。每一語(yǔ)句模塊都結(jié)構(gòu)體中各種并行語(yǔ)句運(yùn)行的示意圖如下。每一語(yǔ)句模塊都可以獨(dú)立異步運(yùn)行,模塊之間是并行運(yùn)行,并通過(guò)信號(hào)來(lái)交可以獨(dú)立異步運(yùn)行,模塊之間是并行運(yùn)行,并通過(guò)信號(hào)來(lái)交換信息。在實(shí)際編程中這些語(yǔ)句不必同時(shí)存在。換信息。在實(shí)際編程中這些語(yǔ)句不必同時(shí)存在。 其賦值目標(biāo)必須是信號(hào)。其賦值目標(biāo)必須是信號(hào)。 信號(hào)賦值語(yǔ)句其所有可讀入信號(hào)是隱性的,任何信號(hào)的變化信號(hào)賦值語(yǔ)句其所有可讀入信號(hào)是隱性的,任何信號(hào)的變化都會(huì)啟動(dòng)語(yǔ)句的賦值操作。都會(huì)啟動(dòng)語(yǔ)句的賦值操作。 并行信號(hào)賦值語(yǔ)句有三種形式:簡(jiǎn)單信號(hào)賦值語(yǔ)句、條件信并行信號(hào)賦值語(yǔ)句有三種形式:簡(jiǎn)單信號(hào)賦值語(yǔ)句、條件信號(hào)賦值語(yǔ)句和選擇信號(hào)賦值語(yǔ)句
22、。號(hào)賦值語(yǔ)句和選擇信號(hào)賦值語(yǔ)句。二、信號(hào)代入語(yǔ)句并行信號(hào)賦值語(yǔ)句)二、信號(hào)代入語(yǔ)句并行信號(hào)賦值語(yǔ)句)注意:信號(hào)賦值用注意:信號(hào)賦值用“”符號(hào),兩邊數(shù)據(jù)類型的一致。符號(hào),兩邊數(shù)據(jù)類型的一致。 一、變量賦值語(yǔ)句一、變量賦值語(yǔ)句目標(biāo)變量名目標(biāo)變量名:=表達(dá)式;表達(dá)式; 簡(jiǎn)單信號(hào)賦值語(yǔ)句簡(jiǎn)單信號(hào)賦值語(yǔ)句 信號(hào)賦值目標(biāo)表達(dá)式;信號(hào)賦值目標(biāo)表達(dá)式;注意:變量賦值用注意:變量賦值用“:=”符號(hào),兩邊數(shù)據(jù)類型必須一致。符號(hào),兩邊數(shù)據(jù)類型必須一致。 例:例:ARCHITECTURE ART OF XHFZ IS SIGNA S1: STD_LOGIC; BEGIN OUTPUT 1= A AND B; OUTP
23、UT 2= C+D;B1:BLOCK SIGNA E, F, G, H: STD_LOGIC; BEGIN G=E OR F; H=E XOR F;END BLOCK B1;S1=G;END ARCHITECTURE ART并行語(yǔ)句并行語(yǔ)句并行語(yǔ)句并行語(yǔ)句并行語(yǔ)句并行語(yǔ)句條件信號(hào)賦值語(yǔ)句條件信號(hào)賦值語(yǔ)句 信號(hào)賦值目標(biāo)信號(hào)賦值目標(biāo) 表達(dá)式表達(dá)式1 WHEN 條件條件1 ELSE 表達(dá)式表達(dá)式2 WHEN 條件條件2 ELSE 表達(dá)式表達(dá)式3 WHEN 條件條件3 ELSE 表達(dá)式表達(dá)式n WHEN 條件條件n ELSE 表達(dá)式表達(dá)式n+1;根據(jù)賦值條件的書寫順序逐項(xiàng)測(cè)定,一旦發(fā)現(xiàn)賦值條件根據(jù)賦值
24、條件的書寫順序逐項(xiàng)測(cè)定,一旦發(fā)現(xiàn)賦值條件=TRUE,便將對(duì)應(yīng)的表達(dá)式的值賦給目標(biāo),否則將最后一個(gè),便將對(duì)應(yīng)的表達(dá)式的值賦給目標(biāo),否則將最后一個(gè)表達(dá)式的值賦給目標(biāo)。表達(dá)式的值賦給目標(biāo)。注:書上有錯(cuò)。注:書上有錯(cuò)。例:例:Z= A WHEN P1=1 ELSE B WHEN P2=0 ELSE C;選擇信號(hào)賦值語(yǔ)句選擇信號(hào)賦值語(yǔ)句 WITH 選擇表達(dá)式選擇表達(dá)式 SELECT 信號(hào)賦值目標(biāo)信號(hào)賦值目標(biāo) 表達(dá)式表達(dá)式1 WHEN 選擇值選擇值1 表達(dá)式表達(dá)式2 WHEN 選擇值選擇值2 表達(dá)式表達(dá)式n WHEN 選擇值選擇值n; 表達(dá)式表達(dá)式n+1 WHEN OTHERS; 每當(dāng)選擇表達(dá)式的值發(fā)生變
25、化時(shí),將其值與各子句中的選擇每當(dāng)選擇表達(dá)式的值發(fā)生變化時(shí),將其值與各子句中的選擇值作比較,比較結(jié)果相等的子句獲得賦值資格。值作比較,比較結(jié)果相等的子句獲得賦值資格。 不允許有條件重疊現(xiàn)象。也不允許存在條件涵蓋不全的情況,不允許有條件重疊現(xiàn)象。也不允許存在條件涵蓋不全的情況,否則最后一句不能缺省。否則最后一句不能缺省。 不能在進(jìn)程中使用。不能在進(jìn)程中使用。 例:下圖是一個(gè)簡(jiǎn)化的指令譯碼器。對(duì)應(yīng)于由例:下圖是一個(gè)簡(jiǎn)化的指令譯碼器。對(duì)應(yīng)于由A、B、C三個(gè)位三個(gè)位構(gòu)成的不同指令碼,由構(gòu)成的不同指令碼,由DATA1和和DATA2輸入的兩個(gè)值將進(jìn)行不輸入的兩個(gè)值將進(jìn)行不同的邏輯操作,并將結(jié)果從同的邏輯操作
26、,并將結(jié)果從DATAOUT輸出。輸出。DECODERBCADATA1DATAOUTDATA2LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DECODER ISPORTA,B,C:IN STD_LOGIC; DATA1,DATA2: IN STD_LOGIC; DATAOUT:OUT STD_LOGIC););END DECODER;ARCHITECTURE ART OF DECODER IS SIGNAL INSTRUCTION:STD_LOGIC_VECTOR2 DOWNTO 0);); BEGIN INSTRUCTION=C&B&a
27、mp;A; WITH INSTRUCTION SELECT DATAOUT OUTPUT OUTPUT OUTPUT OUTPUT=S1;END CASE;END IFEND PROCESS P1;END ARCHITECTURE ART;例例2: 含敏感信號(hào)表的進(jìn)程語(yǔ)句。含敏感信號(hào)表的進(jìn)程語(yǔ)句。SIGNA CNT4:INTEGER RANGE 0 TO 15; -注意注意CNT4的數(shù)據(jù)類型的數(shù)據(jù)類型.PROCESS(CLK,CLEAR,STOP) IS -該進(jìn)程定義了該進(jìn)程定義了3個(gè)敏感信號(hào)個(gè)敏感信號(hào) CLK、CLEAR、STOPBEGIN -當(dāng)其中任何一個(gè)改變時(shí),都將啟動(dòng)進(jìn)程的運(yùn)行當(dāng)其中任
28、何一個(gè)改變時(shí),都將啟動(dòng)進(jìn)程的運(yùn)行IF CLEAR=0 THENCNT4=0;ELSIF CLKEVENT AND CLK=1THEN -如果遇到時(shí)鐘上升沿,那么如果遇到時(shí)鐘上升沿,那么IF STOP=0THEN -如果如果STOP為低電平,則進(jìn)行加法計(jì)數(shù),否則停止計(jì)數(shù)為低電平,則進(jìn)行加法計(jì)數(shù),否則停止計(jì)數(shù)CNT4=CNT4+1; END IF;END IF;END PROCESS; WAIT 語(yǔ)句語(yǔ)句WAIT -無(wú)限等待無(wú)限等待WAIT ON 信號(hào)表信號(hào)表-敏感信號(hào)量變化敏感信號(hào)量變化WAIT UNTIL 條件表達(dá)式條件表達(dá)式 -表達(dá)式成立時(shí)進(jìn)程啟動(dòng)表達(dá)式成立時(shí)進(jìn)程啟動(dòng)WAIT FOR 時(shí)間表
29、達(dá)式時(shí)間表達(dá)式 -時(shí)間到,進(jìn)程啟動(dòng)時(shí)間到,進(jìn)程啟動(dòng) 當(dāng)遇到當(dāng)遇到WAIT時(shí),運(yùn)行程序?qū)⒈粧炱饡和_\(yùn)行),只有滿足時(shí),運(yùn)行程序?qū)⒈粧炱饡和_\(yùn)行),只有滿足WAIT中設(shè)置的結(jié)束掛起條件后,才會(huì)繼續(xù)運(yùn)行程序。中設(shè)置的結(jié)束掛起條件后,才會(huì)繼續(xù)運(yùn)行程序。 單獨(dú)單獨(dú)WAIT表示永遠(yuǎn)掛起。表示永遠(yuǎn)掛起。 WAIT ON 信號(hào)表,稱為敏感信號(hào)等待語(yǔ)句。表中的敏感信號(hào)信號(hào)表,稱為敏感信號(hào)等待語(yǔ)句。表中的敏感信號(hào)發(fā)生變化時(shí),結(jié)束掛起,再次啟動(dòng)進(jìn)程。發(fā)生變化時(shí),結(jié)束掛起,再次啟動(dòng)進(jìn)程。 WAIT UNTIL 條件表達(dá)式條件表達(dá)式 屬條件等待。當(dāng)表達(dá)式中信號(hào)發(fā)生屬條件等待。當(dāng)表達(dá)式中信號(hào)發(fā)生改變,并且為改變,并且為T
30、RUE時(shí),結(jié)束掛起,執(zhí)行時(shí),結(jié)束掛起,執(zhí)行WAIT之后的語(yǔ)句。之后的語(yǔ)句。此格式可被綜合器綜合,其它格式只能在仿真器中使用。此格式可被綜合器綜合,其它格式只能在仿真器中使用。 進(jìn)程中使用了進(jìn)程中使用了WAIT語(yǔ)句后,經(jīng)綜合就會(huì)產(chǎn)生時(shí)序邏輯電路。語(yǔ)句后,經(jīng)綜合就會(huì)產(chǎn)生時(shí)序邏輯電路。 VHDL規(guī)定,已列出敏感量的進(jìn)程中不能使用規(guī)定,已列出敏感量的進(jìn)程中不能使用WAIT語(yǔ)句。語(yǔ)句。例例1: WAIT ON S1,S2; -S1,S2是敏感信號(hào),其中任一信號(hào)發(fā)生變化時(shí)如由是敏感信號(hào),其中任一信號(hào)發(fā)生變化時(shí)如由0變或由變或由1變變0),就結(jié)束掛起,執(zhí)行),就結(jié)束掛起,執(zhí)行WAIT之后的語(yǔ)句。之后的語(yǔ)句。
31、 例例2:以下兩種表達(dá)方式是等效的。:以下兩種表達(dá)方式是等效的。 WAITUNTIL結(jié)構(gòu)結(jié)構(gòu) WAIT UNTIL ENABLE=1; WAITON結(jié)構(gòu)結(jié)構(gòu) LOOP WAIT ON ENABLE EXIT WHEN ENABLE=1; END LOOP例例3: WAIT UNTIL語(yǔ)句的三種表達(dá)方式:語(yǔ)句的三種表達(dá)方式:WAIT UNTI 信號(hào)信號(hào)=VALUE;WAIT UNTI 信號(hào)信號(hào)EVENT AND 信號(hào)信號(hào)=VALUE;WAIT UNTI NOT 信號(hào)信號(hào)STABLE AND 信號(hào)信號(hào)=VALUE;注:其中注:其中EVENT和和STABLE是預(yù)定義的信號(hào)檢測(cè)屬性函數(shù)。是預(yù)定義的信號(hào)
32、檢測(cè)屬性函數(shù)。EVENT:測(cè)試信號(hào)的有事件發(fā)生。:測(cè)試信號(hào)的有事件發(fā)生。例如,語(yǔ)句例如,語(yǔ)句CLOCK EVENT就是對(duì)就是對(duì)CLOCK信號(hào),在信號(hào),在當(dāng)前的一個(gè)極小的時(shí)間段內(nèi)發(fā)生事件的情況進(jìn)行檢測(cè)。所當(dāng)前的一個(gè)極小的時(shí)間段內(nèi)發(fā)生事件的情況進(jìn)行檢測(cè)。所謂發(fā)生事件,就是電平發(fā)生變化,從一種電平方式轉(zhuǎn)變到謂發(fā)生事件,就是電平發(fā)生變化,從一種電平方式轉(zhuǎn)變到另一種電平方式。如果在此時(shí)間段內(nèi),另一種電平方式。如果在此時(shí)間段內(nèi),CLOCK由由0變成變成1或或由由1變成變成0都認(rèn)為發(fā)生了事件,于是返回一個(gè)都認(rèn)為發(fā)生了事件,于是返回一個(gè)BOOLEAN值值TRUE,否則為,否則為FALSE。STABLE:與:與
33、EVENT恰好相反,測(cè)試信號(hào)的無(wú)事件發(fā)生。恰好相反,測(cè)試信號(hào)的無(wú)事件發(fā)生。 如果設(shè)如果設(shè)CLOCK為時(shí)鐘信號(hào)輸入端,以下四條為時(shí)鐘信號(hào)輸入端,以下四條WAIT語(yǔ)句所語(yǔ)句所設(shè)的進(jìn)程啟動(dòng)條件都是時(shí)鐘上跳沿,它們對(duì)應(yīng)的硬件結(jié)構(gòu)是一樣設(shè)的進(jìn)程啟動(dòng)條件都是時(shí)鐘上跳沿,它們對(duì)應(yīng)的硬件結(jié)構(gòu)是一樣的。的。WAIT UNTI CLOCK =1;WAIT UNTI CLOCKEVENT AND CLOCK=1 ;WAIT UNTI NOT CLOCKSTABLE AND CLOCK=1;WAIT UNTI RISING_EDGE(CLOCK);注:注:RISING_EDGE是一個(gè)預(yù)定義的信號(hào)上升延測(cè)試函數(shù)。是一個(gè)
34、預(yù)定義的信號(hào)上升延測(cè)試函數(shù)。例例4:設(shè)計(jì)一個(gè)硬件電路,求:設(shè)計(jì)一個(gè)硬件電路,求4個(gè)數(shù)的平均值。個(gè)數(shù)的平均值。 PROCESS BEGIN WAIT UNTIL CLK=1; AVE=A; WAIT UNTIL CLK=1; AVE=AVE+A; WAIT UNTIL CLK=1; AVE=AVE+A; WAIT UNTIL CLK=1; AVE=(AVE+A)/4; END PROCESS;例例5:在一個(gè)進(jìn)程中,有一無(wú)限循環(huán)的:在一個(gè)進(jìn)程中,有一無(wú)限循環(huán)的LOOP語(yǔ)句,其中語(yǔ)句,其中WAIT語(yǔ)語(yǔ)句描述了一個(gè)具有同步復(fù)位功能時(shí)鐘到才復(fù)位的電路。句描述了一個(gè)具有同步復(fù)位功能時(shí)鐘到才復(fù)位的電路。 P
35、ROCESS BEGIN SRT_LOOP:LOOP WAIT UNTIL CLOCK=1 AND CLOCKEVENT; NEXT RST_LOOP WHENRST=1);); X=A; WAIT UNTIL CLOCK=1AND CLOCKEVENT; NEXT RST_LOOP WHENRST=1);); YL-TIME,GB2=S-TIME);-局部端口局部端口參量設(shè)定參量設(shè)定PORT (PB1:IN BIT;PB2:INOUT BIT);-塊結(jié)構(gòu)中局部端塊結(jié)構(gòu)中局部端口定義口定義POTR MAP(PB1=B1,PB2=A1); -塊結(jié)構(gòu)端口連接說(shuō)明塊結(jié)構(gòu)端口連接說(shuō)明CONSTANT
36、DELAY:TIME:=1 ms; -局部常數(shù)定義局部常數(shù)定義SIGNA S1:BIT; -局部信號(hào)定義局部信號(hào)定義BEGINS1=PB1 AFTER DELAY; PB2=S1 AFTER GB1; END BLOCK BLK1;END ARCHITECTURE ART;B1:BLOCK-定義塊定義塊B1 SIGNAL S:BIT; -在在B1塊中定義塊中定義S BEGIN S=A AND B; -向向B1中的中的S賦值賦值 B2:BLOCK -定義塊定義塊B2,套于,套于B1塊中塊中 SIGNAL S:BIT; -定義定義B2塊中的信號(hào)塊中的信號(hào)S BEGIN S=C AND D; -向向
37、B2中的中的S賦值賦值 B3:BLOCK BEGIN Z=S; -此此S來(lái)自來(lái)自B2塊塊 END BLOCK B3; END BLOCK B2; YVALUE:=“0101”; WNEN“0101”=VALUE:=“0000”; WNEN OTHERS=VALUE:=“1111”;END CASEEND PROCEDURE PRG1;例例2: PROCEDURE COMPA,R:IN REAL;M:IN INTEGER; V1,V2:OUT REALISVARIABLE CNT:INTEGER;BEGIN V1:=1.6*A; V2:=1.0; Q1:FOR CNT IN 1 TO M LOO
38、P V2:=V2*V1; EXIT Q1 WHEN V2R; END LOOP Q1; ASSERT( V2 實(shí)參表達(dá)式實(shí)參表達(dá)式 ,形參名形參名 實(shí)參表達(dá)式實(shí)參表達(dá)式); 過(guò)程名是被調(diào)用過(guò)程的名字。過(guò)程名是被調(diào)用過(guò)程的名字。 實(shí)參表達(dá)式又稱實(shí)參,為具體數(shù)值或標(biāo)識(shí)符。實(shí)參表達(dá)式又稱實(shí)參,為具體數(shù)值或標(biāo)識(shí)符。 形參名是過(guò)程中定義的參數(shù)名,在調(diào)用時(shí)形參被實(shí)參替代。形參名是過(guò)程中定義的參數(shù)名,在調(diào)用時(shí)形參被實(shí)參替代。 形參被實(shí)參替代的方法有兩種:位置關(guān)聯(lián)法和名字關(guān)聯(lián)法。形參被實(shí)參替代的方法有兩種:位置關(guān)聯(lián)法和名字關(guān)聯(lián)法。 例:例:PACKAGE DATA_TYPES IS TYPE DATA_ELE
39、MENT IS INTEGER RANGE 0 TO 3; TYPE DATA_ARRAY IS ARRAY(1 TO 3) OF DATA _ELEMENT ;END DATA_TYPES ;USE WORK. DATA_TYPES .ALL;ENTITY SORT IS PORT(IN_ARRAY: IN DATA_ARRAY; OUT_ARRAY: OUT DATA_ARRAY);END SORT;ARCHITECTURE ART OF SORT IS BEGIN PROCESSIN_ARRAY) PROCEDURE SWAPDATA:INOUT DATA_ARRAY; LOW,HIGH
40、:IN INTEGERIS-SWAP的形參名為的形參名為DATA、LOW、HIGH VARIABLE TEMP: DATA _ELEMENT ; BEGIN IFDATALOW)DATAHIGH)THEN TEMP:= DATALOW);); DATALOW) := DATAHIGH);); DATAHIGH) := TEMP ; END IF; END SWAP; VARIABLE MY_ARRAY: DATA_ARRAY; BEGIN MY_ARRAY:= IN_ARRAY; SWAP( MY_ARRAY,1,2););- MY_ARRAY 、1、2是對(duì)應(yīng)于是對(duì)應(yīng)于DATA、LOW、HIG
41、H的實(shí)參的實(shí)參 SWAP( MY_ARRAY,2,3);); -位置關(guān)聯(lián)法調(diào)用,第位置關(guān)聯(lián)法調(diào)用,第2、第、第3元素交換元素交換 SWAP( MY_ARRAY,1,2););-位置關(guān)聯(lián)法調(diào)用,第位置關(guān)聯(lián)法調(diào)用,第1、第、第2元素再次交換元素再次交換 OUT_ARRAY= MY_ARRAY; END PROCESS;END ART; 函數(shù)語(yǔ)句函數(shù)語(yǔ)句FUNCTION)FUNCTION 函數(shù)名參數(shù)表函數(shù)名參數(shù)表RETURN 數(shù)據(jù)類型數(shù)據(jù)類型 IS 說(shuō)明部分說(shuō)明部分 BEGIN 順序語(yǔ)句順序語(yǔ)句 END FUNCTION 函數(shù)名;函數(shù)名;六、函數(shù)和函數(shù)調(diào)用六、函數(shù)和函數(shù)調(diào)用 參數(shù)表用于定義輸入值,只
42、能是信號(hào)或常量參數(shù)表用于定義輸入值,只能是信號(hào)或常量 ,并且無(wú)須指定,并且無(wú)須指定工作模式工作模式 。RETURN 數(shù)據(jù)類型數(shù)據(jù)類型指的是返回值數(shù)據(jù)類型。指的是返回值數(shù)據(jù)類型。 說(shuō)明部分是對(duì)函數(shù)體內(nèi)的用到的數(shù)據(jù)類型、常量、變量等作說(shuō)明部分是對(duì)函數(shù)體內(nèi)的用到的數(shù)據(jù)類型、常量、變量等作局部說(shuō)明。局部說(shuō)明。 順序語(yǔ)句用以完成規(guī)定算法或各種轉(zhuǎn)換等。函數(shù)被調(diào)用時(shí),順序語(yǔ)句用以完成規(guī)定算法或各種轉(zhuǎn)換等。函數(shù)被調(diào)用時(shí),執(zhí)行的就是這部分語(yǔ)句。執(zhí)行的就是這部分語(yǔ)句。 函數(shù)調(diào)用函數(shù)調(diào)用 函數(shù)調(diào)用與過(guò)程調(diào)用相似,差異是函數(shù)的參量只能是輸入值,函數(shù)調(diào)用與過(guò)程調(diào)用相似,差異是函數(shù)的參量只能是輸入值,并且返回一個(gè)指定數(shù)據(jù)
43、類型的值。并且返回一個(gè)指定數(shù)據(jù)類型的值。例:例:ENTITY FUNC IS PORT(A;IN BIT_VECTOR0 TO 2);); M:OUT BIT_VECTOR( 0 TO 2););END FUNC1;ARCHITECTURE ART OF FUNC IS FUNCTION SAMX,Y,Z:BITRETURN BIT IS BEGIN RETURNX AND YOR Z; END FUNCTION SAM; BEGIN PROCESSA) BEGIN M0)=SAMA0),),A1),),A2);); M1)=SAMA2),),A0),),A1);); M2)=SAMA1),)
44、,A2),),A0);); END PROCESS;END ART;RETURN 表達(dá)式表達(dá)式;返回語(yǔ)句只能用于子程序過(guò)程、函數(shù)中,結(jié)束子程序的執(zhí)行。返回語(yǔ)句只能用于子程序過(guò)程、函數(shù)中,結(jié)束子程序的執(zhí)行。 RETURN格式,只能用于過(guò)程,只是結(jié)束過(guò)程,不返回任何值。格式,只能用于過(guò)程,只是結(jié)束過(guò)程,不返回任何值。 RETURN 表達(dá)式表達(dá)式格式,只能用于函數(shù),必須返回一個(gè)值。表格式,只能用于函數(shù),必須返回一個(gè)值。表達(dá)式提供函數(shù)返回值。達(dá)式提供函數(shù)返回值。 函數(shù)至少含一個(gè)返回語(yǔ)句,也可以擁有多個(gè)返回語(yǔ)句,但調(diào)用時(shí)函數(shù)至少含一個(gè)返回語(yǔ)句,也可以擁有多個(gè)返回語(yǔ)句,但調(diào)用時(shí)只能有一個(gè)返回語(yǔ)句將值帶出。
45、只能有一個(gè)返回語(yǔ)句將值帶出。 七、返回語(yǔ)句七、返回語(yǔ)句RETURN) 例例1: 在一過(guò)程定義中在一過(guò)程定義中,完成一個(gè)完成一個(gè)RS觸發(fā)器的功能。觸發(fā)器的功能。PROCEDURE RSSIGNAL S,R:IN STD_LOGOC; SIGNAL Q,NQ:INOUT STD_LOGOC) ISBEGIN IFS=1 AND R=1)THEN REPORT “FORBIDDEN STSTE:S AND R ARE EQUAL TO 1 ”; RETURN ELSE Q=S AND NQ AFTER 5 ns; NQ=S AND Q AFTER 5 ns; END IF;END PROCEDURE
46、 RS;例例2: FUNCTION OPT(A,B,OPT:STD_LOGIC) RETURN STD_LOGIC ISBEGIN IFOPR=1)THEN RETURUA AND B);); ELSE RETURNA OR B);); END IF;END FUNCTION OPR;說(shuō)明:此函數(shù)功能是:當(dāng)說(shuō)明:此函數(shù)功能是:當(dāng)OPR為高電平時(shí),返回為高電平時(shí),返回A AND B的值;當(dāng)?shù)闹?;?dāng)OPR為低電平時(shí),返回為低電平時(shí),返回A OR B的值。的值。REN_VALUABOPR函數(shù)函數(shù)OPT的電路結(jié)構(gòu)圖的電路結(jié)構(gòu)圖ASSERT 條件條件REPORT報(bào)告信息報(bào)告信息SEVERITY出錯(cuò)級(jí)別出
47、錯(cuò)級(jí)別;斷言語(yǔ)句主要用于程序仿真,調(diào)試中的人斷言語(yǔ)句主要用于程序仿真,調(diào)試中的人-機(jī)會(huì)話。綜合器通常機(jī)會(huì)話。綜合器通常忽略此語(yǔ)句。忽略此語(yǔ)句。ASSERT語(yǔ)句判斷指定的條件是否為語(yǔ)句判斷指定的條件是否為TRUE,如果為,如果為FALSE則報(bào)則報(bào)告錯(cuò)誤。告錯(cuò)誤。報(bào)告信息:必須是用報(bào)告信息:必須是用“ ”括起來(lái)的字符串類型的文字。括起來(lái)的字符串類型的文字。出錯(cuò)級(jí)別:必須是出錯(cuò)級(jí)別:必須是SEVERITY_LEVEL類型。類型。REPORT子句默認(rèn)時(shí),報(bào)告信息為子句默認(rèn)時(shí),報(bào)告信息為Assertion Violation,即違,即違背斷言條件。背斷言條件。若若SEVERITY子句默認(rèn),默認(rèn)出錯(cuò)級(jí)別為
48、子句默認(rèn),默認(rèn)出錯(cuò)級(jí)別為error。任何并行斷言語(yǔ)句任何并行斷言語(yǔ)句(ASSERT)都對(duì)應(yīng)等價(jià)一個(gè)被動(dòng)進(jìn)程語(yǔ)句。都對(duì)應(yīng)等價(jià)一個(gè)被動(dòng)進(jìn)程語(yǔ)句。并行斷言語(yǔ)句并行斷言語(yǔ)句ASSERT的條件以靜態(tài)表達(dá)式定義時(shí),這個(gè)斷言的條件以靜態(tài)表達(dá)式定義時(shí),這個(gè)斷言語(yǔ)句等價(jià)于一個(gè)無(wú)敏感信號(hào)的以語(yǔ)句等價(jià)于一個(gè)無(wú)敏感信號(hào)的以WAIT語(yǔ)句結(jié)尾的進(jìn)程。語(yǔ)句結(jié)尾的進(jìn)程。八、并行斷言語(yǔ)句八、并行斷言語(yǔ)句(ASSERT)例:例:ASSERT NOT (S=1 AND R=1)REPORT BOTH VALUES OF SIGNALS S AND R ARE EQUA TO1SEVERITY ERROR;注意:如果出現(xiàn)注意:如果出
49、現(xiàn)SEVERITY子句,則該子句一定要指定一個(gè)類型子句,則該子句一定要指定一個(gè)類型為為SEVERITY_LEVEL的值。的值。SEVERITY_LEVEL共有如共有如下四種可能的值:下四種可能的值:NOTE注意):可以用在仿真時(shí)傳遞信息。注意):可以用在仿真時(shí)傳遞信息。WARNING警告):用在非平常的情形,此時(shí)仿真過(guò)程仍可繼警告):用在非平常的情形,此時(shí)仿真過(guò)程仍可繼續(xù),但結(jié)果可能是不可預(yù)知的。續(xù),但結(jié)果可能是不可預(yù)知的。ERROR錯(cuò)誤):用在仿真過(guò)程繼續(xù)執(zhí)行下去已經(jīng)不可能的情錯(cuò)誤):用在仿真過(guò)程繼續(xù)執(zhí)行下去已經(jīng)不可能的情況。況。FAILURE失?。河迷诎l(fā)生了致命錯(cuò)誤,仿真過(guò)程必須立即失敗
50、):用在發(fā)生了致命錯(cuò)誤,仿真過(guò)程必須立即停止的情況。停止的情況。COMPONENT 元件名元件名 GENERIC類屬表)類屬表) PORT元件端口名表)元件端口名表)END COMPONENT ;九、元件調(diào)用語(yǔ)句(九、元件調(diào)用語(yǔ)句( COMPONENT ) 該語(yǔ)句可用于該語(yǔ)句可用于ARCHITECTURE,PACKAGE,Block的說(shuō)明的說(shuō)明部分。部分。 元件調(diào)用語(yǔ)句又稱元件定義語(yǔ)句,其作用是對(duì)設(shè)計(jì)實(shí)體進(jìn)行元件調(diào)用語(yǔ)句又稱元件定義語(yǔ)句,其作用是對(duì)設(shè)計(jì)實(shí)體進(jìn)行封裝,只留出界面的接口芯片的引腳)。封裝,只留出界面的接口芯片的引腳)。 元件名就是封裝元件名就是封裝芯片的名字。芯片的名字。 在該語(yǔ)句
51、中間可以有在該語(yǔ)句中間可以有GENERIC語(yǔ)句和語(yǔ)句和PORT語(yǔ)句。語(yǔ)句。 GENERIC語(yǔ)句用于該元件參數(shù)的代入或賦值。語(yǔ)句用于該元件參數(shù)的代入或賦值。 PORT語(yǔ)句用于該元件的輸入、輸出端口信號(hào)的規(guī)定語(yǔ)句用于該元件的輸入、輸出端口信號(hào)的規(guī)定 。元件。元件端口名表列出對(duì)外通信的各端口名芯片的各引腳名)。端口名表列出對(duì)外通信的各端口名芯片的各引腳名)。 標(biāo)號(hào)名:元件名標(biāo)號(hào)名:元件名 PORT MAP( 元件端口名元件端口名連接實(shí)體端口名,連接實(shí)體端口名,);); 十、端口映射語(yǔ)句十、端口映射語(yǔ)句PORT MAP) 端口映射語(yǔ)句的作用是為元件配上指定的插座。標(biāo)號(hào)名就是插端口映射語(yǔ)句的作用是為元件
52、配上指定的插座。標(biāo)號(hào)名就是插座名,元件名是由座名,元件名是由COMPONENT語(yǔ)句定義的。語(yǔ)句定義的。 PORT MAP是端口映射的意思。其中的元件端口名是指芯片是端口映射的意思。其中的元件端口名是指芯片的引腳;連接實(shí)體端口名是指插座的引腳。符號(hào)的引腳;連接實(shí)體端口名是指插座的引腳。符號(hào)“”表示表示兩腳相連。兩腳相連。 端口映射的表達(dá)方式有兩種:一種是名字關(guān)聯(lián)方式,另一種是端口映射的表達(dá)方式有兩種:一種是名字關(guān)聯(lián)方式,另一種是位置關(guān)聯(lián)方式。位置關(guān)聯(lián)方式。 在元件的調(diào)用過(guò)程中,在元件的調(diào)用過(guò)程中, COMPONENT語(yǔ)句和語(yǔ)句和PORT MAP語(yǔ)語(yǔ)句都必須存在。句都必須存在。 參數(shù)傳遞語(yǔ)句參數(shù)傳
53、遞語(yǔ)句GENERIC ) GENERIC ( 常數(shù)名:數(shù)據(jù)類型常數(shù)名:數(shù)據(jù)類型:設(shè)定值:設(shè)定值 ; 常數(shù)名:數(shù)據(jù)類型常數(shù)名:數(shù)據(jù)類型:設(shè)定值:設(shè)定值 ; ););十一、參數(shù)傳遞和參數(shù)映射語(yǔ)句十一、參數(shù)傳遞和參數(shù)映射語(yǔ)句注:注: GENERIC語(yǔ)句在第一章的幻燈中已作過(guò)詳細(xì)的介紹,在語(yǔ)句在第一章的幻燈中已作過(guò)詳細(xì)的介紹,在此不再重復(fù)。此不再重復(fù)。 參數(shù)映射語(yǔ)句參數(shù)映射語(yǔ)句GENERIC MAP ) 標(biāo)號(hào)名:元件名標(biāo)號(hào)名:元件名 GENERIC MAP實(shí)參實(shí)參1,實(shí)參,實(shí)參2,實(shí)參實(shí)參N);); GENERIC MAP的作用就是參數(shù)映射,其中的標(biāo)號(hào)名和元件名的作用就是參數(shù)映射,其中的標(biāo)號(hào)名和元件名
54、與與PORT MAP中的含義一樣,中的含義一樣, 實(shí)參實(shí)參1,實(shí)參,實(shí)參2,實(shí)參實(shí)參N指的是實(shí)際參數(shù)值,映射的表達(dá)方式指的是實(shí)際參數(shù)值,映射的表達(dá)方式采用位置關(guān)聯(lián)方式。采用位置關(guān)聯(lián)方式。例例1:設(shè)計(jì)圖示的:設(shè)計(jì)圖示的VHDL描述程序。描述程序。A1U1U2Z1U3B1C1D1ABABABCCCS1S2ND2ND2ND2方法:方法: 首先完成一個(gè)首先完成一個(gè)2輸入與非門的設(shè)計(jì),然后用輸入與非門的設(shè)計(jì),然后用COMPONENT語(yǔ)語(yǔ)句和句和PORT MAP語(yǔ)句對(duì)該元件進(jìn)行調(diào)用。語(yǔ)句對(duì)該元件進(jìn)行調(diào)用。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ND2
55、 IS PORTA,B:IN STD_LOGIC; C:OUT STD_LOGIC););END ND2;ARCHITECTURE ARTND2 OF ND2 IS BEGIN CC1,C = S2,B = D1););-名字關(guān)聯(lián)方式名字關(guān)聯(lián)方式 U3:ND2 PORT MAPS1,S2,C = Z1);); -混合關(guān)聯(lián)方式混合關(guān)聯(lián)方式END ARCHITECTURE ARTORD41 ;A1U1U2Z1U3B1C1D1ABABABCCCS1S2ND2ND2ND2ENTITY and2 IS GENERIC (rise,fall: TIME);-參數(shù)類型說(shuō)明參數(shù)類型說(shuō)明 PORT (a,b:
56、IN BIT; C: OUT BIT);END and2;ARCHITECTURE generic_example OF and2 IS SIGNAL d: BIT; BEGIN d = a and b; C AI),),Y=BI););END GENERATE GEN;例例1:用生存語(yǔ)句產(chǎn)生:用生存語(yǔ)句產(chǎn)生8個(gè)相同的電路塊。個(gè)相同的電路塊。A0COMPINPUTOUTPUTB0A1COMPINPUTOUTPUTB1A7COMPINPUTOUTPUTB7RANGE是預(yù)定義的屬性函數(shù),是預(yù)定義的屬性函數(shù),在此對(duì)信號(hào)在此對(duì)信號(hào)A的元素排序按指的元素排序按指定要求約束(定要求約束( 0 TO 7 )
57、。)。另外有另外有REVERSE_RANGE屬屬性函數(shù),元素排序按逆序排列。性函數(shù),元素排序按逆序排列。例例2:8位三態(tài)鎖存器位三態(tài)鎖存器74LS373的設(shè)計(jì)。通過(guò)元件的調(diào)用和的設(shè)計(jì)。通過(guò)元件的調(diào)用和FORGENERATE語(yǔ)句進(jìn)行描述。語(yǔ)句進(jìn)行描述。 74LS373引腳功能引腳功能: D1D8為數(shù)據(jù)輸入端;為數(shù)據(jù)輸入端; Q1Q8為數(shù)據(jù)輸出端;為數(shù)據(jù)輸出端; OEN為輸出使能端,若為輸出使能端,若OEN=1,則,則Q8Q1的輸出為高阻態(tài),的輸出為高阻態(tài),若若OEN=0,則,則Q8Q1的輸出為保存在鎖存器中的信號(hào)值;的輸出為保存在鎖存器中的信號(hào)值; G為數(shù)據(jù)鎖存控制端,若為數(shù)據(jù)鎖存控制端,若G=
58、1,D8D1輸入端的信號(hào)進(jìn)入輸入端的信號(hào)進(jìn)入74LS373中的中的8位鎖存器中,若位鎖存器中,若G =0,74LS373中的中的8位鎖存位鎖存器將保持原先鎖入的信號(hào)值不變。器將保持原先鎖入的信號(hào)值不變。74LS373D8D7D6D5D4D3D2D1OENGQ8Q7Q6Q5Q4Q3Q2Q1 74LS373內(nèi)部邏輯結(jié)構(gòu)內(nèi)部邏輯結(jié)構(gòu):OENLATCHLATCHLATCHLATCHLATCHLATCHLATCHLATCHQ QQ QQ QQ QQ QQ QQ QQ QENAD DENAD DDENADDENADDENADDENADDENADDENADGD8D7D6D5D4D3D2D1OT11OT11O
59、T11OT11OT11OT11OT11Q8Q7Q6Q5Q4Q3Q2Q1OT11LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LATCH IS PORT(D:IN STD_LOGIC; ENA:IN STD_LOGIC; Q:OUT STD_LOGIC);END ENTITY LATCH;ARCHITECTURE ONE OF LATCH ISSIGNA S0: STD_LOGIC; BEGIN PROCESS(D,ENA) IS BEGIN IF ENA=1 THEN S0=D; END IF; Q=S0; END PROCESS;END ARCHITECTURE ONE; 一位鎖存器一位鎖存器LATCH的邏輯描述的邏輯描述OENLATCHLATCHLATCHLATCHLATCHLATCHLATCHLATCHQ QQ QQ QQ QQ
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年物業(yè)管理師職業(yè)能力測(cè)試卷:物業(yè)管理與社區(qū)公共資源試題
- 2025-2030全球及中國(guó)電子離合器系統(tǒng)行業(yè)市場(chǎng)現(xiàn)狀供需分析及市場(chǎng)深度研究發(fā)展前景及規(guī)劃可行性分析研究報(bào)告
- 2025年注冊(cè)稅務(wù)師稅法一模擬試卷:基礎(chǔ)知識(shí)篇
- 容器化IO優(yōu)化-全面剖析
- 馬達(dá)加斯加語(yǔ)的語(yǔ)音實(shí)驗(yàn)研究論文
- 2025年成人高考《語(yǔ)文》文學(xué)常識(shí)題庫(kù):古代文學(xué)史上的文學(xué)批評(píng)流派試題
- 2025-2030全球及中國(guó)慈善拍賣軟件行業(yè)市場(chǎng)現(xiàn)狀供需分析及市場(chǎng)深度研究發(fā)展前景及規(guī)劃可行性分析研究報(bào)告
- 2025-2030全球及中國(guó)多因素認(rèn)證系統(tǒng)行業(yè)市場(chǎng)現(xiàn)狀供需分析及市場(chǎng)深度研究發(fā)展前景及規(guī)劃可行性分析研究報(bào)告
- 2025-2030全球及中國(guó)壓縮天然氣車行業(yè)市場(chǎng)現(xiàn)狀供需分析及市場(chǎng)深度研究發(fā)展前景及規(guī)劃可行性分析研究報(bào)告
- 2025年小學(xué)英語(yǔ)畢業(yè)考試模擬試題:英語(yǔ)歌曲與童謠教學(xué)課堂互動(dòng)策略
- 墻紙墻布施工工藝標(biāo)準(zhǔn)化流程
- 水泥混凝土路面翻修施工方案詳解
- 《射雕英雄傳》好書讀后感
- DB51T 2049-2015 建筑消防設(shè)施檢測(cè)規(guī)范
- 【MOOC】風(fēng)景背后的地貌學(xué)-華中師范大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 護(hù)理感動(dòng)案例
- 2024版《安全生產(chǎn)法》考試題庫(kù)附答案(共90題)
- 企業(yè)天然氣轉(zhuǎn)讓協(xié)議書范文范本
- 帶式運(yùn)輸機(jī)傳動(dòng)裝置的設(shè)計(jì)
- 玩具照相機(jī)細(xì)分市場(chǎng)深度研究報(bào)告
- 人工智能算法與實(shí)踐-第16章 LSTM神經(jīng)網(wǎng)絡(luò)
評(píng)論
0/150
提交評(píng)論