EAD課程第5章VHDL順序語(yǔ)句_第1頁(yè)
EAD課程第5章VHDL順序語(yǔ)句_第2頁(yè)
EAD課程第5章VHDL順序語(yǔ)句_第3頁(yè)
EAD課程第5章VHDL順序語(yǔ)句_第4頁(yè)
EAD課程第5章VHDL順序語(yǔ)句_第5頁(yè)
已閱讀5頁(yè),還剩50頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1 2 VHDLVHDL語(yǔ)言的描述語(yǔ)句主要用來(lái)描述系統(tǒng)的硬件語(yǔ)言的描述語(yǔ)句主要用來(lái)描述系統(tǒng)的硬件結(jié)構(gòu)、行為功能及信號(hào)之間的邏輯關(guān)系。分為順序結(jié)構(gòu)、行為功能及信號(hào)之間的邏輯關(guān)系。分為順序語(yǔ)句和并行語(yǔ)句兩大類。語(yǔ)句和并行語(yǔ)句兩大類。 順序語(yǔ)句是按照語(yǔ)句書(shū)寫(xiě)的前后順序自上而下、順序語(yǔ)句是按照語(yǔ)句書(shū)寫(xiě)的前后順序自上而下、一條接一條地按順序執(zhí)行,用來(lái)定義進(jìn)程、過(guò)程和一條接一條地按順序執(zhí)行,用來(lái)定義進(jìn)程、過(guò)程和函數(shù)的行為。函數(shù)的行為。 并行語(yǔ)句又稱并發(fā)語(yǔ)句,出現(xiàn)在結(jié)構(gòu)體中,各并行語(yǔ)句又稱并發(fā)語(yǔ)句,出現(xiàn)在結(jié)構(gòu)體中,各語(yǔ)句并行(同步)執(zhí)行,與書(shū)寫(xiě)的順序無(wú)關(guān)。語(yǔ)句并行(同步)執(zhí)行,與書(shū)寫(xiě)的順序無(wú)關(guān)。 有些語(yǔ)句既

2、可作為并行語(yǔ)句又可作為順序語(yǔ)句,有些語(yǔ)句既可作為并行語(yǔ)句又可作為順序語(yǔ)句,如賦值語(yǔ)句、過(guò)程調(diào)用語(yǔ)句和斷言語(yǔ)句。如賦值語(yǔ)句、過(guò)程調(diào)用語(yǔ)句和斷言語(yǔ)句。 3VHDL語(yǔ)言的順序描述語(yǔ)句語(yǔ)言的順序描述語(yǔ)句 順序語(yǔ)句允許按算法描述設(shè)計(jì)功能,其執(zhí)行順順序語(yǔ)句允許按算法描述設(shè)計(jì)功能,其執(zhí)行順序嚴(yán)格與書(shū)寫(xiě)順序一致,主要有:序嚴(yán)格與書(shū)寫(xiě)順序一致,主要有: 賦值語(yǔ)句賦值語(yǔ)句 流程控制語(yǔ)句流程控制語(yǔ)句 等待語(yǔ)句等待語(yǔ)句 空操作語(yǔ)句空操作語(yǔ)句 4 賦值語(yǔ)句的功能是將一個(gè)值或一個(gè)表達(dá)式的運(yùn)賦值語(yǔ)句的功能是將一個(gè)值或一個(gè)表達(dá)式的運(yùn)算結(jié)果傳遞給某一數(shù)據(jù)對(duì)象,如信號(hào)、變量或由它算結(jié)果傳遞給某一數(shù)據(jù)對(duì)象,如信號(hào)、變量或由它們組成

3、的數(shù)組。們組成的數(shù)組。 通過(guò)賦值語(yǔ)句,可以實(shí)現(xiàn)設(shè)計(jì)實(shí)體內(nèi)部的數(shù)據(jù)通過(guò)賦值語(yǔ)句,可以實(shí)現(xiàn)設(shè)計(jì)實(shí)體內(nèi)部的數(shù)據(jù)傳送,以及端口外部數(shù)據(jù)的讀寫(xiě)。傳送,以及端口外部數(shù)據(jù)的讀寫(xiě)。 賦值語(yǔ)句由賦值源、賦值目標(biāo)和賦值符構(gòu)成。賦值語(yǔ)句由賦值源、賦值目標(biāo)和賦值符構(gòu)成。 要求賦值源和賦值目標(biāo)的數(shù)據(jù)類型必須相同。要求賦值源和賦值目標(biāo)的數(shù)據(jù)類型必須相同。 根據(jù)賦值對(duì)象(賦值目標(biāo))的不同,賦值語(yǔ)句根據(jù)賦值對(duì)象(賦值目標(biāo))的不同,賦值語(yǔ)句可分為信號(hào)賦值和變量賦值兩種。可分為信號(hào)賦值和變量賦值兩種。 5.1 5.1 賦值語(yǔ)句賦值語(yǔ)句 5 變量賦值具有即時(shí)性、局部性,并且變量賦值變量賦值具有即時(shí)性、局部性,并且變量賦值只限定在進(jìn)

4、程和子程序中,賦值符用只限定在進(jìn)程和子程序中,賦值符用“:=”:=”表示。表示。 (1 1)變量賦值語(yǔ)句變量賦值語(yǔ)句 格式:格式: 目標(biāo)變量名目標(biāo)變量名: := 賦值源;賦值源; 該語(yǔ)句是將賦值源的當(dāng)前值賦給目標(biāo)變量。要該語(yǔ)句是將賦值源的當(dāng)前值賦給目標(biāo)變量。要求賦值號(hào)兩邊變量的類型和長(zhǎng)度應(yīng)該一致。求賦值號(hào)兩邊變量的類型和長(zhǎng)度應(yīng)該一致。 例如:例如: A A : := 5.05.0; Y Y : :=00; X X := Y Y;-將數(shù)值將數(shù)值5.05.0賦值給變量賦值給變量A A -變量變量Y Y被賦值為被賦值為00 -將變量將變量Y Y的當(dāng)前值賦給目標(biāo)變量的當(dāng)前值賦給目標(biāo)變量X X 6 對(duì)于

