EAD課程-第6章VHDL并行語句_第1頁
EAD課程-第6章VHDL并行語句_第2頁
EAD課程-第6章VHDL并行語句_第3頁
EAD課程-第6章VHDL并行語句_第4頁
EAD課程-第6章VHDL并行語句_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1VHDL語言的并行描述語句語言的并行描述語句 并行語句又稱并發(fā)語句,是最具有并行語句又稱并發(fā)語句,是最具有VHDLVHDL特色的特色的語句結(jié)構(gòu)。語句結(jié)構(gòu)。 并行語句具有多種語言格式,各并行語句在結(jié)并行語句具有多種語言格式,各并行語句在結(jié)構(gòu)體中的執(zhí)行是同步進(jìn)行的,或者說是并發(fā)運(yùn)行的,構(gòu)體中的執(zhí)行是同步進(jìn)行的,或者說是并發(fā)運(yùn)行的,其執(zhí)行方式與書寫的順序無關(guān)。其執(zhí)行方式與書寫的順序無關(guān)。 同一結(jié)構(gòu)中的各并行語句之間可以是相互獨(dú)立同一結(jié)構(gòu)中的各并行語句之間可以是相互獨(dú)立的、不相關(guān)的,也可以進(jìn)行信息傳遞。的、不相關(guān)的,也可以進(jìn)行信息傳遞。 在并行語句內(nèi)部可以嵌套其他語句,嵌套的語在并行語句內(nèi)部可以嵌套

2、其他語句,嵌套的語句可以并行執(zhí)行,也可以順序執(zhí)行。句可以并行執(zhí)行,也可以順序執(zhí)行。2VHDL語言的并行描述語句語言的并行描述語句 在在VHDLVHDL語言中,并行語句主要有六種:語言中,并行語句主要有六種: 進(jìn)程語句進(jìn)程語句 塊語句塊語句 并行信號(hào)賦值語句并行信號(hào)賦值語句 子程序和并行過程調(diào)用語句子程序和并行過程調(diào)用語句 元件例化語句元件例化語句 生成語句生成語句3 進(jìn)程(進(jìn)程(PROCESSPROCESS)語句是在結(jié)構(gòu)體中用來描述)語句是在結(jié)構(gòu)體中用來描述特定電路功能的程序模塊,它提供了一種用順序語特定電路功能的程序模塊,它提供了一種用順序語句描述電路邏輯功能的方法。句描述電路邏輯功能的方法

3、。 一個(gè)結(jié)構(gòu)體中可以有多個(gè)并行運(yùn)行的進(jìn)程結(jié)構(gòu),一個(gè)結(jié)構(gòu)體中可以有多個(gè)并行運(yùn)行的進(jìn)程結(jié)構(gòu),而每個(gè)進(jìn)程結(jié)構(gòu)的內(nèi)部由一組順序語句組成。而每個(gè)進(jìn)程結(jié)構(gòu)的內(nèi)部由一組順序語句組成。 進(jìn)程語句結(jié)構(gòu)具有并行執(zhí)行和順序處理的雙重進(jìn)程語句結(jié)構(gòu)具有并行執(zhí)行和順序處理的雙重特性。特性。 4 (1 1)進(jìn)程語句的結(jié)構(gòu))進(jìn)程語句的結(jié)構(gòu) 進(jìn)程標(biāo)號(hào)進(jìn)程標(biāo)號(hào): PROCESS (敏感信號(hào)參數(shù)表敏感信號(hào)參數(shù)表) IS進(jìn)程說明部分進(jìn)程說明部分 BEGIN順序描述語句順序描述語句 END PROCESS 進(jìn)程標(biāo)號(hào)進(jìn)程標(biāo)號(hào); 格式:格式: 當(dāng)敏感信號(hào)表中的某個(gè)信號(hào)發(fā)生變化時(shí),立即當(dāng)敏感信號(hào)表中的某個(gè)信號(hào)發(fā)生變化時(shí),立即啟動(dòng)進(jìn)程語句,將

