版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、4.5 VHDL4.5 VHDL順序語(yǔ)句順序語(yǔ)句 o 順序語(yǔ)句順序語(yǔ)句(Sequential Statements)和并行語(yǔ)句和并行語(yǔ)句(Concurrent Statements)是是VHDL程序設(shè)計(jì)中兩大基本程序設(shè)計(jì)中兩大基本描述語(yǔ)句系列。在邏輯系統(tǒng)的設(shè)計(jì)中,這些語(yǔ)句從多側(cè)描述語(yǔ)句系列。在邏輯系統(tǒng)的設(shè)計(jì)中,這些語(yǔ)句從多側(cè)面完整地描述數(shù)字系統(tǒng)的硬件結(jié)構(gòu)和基本邏輯功能,其面完整地描述數(shù)字系統(tǒng)的硬件結(jié)構(gòu)和基本邏輯功能,其中包括通信的方式、信號(hào)的賦值、多層次的元件例化以中包括通信的方式、信號(hào)的賦值、多層次的元件例化以及系統(tǒng)行為等。及系統(tǒng)行為等。o 順序語(yǔ)句是相對(duì)于并行語(yǔ)句而言的,其特點(diǎn)是每順序語(yǔ)句
2、是相對(duì)于并行語(yǔ)句而言的,其特點(diǎn)是每一條順序語(yǔ)句的執(zhí)行一條順序語(yǔ)句的執(zhí)行(指仿真執(zhí)行指仿真執(zhí)行)順序是與它們的書順序是與它們的書寫順序基本一致的,但其相應(yīng)的硬件邏輯工作方式未寫順序基本一致的,但其相應(yīng)的硬件邏輯工作方式未必如此,希望讀者在理解過(guò)程中要注意區(qū)分必如此,希望讀者在理解過(guò)程中要注意區(qū)分VHDL語(yǔ)語(yǔ)言的軟件行為及描述綜合后的硬件行為間的差異。言的軟件行為及描述綜合后的硬件行為間的差異。o 順序語(yǔ)句只能出現(xiàn)在順序語(yǔ)句只能出現(xiàn)在進(jìn)程進(jìn)程(Process)和和子程序子程序中。中。在在VHDL中,一個(gè)進(jìn)程是由一系列順序語(yǔ)句構(gòu)成的,中,一個(gè)進(jìn)程是由一系列順序語(yǔ)句構(gòu)成的,而進(jìn)程本身屬并行語(yǔ)句,這就是
3、說(shuō),在同一設(shè)計(jì)實(shí)體而進(jìn)程本身屬并行語(yǔ)句,這就是說(shuō),在同一設(shè)計(jì)實(shí)體中,所有的進(jìn)程是并行執(zhí)行的。然而任一給定的時(shí)刻中,所有的進(jìn)程是并行執(zhí)行的。然而任一給定的時(shí)刻內(nèi),在每一個(gè)進(jìn)程內(nèi),只能執(zhí)行一條順序語(yǔ)句。一個(gè)內(nèi),在每一個(gè)進(jìn)程內(nèi),只能執(zhí)行一條順序語(yǔ)句。一個(gè)進(jìn)程與其設(shè)計(jì)實(shí)體的其他部分進(jìn)行數(shù)據(jù)交換的方式只進(jìn)程與其設(shè)計(jì)實(shí)體的其他部分進(jìn)行數(shù)據(jù)交換的方式只能通過(guò)信號(hào)或端口。如果要在進(jìn)程中完成某些特定的能通過(guò)信號(hào)或端口。如果要在進(jìn)程中完成某些特定的算法和邏輯操作,也可以通過(guò)依次調(diào)用子程序來(lái)實(shí)現(xiàn),算法和邏輯操作,也可以通過(guò)依次調(diào)用子程序來(lái)實(shí)現(xiàn),但子程序本身并無(wú)順序和并行語(yǔ)句之分。利用順序語(yǔ)但子程序本身并無(wú)順序和并行
4、語(yǔ)句之分。利用順序語(yǔ)句可以描述邏輯系統(tǒng)中的組合邏輯、時(shí)序邏輯或它們句可以描述邏輯系統(tǒng)中的組合邏輯、時(shí)序邏輯或它們的綜合體。的綜合體。VHDL有如下六類基本順序語(yǔ)句:有如下六類基本順序語(yǔ)句:o 賦值語(yǔ)句;賦值語(yǔ)句;o 流程流程控制語(yǔ)句;控制語(yǔ)句;o 等待語(yǔ)句;等待語(yǔ)句;o 子程序調(diào)用語(yǔ)句;子程序調(diào)用語(yǔ)句;o 返回語(yǔ)句;返回語(yǔ)句;o 空操作語(yǔ)句??詹僮髡Z(yǔ)句。 賦值語(yǔ)句的功能就是將一個(gè)值或一個(gè)表達(dá)式的運(yùn)賦值語(yǔ)句的功能就是將一個(gè)值或一個(gè)表達(dá)式的運(yùn)算結(jié)果傳遞給某一數(shù)據(jù)對(duì)象,如信號(hào)或變量,或由此算結(jié)果傳遞給某一數(shù)據(jù)對(duì)象,如信號(hào)或變量,或由此組成的數(shù)組。組成的數(shù)組。VHDL設(shè)計(jì)實(shí)體內(nèi)的數(shù)據(jù)傳遞以及對(duì)端設(shè)計(jì)實(shí)
5、體內(nèi)的數(shù)據(jù)傳遞以及對(duì)端口界面外部數(shù)據(jù)的讀口界面外部數(shù)據(jù)的讀/寫都必須通過(guò)賦值語(yǔ)句的運(yùn)行寫都必須通過(guò)賦值語(yǔ)句的運(yùn)行來(lái)實(shí)現(xiàn)。來(lái)實(shí)現(xiàn)。4.5.1 4.5.1 賦值語(yǔ)句賦值語(yǔ)句1 1信號(hào)和變量賦值信號(hào)和變量賦值 賦值語(yǔ)句有兩種,即信號(hào)賦值語(yǔ)句和變量賦值語(yǔ)句。賦值語(yǔ)句有兩種,即信號(hào)賦值語(yǔ)句和變量賦值語(yǔ)句。o 變量賦值與信號(hào)賦值的區(qū)別在于,變量具有局部特變量賦值與信號(hào)賦值的區(qū)別在于,變量具有局部特征,征, 它的有效只局限在所定義的進(jìn)程、過(guò)程和子程序中。它的有效只局限在所定義的進(jìn)程、過(guò)程和子程序中。它是一個(gè)局部的、暫時(shí)性數(shù)據(jù)對(duì)象它是一個(gè)局部的、暫時(shí)性數(shù)據(jù)對(duì)象( (在某些情況下在某些情況下) ) ,它,它的賦
6、值是立刻發(fā)生的,即賦值延遲時(shí)間為零。的賦值是立刻發(fā)生的,即賦值延遲時(shí)間為零。 變量賦值語(yǔ)句和信號(hào)賦值語(yǔ)句的語(yǔ)法格式如下:變量賦值語(yǔ)句和信號(hào)賦值語(yǔ)句的語(yǔ)法格式如下: 變量賦值目標(biāo):變量賦值目標(biāo):= = 賦值源;賦值源; 信號(hào)賦值目標(biāo)信號(hào)賦值目標(biāo)= = 賦值源;賦值源;o 在信號(hào)賦值中,需要注意的是,當(dāng)在同一進(jìn)程中,在信號(hào)賦值中,需要注意的是,當(dāng)在同一進(jìn)程中,同一信號(hào)賦值目標(biāo)有多個(gè)賦值源時(shí),信號(hào)賦值目標(biāo)獲同一信號(hào)賦值目標(biāo)有多個(gè)賦值源時(shí),信號(hào)賦值目標(biāo)獲得的是最后一個(gè)賦值源的賦值,其前面相同的賦值目得的是最后一個(gè)賦值源的賦值,其前面相同的賦值目標(biāo)則不作任何變化。標(biāo)則不作任何變化?!纠纠?.14.1】
7、o SIGNAL S1,S2:STD_LOGIC;o SIGNAL SVEC :STD_LOGIC_VECTOR(0 TO 7);o .o PROCESS(S1,S2) ISo VARIABLE V1,V2:STD_LOGIC;o BEGINo V1 := 1; -立即將立即將V1置位為置位為1o V2 := 1; -立即將立即將V2置位為置位為1o S1 = 1; -S1被賦值為被賦值為1o S2 = 1;-由于在本進(jìn)程中,這里的由于在本進(jìn)程中,這里的S2不不 -是最后一個(gè)賦值語(yǔ)句故不作任何賦值操作是最后一個(gè)賦值語(yǔ)句故不作任何賦值操作o SVEC(0)= V1;-將將V1在上面的賦值在上面的
8、賦值1,賦給,賦給SVEC(0) oSVEC(1) = V2;-將將V2在上面的賦值在上面的賦值1,賦給,賦給SVEC(1)oSVEC(2) = S1;-將將S1在上面的賦值在上面的賦值1,賦給,賦給SVEC(2)oSVEC(3) = S2;-將最下面的賦予將最下面的賦予S2的值的值0,賦給,賦給 -SVEC(3)o V1 := 0; -將將V1置入新值置入新值0o V2 := 0; -將將V2置入新值置入新值0o S2 = 0; -由于這是由于這是S2最后一次賦值,賦值有效,此最后一次賦值,賦值有效,此0 -將上面準(zhǔn)備賦入的將上面準(zhǔn)備賦入的1覆蓋掉覆蓋掉oSVEC(4) = V1; -將將V
9、1在上面的賦值在上面的賦值0,賦給,賦給SVEC(4)oSVEC(5) = V2; -將將V2在上面的賦值在上面的賦值0,賦給,賦給SVEC(5)oSVEC(6) = S1; -將將 S1在上面的賦值在上面的賦值1,賦給,賦給SVEC(6)oSVEC(7) = S2; -將將S2在上面的賦值在上面的賦值0,賦給,賦給SVEC(7)oEND PROCESS; 2 2賦值目標(biāo)賦值目標(biāo)賦值語(yǔ)句中的賦值目標(biāo)有四種類型。賦值語(yǔ)句中的賦值目標(biāo)有四種類型。o 標(biāo)識(shí)符賦值目標(biāo)標(biāo)識(shí)符賦值目標(biāo):標(biāo)識(shí)符賦值目標(biāo)是以簡(jiǎn)單的標(biāo)識(shí)符:標(biāo)識(shí)符賦值目標(biāo)是以簡(jiǎn)單的標(biāo)識(shí)符作為被賦值的信號(hào)或變量名。作為被賦值的信號(hào)或變量名。 o
10、數(shù)組單元素賦值目標(biāo)數(shù)組單元素賦值目標(biāo) 數(shù)組單元素賦值目標(biāo)的表達(dá)形式為:數(shù)組單元素賦值目標(biāo)的表達(dá)形式為: 數(shù)組類信號(hào)或變量名數(shù)組類信號(hào)或變量名( (下標(biāo)名下標(biāo)名) ) o 段下標(biāo)元素賦值目標(biāo)段下標(biāo)元素賦值目標(biāo)o 集合塊賦值目標(biāo)集合塊賦值目標(biāo) o 其中,下標(biāo)名可以是一個(gè)具體的數(shù)字,也可以是一其中,下標(biāo)名可以是一個(gè)具體的數(shù)字,也可以是一個(gè)文字表示的數(shù)字名,它的取值范圍在該數(shù)組元素個(gè)數(shù)個(gè)文字表示的數(shù)字名,它的取值范圍在該數(shù)組元素個(gè)數(shù)范圍內(nèi)。下標(biāo)名若是未明確表示取值的文字范圍內(nèi)。下標(biāo)名若是未明確表示取值的文字( (不可計(jì)算不可計(jì)算值值) ),則在綜合時(shí),將耗用較多的硬件資源,且一般情況,則在綜合時(shí),將耗
11、用較多的硬件資源,且一般情況下不能被綜合。下不能被綜合。o 標(biāo)識(shí)符賦值目標(biāo)及數(shù)組單元素賦值目標(biāo)的使用實(shí)例標(biāo)識(shí)符賦值目標(biāo)及數(shù)組單元素賦值目標(biāo)的使用實(shí)例見(jiàn)例見(jiàn)例4.24.2?!纠纠?.2】oVARIABLE A,B:STD_LOGIC_VECTOR (1 TO 4);oA (1 TO 2) := 10 ; - 等效于等效于A(1):=1, A(2):=0oA (4 DOWNTO 1) :=“1011”; - 等效于等效于A(4):=1, A(3):=0, A(2):=1, A(1):=1【例【例4.34.3】oSIGNAL A,B, C, D :STD_LOGIC;oSIGNAL S: STD_
12、LOGIC_VECTOR( 1 TO 4);o.oVARIABLE E,F(xiàn) :STD_LOGIC;oVARIABLE G :STD_LOGIC_VECTOR(1 TO 2 );oVARIABLE H :STD_LOGIC_VECTOR(1 TO 4 );oS = (0,1,0,0) ;o(A, B, C, D) E,4=F,2 =G(1),1=G(2) ):= H;-名字關(guān)聯(lián)方式賦值名字關(guān)聯(lián)方式賦值 示例中的信號(hào)賦值語(yǔ)句屬位置關(guān)聯(lián)賦值方式,其賦值結(jié)果等效于:示例中的信號(hào)賦值語(yǔ)句屬位置關(guān)聯(lián)賦值方式,其賦值結(jié)果等效于: A =0;B =1;C =0 ;D B) THENo OUTPUTB)檢測(cè)結(jié)果
13、為檢測(cè)結(jié)果為TRUE,則向信號(hào),則向信號(hào)OUTPUT賦值賦值1,否則此信號(hào)維持原值。否則此信號(hào)維持原值?!纠纠?.5】IF語(yǔ)句完成的一個(gè)具有語(yǔ)句完成的一個(gè)具有2輸入與門功能的函數(shù)定義。輸入與門功能的函數(shù)定義。o FUNCTION AND_FUNC(X,Y:IN BIT) RETURN BIT ISo BEGINo IF X=1 AND Y=1 THEN RETURN 1;o ELSE RETURN 0;o END IF;o END FUNCTION AND_FUNC;o 【例【例4.6】o LIBRARY IEEE;o USE IEEE.STD_LOGIC_1164.ALL;o ENTITY
14、 EXAMPLE ISo PORT (A,B,C: IN BOOLEAN;o OUTPUT:OUT BOOLEAN);o END ENTITY EXAMPLE;o ARCHITECTURE ART OF EXAMPLE ISo BEGINo PROCESS(A,B,C) ISo VARIABLE N: BOOLEAN;o BEGINo IF A THEN N:=B;o ELSE N:=C;o END IF;o OUTPUT =N;o END PROCESS;o END ARCHITECTURE ART;例例4.6對(duì)應(yīng)的硬件電路如圖對(duì)應(yīng)的硬件電路如圖4.1所示。所示。圖圖4.1 例例4.6的硬件
15、實(shí)現(xiàn)電路的硬件實(shí)現(xiàn)電路 CABOUTPUTo 圖圖4.2中由兩個(gè)中由兩個(gè)2選選1多路選擇器構(gòu)成的電路邏輯描多路選擇器構(gòu)成的電路邏輯描述如例述如例4.7所示,其中,所示,其中,P1和和P2分別是兩個(gè)多路選擇器分別是兩個(gè)多路選擇器的通道選擇開關(guān),當(dāng)為高電平時(shí)下端的通道接通。的通道選擇開關(guān),當(dāng)為高電平時(shí)下端的通道接通。P1P2BCBASBASAZMUX21MUX21圖圖4.2 雙雙2選選1多路選擇器電路多路選擇器電路 【例【例4.7】o SIGNAL A,B,C,P1,P2,Z: BIT;o .o IF (P1=1) THENo Z=A; -滿足此語(yǔ)句的執(zhí)行條件是滿足此語(yǔ)句的執(zhí)行條件是(P1=1)o
16、 ELSIF (P2=0) THENo Z=B;-滿足此語(yǔ)句的執(zhí)行條件是滿足此語(yǔ)句的執(zhí)行條件是(P1=0)AND (P2=0)o ELSEo Z=C;-滿足此語(yǔ)句的執(zhí)行條件是滿足此語(yǔ)句的執(zhí)行條件是(P1=0)AND (P2=1)o END IF;【例【例4.8】8-3編碼器編碼器oLIBRARY IEEE;oUSE IEEE.STD_LOGIC_1164.ALL;oENTITY CODER ISo PORT ( SR:IN STD_LOGIC_VECTOR(0 TO 7);o SC:OUT STD_LOGIC_VECTOR(0 TO 2);oEND ENTITY CODER;oARCHITEC
17、TURE ART OF CODER ISo BEGINo PROCESS(SR) oBEGINo IF(SR(7)=0) THENo SC=000; -(SR(7)=0)o ELSIF(SR(6)=0) THENo SC =“001; -(SR(7)=1) AND (SR(6)=0)o ELSIF(SR (5)=0) THENo SC =010;-(SR (7)=1)AND(SR (6)=1)AND(SR (5)=0)o ELSIF(SR (4)=0) THENo SC =“011; o ELSIF(SR (3)=0) THENo SC =“100;oELSIF(SR (2)=0) THENo
18、 SC =101;o ELSIF(SR (1)=0) THENo SC =“110;o ELSE o SC =111;o END IF;oEND PROCESS;oEND ARCHITECTURE ART;例例4.9LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux41 ISPORT(a,b,c,d:IN STD_LOGIC; ena:IN STD_LOGIC_VECTOR(1 DOWNTO 0); p:OUT STD_LOGIC);END mux41;ARCHITECTURE choice OF mux41 ISBEGIN PROCESS
19、(ena) BEGIN IF(ena=00) THEN p=a; ELSIF(ena=01) THEN p=b; ELSIF(ena=10) THEN p=c; ELSE p順序語(yǔ)句;順序語(yǔ)句; oWHEN 選擇值選擇值 =順序語(yǔ)句;順序語(yǔ)句;o o WHEN OTHERS =順序語(yǔ)句;順序語(yǔ)句;o END CASE;4.5.2.2 CASE4.5.2.2 CASE語(yǔ)句語(yǔ)句選擇值可以有四種不同的選擇值可以有四種不同的表達(dá)方式:表達(dá)方式:?jiǎn)蝹€(gè)普通數(shù)值,如單個(gè)普通數(shù)值,如6 6。數(shù)值選擇范圍,數(shù)值選擇范圍,如如(2 TO 4)(2 TO 4),表示取值為,表示取值為2 2、3 3或或4 4。并列數(shù)
20、值,如并列數(shù)值,如3 3 5 5,表示,表示取值為取值為3 3或者或者5 5。混合方式,以上三種方式混合方式,以上三種方式的混合。的混合。使用使用CASE語(yǔ)句需注意以下幾點(diǎn):語(yǔ)句需注意以下幾點(diǎn):o (1) 條件句中的選擇值必須在表達(dá)式的取值范圍內(nèi)。條件句中的選擇值必須在表達(dá)式的取值范圍內(nèi)。o (2) 除非所有條件句中的選擇值能完整覆蓋除非所有條件句中的選擇值能完整覆蓋CASE語(yǔ)句語(yǔ)句中表達(dá)式的取值,否則最末一個(gè)條件句中的選擇必須中表達(dá)式的取值,否則最末一個(gè)條件句中的選擇必須用用“OTHERS”表示。表示。 o (3)CASE語(yǔ)句中每一條語(yǔ)句的選擇只能出現(xiàn)一次,不語(yǔ)句中每一條語(yǔ)句的選擇只能出現(xiàn)一
21、次,不能有相同選擇值的條件語(yǔ)句出現(xiàn)。能有相同選擇值的條件語(yǔ)句出現(xiàn)。o (4)CASE語(yǔ)句執(zhí)行中必須選中,且只能選中所列條件語(yǔ)句執(zhí)行中必須選中,且只能選中所列條件語(yǔ)句中的一條。這表明語(yǔ)句中的一條。這表明CASE語(yǔ)句中至少要包含一個(gè)語(yǔ)句中至少要包含一個(gè)條件語(yǔ)句。條件語(yǔ)句。 圖圖4.3 4選選1多路選擇器多路選擇器 S1S2CBADCABDS2 S1Zo LIBRARY IEEE;o USE IEEE.STD_LOGIC_1164.ALL;o ENTITY MUX41 ISo PORT(S1,S2 : IN STD_LOGIC;o A,B,C,D:IN STD_LOGIC;o Z : OUT STD
22、_LOGIC);o END ENTITY MUX41;o ARCHITECTURE ART OF MUX41 ISo SIGNAL S :STD_LOGIC_VECTOR(1 DOWNTO 0);o BEGINo SZZZZZ=X;o END CASE;oEND PROCESS;oEND ARCHITECTURE ART;o 對(duì)向量賦值時(shí),如果信號(hào)的位數(shù)比較長(zhǎng),可以采對(duì)向量賦值時(shí),如果信號(hào)的位數(shù)比較長(zhǎng),可以采用聚合賦值。例如,假設(shè)信號(hào)用聚合賦值。例如,假設(shè)信號(hào)a的數(shù)據(jù)寬度為的數(shù)據(jù)寬度為8位,語(yǔ)位,語(yǔ)句句“a 1)”與語(yǔ)句與語(yǔ)句“a =11111111”的作用相同。但是語(yǔ)句的作用相同。但是語(yǔ)句“
23、a1)”的優(yōu)的優(yōu)點(diǎn)是給數(shù)據(jù)寬度比較長(zhǎng)的信號(hào)賦值時(shí),寫起來(lái)簡(jiǎn)單,點(diǎn)是給數(shù)據(jù)寬度比較長(zhǎng)的信號(hào)賦值時(shí),寫起來(lái)簡(jiǎn)單,而且與數(shù)據(jù)寬度無(wú)關(guān)。還可以給向量的一部分賦值后,而且與數(shù)據(jù)寬度無(wú)關(guān)。還可以給向量的一部分賦值后,再用再用OTHERS給其余各位賦值。例如:給其余各位賦值。例如:o a 1,4=1,OTHERS=0);o 注意:注意:本例的第五個(gè)條件名是必需的,因?yàn)閷?duì)于本例的第五個(gè)條件名是必需的,因?yàn)閷?duì)于定義定義STD_LOGIC_VECTOR數(shù)據(jù)類型的數(shù)據(jù)類型的S,在,在VHDL綜合過(guò)程中,它可能的選擇值除了綜合過(guò)程中,它可能的選擇值除了00、01、10和和11外,外,還可以有其他定義于還可以有其他定義
24、于STD_LOGIC的選擇值。本例的的選擇值。本例的邏輯圖如圖邏輯圖如圖4.3所示。所示。o 注意:注意:對(duì)相同的邏輯功能,對(duì)相同的邏輯功能,CASE語(yǔ)句比語(yǔ)句比IF語(yǔ)句語(yǔ)句的描述耗用更多的硬件資源,而且對(duì)于有的邏輯,的描述耗用更多的硬件資源,而且對(duì)于有的邏輯,CASE語(yǔ)句無(wú)法描述,只能用語(yǔ)句無(wú)法描述,只能用IF語(yǔ)句來(lái)描述。語(yǔ)句來(lái)描述?!纠纠?.11】o LIBRARY IEEE;o USE IEEE.STD_LOGIC_1164.ALL;o USE IEEE.STD_LOGIC_UNSIGNED.ALL;o ENTITY MUX41 ISo PORT(S4,S3,S2,S1: IN STD
25、_LOGIC;o Z4,Z3,Z2,Z1:OUT STD_LOGIC);o END ENTITY MUX41;o ARCHITECTURE ART OF MUX41 ISo SIGNAL TEMP:INTEGER RANGE 0 TO 15;o BEGINo PROCESS(S4,S3,S2,S1) ISo BEGINo TEMP=CONV_INTEGER(S4&S3&S2&S1);o END PROCESS;oPROCESS(TEMP)o BEGINo Z1=0;Z2=0;Z3=0;Z4Z1Z2Z3Z410;-當(dāng)當(dāng)A大于大于10時(shí)跳出循環(huán)時(shí)跳出循環(huán)o END LOOP
26、 L2;o 【例【例4.13】 FORLOOP語(yǔ)句的使用語(yǔ)句的使用(8位奇偶校驗(yàn)邏輯電路的位奇偶校驗(yàn)邏輯電路的VHDL程序程序)。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY P_CHECK IS PORT (A:IN STD_LOGIC_VECTOR(7 DOWNTO 0); Y:OUT STD_LOGIC);END ENTITY P_CHECK;oARCHITECTURE ART OF P_CHECK ISo SIGNAL TMP: STD_LOGIC;o BEGINo PROCESS(A)o BEGINo TMP =0;o FOR N I
27、N 0 TO 7 LOOPo TMP =TMP XOR A(N);o END LOOP;o Y= TMP;o END PROCESS;oEND ARCHITECTURE ART;o SIGNAL A,B,C: STD_LOGIC_VECTOR(1 TO 3);o o FOR N IN 1 TO 3 LOOPo A(N)=B(N) AND C(N);o END LOOP; 此段程序等效于順序執(zhí)行以下三個(gè)信號(hào)賦值操作:此段程序等效于順序執(zhí)行以下三個(gè)信號(hào)賦值操作:o A(1)=B(1) AND C(1);o A(2)=B(2) AND C(2);o A(3)=B(3) AND C(3);【例【例4.
28、144.14】利用利用LOOPLOOP語(yǔ)句中的循環(huán)變量簡(jiǎn)化同類順序語(yǔ)句的表達(dá)式的使用。語(yǔ)句中的循環(huán)變量簡(jiǎn)化同類順序語(yǔ)句的表達(dá)式的使用。(2)WHILE模式,格式如下:模式,格式如下:LOOP 標(biāo)號(hào)標(biāo)號(hào) : WHILE 循環(huán)控制條件循環(huán)控制條件 LOOP -重復(fù)次數(shù)未知重復(fù)次數(shù)未知 順序語(yǔ)句;順序語(yǔ)句;End loop LOOP 標(biāo)號(hào)標(biāo)號(hào);oSHIFT1: PROCESS(INPUTX) ISo VARIABLE N: POSITIVE:=1;o BEGINo L1: WHILE N=8 LOOP o -這里的這里的“=”是小于等于的意思是小于等于的意思o(jì) OUTPUTX(N)=INPUTX(N
29、+8);o N:=N+1;o END LOOP L1;oEND PROCESS SHIFT1;【例【例4.15】 WHILELOOP語(yǔ)句的使用。語(yǔ)句的使用。o 在在WHILELOOP語(yǔ)句的順序語(yǔ)句中增加了一語(yǔ)句的順序語(yǔ)句中增加了一條循環(huán)次數(shù)的計(jì)算語(yǔ)句,用于循環(huán)語(yǔ)句的控制。在循條循環(huán)次數(shù)的計(jì)算語(yǔ)句,用于循環(huán)語(yǔ)句的控制。在循環(huán)執(zhí)行中,當(dāng)環(huán)執(zhí)行中,當(dāng)N的值等于的值等于9時(shí)將跳出循環(huán)。時(shí)將跳出循環(huán)。o 在例在例4.16和例和例4.17程序設(shè)計(jì)中,分別使用了上述程序設(shè)計(jì)中,分別使用了上述兩種不同的循環(huán)方式,圖兩種不同的循環(huán)方式,圖4.4和圖和圖4.5是分別對(duì)應(yīng)于例是分別對(duì)應(yīng)于例4.16和例和例4.17的
30、邏輯電路,試比較這兩個(gè)例子在軟件的邏輯電路,試比較這兩個(gè)例子在軟件描述的區(qū)別。描述的區(qū)別。o ENTITY LOOPEXP ISo PORT (A:IN BIT_VECTOR (0 TO 3);o OUT1:OUT BIT_VECTOR(0 TO 3);o END ENTITY LOOPEXP;o ARCHITECTURE ART OF LOOP EXP ISo BEGIN【例【例4.164.16】o PROCESS (A) ISo VARIABLE B: BIT;o BEGINo B:=1;o FOR I IN 0 TO 3 LOOPo B:=A(3-I) AND B;o OUT1(I)=B
31、;o END LOOP;o END PROCESS;o END ARCHITECTURE ART;圖圖4.4 例例4.16對(duì)應(yīng)的硬件電路對(duì)應(yīng)的硬件電路 A3A2A1A0OUT13OUT12OUT11OUT10o ENTITY WHILEEXP ISo PORT (A:IN BIT_VECTOR(0 TO 3);o OUT1:OUT BIT_VECTOR (0 TO 3);o END ENTITY WHILEEXP;o ARCHITECTURE ART OF WHILEEXP ISo BEGINo PROCESS(A) ISo VARIABLE B:BIT;o VARIABLE I: INTEG
32、ER;【例【例4.17】o BEGINo I:=0; B=1;o WHILE I=3 LOOPo B:=A(3-I) AND B;o OUT1(I)=B;o I:=I+1;o END LOOP;o END PROCESS;o END ARCHITECTURE ART;圖圖4.5 例例4.17對(duì)應(yīng)的硬件電路對(duì)應(yīng)的硬件電路 A3A2A1A0OUT13OUT12OUT11OUT10While語(yǔ)句實(shí)現(xiàn)語(yǔ)句實(shí)現(xiàn)8位奇偶校驗(yàn)邏輯電路的設(shè)計(jì)位奇偶校驗(yàn)邏輯電路的設(shè)計(jì)WHILE nF);o S3:B(k+8):=0;o K:=K+1;o NEXT LOOP L2;o NEXT LOOP L1;o 【例【例4.1
33、9】o EXIT語(yǔ)句也是語(yǔ)句也是LOOP語(yǔ)句的內(nèi)部循環(huán)控制語(yǔ)句,其語(yǔ)語(yǔ)句的內(nèi)部循環(huán)控制語(yǔ)句,其語(yǔ)句格式如下:句格式如下: EXIT LOOP 標(biāo)號(hào)標(biāo)號(hào) WHEN 條件表達(dá)式條件表達(dá)式; o 這種語(yǔ)句格式與前述的這種語(yǔ)句格式與前述的NEXT 語(yǔ)句的格式和操作功能語(yǔ)句的格式和操作功能非常相似,惟一的區(qū)別是非常相似,惟一的區(qū)別是NEXT語(yǔ)句是跳向語(yǔ)句是跳向LOOP語(yǔ)句語(yǔ)句的起始點(diǎn),而的起始點(diǎn),而EXIT語(yǔ)句則是跳向語(yǔ)句則是跳向LOOP語(yǔ)句的終點(diǎn)。語(yǔ)句的終點(diǎn)。4.5.2.4 EXIT4.5.2.4 EXIT語(yǔ)句語(yǔ)句【例【例4.20】oSIGNAL A,B:STD_LOGIC_VECTOR(1 DOWN
34、TO 0);oSIGNAL A_LESS _B:BOOLEAN;ooA_LESS_THEN_B=FLASE; -設(shè)初始值設(shè)初始值oFOR I IN 1 DOWNTO 0 LOOPo IF (A(I)=1 AND B(I)=0) THENo A_LESS _BBo EXIT;o ELSIF (A(I)=0 AND B(I)=1) THENo A_LESS _B=TRUE;-ABo EXIT; o ELSE NULL;o END IF;oEND LOOP; -當(dāng)當(dāng)I=1時(shí)返回時(shí)返回LOOP語(yǔ)句繼續(xù)比較語(yǔ)句繼續(xù)比較o 在進(jìn)程中在進(jìn)程中(包括過(guò)程中包括過(guò)程中),當(dāng)執(zhí)行到,當(dāng)執(zhí)行到WAIT等待語(yǔ)句時(shí),運(yùn)
35、等待語(yǔ)句時(shí),運(yùn)行程序?qū)⒈粧炱鹦谐绦驅(qū)⒈粧炱?Suspension),直到滿足此語(yǔ)句設(shè)置的結(jié)束掛,直到滿足此語(yǔ)句設(shè)置的結(jié)束掛起條件后,將重新開始執(zhí)行進(jìn)程或過(guò)程中的程序。但起條件后,將重新開始執(zhí)行進(jìn)程或過(guò)程中的程序。但VHDL規(guī)定,已列出敏感量的進(jìn)程中不能使用任何形式的規(guī)定,已列出敏感量的進(jìn)程中不能使用任何形式的WAIT語(yǔ)句。語(yǔ)句。WAIT語(yǔ)句的語(yǔ)句格式如下:語(yǔ)句的語(yǔ)句格式如下: WAIT ON 信號(hào)表信號(hào)表 UNTIL 條件表達(dá)式條件表達(dá)式 FOR 時(shí)間表達(dá)式時(shí)間表達(dá)式; 單獨(dú)的單獨(dú)的WAIT,即未設(shè)置停止掛起條件的表達(dá)式,表示永遠(yuǎn)掛,即未設(shè)置停止掛起條件的表達(dá)式,表示永遠(yuǎn)掛起。起。 4.5.3
36、 WAIT 4.5.3 WAIT語(yǔ)句語(yǔ)句o “WAIT ON 信號(hào)表信號(hào)表”稱為敏感信號(hào)等待語(yǔ)句,在信號(hào)表中列出的稱為敏感信號(hào)等待語(yǔ)句,在信號(hào)表中列出的信號(hào)是等待語(yǔ)句的敏感信號(hào)。當(dāng)處于等待狀態(tài)時(shí),敏感信號(hào)的任何信號(hào)是等待語(yǔ)句的敏感信號(hào)。當(dāng)處于等待狀態(tài)時(shí),敏感信號(hào)的任何變化變化(如從如從01或從或從10的變化的變化)將結(jié)束掛起,再次啟動(dòng)進(jìn)程。如:將結(jié)束掛起,再次啟動(dòng)進(jìn)程。如: WAIT ON S1,S2; o 表示當(dāng)表示當(dāng)S1或或S2中任一信號(hào)發(fā)生改變時(shí),就恢復(fù)執(zhí)行中任一信號(hào)發(fā)生改變時(shí),就恢復(fù)執(zhí)行WAIT語(yǔ)句之語(yǔ)句之后的語(yǔ)句。后的語(yǔ)句。o “WAIT UNTIL條件表達(dá)式條件表達(dá)式”稱為條件等待
37、語(yǔ)句,稱為條件等待語(yǔ)句,該語(yǔ)句將把進(jìn)程掛起,直到條件表達(dá)式中所含信號(hào)發(fā)該語(yǔ)句將把進(jìn)程掛起,直到條件表達(dá)式中所含信號(hào)發(fā)生了改變,并且條件表達(dá)式為真時(shí),進(jìn)程才能脫離掛生了改變,并且條件表達(dá)式為真時(shí),進(jìn)程才能脫離掛起狀態(tài),恢復(fù)執(zhí)行起狀態(tài),恢復(fù)執(zhí)行WAIT語(yǔ)句之后的語(yǔ)句。語(yǔ)句之后的語(yǔ)句。o 【例【例4.21】o (a) WAIT UNTIL 結(jié)構(gòu)結(jié)構(gòu) (b) WAIT ON結(jié)構(gòu)結(jié)構(gòu)o . LOOPo WAIT UNTIL ENABLE =1;WAIT ON ENABLE;o . EXIT WHEN ENABLE =1;o END LOOP;o 例例4.21中的兩種表達(dá)方式是等效的。中的兩種表達(dá)方式是等
38、效的。WAIT UNTIL語(yǔ)句有以下三種表達(dá)方式:語(yǔ)句有以下三種表達(dá)方式:o WAIT UNTIL 信號(hào)信號(hào)=VALUE;-o WAIT UNTIL 信號(hào)信號(hào)EVENT AND 信號(hào)信號(hào)=VALUE;-o WAIT UNTIL NOT信號(hào)信號(hào)STABLE AND 信號(hào)信號(hào)=VALUE;- 如果設(shè)如果設(shè)CLOCK為時(shí)鐘信號(hào)輸入端,以下四條為時(shí)鐘信號(hào)輸入端,以下四條WAIT語(yǔ)語(yǔ)句所設(shè)的進(jìn)程啟動(dòng)條件都是時(shí)鐘上跳沿,所以它們對(duì)應(yīng)的硬句所設(shè)的進(jìn)程啟動(dòng)條件都是時(shí)鐘上跳沿,所以它們對(duì)應(yīng)的硬件結(jié)構(gòu)是一樣的。件結(jié)構(gòu)是一樣的。o WAIT UNTIL CLOCK =1;o WAIT UNTIL RISING_ED
39、GE(CLOCK);o WAIT UNTIL NOT CLOCKSTABLE AND CLOCK=1;o WAIT UNTIL CLOCKEVENT AND CLOCK=1 ;o PROCESS o BEGINo WAIT UNTIL CLK= 1;o AVE=A;o END PROCESS;【例【例4.22】o 【例【例4.23】o PROCESSo BEGINo L1: LOOPo WAIT UNTIL CLOCK=1 AND CLOCKEVENT ;o -等待時(shí)鐘信號(hào)等待時(shí)鐘信號(hào)o NEXT L1 WHEN (RST=1); -檢測(cè)復(fù)位信號(hào)檢測(cè)復(fù)位信號(hào)RSTo X=A; -無(wú)復(fù)位信號(hào),執(zhí)
40、行賦值操作無(wú)復(fù)位信號(hào),執(zhí)行賦值操作o END LOOP L1;o END PROCESS;o 例例4.23中每一時(shí)鐘上升沿的到來(lái)都將結(jié)束進(jìn)程的掛起,中每一時(shí)鐘上升沿的到來(lái)都將結(jié)束進(jìn)程的掛起,繼而檢測(cè)電路的復(fù)位信號(hào)繼而檢測(cè)電路的復(fù)位信號(hào)RST是否為高電平。如果是高電是否為高電平。如果是高電平,則返回循環(huán)的起始點(diǎn);如果是低電平,則進(jìn)行正常的平,則返回循環(huán)的起始點(diǎn);如果是低電平,則進(jìn)行正常的順序語(yǔ)句執(zhí)行操作,如示例中的賦值操作。順序語(yǔ)句執(zhí)行操作,如示例中的賦值操作。o 一般地,在一個(gè)進(jìn)程中使用了一般地,在一個(gè)進(jìn)程中使用了WAIT語(yǔ)句后,經(jīng)綜合就語(yǔ)句后,經(jīng)綜合就會(huì)產(chǎn)生時(shí)序邏輯電路。時(shí)序邏輯電路的運(yùn)行依
41、賴于時(shí)鐘的會(huì)產(chǎn)生時(shí)序邏輯電路。時(shí)序邏輯電路的運(yùn)行依賴于時(shí)鐘的上升沿或下降沿,同時(shí)還具有數(shù)據(jù)存儲(chǔ)的功能。上升沿或下降沿,同時(shí)還具有數(shù)據(jù)存儲(chǔ)的功能。 o 例例4.24就是一個(gè)比較好的說(shuō)明,此例描述了一個(gè)就是一個(gè)比較好的說(shuō)明,此例描述了一個(gè)可預(yù)置校驗(yàn)對(duì)比值的四位奇偶校驗(yàn)電路,它的功能除可預(yù)置校驗(yàn)對(duì)比值的四位奇偶校驗(yàn)電路,它的功能除對(duì)輸入的對(duì)輸入的4位碼位碼DATA(0 TO 3)進(jìn)行奇偶校驗(yàn)外,還將進(jìn)行奇偶校驗(yàn)外,還將把校驗(yàn)結(jié)果與預(yù)置的校驗(yàn)值把校驗(yàn)結(jié)果與預(yù)置的校驗(yàn)值YZZ進(jìn)行比較,并將比較進(jìn)行比較,并將比較值值XYJG輸出。輸出。o【例【例4.24】oLIBRARY IEEE;oUSE IEEE.S
42、TD_LOGIC_1164.ALL;oENTITY JOXY ISo PORT(CLOCK :IN STD_LOGIC;-控制時(shí)鐘信號(hào)輸入端控制時(shí)鐘信號(hào)輸入端o KZD :IN STD_LOGIC; -預(yù)置校驗(yàn)值的輸入與比較控制端預(yù)置校驗(yàn)值的輸入與比較控制端o YZZ :IN STD_LOGIC;-預(yù)置校驗(yàn)值輸入端預(yù)置校驗(yàn)值輸入端 o DATA : IN STD_LOGIC_VECTOR(0 TO 3); o -校驗(yàn)值輸入端校驗(yàn)值輸入端o XYJG :OUT BOOLEAN);-校驗(yàn)結(jié)果輸出端校驗(yàn)結(jié)果輸出端oEND ENTITY JOXY;o ARCHITECTURE ART OF JOXY ISo SIGNAL S1:STD_LOGIC;o BEGINo PROCESS(CLOCK) ISo VARIABLE V1: STD_LOGIC;o BEGINo WAIT UNTIL CLOCKEVENT AND CLOCK= 1
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度場(chǎng)營(yíng)銷分公司智慧城市項(xiàng)目合作協(xié)議3篇
- 二零二五版商業(yè)街區(qū)場(chǎng)地租賃合作協(xié)議書6篇
- 2025年度高新技術(shù)產(chǎn)業(yè)常年法律顧問(wèn)聘用協(xié)議3篇
- 二零二五年度企業(yè)稅收籌劃與稅收籌劃實(shí)施合同3篇
- 二零二五年度出口退稅證明開具及國(guó)際金融服務(wù)合同3篇
- 二零二五年度港口碼頭租賃及港口貨物裝卸、倉(cāng)儲(chǔ)及配送服務(wù)協(xié)議8篇
- 二零二五年度土地承包經(jīng)營(yíng)權(quán)糾紛調(diào)解合同-@-2
- 2025草原禁牧與水資源保護(hù)管理協(xié)議合同3篇
- 2025年度個(gè)人個(gè)人借款合同信用評(píng)估標(biāo)準(zhǔn)3篇
- 二零二五食用油產(chǎn)品包裝設(shè)計(jì)與印刷合同
- 中考模擬考試化學(xué)試卷與答案解析(共三套)
- 新人教版五年級(jí)小學(xué)數(shù)學(xué)全冊(cè)奧數(shù)(含答案)
- 風(fēng)電場(chǎng)升壓站培訓(xùn)課件
- 收納盒注塑模具設(shè)計(jì)(論文-任務(wù)書-開題報(bào)告-圖紙)
- 博弈論全套課件
- CONSORT2010流程圖(FlowDiagram)【模板】文檔
- 腦電信號(hào)處理與特征提取
- 高中數(shù)學(xué)知識(shí)點(diǎn)全總結(jié)(電子版)
- GB/T 10322.7-2004鐵礦石粒度分布的篩分測(cè)定
- 2023新譯林版新教材高中英語(yǔ)必修一重點(diǎn)詞組歸納總結(jié)
- 蘇教版四年級(jí)數(shù)學(xué)下冊(cè)第3單元第2課時(shí)“常見(jiàn)的數(shù)量關(guān)系”教案
評(píng)論
0/150
提交評(píng)論