5、數(shù)組賦值,可采用下列格式:對(duì)于數(shù)組賦值,可采用下列格式: (1 1)變量賦值語(yǔ)句變量賦值語(yǔ)句 VARIABLEVARIABLE x x,y:y: STD_LOGIC_VECTOR (STD_LOGIC_VECTOR ( 0 0 TOTO 3 3 ) ); x x : := “1011”“1011”; y y ( ( 0 0 TOTO 1 1 ) :) := “10”“10”; y y ( ( 2 2 TOTO 3 3 ) ) : := x x ( ( 1 1 TOTO 2 2 ) ); -整體賦值,數(shù)組整體賦值,數(shù)組“1011”1011”賦值賦值x x -部分賦值部分賦值, ,“10”10”賦

6、值賦值y y的部分位的部分位 - -位置關(guān)聯(lián)賦值位置關(guān)聯(lián)賦值,x,x的部分的部分位賦值位賦值y y的部分位的部分位 7 信號(hào)賦值具有延時(shí)性、全局性,賦值符用信號(hào)賦值具有延時(shí)性、全局性,賦值符用“=”表示。表示。 (2 2)信號(hào)賦值語(yǔ)句信號(hào)賦值語(yǔ)句 格式:格式: 目標(biāo)信號(hào)名目標(biāo)信號(hào)名= 賦值源;賦值源; 該語(yǔ)句是將賦值源的當(dāng)前值賦給目標(biāo)信號(hào)。要該語(yǔ)句是將賦值源的當(dāng)前值賦給目標(biāo)信號(hào)。要求賦值號(hào)兩邊信號(hào)量的類型和長(zhǎng)度應(yīng)該一致。求賦值號(hào)兩邊信號(hào)量的類型和長(zhǎng)度應(yīng)該一致。 例如:例如: Y Y =11; X X = Y Y; A A = B B ANDAND C C;- - 字符賦值,信號(hào)字符賦值,信號(hào)Y

7、 Y被賦值為被賦值為1 1- - 信號(hào)賦值,將信號(hào)信號(hào)賦值,將信號(hào)Y Y的當(dāng)前值賦給目標(biāo)信號(hào)的當(dāng)前值賦給目標(biāo)信號(hào)X X- - 表達(dá)式賦值,將表達(dá)式賦值,將B B和和C C的與邏輯賦給目標(biāo)信號(hào)的與邏輯賦給目標(biāo)信號(hào)A A8 對(duì)于數(shù)組賦值,可采用下列格式:對(duì)于數(shù)組賦值,可采用下列格式: (2 2)信號(hào)賦值語(yǔ)句信號(hào)賦值語(yǔ)句 SIGNALSIGNAL x x,y:y: STD_LOGIC_VECTOR (STD_LOGIC_VECTOR ( 0 0 TOTO 3 3 ) ); x x = “1011”“1011”; y y ( ( 0 0 TOTO 1 1 ) ) = “01”“01”; y y ( (

8、 2 2 TOTO 3 3 ) ) = x x ( ( 1 1 TOTO 2 2 ) ); -整體賦值,數(shù)組整體賦值,數(shù)組“1011”1011”賦值賦值x x -部分賦值部分賦值, ,“01”01”賦值賦值y y的部分位的部分位 - -位置關(guān)聯(lián)賦值位置關(guān)聯(lián)賦值,x,x的部分的部分位賦值位賦值y y的部分位的部分位 9 流程控制語(yǔ)句通過(guò)條件控制來(lái)決定是否執(zhí)行一流程控制語(yǔ)句通過(guò)條件控制來(lái)決定是否執(zhí)行一條或幾條語(yǔ)句,或重復(fù)執(zhí)行一條或幾條語(yǔ)句,或跳條或幾條語(yǔ)句,或重復(fù)執(zhí)行一條或幾條語(yǔ)句,或跳過(guò)一條或幾條語(yǔ)句。過(guò)一條或幾條語(yǔ)句。 5.2 5.2 流程控制語(yǔ)句流程控制語(yǔ)句 流程控制語(yǔ)句共有五種:流程控制語(yǔ)

9、句共有五種: IFIF語(yǔ)句語(yǔ)句 CASECASE語(yǔ)句語(yǔ)句 LOOPLOOP語(yǔ)句語(yǔ)句 NEXTNEXT語(yǔ)句語(yǔ)句 EXITEXIT語(yǔ)句語(yǔ)句 10 IFIF語(yǔ)句是一種條件語(yǔ)句,在語(yǔ)句是一種條件語(yǔ)句,在IFIF語(yǔ)句中至少應(yīng)有語(yǔ)句中至少應(yīng)有一個(gè)條件句,該條件句必須由一個(gè)條件句,該條件句必須由BOOLEANBOOLEAN表達(dá)式構(gòu)成。表達(dá)式構(gòu)成。 IFIF語(yǔ)句依據(jù)條件產(chǎn)生的判斷結(jié)果語(yǔ)句依據(jù)條件產(chǎn)生的判斷結(jié)果TRUETRUE或或FALSEFALSE,有選擇地去執(zhí)行指定的語(yǔ)句。有選擇地去執(zhí)行指定的語(yǔ)句。 利用利用IFIF語(yǔ)句可以實(shí)現(xiàn)兩個(gè)或兩個(gè)以上的條件分語(yǔ)句可以實(shí)現(xiàn)兩個(gè)或兩個(gè)以上的條件分支判斷。其格式有三種:支