4、進(jìn)程中的順序語句按順序循環(huán)執(zhí)啟動(dòng)進(jìn)程語句,將進(jìn)程中的順序語句按順序循環(huán)執(zhí)行,直到敏感信號(hào)穩(wěn)定不變?yōu)橹埂P?,直到敏感信?hào)穩(wěn)定不變?yōu)橹埂?5 (2 2)進(jìn)程語句的組成)進(jìn)程語句的組成 進(jìn)程說明部分進(jìn)程說明部分 進(jìn)程語句的結(jié)構(gòu)由三部分組成,即進(jìn)程說明部進(jìn)程語句的結(jié)構(gòu)由三部分組成,即進(jìn)程說明部分、順序描述語句部分和敏感信號(hào)參數(shù)表。分、順序描述語句部分和敏感信號(hào)參數(shù)表。 用于定義該進(jìn)程所需要的局部數(shù)據(jù)環(huán)境。如:用于定義該進(jìn)程所需要的局部數(shù)據(jù)環(huán)境。如:數(shù)據(jù)類型、常數(shù)、屬性、子程序等。數(shù)據(jù)類型、常數(shù)、屬性、子程序等。 注意:注意:不能在進(jìn)程內(nèi)部定義信號(hào)和共享變量,不能在進(jìn)程內(nèi)部定義信號(hào)和共享變量,信號(hào)只能在

5、結(jié)構(gòu)體說明中定義。信號(hào)只能在結(jié)構(gòu)體說明中定義。 6 (2 2)進(jìn)程語句的組成)進(jìn)程語句的組成 順序描述語句部分順序描述語句部分 是一段順序執(zhí)行語句,用于描述該進(jìn)程的行為。是一段順序執(zhí)行語句,用于描述該進(jìn)程的行為。 信號(hào)賦值語句:信號(hào)賦值語句:在進(jìn)程中將計(jì)算或處理的結(jié)果賦在進(jìn)程中將計(jì)算或處理的結(jié)果賦值給信號(hào)。值給信號(hào)。 變量賦值語句:變量賦值語句:在進(jìn)程中以變量的形式存儲(chǔ)計(jì)算在進(jìn)程中以變量的形式存儲(chǔ)計(jì)算的中間值。的中間值。 子程序調(diào)用語句:子程序調(diào)用語句:對(duì)已定義的過程和函數(shù)進(jìn)行調(diào)對(duì)已定義的過程和函數(shù)進(jìn)行調(diào)用,并參與計(jì)算。用,并參與計(jì)算。7 (2 2)進(jìn)程語句的組成)進(jìn)程語句的組成 順序描述語句

6、部分順序描述語句部分 進(jìn)程啟動(dòng)語句:進(jìn)程啟動(dòng)語句:當(dāng)當(dāng)PROCESSPROCESS語句未列出任何敏感語句未列出任何敏感信號(hào)時(shí),進(jìn)程的啟動(dòng)可通過信號(hào)時(shí),進(jìn)程的啟動(dòng)可通過WAITWAIT語句來實(shí)現(xiàn)。語句來實(shí)現(xiàn)。 順序描述語句:順序描述語句:包括包括IFIF語句、語句、CASECASE語句、語句、LOOPLOOP語語句和句和NULLNULL語句。語句。 進(jìn)程跳出語句:進(jìn)程跳出語句:包括包括NEXTNEXT語句和語句和EXITEXIT語句。語句。 敏感信號(hào)參數(shù)表敏感信號(hào)參數(shù)表 用于啟動(dòng)本進(jìn)程可讀入的信號(hào)名。用于啟動(dòng)本進(jìn)程可讀入的信號(hào)名。8 【例例1 1】用進(jìn)程語句描述異步清零計(jì)數(shù)器。用進(jìn)程語句描述異步

7、清零計(jì)數(shù)器。 異步清零方式與時(shí)鐘信號(hào)異步清零方式與時(shí)鐘信號(hào)clkclk無關(guān),當(dāng)清零端無關(guān),當(dāng)清零端clr=0clr=0時(shí),時(shí),計(jì)數(shù)狀態(tài)計(jì)數(shù)狀態(tài)Q=0Q=0;當(dāng);當(dāng)clr=1clr=1時(shí),計(jì)數(shù)器為計(jì)數(shù)狀態(tài)。時(shí),計(jì)數(shù)器為計(jì)數(shù)狀態(tài)。 PROCESSPROCESS ( ( clk, clrclk, clr ) ) BEGINBEGIN IFIF clr clr =0 0 THENTHEN Q Q= X“00”X“00”; ELSIF ELSIF ( ( clkclk =11ANDAND clkclkEVENTEVENT ) ) THENTHEN Q Q = Q Q + + 1 1; END IFEND

8、 IF; END PROCESSEND PROCESS;9 【例例1 1】用進(jìn)程語句描述異步清零計(jì)數(shù)器。用進(jìn)程語句描述異步清零計(jì)數(shù)器。 若計(jì)數(shù)器采用同步清零,則敏感表中可無若計(jì)數(shù)器采用同步清零,則敏感表中可無clrclr信號(hào),此信號(hào),此時(shí)進(jìn)程如下:時(shí)進(jìn)程如下: PROCESSPROCESS ( ( clk)clk) BEGINBEGIN IFIF ( ( clkclk =11ANDAND clkclkEVENTEVENT ) ) THENTHEN IF IF clrclr =0 0 THENTHEN Q Q= X“00”X“00”; ELSE ELSE Q Q = Q Q + + 1 1; E

9、ND IFEND IF; END IF END IF; END PROCESSEND PROCESS;10 塊(塊(BLOCKBLOCK)語句可以將一些實(shí)現(xiàn)某一特定功)語句可以將一些實(shí)現(xiàn)某一特定功能的并行語句組合在一起,其主要目的是利用多個(gè)能的并行語句組合在一起,其主要目的是利用多個(gè)塊語句結(jié)構(gòu)將一個(gè)復(fù)雜的結(jié)構(gòu)體劃分成幾個(gè)不同功塊語句結(jié)構(gòu)將一個(gè)復(fù)雜的結(jié)構(gòu)體劃分成幾個(gè)不同功能的模塊,使復(fù)雜的結(jié)構(gòu)體結(jié)構(gòu)分明、功能明確,能的模塊,使復(fù)雜的結(jié)構(gòu)體結(jié)構(gòu)分明、功能明確,使程序的編排更加清晰、更有層次,改善并行語句使程序的編排更加清晰、更有層次,改善并行語句的結(jié)構(gòu)和可讀性,便于程序的編寫、調(diào)試和查錯(cuò)。的結(jié)構(gòu)和

10、可讀性,便于程序的編寫、調(diào)試和查錯(cuò)。 11 (1 1)塊語句的格式塊語句的格式 塊語句是將結(jié)構(gòu)體中并行語句進(jìn)行組合的一種方法。塊語句是將結(jié)構(gòu)體中并行語句進(jìn)行組合的一種方法。 塊標(biāo)號(hào):塊標(biāo)號(hào): BLOCK 說明語句說明語句 BEGIN 并行語句并行語句 END BLOCK 塊標(biāo)號(hào);塊標(biāo)號(hào); 格式:格式: 說明語句:說明語句:主要包括接口說明和類屬說明等,用來定義塊主要包括接口說明和類屬說明等,用來定義塊內(nèi)局部信號(hào)、數(shù)據(jù)類型、元件和子程序。內(nèi)局部信號(hào)、數(shù)據(jù)類型、元件和子程序。 并行語句:并行語句:可以使用所有的并行語句。可以使用所有的并行語句。 12 (2 2)塊語句的應(yīng)用塊語句的應(yīng)用 利用塊語句

11、可以將結(jié)構(gòu)體中的并行語句劃分成利用塊語句可以將結(jié)構(gòu)體中的并行語句劃分成多個(gè)并行方式的子塊,每一個(gè)子塊都是一個(gè)獨(dú)立的多個(gè)并行方式的子塊,每一個(gè)子塊都是一個(gè)獨(dú)立的設(shè)計(jì)實(shí)體,具有自己的類屬參數(shù)和界面端口,以及設(shè)計(jì)實(shí)體,具有自己的類屬參數(shù)和界面端口,以及與外部環(huán)境的銜接描述。與外部環(huán)境的銜接描述。 塊語句還可以實(shí)現(xiàn)嵌套,內(nèi)層的塊語句可以使塊語句還可以實(shí)現(xiàn)嵌套,內(nèi)層的塊語句可以使用外層塊語句所定義的信號(hào),但外層塊語句不能使用外層塊語句所定義的信號(hào),但外層塊語句不能使用內(nèi)層塊語句定義的信號(hào)。用內(nèi)層塊語句定義的信號(hào)。 13 運(yùn)算電路的輸入為運(yùn)算電路的輸入為A A和和B B,輸出為,輸出為SUMSUM(八位和

12、)、(八位和)、SUBSUB(八位差),以及進(jìn)位(八位差),以及進(jìn)位COCO和借位和借位BOBO。 【例例2 2】試用塊語句設(shè)計(jì)一個(gè)運(yùn)算電路,包括一個(gè)八位加法試用塊語句設(shè)計(jì)一個(gè)運(yùn)算電路,包括一個(gè)八位加法器和一個(gè)八位減法器。器和一個(gè)八位減法器。 LIBRARYLIBRARY IEEE IEEE; USEUSE IEEE.STD IEEE.STD LOGICLOGIC 1164.1164.ALLALL; USEUSE IEEE.STD_LOGIC_UNSIGNED. IEEE.STD_LOGIC_UNSIGNED.ALLALL; ENTITY ENTITY add_sub add_sub ISIS