10、判斷。其格式有三種: (1 1)IFIF語(yǔ)句語(yǔ)句 單選擇控制單選擇控制 二選擇控制二選擇控制 多選擇控制多選擇控制 11 IFIF語(yǔ)句的單選擇控制語(yǔ)句的單選擇控制 格式:格式: IF 條件句條件句 THEN 順序語(yǔ)句;順序語(yǔ)句; END IF; 若條件句的邏輯值為真,則執(zhí)行若條件句的邏輯值為真,則執(zhí)行THENTHEN后面的順后面的順序語(yǔ)句,否則結(jié)束該條件的執(zhí)行。序語(yǔ)句,否則結(jié)束該條件的執(zhí)行。 例如:例如:IFIF (x x = 11) THENTHEN A A = B B; END IFEND IF; 當(dāng)條件當(dāng)條件x x =1 1成立時(shí),信號(hào)成立時(shí),信號(hào)B B的值賦給信號(hào)的值賦給信號(hào)A A;否

11、則,不執(zhí)行否則,不執(zhí)行A A = B B語(yǔ)句。語(yǔ)句。 12 IFIF語(yǔ)句的二選擇控制語(yǔ)句的二選擇控制 格式:格式: IF 條件句條件句 THEN 順序語(yǔ)句;順序語(yǔ)句; ELSE 順序語(yǔ)句;順序語(yǔ)句; END IF; 若條件句的邏輯值為真,則執(zhí)行若條件句的邏輯值為真,則執(zhí)行THENTHEN后面的順后面的順序語(yǔ)句,否則執(zhí)行序語(yǔ)句,否則執(zhí)行ELSEELSE后面的順序語(yǔ)句。后面的順序語(yǔ)句。 13 【例例4.6.14.6.1】用用IFIF語(yǔ)句描述二選一數(shù)據(jù)選擇器。語(yǔ)句描述二選一數(shù)據(jù)選擇器。 設(shè)數(shù)據(jù)輸入信號(hào)為設(shè)數(shù)據(jù)輸入信號(hào)為d1d1和和d0d0,選擇控制信號(hào)為,選擇控制信號(hào)為s s,數(shù)據(jù)輸出信號(hào)為數(shù)據(jù)輸出

12、信號(hào)為y y。 ARCHITECTUREARCHITECTURE example1 example1 OFOF mux2 mux2 ISIS BEGINBEGIN PROCESSPROCESS(d1, d0, sd1, d0, s) BEGINBEGIN IFIF ( ( s s =0) 0) THENTHEN y y = d0d0; ELSEELSE y y = d1d1; END IFEND IF; END PROCESSEND PROCESS; END END example1 example1;14 IFIF語(yǔ)句的多選擇控制語(yǔ)句的多選擇控制 格式:格式: IF 條件句條件句 THEN

13、順序語(yǔ)句;順序語(yǔ)句; ELSIF 條件句條件句 THEN 順序語(yǔ)句;順序語(yǔ)句; END IF; 當(dāng)滿足多個(gè)條件之一時(shí),執(zhí)行該條件當(dāng)滿足多個(gè)條件之一時(shí),執(zhí)行該條件THENTHEN后面后面的順序語(yǔ)句;如果所設(shè)條件都不滿足,則執(zhí)行的順序語(yǔ)句;如果所設(shè)條件都不滿足,則執(zhí)行ELSEELSE后面的順序語(yǔ)句。后面的順序語(yǔ)句。 15 【例例4.6.24.6.2】用用IFIF語(yǔ)句描述四選一數(shù)據(jù)選擇器。語(yǔ)句描述四選一數(shù)據(jù)選擇器。 設(shè)數(shù)據(jù)輸入信號(hào)為設(shè)數(shù)據(jù)輸入信號(hào)為d3d3、d2d2、d1d1、d0d0,選擇控制,選擇控制信號(hào)為信號(hào)為s=s1, s0s=s1, s0 ,數(shù)據(jù)輸出信號(hào)為,數(shù)據(jù)輸出信號(hào)為y y。 ARCH

14、ITECTUREARCHITECTURE example2 example2 OFOF mux4 mux4 ISIS BEGINBEGIN PROCESSPROCESS(d3, d2, d1, d0, sd3, d2, d1, d0, s ) BEGINBEGIN IFIF ( ( s s =“00”) “00”) THENTHEN y y = d0d0; ELSIFELSIF ( ( s s =“01”) “01”) THENTHEN y y = d1d1; ELSIF ELSIF ( ( s s =“10”) “10”) THENTHEN y y = d2d2; ELSE ELSE y y

15、 順序語(yǔ)句;順序語(yǔ)句; WHEN 選擇值選擇值 = 順序語(yǔ)句;順序語(yǔ)句; WHEN OTHERS = 順序語(yǔ)句;順序語(yǔ)句; END CASE; 說(shuō)明:先計(jì)算表達(dá)式的值,然后根據(jù)條件句中的選說(shuō)明:先計(jì)算表達(dá)式的值,然后根據(jù)條件句中的選擇值執(zhí)行相對(duì)應(yīng)的順序語(yǔ)句。擇值執(zhí)行相對(duì)應(yīng)的順序語(yǔ)句。 注意:條件句中的注意:條件句中的“=”不是操作符,它相當(dāng)于不是操作符,它相當(dāng)于THENTHEN作用。作用。 17 表達(dá)式可以是一個(gè)整數(shù)類型或枚舉類型的值,表達(dá)式可以是一個(gè)整數(shù)類型或枚舉類型的值,也可以是由這些數(shù)據(jù)類型的值構(gòu)成的數(shù)組。也可以是由這些數(shù)據(jù)類型的值構(gòu)成的數(shù)組。 (2 2)CASECASE語(yǔ)句語(yǔ)句 選擇值