13、 PORTPORT(A,B: A,B: ININ STD STD LOGIC_VECTORLOGIC_VECTOR(7 7 DOWNTODOWNTO 0 0);); SUM, SUB:SUM, SUB: OUTOUT STD STD LOGIC_VECTORLOGIC_VECTOR(7 7 DOWNTODOWNTO 0 0);); CO, BO: CO, BO: OUTOUT STD STD LOGICLOGIC);); ENDEND add_sub add_sub;14 【例例2 2】試用塊語句設(shè)計(jì)一個(gè)運(yùn)算電路,包括一個(gè)八位加法試用塊語句設(shè)計(jì)一個(gè)運(yùn)算電路,包括一個(gè)八位加法器和一個(gè)八位減法器。

14、器和一個(gè)八位減法器。 ARCHITECTUREARCHITECTURE example12 example12 OFOF add_sub add_sub IS IS SIGNALSIGNAL AA,BB,SM,SB: STD_LOGIC_VECTOR(8 AA,BB,SM,SB: STD_LOGIC_VECTOR(8 DOWNTODOWNTO 0) 0); BEGINBEGIN AA AA = 0&A&A; BB BB = 0&B&B; WITHWITH s s SELECTSELECT ADDER: ADDER: BLOCKBLOCK BEGINBEGIN S

15、M SM = AAAA + + BBBB; SUM SUM = SM(SM( 7 7 DOWNTODOWNTO 0 0 ) ); CO CO = SM(SM( 8 8 ) ); END BLOCKEND BLOCK ADDER ADDER; - ADDER - ADDER塊行為描述語句塊行為描述語句 - - 運(yùn)算結(jié)果送入運(yùn)算結(jié)果送入SUMSUM - - 進(jìn)位送入進(jìn)位送入COCO15 【例例2 2】試用塊語句設(shè)計(jì)一個(gè)運(yùn)算電路,包括一個(gè)八位加法試用塊語句設(shè)計(jì)一個(gè)運(yùn)算電路,包括一個(gè)八位加法器和一個(gè)八位減法器。器和一個(gè)八位減法器。 SUBTRACTER SUBTRACTER: BLOCKBLOCK B

16、EGINBEGIN SB SB = AAAA - - BBBB; SUB SUB = SB(SB( 7 7 DOWNTODOWNTO 0 0 ) ); BO BO = SB(SB( 8 8 ) ); END BLOCKEND BLOCK SUBTRACTER SUBTRACTER; END END example12 example12; - SUBTRACTER - SUBTRACTER塊行為描述語句塊行為描述語句 - - 運(yùn)算結(jié)果送入運(yùn)算結(jié)果送入SUBSUB - - 借位送入借位送入BOBO16 并行信號(hào)賦值語句是將一個(gè)數(shù)據(jù)或一個(gè)表達(dá)式的運(yùn)算結(jié)果并行信號(hào)賦值語句是將一個(gè)數(shù)據(jù)或一個(gè)表達(dá)式的運(yùn)

17、算結(jié)果送給一個(gè)數(shù)據(jù)對(duì)象送給一個(gè)數(shù)據(jù)對(duì)象, ,其賦值目標(biāo)必須是信號(hào)而不能是變量。其賦值目標(biāo)必須是信號(hào)而不能是變量。 信號(hào)賦值語句可以位于進(jìn)程語句中,也可以在進(jìn)程語句之信號(hào)賦值語句可以位于進(jìn)程語句中,也可以在進(jìn)程語句之外。若出現(xiàn)在進(jìn)程語句結(jié)構(gòu)內(nèi),則屬于順序語句,否則為并外。若出現(xiàn)在進(jìn)程語句結(jié)構(gòu)內(nèi),則屬于順序語句,否則為并行信號(hào)賦值語句。行信號(hào)賦值語句。 并行信號(hào)賦值語句有三種形式:并行信號(hào)賦值語句有三種形式: 簡單信號(hào)賦值語句簡單信號(hào)賦值語句 條件信號(hào)賦值語句條件信號(hào)賦值語句 選擇信號(hào)賦值語句選擇信號(hào)賦值語句 17 (1 1)簡單信號(hào)賦值語句簡單信號(hào)賦值語句 是是VHDLVHDL并行語句結(jié)構(gòu)中最基