16、可以有四種不同的表達(dá)方式:選擇值可以有四種不同的表達(dá)方式: 單個(gè)普通數(shù)值,如:?jiǎn)蝹€(gè)普通數(shù)值,如:5 5; 數(shù)值選擇范圍,如:(數(shù)值選擇范圍,如:(1 TO 3)1 TO 3); 并列值,如:并列值,如:4 4 | 6 6,表示取值為,表示取值為4 4或或6 6; 混合方式,即以上三種方式的混合?;旌戏绞剑匆陨先N方式的混合。18 使用使用CASECASE語(yǔ)句時(shí),應(yīng)注意以下幾點(diǎn):語(yǔ)句時(shí),應(yīng)注意以下幾點(diǎn): (2 2)CASECASE語(yǔ)句語(yǔ)句 選擇值必須在表達(dá)式的取值范圍內(nèi);選擇值必須在表達(dá)式的取值范圍內(nèi); CASECASE語(yǔ)句中至少要包含一個(gè)語(yǔ)句中至少要包含一個(gè)WHENWHEN語(yǔ)句;語(yǔ)句; 每個(gè)

17、選擇值只能出現(xiàn)一次,不能在其他每個(gè)選擇值只能出現(xiàn)一次,不能在其他WHENWHEN語(yǔ)句中重復(fù)出現(xiàn);語(yǔ)句中重復(fù)出現(xiàn); 除非所有選擇值能完全覆蓋除非所有選擇值能完全覆蓋CASECASE語(yǔ)句中的表語(yǔ)句中的表達(dá)式的取值,否則最后一個(gè)條件句的選擇值達(dá)式的取值,否則最后一個(gè)條件句的選擇值必須用必須用“OTHERS”O(jiān)THERS”表示。表示。 選擇值可以顛倒次序選擇值可以顛倒次序, ,但但OTHERSOTHERS必須放在最后必須放在最后; ; “=”不是操作符,相當(dāng)于不是操作符,相當(dāng)于THENTHEN語(yǔ)句的作用。語(yǔ)句的作用。 19 【例例4.6.34.6.3】用用CASECASE語(yǔ)句描述四選一數(shù)據(jù)選擇器。語(yǔ)句

18、描述四選一數(shù)據(jù)選擇器。 ARCHITECTUREARCHITECTURE example3 example3 OFOF mux4 mux4 ISIS SIGNALSIGNAL s: STD_LOGIC_VECTOR s: STD_LOGIC_VECTOR(1 1 DOWNTODOWNTO 0 0) BEGINBEGIN s sy yy yy yy yy y=XX; END CASEEND CASE; END PROCESSEND PROCESS; END END example3 example3;20 LOOP LOOP語(yǔ)句是一種循環(huán)語(yǔ)句,它可以使所包含的語(yǔ)句是一種循環(huán)語(yǔ)句,它可以使所包含的

19、一組順序語(yǔ)句被循環(huán)執(zhí)行,其執(zhí)行的次數(shù)由設(shè)定的一組順序語(yǔ)句被循環(huán)執(zhí)行,其執(zhí)行的次數(shù)由設(shè)定的循環(huán)參數(shù)決定。循環(huán)參數(shù)決定。 (3 3)LOOPLOOP語(yǔ)句語(yǔ)句 LOOPLOOP語(yǔ)句有三種格式:語(yǔ)句有三種格式: FOR_LOOPFOR_LOOP語(yǔ)句語(yǔ)句 WHILE_LOOPWHILE_LOOP語(yǔ)句語(yǔ)句 單個(gè)單個(gè)LOOPLOOP語(yǔ)句語(yǔ)句21 FOR_LOOP FOR_LOOP語(yǔ)句主要用于循環(huán)次數(shù)已知的循環(huán)程序設(shè)計(jì)。語(yǔ)句主要用于循環(huán)次數(shù)已知的循環(huán)程序設(shè)計(jì)。可分為遞增方式和遞減方式。可分為遞增方式和遞減方式。 FOR_LOOPFOR_LOOP語(yǔ)句語(yǔ)句 循環(huán)標(biāo)號(hào)循環(huán)標(biāo)號(hào): FOR 循環(huán)變量循環(huán)變量 IN 初值

20、初值 TO 終值終值 LOOP 順序語(yǔ)句;順序語(yǔ)句; END LOOP 循環(huán)標(biāo)號(hào)循環(huán)標(biāo)號(hào); 遞增格式:遞增格式: 遞減格式:遞減格式:循環(huán)標(biāo)號(hào)循環(huán)標(biāo)號(hào): FOR 循環(huán)變量循環(huán)變量 IN 初值初值 DOWNTO 終值終值 LOOP 順序語(yǔ)句;順序語(yǔ)句; END LOOP 循環(huán)標(biāo)號(hào)循環(huán)標(biāo)號(hào); 22 說(shuō)明:循環(huán)從循環(huán)變量的說(shuō)明:循環(huán)從循環(huán)變量的“初值初值”開(kāi)始,到開(kāi)始,到“終值終值”結(jié)束,每執(zhí)行一次循環(huán)體中的順序語(yǔ)句后,結(jié)束,每執(zhí)行一次循環(huán)體中的順序語(yǔ)句后,循環(huán)變量的值遞增或遞減循環(huán)變量的值遞增或遞減1 1。 FOR_LOOPFOR_LOOP語(yǔ)句語(yǔ)句 循環(huán)標(biāo)號(hào)為任選項(xiàng),循環(huán)標(biāo)號(hào)為任選項(xiàng),用來(lái)給循環(huán)語(yǔ)

21、句定位。用來(lái)給循環(huán)語(yǔ)句定位。 循環(huán)變量的初值和終值決定了循環(huán)次數(shù)(取整循環(huán)變量的初值和終值決定了循環(huán)次數(shù)(取整數(shù))。數(shù))。 循環(huán)次數(shù):循環(huán)次數(shù): 循環(huán)次數(shù)循環(huán)次數(shù) = | |終值終值- -初值初值|+1|+1 23 【例例4.6.44.6.4】用用FOR_LOOPFOR_LOOP語(yǔ)句描述八位奇偶校驗(yàn)器。語(yǔ)句描述八位奇偶校驗(yàn)器。 輸入信號(hào)輸入信號(hào)X X是一個(gè)長(zhǎng)度為是一個(gè)長(zhǎng)度為8 8位的標(biāo)準(zhǔn)邏輯矢量。位的標(biāo)準(zhǔn)邏輯矢量。當(dāng)當(dāng)X X中中1 1的個(gè)數(shù)為奇數(shù)時(shí),輸出的個(gè)數(shù)為奇數(shù)時(shí),輸出Y=1Y=1,否則,否則,Y=0Y=0。 算法:用算法:用FOR_LOOPFOR_LOOP語(yǔ)句對(duì)語(yǔ)句對(duì)X X的值逐位進(jìn)行異

22、或的值逐位進(jìn)行異或運(yùn)算。運(yùn)算。 循環(huán)次數(shù):由循環(huán)變量循環(huán)次數(shù):由循環(huán)變量n n控制,記錄異或運(yùn)算控制,記錄異或運(yùn)算的次數(shù)。的次數(shù)。 循環(huán)變量的初值為循環(huán)變量的初值為0 0,終值為,終值為7 7。 24 LIBRARYLIBRARY IEEE IEEE; USEUSE IEEE.STD_LOGIC_1164. IEEE.STD_LOGIC_1164.ALLALL; ENTITYENTITY loop1 loop1 ISIS PORTPORT(X: X: ININ STD_LOGIC_VECTOR STD_LOGIC_VECTOR(7 7 DOWNTODOWNTO 0 0);); Y: Y: OU

23、TOUT STD_LOGIC STD_LOGIC);); ENDEND loop1 loop1; ARCHITECTUREARCHITECTURE example4 example4 OFOF loop1 loop1 ISIS BEGINBEGIN PROCESSPROCESS ( ( X X ) ) VARIABLEVARIABLE temp: STD_LOGIC temp: STD_LOGIC; BEGINBEGIN temp temp :=00; FORFOR n n ININ 7 7 DOWNTODOWNTO 0 0 LOOPLOOP temp temp := temp temp XO

24、RXOR X( X( n n ) ); END LOOPEND LOOP; Y Y = temptemp; END PROCESSEND PROCESS; ENDEND example4 example4;25 WHILE_LOOP WHILE_LOOP語(yǔ)句是一種條件循環(huán)語(yǔ)句,用于循語(yǔ)句是一種條件循環(huán)語(yǔ)句,用于循環(huán)次數(shù)未知的循環(huán)程序設(shè)計(jì)。環(huán)次數(shù)未知的循環(huán)程序設(shè)計(jì)。 WHILE_LOOPWHILE_LOOP語(yǔ)句語(yǔ)句 循環(huán)標(biāo)號(hào)循環(huán)標(biāo)號(hào): : WHILE 循環(huán)控制條件循環(huán)控制條件 LOOP 順序語(yǔ)句;順序語(yǔ)句; END LOOP 循環(huán)標(biāo)號(hào)循環(huán)標(biāo)號(hào) ; 格式:格式:說(shuō)明:說(shuō)明:若循環(huán)控制條件為若循環(huán)控

25、制條件為“真真”, ,則進(jìn)行循環(huán)執(zhí)行則進(jìn)行循環(huán)執(zhí)行順序語(yǔ)句;順序語(yǔ)句; 若循環(huán)控制條件為若循環(huán)控制條件為“假假”,則結(jié)束循環(huán)。,則結(jié)束循環(huán)。26 【例例4.6.54.6.5】用用WHILE_LOOPWHILE_LOOP語(yǔ)句描述八位奇偶校驗(yàn)器。語(yǔ)句描述八位奇偶校驗(yàn)器。 ARCHITECTUREARCHITECTURE example5 example5 OFOF loop2 loop2 ISIS BEGINBEGIN PROCESS PROCESS ( ( X X ) ) VARIABLEVARIABLE temp: STD_LOGIC temp: STD_LOGIC; VARIABLEVARI

26、ABLE n: INTEGER n: INTEGER; BEGINBEGIN temp temp :=00; n n := 0 0; WHILEWHILE n n 8 8 LOOPLOOP temp temp := temp temp XORXOR X( X( n n ) ); n n := n+1n+1; END LOOPEND LOOP; Y Y1010; END LOOPEND LOOP L2 L2;- 控制語(yǔ)句,當(dāng)控制語(yǔ)句,當(dāng)A A大大 于于1010時(shí),跳出循環(huán)時(shí),跳出循環(huán) 28 NEXT NEXT語(yǔ)句是一種循環(huán)控制語(yǔ)句,通常嵌套在語(yǔ)句是一種循環(huán)控制語(yǔ)句,通常嵌套在LOOPLOOP語(yǔ)句

27、中使用,用于進(jìn)行有條件或無(wú)條件的控制語(yǔ)句中使用,用于進(jìn)行有條件或無(wú)條件的控制執(zhí)行程序的轉(zhuǎn)向。執(zhí)行程序的轉(zhuǎn)向。 (4 4)NEXTNEXT語(yǔ)句語(yǔ)句 NEXT 循環(huán)標(biāo)號(hào)循環(huán)標(biāo)號(hào) WHEN 條件表達(dá)式條件表達(dá)式 ; 格式:格式:29 根據(jù)可選項(xiàng),根據(jù)可選項(xiàng),NEXTNEXT語(yǔ)句有三種格式:語(yǔ)句有三種格式: (4 4)NEXTNEXT語(yǔ)句語(yǔ)句 格式格式1 1: NEXT 功能:功能:無(wú)條件結(jié)束本次循環(huán),無(wú)條件結(jié)束本次循環(huán),跳回到循環(huán)體的開(kāi)始位置,跳回到循環(huán)體的開(kāi)始位置,執(zhí)行下一次循環(huán)。執(zhí)行下一次循環(huán)。 格式格式2 2: NEXT 循環(huán)標(biāo)號(hào)循環(huán)標(biāo)號(hào) 功能:功能:無(wú)條件結(jié)束本次循環(huán),無(wú)條件結(jié)束本次循環(huán),從