18、本的單元。并行語句結(jié)構(gòu)中最基本的單元。 格式:格式: 賦值目標(biāo)賦值目標(biāo)=表達(dá)式;表達(dá)式; 規(guī)則:規(guī)則: 賦值目標(biāo)必須是信號(hào);賦值目標(biāo)必須是信號(hào); 賦值目標(biāo)的數(shù)據(jù)類型必須與表達(dá)式數(shù)據(jù)賦值目標(biāo)的數(shù)據(jù)類型必須與表達(dá)式數(shù)據(jù)類型一致。類型一致。 例如:例如: OUT_1OUT_1 = B B ANDAND C C; 18 (2 2)條件信號(hào)賦值語句條件信號(hào)賦值語句 該語句與該語句與IFIF語句相類似,根據(jù)不同的賦值條件,語句相類似,根據(jù)不同的賦值條件,選擇表達(dá)式中的值賦給賦值目標(biāo)。選擇表達(dá)式中的值賦給賦值目標(biāo)。 賦值目標(biāo)賦值目標(biāo) = 表達(dá)式表達(dá)式1 WHEN 賦值條件賦值條件1 ELSE 表達(dá)式表達(dá)式2

19、 WHEN 賦值條件賦值條件2 ELSE 表達(dá)式表達(dá)式n; 格式:格式: 在執(zhí)行該語句時(shí),結(jié)構(gòu)體按賦值條件的書寫順在執(zhí)行該語句時(shí),結(jié)構(gòu)體按賦值條件的書寫順序逐條測定,一旦發(fā)現(xiàn)滿足賦值條件,立即將表達(dá)序逐條測定,一旦發(fā)現(xiàn)滿足賦值條件,立即將表達(dá)式的值賦給賦值目標(biāo)。式的值賦給賦值目標(biāo)。19 【例例3 3】用條件賦值語句實(shí)現(xiàn)四選一數(shù)據(jù)選擇器。用條件賦值語句實(shí)現(xiàn)四選一數(shù)據(jù)選擇器。 ARCHITECTUREARCHITECTURE example5 example5 OFOF mux41 mux41 IS IS SIGNALSIGNAL s: STD_LOGIC_VECTOR( s: STD_LOGIC

20、_VECTOR( 1 1 DOWNTODOWNTO 0 0 ) ); BEGINBEGIN s s = s1&s0s1&s0; y y= d0 d0 WHENWHEN s s =“00” “00” ELSEELSE d1 d1 WHENWHEN s s =“01” “01” ELSEELSE d2 d2 WHENWHEN s s =“10” “10” ELSEELSE d3 d3; ENDEND example5 example5; - - 當(dāng)當(dāng)s s = 0000時(shí),時(shí),y y = d0d0 - - 當(dāng)當(dāng)s s = 0101時(shí),時(shí),y y = d1d1 - - 當(dāng)當(dāng)s s =

21、 1010時(shí),時(shí),y y = d2d2 - - 當(dāng)當(dāng)s s取其他值時(shí),取其他值時(shí),y y = d3d320 (3 3)選擇信號(hào)賦值語句選擇信號(hào)賦值語句 與與CASECASE語句相類似,以選擇表達(dá)式的不同取值為選擇條語句相類似,以選擇表達(dá)式的不同取值為選擇條件,將多個(gè)表達(dá)式的值賦給賦值目標(biāo)。件,將多個(gè)表達(dá)式的值賦給賦值目標(biāo)。 WITH 選擇表達(dá)式選擇表達(dá)式 SELECT 賦值目標(biāo)賦值目標(biāo) = 表達(dá)式表達(dá)式1 1 WHEN 選擇值選擇值1, 1, 表達(dá)式表達(dá)式2 2 WHEN 選擇值選擇值2, 2, 表達(dá)式表達(dá)式n n WHEN 選擇值選擇值n n; 格式:格式: 該語句對(duì)子句中的該語句對(duì)子句中的

22、“選擇值選擇值”進(jìn)行選擇,當(dāng)子句中進(jìn)行選擇,當(dāng)子句中“選擇值選擇值”與與“選擇表達(dá)式選擇表達(dá)式”的值相同時(shí),則將子句中的的值相同時(shí),則將子句中的“表達(dá)式表達(dá)式”的值賦給賦值目標(biāo)。的值賦給賦值目標(biāo)。 規(guī)則:規(guī)則: 該語句不允許有選擇值重疊現(xiàn)象;該語句不允許有選擇值重疊現(xiàn)象; 該語句不允許選擇值涵蓋不全的情況;該語句不允許選擇值涵蓋不全的情況; 每個(gè)子句以每個(gè)子句以“,”,”號(hào)結(jié)束,最后一個(gè)子句以號(hào)結(jié)束,最后一個(gè)子句以“;”;”結(jié)束。結(jié)束。21 用選擇信號(hào)賦值語句實(shí)現(xiàn)四選一數(shù)據(jù)選擇器。用選擇信號(hào)賦值語句實(shí)現(xiàn)四選一數(shù)據(jù)選擇器。 ARCHITECTUREARCHITECTURE example6 ex