28、循環(huán)標(biāo)號(hào)規(guī)定的位置,從循環(huán)標(biāo)號(hào)規(guī)定的位置,執(zhí)行下一次循環(huán)。執(zhí)行下一次循環(huán)。 格式格式3 3: NEXT WHEN 條件表達(dá)式條件表達(dá)式 功能:功能:有條件結(jié)束本次循環(huán),有條件結(jié)束本次循環(huán),當(dāng)條件表達(dá)式滿足時(shí),結(jié)當(dāng)條件表達(dá)式滿足時(shí),結(jié)束本次循環(huán),否則繼續(xù)循環(huán)。束本次循環(huán),否則繼續(xù)循環(huán)。30 【例例4.6.64.6.6】用用NEXT_WHENNEXT_WHEN語(yǔ)句實(shí)現(xiàn)單循環(huán)。語(yǔ)句實(shí)現(xiàn)單循環(huán)。 ARCHITECTUREARCHITECTURE example6 example6 OFOF NEXT_WHEN1 NEXT_WHEN1 ISIS BEGINBEGIN PROCESS PROCESS (

29、( s s ) ) VARIABLE VARIABLE i: INTEGER i: INTEGER; BEGINBEGIN L1: L1: FORFOR i i ININ 7 7 DOWNTODOWNTO 0 0 LOOPLOOP y( y( i i ) ) =00; NEXTNEXT WHENWHEN s( s( i i ) ) =11; y(y( i i ) ) =11; END LOOPEND LOOP L1 L1; END PROCESSEND PROCESS; ENDEND example6 example6;- - 若若s(s( i i )=1)=1成立,成立, 終止本次循環(huán)終止本

30、次循環(huán), ,返回到返回到L1L1 否則否則, ,繼續(xù)本次循環(huán)。繼續(xù)本次循環(huán)。 - - 返回到返回到L1L1 31【例例4.6.74.6.7】試用多重循環(huán)實(shí)現(xiàn)四組八位數(shù)據(jù)的奇校驗(yàn)。試用多重循環(huán)實(shí)現(xiàn)四組八位數(shù)據(jù)的奇校驗(yàn)。 LIBRARYLIBRARY IEEE IEEE; USE USE IEEE.STD_LOGIC_1164. IEEE.STD_LOGIC_1164.ALLALL; ENTITYENTITY NEXT_WHEN2 NEXT_WHEN2 ISIS PORTPORT ( ( d: d: ININ STD_LOGIC_VECTOR ( STD_LOGIC_VECTOR ( 0 0 TO

31、TO 31) 31); y: y: OUTOUT STD_LOGIC_VECTOR ( STD_LOGIC_VECTOR ( 0 0 TOTO 3 3 ) ) ) ); ENDEND NEXT_WHEN2 NEXT_WHEN2; ARCHITECTUREARCHITECTURE example7 example7 OFOF NEXT_WHEN2 NEXT_WHEN2 ISIS BEGINBEGIN PROCESS PROCESS ( ( d d ) ) VARIABLE VARIABLE i,k,j: INTEGER i,k,j: INTEGER; VARIABLE VARIABLE tmp:

32、 STD_LOGIC tmp: STD_LOGIC; 四組八位數(shù)據(jù)由四組八位數(shù)據(jù)由d0.31d0.31輸入,內(nèi)循環(huán)完成各組數(shù)據(jù)輸入,內(nèi)循環(huán)完成各組數(shù)據(jù)的奇校驗(yàn),外循環(huán)確定校驗(yàn)的組數(shù),校驗(yàn)結(jié)果存放在輸出的奇校驗(yàn),外循環(huán)確定校驗(yàn)的組數(shù),校驗(yàn)結(jié)果存放在輸出y0.3y0.3中。當(dāng)某八位數(shù)據(jù)中中。當(dāng)某八位數(shù)據(jù)中1 1的個(gè)數(shù)為奇數(shù)時(shí),所對(duì)應(yīng)的的個(gè)數(shù)為奇數(shù)時(shí),所對(duì)應(yīng)的輸出位輸出位yiyi=1 1,否則,否則,yiyi=0 0。 32 BEGIN BEGIN k k: = 0 0;L1: L1: FORFOR i i ININ 0 0 TOTO 3 3 LOOPLOOP y( y( i i ) ) =00;

33、tmptmp :=00; j j := 0 0; k k := i i * * 8 8;L2: L2: LOOPLOOP tmp tmp := tmp tmp XORXOR d( d( k k ) ); y(y( i i ) ) = tmptmp; NEXTNEXT L1 L1 WHENWHEN j j = 7 7; j j := j j + + 1 1; k k := k k + + 1 1; NEXTNEXT L2 L2; END LOOPEND LOOP L2 L2; NEXTNEXT L1 L1; END LOOP END LOOP L1 L1; END PROCESSEND PROC

34、ESS; ENDEND example7 example7;內(nèi)循環(huán)內(nèi)循環(huán) 外循環(huán)外循環(huán) 在內(nèi)循環(huán)中,當(dāng)在內(nèi)循環(huán)中,當(dāng)j j 7 7時(shí),繼續(xù)執(zhí)行內(nèi)循環(huán);時(shí),繼續(xù)執(zhí)行內(nèi)循環(huán); 當(dāng)當(dāng)j j = 7 7時(shí),終止內(nèi)循環(huán),跳轉(zhuǎn)到時(shí),終止內(nèi)循環(huán),跳轉(zhuǎn)到L1L1處,執(zhí)處,執(zhí)行一次外循環(huán)。行一次外循環(huán)。33 EXIT EXIT語(yǔ)句和語(yǔ)句和NEXTNEXT語(yǔ)句一樣,都是循環(huán)控制語(yǔ)句,語(yǔ)句一樣,都是循環(huán)控制語(yǔ)句,主要在主要在LOOPLOOP語(yǔ)句中使用,用于進(jìn)行有條件或無(wú)條件語(yǔ)句中使用,用于進(jìn)行有條件或無(wú)條件的跳轉(zhuǎn)控制。的跳轉(zhuǎn)控制。 (5 5)EXITEXIT語(yǔ)句語(yǔ)句 EXIT 循環(huán)標(biāo)號(hào)循環(huán)標(biāo)號(hào) WHEN 條件表達(dá)式

35、條件表達(dá)式 ; 格式:格式:34 根據(jù)可選項(xiàng),根據(jù)可選項(xiàng),EXITEXIT語(yǔ)句有三種格式:語(yǔ)句有三種格式: (5 5)EXITEXIT語(yǔ)句語(yǔ)句 格式格式1 1: EXIT 功能:功能:無(wú)條件跳出循環(huán)無(wú)條件跳出循環(huán), ,從從END LOOPEND LOOP下面的語(yǔ)句開(kāi)始執(zhí)行。下面的語(yǔ)句開(kāi)始執(zhí)行。 格式格式2 2: EXIT 循環(huán)標(biāo)號(hào)循環(huán)標(biāo)號(hào) 功能:功能:無(wú)條件跳出循環(huán),從循環(huán)標(biāo)號(hào)規(guī)定的位置開(kāi)始執(zhí)行無(wú)條件跳出循環(huán),從循環(huán)標(biāo)號(hào)規(guī)定的位置開(kāi)始執(zhí)行循環(huán)體外的語(yǔ)句。循環(huán)體外的語(yǔ)句。 格式格式3 3: EXIT WHEN 條件表達(dá)式條件表達(dá)式 功能:功能:有條件跳出循環(huán),有條件跳出循環(huán),當(dāng)條件表達(dá)式不成立時(shí)