23、ample6 OFOF mux41 mux41 IS IS SIGNALSIGNAL s: STD_LOGIC_VECTOR( s: STD_LOGIC_VECTOR( 1 1 DOWNTODOWNTO 0 0 ) ); BEGINBEGIN s s = s1&s0s1&s0; WITHWITH s s SELECTSELECT y y 實(shí)參數(shù)表達(dá)式,實(shí)參數(shù)表達(dá)式, 形參數(shù)名稱形參數(shù)名稱=實(shí)參數(shù)表達(dá)式);實(shí)參數(shù)表達(dá)式); 形參數(shù)名稱:形參數(shù)名稱:是對(duì)被調(diào)用的過程已做說明的參數(shù)名。是對(duì)被調(diào)用的過程已做說明的參數(shù)名。 實(shí)參數(shù)表達(dá)式:實(shí)參數(shù)表達(dá)式:是一個(gè)標(biāo)識(shí)符或具體數(shù)值,是當(dāng)前是一個(gè)

24、標(biāo)識(shí)符或具體數(shù)值,是當(dāng)前過程調(diào)用中形參數(shù)的接受體。過程調(diào)用中形參數(shù)的接受體。 對(duì)應(yīng)關(guān)系:對(duì)應(yīng)關(guān)系:位置關(guān)聯(lián)位置關(guān)聯(lián) 名稱關(guān)聯(lián)名稱關(guān)聯(lián) 26 (2 2)過程的調(diào)用過程的調(diào)用 過程調(diào)用需完成的內(nèi)容:過程調(diào)用需完成的內(nèi)容: 將實(shí)參數(shù)值賦給被調(diào)用過程的形參數(shù);將實(shí)參數(shù)值賦給被調(diào)用過程的形參數(shù); 執(zhí)行過程;執(zhí)行過程; 將過程中的形參數(shù)值返回給對(duì)應(yīng)的實(shí)參數(shù)。將過程中的形參數(shù)值返回給對(duì)應(yīng)的實(shí)參數(shù)。 過程調(diào)用有兩種方式:過程調(diào)用有兩種方式: 順序語句方式:順序語句方式: 并行語句方式:并行語句方式: 即在進(jìn)程中的過程調(diào)用。即在進(jìn)程中的過程調(diào)用。 即在結(jié)構(gòu)體或塊中的過程調(diào)用。即在結(jié)構(gòu)體或塊中的過程調(diào)用。27 【

25、例例4 4】試用過程語句編寫實(shí)現(xiàn)數(shù)據(jù)求和的運(yùn)算程序。試用過程語句編寫實(shí)現(xiàn)數(shù)據(jù)求和的運(yùn)算程序。 LIBRARYLIBRARY IEEE IEEE; USEUSE IEEE.STD_LOGIC_1164. IEEE.STD_LOGIC_1164.ALLALL; USEUSE IEEE.STD_LOGIC_ARITH. IEEE.STD_LOGIC_ARITH.ALLALL; USEUSE IEEE.STD_LOGIC_UNSIGNED. IEEE.STD_LOGIC_UNSIGNED.ALLALL; ENTITYENTITY add add ISIS PORT ( PORT ( A,A, B,B,

26、 C: C: ININ STD_LOGIC_VECTOR( STD_LOGIC_VECTOR( 3 3 DOWNTODOWNTO 0 0 ) ); CLK,CLK, SET: SET: ININ STD_LOGIC STD_LOGIC; S: S: OUTOUT STD_LOGIC_VECTOR ( STD_LOGIC_VECTOR ( 3 3 DOWNTODOWNTO 0 0 ); ENDEND add add; ARCHITECTUREARCHITECTURE example15 example15 OFOF add add ISIS PROCEDUREPROCEDURE add_1 (

27、add_1 ( VARIABLEVARIABLE data1,data2,data3: data1,data2,data3: ININ STD_LOGIC_VECTOR STD_LOGIC_VECTOR; VARIABLEVARIABLE dataout: dataout: OUTOUT STD_LOGIC_VECTOR STD_LOGIC_VECTOR) ISIS BEGIN BEGIN dataout: dataout:= data1data1 + data2data2 + data3data3; ENDEND add_1 add_1; -過程體定義過程體定義28 【例例4 4】試用過程語

28、句編寫實(shí)現(xiàn)數(shù)據(jù)求和的運(yùn)算程序。試用過程語句編寫實(shí)現(xiàn)數(shù)據(jù)求和的運(yùn)算程序。 BEGINBEGIN PROCESSPROCESS(CLKCLK) VARIABLEVARIABLE tmp: STD_LOGIC_VECTOR( tmp: STD_LOGIC_VECTOR( 3 3 DOWNTODOWNTO 0 0 ) ); BEGINBEGIN IFIF (CLKCLK =11ANDAND CLK CLKEVENTEVENT) THENTHEN IFIF SET SET =1 1 THENTHEN tmp: tmp:=“0000”“0000”; ELSEELSE add_1 add_1(A, B, C

29、, tmpA, B, C, tmp);); END IFEND IF; END IFEND IF; S S 實(shí)參數(shù)表達(dá)式,實(shí)參數(shù)表達(dá)式, 形參數(shù)名稱形參數(shù)名稱=實(shí)參數(shù)表達(dá)式);實(shí)參數(shù)表達(dá)式);32 【例例5 5】使用函數(shù)定義使用函數(shù)定義FUNCTIONFUNCTION語句描述求最小數(shù)電路。語句描述求最小數(shù)電路。 LIBRARYLIBRARY IEEE IEEE; USEUSE IEEE.STD_LOGIC_1164. IEEE.STD_LOGIC_1164.ALLALL; ENTITYENTITY min min ISIS PORTPORT ( ( A,A, B: B: ININ STD_LO

30、GIC_VECTOR ( STD_LOGIC_VECTOR ( 7 7 DOWNTODOWNTO 0 0 ) ); Y: Y: OUTOUT STD_LOGIC_VECTOR ( STD_LOGIC_VECTOR ( 7 7 DOWNTODOWNTO 0 0 ); ENDEND min min; 33 【例例5 5】使用函數(shù)定義使用函數(shù)定義FUNCTIONFUNCTION語句描述求最小數(shù)電路。語句描述求最小數(shù)電路。 ARCHITECTUREARCHITECTURE example16 example16 OFOF min min ISIS FUNCTIONFUNCTION min ( min

31、( a,a, b: b: ININ STD_LOGIC_VECTOR) STD_LOGIC_VECTOR) RETURNRETURN STD_LOGIC_VECTOR STD_LOGIC_VECTOR; FUNCTIONFUNCTION min ( min ( a,a, b: b: ININ STD_LOGIC_VECTOR STD_LOGIC_VECTOR) RETURN RETURN STD_LOGIC_VECTOR STD_LOGIC_VECTOR ISIS BEGINBEGIN IFIF ( ( a a b) b) THENTHEN RETURNRETURN a a; ELSEELSE

32、 RETURNRETURN b b; END IFEND IF; ENDEND min min; BEGINBEGIN Y Y D2,D2, b b = D3,D3, s s = S0,S0, y y = B B ) ); U3: mux2 U3: mux2 PORT MAPPORT MAP ( ( A,A, B,B, S1, yS1, y = Y Y ) ); ENDEND exmple13 exmple13;-元件例化元件例化 -元件定義元件定義- 位置關(guān)聯(lián)方式位置關(guān)聯(lián)方式 - 名稱關(guān)聯(lián)方式名稱關(guān)聯(lián)方式- 混合關(guān)聯(lián)方式混合關(guān)聯(lián)方式 【例例6】試用元件例化語句,將四選一數(shù)據(jù)選擇器用二選一來試

33、用元件例化語句,將四選一數(shù)據(jù)選擇器用二選一來實(shí)現(xiàn)。實(shí)現(xiàn)。 39 底底層文件層文件: LIBRARYLIBRARY IEEE IEEE; USEUSE IEEE.STD_LOGIC_1164. IEEE.STD_LOGIC_1164.ALLALL; ENTITYENTITY mux2 mux2 ISIS PORTPORT ( ( a,a, b,b, s: s: ININ STD_LOGIC STD_LOGIC; y: y: OUTOUT STD_LOGIC) STD_LOGIC); ENDEND mux2 mux2; ARCHITECTUREARCHITECTURE example13 exam

34、ple13 OFOF mux2 mux2 ISIS BEGINBEGIN y y ”號(hào)將元件定義中的信號(hào)名與號(hào)將元件定義中的信號(hào)名與PORT PORT MAP ( )MAP ( )中所列的信號(hào)名連接起來。中所列的信號(hào)名連接起來。 如:如:U2:U2: mux2 mux2 PORTPORT MAP MAP (a(a=D2,bD2,b=D3,sD3,s=S0,yS0,y=B)B); 是在是在PORT MAP( )PORT MAP( )的信號(hào)連接關(guān)系中含有上述的信號(hào)連接關(guān)系中含有上述的兩種方式。的兩種方式。 如:如:U3: mux2 U3: mux2 PORT MAPPORT MAP (A,B,S1

35、,y (A,B,S1,y=Y)Y);41 生成(生成(GENERATEGENERATE)語句具有復(fù)制功能,可以對(duì))語句具有復(fù)制功能,可以對(duì)有規(guī)律設(shè)計(jì)結(jié)構(gòu)的邏輯描述進(jìn)行簡化。有規(guī)律設(shè)計(jì)結(jié)構(gòu)的邏輯描述進(jìn)行簡化。 當(dāng)設(shè)計(jì)一個(gè)由多個(gè)相同單元模塊組成的電路時(shí),當(dāng)設(shè)計(jì)一個(gè)由多個(gè)相同單元模塊組成的電路時(shí),只要根據(jù)某些條件,設(shè)計(jì)好某一個(gè)元件,就可以用只要根據(jù)某些條件,設(shè)計(jì)好某一個(gè)元件,就可以用生成語句復(fù)制一組完全相同的并行元件或設(shè)計(jì)單元生成語句復(fù)制一組完全相同的并行元件或設(shè)計(jì)單元來組成電路。來組成電路。 42 生成語句有兩種格式:生成語句有兩種格式: 6.6 6.6 生成語句生成語句 格式格式1 1: 標(biāo)號(hào)標(biāo)

36、號(hào): FOR 循環(huán)變量循環(huán)變量 IN 取值范圍取值范圍 GENERATE 說明部分說明部分 BEGIN 并行語句;并行語句; END GENERATE 標(biāo)號(hào)標(biāo)號(hào); 43 生成語句有兩種格式:生成語句有兩種格式: 6.66.6 生成語句生成語句 格式格式2 2: 標(biāo)號(hào)標(biāo)號(hào): IF 條件條件 GENERATE 說明部分說明部分 BEGIN 并行語句;并行語句; END GENERATE 標(biāo)號(hào)標(biāo)號(hào);44 生成語句的格式由四部分組成:生成語句的格式由四部分組成: 使用使用FORFOR語句或語句或IFIF語句結(jié)構(gòu),來規(guī)定重復(fù)生語句結(jié)構(gòu),來規(guī)定重復(fù)生成并行語句的方式;成并行語句的方式; 通過說明部分,對(duì)元

37、件數(shù)據(jù)類型、子程序、通過說明部分,對(duì)元件數(shù)據(jù)類型、子程序、數(shù)據(jù)對(duì)象進(jìn)行局部的說明;數(shù)據(jù)對(duì)象進(jìn)行局部的說明; 并行語句主要用生成語句來復(fù)制一組相同的并行語句主要用生成語句來復(fù)制一組相同的并行元件,其語句包括所有的并行語句,甚至生成并行元件,其語句包括所有的并行語句,甚至生成語句本身,可實(shí)現(xiàn)嵌套式生成結(jié)構(gòu);語句本身,可實(shí)現(xiàn)嵌套式生成結(jié)構(gòu); 標(biāo)號(hào)是可選擇項(xiàng),在嵌套式生成結(jié)構(gòu)中起著標(biāo)號(hào)是可選擇項(xiàng),在嵌套式生成結(jié)構(gòu)中起著十分重要的作用。十分重要的作用。 6.66.6 生成語句生成語句 45 【例例7 7】試用格式試用格式1 1的生成語句,描述用的生成語句,描述用D D觸發(fā)器組成的八位移觸發(fā)器組成的八位移

38、位寄存器。位寄存器。 d q cpd q cpd q cpd q cpd q cpd q cpd q cpd q cpDinDin CLKCLKDoutDout Q0 Q1 Q0 Q1 Q2 Q2 Q3 Q3 Q4 Q4 Q5 Q5 Q6 Q7Q6 Q7 描述描述D D觸發(fā)器的源程序觸發(fā)器的源程序 LIBRARYLIBRARY IEEE IEEE; USEUSE IEEE.STD_LOGIC_1164. IEEE.STD_LOGIC_1164.ALLALL; ENTITYENTITY ff_d ff_d ISIS PORTPORT ( ( d, cp: d, cp: ININ STD_LOGIC STD_LOGIC; q: q: OUTOUT STD_LOGIC STD_LOGIC ) ); ENDEND ff_d ff_d; ARCHITECTUREARCHITECTURE example14 example14 OFOF ff_d ff_d ISIS BEGINBEGIN PROCESSPROCESS(cpcp) BEGINBEGIN IFIF cp cp =11ANDAND cp cpEVENT EVENT THENTHEN q q=d d; END IFEND IF; EN

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論