36、,繼續(xù)執(zhí)當(dāng)條件表達(dá)式不成立時(shí),繼續(xù)執(zhí)行循環(huán),否則跳出循環(huán)。行循環(huán),否則跳出循環(huán)。35 【例例4.6.84.6.8】用用EXITEXIT語(yǔ)句實(shí)現(xiàn)兩個(gè)數(shù)組的比較。語(yǔ)句實(shí)現(xiàn)兩個(gè)數(shù)組的比較。 PROCESSPROCESS ( ( X, YX, Y ) ) BEGINBEGIN Z Z =“00”“00”; FORFOR n n ININ 7 7 DOWNTODOWNTO 0 0 LOOPLOOP IFIF ( ( X(X( n n ) )= Y(Y( n n ) ) THENTHEN NEXTNEXT; ELSIFELSIF ( ( X(X( n n ) ) Y(Y( n n ) ) ) ) THEN

37、THEN Z Z =“01”“01”; EXITEXIT; ELSEELSE Z Z Y Y時(shí),時(shí),Z=10Z=10;當(dāng);當(dāng)X XY Y時(shí),時(shí),Z=01Z=01。 36 【例例4.6.94.6.9】用用EXIT_WHENEXIT_WHEN語(yǔ)句實(shí)現(xiàn)兩個(gè)數(shù)組的比較。語(yǔ)句實(shí)現(xiàn)兩個(gè)數(shù)組的比較。 PROCESSPROCESS ( ( X, YX, Y ) ) BEGINBEGIN Z Z =“00”“00”; FORFOR n n ININ 7 7 DOWNTODOWNTO 0 0 LOOPLOOP NEXT WHENNEXT WHEN ( ( X(X( n n ) ) = Y(Y( n n ); Z

38、Z =“01”“01”; EXIT WHENEXIT WHEN ( ( X(X( n n ) ) Y(Y( n n ); Z Z =“10”“10”; EXITEXIT; END LOOPEND LOOP; END PROCESSEND PROCESS;37 等待(等待(WAITWAIT)語(yǔ)句在進(jìn)程或過(guò)程中使用,用于)語(yǔ)句在進(jìn)程或過(guò)程中使用,用于程序的暫停和等待。程序的暫停和等待。 5.3 5.3 等待語(yǔ)句等待語(yǔ)句 格式:格式:WAITWAIT ONON 敏感信號(hào)表敏感信號(hào)表 UNTILUNTIL 條件表達(dá)式條件表達(dá)式 FORFOR 時(shí)間表達(dá)式時(shí)間表達(dá)式; 當(dāng)執(zhí)行到當(dāng)執(zhí)行到WAITWAIT語(yǔ)句

39、時(shí),程序執(zhí)行被暫停,直到語(yǔ)句時(shí),程序執(zhí)行被暫停,直到滿足此語(yǔ)句設(shè)置的等待結(jié)束條件后,重新執(zhí)行程序。滿足此語(yǔ)句設(shè)置的等待結(jié)束條件后,重新執(zhí)行程序。 38 根據(jù)可選項(xiàng),根據(jù)可選項(xiàng),WAITWAIT語(yǔ)句有四種格式:語(yǔ)句有四種格式: 格式格式1 1: WAIT 功能:功能:永遠(yuǎn)處于等待狀態(tài)永遠(yuǎn)處于等待狀態(tài) 格式格式2 2: WAIT ON 敏感信號(hào)表;敏感信號(hào)表; 功能:功能:程序進(jìn)入等待狀態(tài),直至敏感信號(hào)表中的任一信程序進(jìn)入等待狀態(tài),直至敏感信號(hào)表中的任一信號(hào)發(fā)生變化時(shí),結(jié)束等待重新執(zhí)行程序。號(hào)發(fā)生變化時(shí),結(jié)束等待重新執(zhí)行程序。 例如:例如: SIGNALSIGNAL a a,b b: STDSTD

40、 LOGICLOGIC; PROCESSPROCESS WAIT ONWAIT ON a a,b b; END PROCESSEND PROCESS;- 暫停程序的執(zhí)行,直到暫停程序的執(zhí)行,直到a a或或b b發(fā)生發(fā)生 變化才重新啟動(dòng)。變化才重新啟動(dòng)。 5.3 等待語(yǔ)句等待語(yǔ)句 39 格式格式3 3: WAIT UNTIL 條件表達(dá)式;條件表達(dá)式; 功能:功能:程序進(jìn)入等待狀態(tài),直至表達(dá)式中的敏感信號(hào)發(fā)程序進(jìn)入等待狀態(tài),直至表達(dá)式中的敏感信號(hào)發(fā)生變化,而且滿足表達(dá)式設(shè)置的條件時(shí),結(jié)束等生變化,而且滿足表達(dá)式設(shè)置的條件時(shí),結(jié)束等待重新執(zhí)行程序。待重新執(zhí)行程序。 例如:例如: WAIT UNTIL

41、WAIT UNTIL clk clk =11ANDAND clk clkEVENTEVENT; z z = x x OROR y y; 5.3 5.3 等待語(yǔ)句等待語(yǔ)句 執(zhí)行到執(zhí)行到WAITWAIT語(yǔ)句后,暫停程序的執(zhí)行,直到語(yǔ)句后,暫停程序的執(zhí)行,直到clkclk的上升的上升沿到來(lái)時(shí),才恢復(fù)程序的運(yùn)行,執(zhí)行其后的賦值語(yǔ)句。沿到來(lái)時(shí),才恢復(fù)程序的運(yùn)行,執(zhí)行其后的賦值語(yǔ)句。 40 格式格式4 4: WAIT FOR 時(shí)間表達(dá)式;時(shí)間表達(dá)式; 功能:功能:從執(zhí)行到當(dāng)前的從執(zhí)行到當(dāng)前的WAITWAIT語(yǔ)句開(kāi)始,在此時(shí)間段內(nèi),語(yǔ)句開(kāi)始,在此時(shí)間段內(nèi),程序處于等待狀態(tài),當(dāng)超過(guò)時(shí)間表達(dá)式給定的時(shí)程序處于等

42、待狀態(tài),當(dāng)超過(guò)時(shí)間表達(dá)式給定的時(shí)間后,程序自動(dòng)恢復(fù)執(zhí)行。間后,程序自動(dòng)恢復(fù)執(zhí)行。 例如:例如: WAIT FORWAIT FOR 25ns 25ns; z z = x x NANDNAND y y; 5.3 5.3 等待語(yǔ)句等待語(yǔ)句 執(zhí)行該語(yǔ)句后,暫停程序的執(zhí)行,直到時(shí)間(執(zhí)行該語(yǔ)句后,暫停程序的執(zhí)行,直到時(shí)間(25ns25ns)到)到才恢復(fù)程序的運(yùn)行,將才恢復(fù)程序的運(yùn)行,將x x NANDNAND y y賦值給賦值給z z。41 斷言(斷言(ASSERTASSERT)語(yǔ)句只能在)語(yǔ)句只能在VHDLVHDL仿真器中使用,用于仿仿真器中使用,用于仿真、調(diào)試程序時(shí)的人機(jī)對(duì)話。真、調(diào)試程序時(shí)的人機(jī)對(duì)

43、話。 斷言語(yǔ)句既可以作為順序語(yǔ)句,也可以作為并行語(yǔ)句。斷言語(yǔ)句既可以作為順序語(yǔ)句,也可以作為并行語(yǔ)句。它等價(jià)一個(gè)進(jìn)程語(yǔ)句,但不做任何操作,僅用于判斷某一條它等價(jià)一個(gè)進(jìn)程語(yǔ)句,但不做任何操作,僅用于判斷某一條件是否成立。件是否成立。 5.4 5.4 斷言語(yǔ)句斷言語(yǔ)句 格式:格式: ASSERT 條件表達(dá)式條件表達(dá)式 REPORT 字符串字符串 SEVERITY 錯(cuò)誤等級(jí)錯(cuò)誤等級(jí); 功能:功能:如果條件表達(dá)式的條件為如果條件表達(dá)式的條件為“真真”,則向下執(zhí)行另一,則向下執(zhí)行另一個(gè)語(yǔ)句,如果條件為個(gè)語(yǔ)句,如果條件為“假假”,則輸出,則輸出“字符串字符串”信息,信息,并指出并指出“錯(cuò)誤等級(jí)錯(cuò)誤等級(jí)”。

44、42 錯(cuò)誤等級(jí):錯(cuò)誤等級(jí):NOTENOTE(注意)、(注意)、WARNINGWARNING(警告)、(警告)、ERRORERROR(出錯(cuò))和(出錯(cuò))和FAILUREFAILURE(失?。?。(失?。?5.4 5.4 斷言語(yǔ)句斷言語(yǔ)句 例如,在例如,在RSRS觸發(fā)器的描述中,當(dāng)觸發(fā)器的描述中,當(dāng)R R和和S S均為均為1 1時(shí),時(shí),可用斷言語(yǔ)句發(fā)出錯(cuò)誤信息。可用斷言語(yǔ)句發(fā)出錯(cuò)誤信息。 ASSERT ASSERT (S S =1 1 ANDAND R R =11) REPORTREPORT “S “S =1and R1and R = 1”1” SEVERITY ERRORSEVERITY ERROR; 43 NOTE:可以用在仿真時(shí)傳遞信息。:可以用在仿真時(shí)傳遞信息。WARNING:用在非平常的情形,此時(shí)仿真過(guò)程仍:用在非平常的情形,此時(shí)仿真過(guò)程仍可繼續(xù),但結(jié)果可能是不可預(yù)知的??衫^續(xù),但結(jié)果可能是不可預(yù)知的。ERROR:用在仿真過(guò)程繼續(xù)執(zhí)行下去已經(jīng)不可能:用在仿真過(guò)程繼續(xù)執(zhí)行下去已經(jīng)不可能的情況。的情況。FAILURE:用在發(fā)生了致命錯(cuò)誤,仿真過(guò)程必須:

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論