VHDL主要描述語(yǔ)句課件_第1頁(yè)
VHDL主要描述語(yǔ)句課件_第2頁(yè)
VHDL主要描述語(yǔ)句課件_第3頁(yè)
VHDL主要描述語(yǔ)句課件_第4頁(yè)
VHDL主要描述語(yǔ)句課件_第5頁(yè)
已閱讀5頁(yè),還剩91頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第五章VHDL主要描述語(yǔ)句第五章VHDL主要描述語(yǔ)句主要內(nèi)容概

述行為描述語(yǔ)句結(jié)構(gòu)描述語(yǔ)句主要內(nèi)容概述5.1

述VHDL中的描述語(yǔ)句了分為順序語(yǔ)句(SequentialStatements)和并行語(yǔ)句

(ConcurrentStatements)兩大基本系列。5.1概述VHDL中的描述語(yǔ)句了分為順序語(yǔ)句(Sequ5.2

行為描述語(yǔ)句5.2.1賦值語(yǔ)句

賦值語(yǔ)句有兩種,即信號(hào)賦值語(yǔ)句和變量賦值語(yǔ)句。每一種賦值語(yǔ)句都有三個(gè)基本組成部分,即賦值目標(biāo)、賦值符號(hào)和賦值源。信號(hào)賦值語(yǔ)句和變量賦值語(yǔ)句的語(yǔ)法格式如下:

信號(hào)賦值目標(biāo)

<=賦值源;

變量賦值目標(biāo):=賦值源;標(biāo)識(shí)符、數(shù)組元素目標(biāo)的賦值語(yǔ)句示例如下:SIGNALs1,s2:STD_LOGIC;SIGNALarray

1:STD_LOGIC_VECTOR(0TO3);PROCESS(s1)VARIABLEv1,v2:STD_LOGIC;BEGIN V1:=‘0’; V2:=‘1’; S1<=s1ANDs2; S2<=s1ORs2; array

1(0)<=V1; array

1(1)<=V2; array

1(2)<=S1; array

1(3)<=S2;

ENDPROCESS;5.2行為描述語(yǔ)句5.2.1賦值語(yǔ)句標(biāo)識(shí)符、數(shù)組元素5.2.2

并行信號(hào)賦值語(yǔ)句1.一般信號(hào)賦值語(yǔ)句

信號(hào)賦值目標(biāo)

<=延遲選項(xiàng)表達(dá)式延遲表達(dá)式;例5.1四位并行加法器的數(shù)據(jù)流描述。LIBRARY

IEEE;USE

IEEE.STD_LOGIC_1164.ALL;USE

IEEE.STD_LOGIC_UNSIGNED.ALL

ENTITYADD4IS

PORT(

A:IN

STD_LOGIC_VECTOR(3DOWNTO0);

B:IN

STD_LOGIC_VECTOR(3DOWNTO0);

CIN:IN

STD_LOGIC;

SUM:OUT

STD_LOGIC_VECTOR(

3DOWNTO0);

COUT:OUT

STD_LOGIC );ENDADD4;ARCHITECTUREADD4_concurntOFADD4IS--定義包含有進(jìn)位的SUM信號(hào)SIGNALSUMINT:STD_LOGIC_VECTOR(

4DOWNTO0);BEGIN SUMINT<=('0'&A)+('0'&B)+("0000"&CIN)AFTER10ns; COUT<=SUMINT(4)AFTER15ns; SUM<=SUMINT(3DOWNTO0)AFTER15ns;ENDADD4_concurnt;5.2.2并行信號(hào)賦值語(yǔ)句1.一般信號(hào)賦值語(yǔ)句例5.1四5.2.2

并行信號(hào)賦值語(yǔ)句(續(xù)1)2.條件信號(hào)賦值語(yǔ)句

賦值目標(biāo)

<=表達(dá)式WHEN

賦值條件ELSE

表達(dá)式WHEN

賦值條件ELSE

表達(dá)式;例5.23選1多路選擇器的行為描述。5.2.2并行信號(hào)賦值語(yǔ)句(續(xù)1)2.條件信號(hào)賦值語(yǔ)句5.2.2

并行信號(hào)賦值語(yǔ)句(續(xù)2)2.條件信號(hào)賦值語(yǔ)句

例5.23選1多路選擇器的行為描述。LIBRARY

IEEE;USEIEEE.STD_LOGIC

1164.ALL;

ENTITYmux31IS PORT(a,b,c:INSTD_LOGIC;

en1,en2:INSTD_LOGIC;

z:OUT

STD_LOGIC);ENDmux31;

ARCHITECTUREbehavioralOFmux31ISBEGIN Z<=aWHENen2='1'ELSE

bWHENen1='1'ELSE

c;ENDbehavioral;5.2.2并行信號(hào)賦值語(yǔ)句(續(xù)2)2.條件信號(hào)賦值語(yǔ)句5.2.2

并行信號(hào)賦值語(yǔ)句(續(xù)3)3.選擇信號(hào)賦值語(yǔ)句

WITH

選擇表達(dá)式SELECT

賦值目標(biāo)信號(hào)<=表達(dá)式WHEN

選擇值,

表達(dá)式WHEN

選擇值,

表達(dá)式WHEN

選擇值,

表達(dá)式WHEN

選擇值;

例5.3簡(jiǎn)易的指令譯碼器設(shè)計(jì)。5.2.2并行信號(hào)賦值語(yǔ)句(續(xù)3)3.選擇信號(hào)賦值語(yǔ)句例5.2.2

并行信號(hào)賦值語(yǔ)句(續(xù)4)3.選擇信號(hào)賦值語(yǔ)句

例5.3簡(jiǎn)易的指令譯碼器設(shè)計(jì)。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;

ENTITYDECODERIS PORT(A,B,C

:INSTD_LOGIC;

data1,data2:INSTD_LOGIC;

data_out

:OUTSTD_LOGIC);ENDDECODER;

ARCHITECTUREbehavioralOFDECODERIS SIGNALinstruction:STD_LOGIC_VECTOR(0TO2); BEGIN Instruction<=A&B&C;

WITHinstructionSELECT data_out<=NOTdata1

WHEN"000",

data1ANDdata2

WHEN"001",

data1ORdata2

WHEN"010",

data1NANDdata2

WHEN"011",

data1NORdata2

WHEN"100",

data1XORdata2

WHEN"101",

data1XNORdata2

WHEN"110",

‘Z’

WHEN

OTHERS;ENDbehavioral;5.2.2并行信號(hào)賦值語(yǔ)句(續(xù)4)3.選擇信號(hào)賦值語(yǔ)句5.2.3順序控制語(yǔ)句1.IF語(yǔ)句第一種形式:IF

條件THEN --順序語(yǔ)句;

ELSE --順序語(yǔ)句;ENDIF;第二種形式:IF

條件THEN

--順序語(yǔ)句;

ENDIF;第三種形式:IF

條件THEN --順序語(yǔ)句;

ELSIF條件THEN --順序語(yǔ)句;

… ELSE --順序語(yǔ)句;ENDIF;第四種形式:IF

條件THEN --順序語(yǔ)句;

ELSIF條件THEN --順序語(yǔ)句;

…ENDIF;5.2.3順序控制語(yǔ)句1.IF語(yǔ)句第一種形式:第二種形1.IF語(yǔ)句(續(xù)1)例5.4采用兩種不同IF語(yǔ)句結(jié)構(gòu)實(shí)現(xiàn)同一結(jié)構(gòu)和功能的數(shù)據(jù)選擇器。ENTITYif_statementISPORT(A,B,C,X:IN

BIT_VECTOR(3DOWNTO0);Z:OUTBIT_VECTOR(3DOWNTO0));ENDif_statement;ARCHITECTUREexample1OFif_statementISBEGIN PROCESS(A,B,C,X) BEGIN Z<=A;

IF(X="1111")THEN

Z<=B;

ELSIF(X>"1000")THEN

Z<=C;

ENDIF; ENDPROCESS;

ENDexample1;1.IF語(yǔ)句(續(xù)1)例5.4采用兩種不同IF語(yǔ)句結(jié)構(gòu)實(shí)現(xiàn)1.IF語(yǔ)句(續(xù)2)例5.4采用兩種不同IF語(yǔ)句結(jié)構(gòu)實(shí)現(xiàn)同一結(jié)構(gòu)和功能的數(shù)據(jù)選擇器。ARCHITECTUREexample2OFif_statementISBEGINPROCESS(A,B,C,X)

BEGIN

IF(X="1111")THEN

Z<=B;

ELSIF(X>"1000")THEN

Z<=C;

ELSE

Z<=A;

ENDIF;ENDPROCESS;ENDexample2;1.IF語(yǔ)句(續(xù)2)例5.4采用兩種不同IF語(yǔ)句結(jié)構(gòu)實(shí)現(xiàn)1.IF語(yǔ)句(續(xù)3)例5.5利用IF語(yǔ)句的多分支嵌套實(shí)現(xiàn)四選一多路選擇器。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;

ENTITYMUX_41IS

PORT(S1,S0,A,B,C,D:INSTD_LOGIC;

Z:OUTSTD_LOGIC);ENDMUX_41;ARCHITECTUREBEHAV_MUX41OFMUX_41ISBEGINP1:PROCESS(S1,S0,A,B,C,D)

BEGIN

IFS1='0'ANDS0='0'THEN Z<=A;

ELSIFS1='0'ANDS0='1'THEN Z<=B;

ELSIFS1='1'ANDS0='0'THEN Z<=C;

ELSE Z<=D;

ENDIF;

ENDPROCESSP1;ENDBEHAV_MUX41;1.IF語(yǔ)句(續(xù)3)例5.5利用IF語(yǔ)句的多分支嵌套實(shí)現(xiàn)1.IF語(yǔ)句(續(xù)4)例5.6利用IF語(yǔ)句的多分支嵌套實(shí)現(xiàn)四選一多路選擇器的錯(cuò)誤示例。P1:PROCESS(S1,S0,A,B,C,D)

BEGIN

IFS1='0'ANDS0='0'THEN Z<=A;

ELSIFS1='0'ANDS0='1'THEN Z<=B;

ELSIFS1='1'ANDS0='0'THEN Z<=C;

ELSIFS1='1'ANDS0='1'THEN Z<=D;

ENDIF;

ENDPROCESSP1;1.IF語(yǔ)句(續(xù)4)例5.6利用IF語(yǔ)句的多分支嵌套實(shí)現(xiàn)5.2.3

順序控制語(yǔ)句2.CASE語(yǔ)句CASE

表達(dá)式

ISWHEN

選擇值_1=>順序語(yǔ)句;WHEN

選擇值_2|選擇值_3=>順序語(yǔ)句;WHEN

選擇值_4TO選擇值_N=>順序語(yǔ)句;WHEN

OTHERS=>順序語(yǔ)句;ENDCASE;選擇值可以有四種不同的表達(dá)方式:單個(gè)普通數(shù)值,如選擇值_1;并列數(shù)值,如選擇值_2|選擇值_3,表示取值為選擇值_2或者選擇值_3;數(shù)值選擇范圍,如選擇值_4TO選擇值_N,表示取值可以是該范圍中的任意一個(gè);混合方式,以上三種方式的混合。5.2.3順序控制語(yǔ)句2.CASE語(yǔ)句CASE表達(dá)2.CASE

語(yǔ)句(續(xù)1)例5.7CASE語(yǔ)句描述的8線(xiàn)-3線(xiàn)編碼器。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;

ENTITY

encoder_83ISPORT(s:IN

STD_LOGIC_VECTOR(7DOWNTO0);z:OUT

STD_LOGIC_VECTOR(2DOWNTO0));ENDencoder_83;

ARCHITECTUREbehavioralOFencoder_83ISBEGIN PROCESS(s)

BEGIN CASEsIS

WHEN"11111110"=>z<="000"; WHEN"11111101"=>z<="001"; WHEN"11111011"=>z<="010"; WHEN"11110111"=>z<="011"; WHEN"11101111"=>z<="100"; WHEN"11011111"=>z<="101"; WHEN"10111111"=>z<="110"; WHEN"01111111"=>z<="111"; WHENOTHERS=>z<="XXX"; ENDCASE; ENDPROCESS;ENDbehavioral;2.CASE語(yǔ)句(續(xù)1)例5.7CASE語(yǔ)句描述的82.CASE

語(yǔ)句(續(xù)2)例5.8整型數(shù)據(jù)類(lèi)型的范圍。ENTITYrange_1IS

PORT(A,B,C,X:ININTEGERRANGE0TO15;

Z:OUTINTEGERRANGE0TO15);ENDrange_1;

ARCHITECTUREexampleOFrange_1ISBEGIN

PROCESS(A,B,C,X) BEGIN CASEXIS WHEN0=>Z<=A; WHEN7|9=>Z<=B; WHEN1TO5=>Z<=C; WHENOTHERS=>Z<=0; ENDCASE; ENDPROCESS;ENDexample;2.CASE語(yǔ)句(續(xù)2)例5.8整型數(shù)據(jù)類(lèi)型的范圍。E2.CASE

語(yǔ)句(續(xù)3)例5.9數(shù)組數(shù)據(jù)類(lèi)型范圍的錯(cuò)誤用法。ENTITYrange_2ISPORT(A,B,C,X:IN

BIT_VECTOR(3DOWNTO0);

Z:OUT

BIT_VECTOR(3DOWNTO0));ENDrange_2;

ARCHITECTUREexampleOFrange_2ISBEGIN

PROCESS(A,B,C,X)

BEGIN CASEXIS

WHEN"0000"=>Z<=A;

WHEN"0111"|"1001"=>Z<=B;

--錯(cuò)誤用法,數(shù)組元素沒(méi)有大小關(guān)系

WHEN"0001"TO"0101"=>Z<=C;

WHENOTHERS=>Z<=0;

ENDCASE;

ENDPROCESS;ENDexample;2.CASE語(yǔ)句(續(xù)3)例5.9數(shù)組數(shù)據(jù)類(lèi)型范圍的錯(cuò)誤5.2.3

順序控制語(yǔ)句3.

LOOP語(yǔ)句FORLOOP的語(yǔ)句格式如下:LOOP標(biāo)號(hào):FOR循環(huán)變量IN循環(huán)次數(shù)范圍LOOP順序語(yǔ)句END

LOOPLOOP標(biāo)號(hào);WHILELOOP的語(yǔ)句格式如下:LOOP標(biāo)號(hào):WHILE循環(huán)控制條件LOOP順序語(yǔ)句ENDLOOPLOOP標(biāo)號(hào);5.2.3順序控制語(yǔ)句3.LOOP語(yǔ)句FORLOO3.

LOOP

語(yǔ)句(續(xù)1)例5.10FORLOOP語(yǔ)句使用示例。ENTITYfor_loopIS PORT(A:IN

INTEGERRANGE0TO3;

Z:OUTBIT_VECTOR(3DOWNTO0));ENDfor_loop;

ARCHITECTUREexampleOFfor_loopISBEGIN PROCESS(A) BEGIN Z<="0000"; FORiIN0TO3LOOP

IF(A=i)THEN

Z(i)<='1';

ENDIF; ENDLOOP; ENDPROCESS;ENDexample;3.LOOP語(yǔ)句(續(xù)1)例5.10FORLOOP語(yǔ)句3.

LOOP

語(yǔ)句(續(xù)2)例5.11利用LOOP語(yǔ)句將向量轉(zhuǎn)化為整數(shù)輸出。ENTITYconv_intISPORT(vect:IN

BIT_VECTOR(7DOWNTO0);

result:OUT

INTEGER);ENDconv_int;

ARCHITECTUREAOFconv_intISBEGIN

PROCESS(vect)

VARIABLEtmp:INTEGER;

BEGIN tmp:=0; FORiIN7DOWNTO0LOOP IF(vect(i)='1')THEN tmp:=tmp+2**i; ENDIF; ENDLOOP; result<=tmp;

ENDPROCESS;ENDA;ARCHITECTUREBOFconv_intISBEGIN

PROCESS(vect)

VARIABLEtmp:INTEGER;

VARIABLEi:INTEGER;

BEGIN tmp:=0; i:=vect'high WHILE(i>=vect'low)LOOP IF(vect(i)='1')THEN

tmp:=tmp+2**i; ENDIF; i:=i-1;--修改循環(huán)變量 ENDLOOP; result<=tmp;

ENDPROCESS;ENDB;3.LOOP語(yǔ)句(續(xù)2)例5.11利用LOOP語(yǔ)句將向5.2.3

順序控制語(yǔ)句4.NEXT語(yǔ)句和EXIT語(yǔ)句N(xiāo)EXT的語(yǔ)句四種形式:NEXT;NEXTLOOP標(biāo)號(hào);NEXT

WHEN

條件表達(dá)式;NEXTLOOP標(biāo)號(hào)WHEN

條件表達(dá)式;EXIT語(yǔ)句四種形式:EXIT;EXITLOOP標(biāo)號(hào);EXITWHEN

條件表達(dá)式;EXITLOOP標(biāo)號(hào)WHEN

條件表達(dá)式;5.2.3順序控制語(yǔ)句4.NEXT語(yǔ)句和EXIT語(yǔ)句N(xiāo)5.2.4NULL語(yǔ)句空語(yǔ)句不會(huì)執(zhí)行任何操作,其語(yǔ)句格式為:NULL;例5.12NULL語(yǔ)句的應(yīng)用示例。ENTITYEX_WAITIS

PORT(CNTL:IN

INTEGER

RANGE0TO31;

A,B:IN

STD_LOGIC_VECTOR(7DOWNTO0); Z:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDEX_WAIT;

ARCHITECTUREarch_waitOFEX_WAITISBEGIN P_WAIT:PROCESS(CNTL)

BEGIN

Z<=A;

CASECNTLIS WHEN3|15=>Z<=AXORB;

WHENOTHERS=>NULL;

ENDCASE;

ENDPROCESSP_WAIT;ENDarch_wait;5.2.4NULL語(yǔ)句空語(yǔ)句不會(huì)執(zhí)行任何操作,其語(yǔ)句格式5.2.5WAIT語(yǔ)句WAIT語(yǔ)句的語(yǔ)句格式有如下四種形式:WAITUNTIL

條件表達(dá)式;WAITFOR

時(shí)間表達(dá)式;WAITON

信號(hào)列表;WAIT;例5.13利用WAIT語(yǔ)句描述的D觸發(fā)器模塊。ENTITYFFIS

PORT(D,CLK:INBIT;

Q:OUTBIT);

ENDFF;ARCHITECTUREBEH_1OFFFIS

BEGIN

PROCESS

BEGIN

WAITUNTILCLK='1';

Q<=D;

ENDPROCESS;

ENDBEH_1;5.2.5WAIT語(yǔ)句WAIT語(yǔ)句的語(yǔ)句格式有如下四種形5.2.6

進(jìn)程語(yǔ)句1.進(jìn)程語(yǔ)句的格式進(jìn)程標(biāo)號(hào):PROCESS(敏感信號(hào)參數(shù)列表

)

進(jìn)程說(shuō)明部分

BEGIN

順序描述語(yǔ)句

ENDPROCESS

進(jìn)程標(biāo)號(hào);2.進(jìn)程設(shè)計(jì)要點(diǎn)同一結(jié)構(gòu)體中的多個(gè)進(jìn)程之間是并行運(yùn)行的,但每一進(jìn)程中的邏輯描述語(yǔ)句是順序運(yùn)行的。進(jìn)程只能存在于結(jié)構(gòu)體內(nèi)。一個(gè)進(jìn)程的執(zhí)行是事件觸發(fā)的,或者將可能的事件源列在敏感信號(hào)參數(shù)表中,或者直接使用WAIT語(yǔ)句來(lái)控制進(jìn)程的執(zhí)行。同一設(shè)計(jì)中的所有進(jìn)程都是并行運(yùn)行的,各進(jìn)程彼此之間的通信是通過(guò)列于敏感信號(hào)參數(shù)表中的信號(hào)進(jìn)行的。如果使用了標(biāo)號(hào),那末在進(jìn)程結(jié)束語(yǔ)句中必須重復(fù)標(biāo)號(hào)。5.2.6進(jìn)程語(yǔ)句1.進(jìn)程語(yǔ)句的格式5.2.6

進(jìn)程語(yǔ)句(續(xù)1)3.進(jìn)程語(yǔ)句設(shè)計(jì)實(shí)例例5.14進(jìn)程中敏感信號(hào)參數(shù)表和IF語(yǔ)句的使用。LIBRARY

IEEE;USEIEEE.STD_LOGIC_1164.ALL;

ENTITYcomp_listIS

PORT(A,B,SEL:INSTD_LOGIC;

Z:OUTSTD_LOGIC);

ENDcomp_list;

ARCHITECTURERTLOFcomp_listIS

BEGIN

PROCESS(A,B,SEL)

BEGIN

IFSEL='1'THEN

Z<=A; ELSEZ<=B;

ENDIF;

ENDPROCESS;ENDRTL;5.2.6進(jìn)程語(yǔ)句(續(xù)1)3.進(jìn)程語(yǔ)句設(shè)計(jì)實(shí)例例5.13.進(jìn)程語(yǔ)句設(shè)計(jì)實(shí)例(續(xù)2)例5.15無(wú)復(fù)位十進(jìn)制加法計(jì)數(shù)器的描述。LIBRARYIEEE;

USE

IEEE.STD_LOGIC_1164.ALL;

ENTITYcounterIS

PORT(CLK:IN

STD_LOGIC;

Q:OUTINTEGERRANGE0TO15);

ENDcounter;

ARCHITECTUREAOFcounterIS

SIGNALcount:

INTEGERRANGE0TO15;

BEGIN

PROCESS(CLK)

BEGIN

IFCLK‘EVENTANDCLK=’1‘THEN

IF(count>=9)THEN

count<=0;

ELSE

count<=count+1;

ENDIF;

ENDIF;

ENDPROCESS;

Q<=count;

ENDA;3.進(jìn)程語(yǔ)句設(shè)計(jì)實(shí)例(續(xù)2)例5.15無(wú)復(fù)位十進(jìn)制加法計(jì)3.進(jìn)程語(yǔ)句設(shè)計(jì)實(shí)例(續(xù)3)例5.16帶異步復(fù)位、置位端的D觸發(fā)器描述。LIBRARY

IEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYASYNC_FFIS

PORT(D,CLK,SET,RST:IN

STD_LOGIC;

Q:OUTSTD_LOGIC);

ENDASYNC_FF;

ARCHITECTUREAOFASYNC_FFIS

BEGIN

PROCESS(CLK,RST,SET)

BEGIN

IF(RST=‘1’)THEN

Q<=‘0’;

ELSIFSET=‘1’THEN

Q<=‘1’;

ELSIF(CLK‘EVENTANDCLK=’1‘)THEN

Q<=D;

ENDIF;

ENDPROCESS;

ENDA;ENDcounter;3.進(jìn)程語(yǔ)句設(shè)計(jì)實(shí)例(續(xù)3)例5.16帶異步復(fù)位、置位端3.進(jìn)程語(yǔ)句設(shè)計(jì)實(shí)例(續(xù)4)例5.17移位寄存器的描述。--基本移位寄存器的描述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;

ENTITYbasic_shift_registerIS

GENERIC ( num_stages:NATURAL:=16 );

PORT ( clk :INSTD_LOGIC; enable :INSTD_LOGIC; sr_in :INSTD_LOGIC; sr_out :OUTSTD_LOGIC );ENDENTITY;3.進(jìn)程語(yǔ)句設(shè)計(jì)實(shí)例(續(xù)4)例5.17移位寄存器的描述。3.進(jìn)程語(yǔ)句設(shè)計(jì)實(shí)例(續(xù)5)例5.17移位寄存器的描述。ARCHITECTURErtlOFbasic_shift_registerIS--為基本移位寄存器構(gòu)造一個(gè)數(shù)組類(lèi)型TYPEsr_lengthISARRAY((num_stages-1)DOWNTO0)OFSTD_LOGIC; --聲明移位寄存器內(nèi)部信號(hào)

SIGNALsr:sr_length;BEGIN

PROCESS(clk)

BEGIN

IF(clk'EVENTandclk='1')THEN

IF(enable='1')THEN

--左移一位,且最高位數(shù)據(jù)丟失

sr((num_stages-1)DOWNTO1)<=sr((num_stages-2)DOWNTO0);

sr(0)<=sr_in;--裝載最低位的新數(shù)據(jù)

ENDIF;

ENDIF;

ENDPROCESS; --在最高位數(shù)據(jù)丟失前將其輸出

sr_out<=sr(num_stages-1);ENDrtl;3.進(jìn)程語(yǔ)句設(shè)計(jì)實(shí)例(續(xù)5)例5.17移位寄存器的描述。3.進(jìn)程語(yǔ)句設(shè)計(jì)實(shí)例(續(xù)6)例5.17移位寄存器的描述。類(lèi)屬說(shuō)明語(yǔ)句的一般書(shū)寫(xiě)格式如下:

GENERIC(

常數(shù)名:數(shù)據(jù)類(lèi)型:設(shè)定值;

常數(shù)名:數(shù)據(jù)類(lèi)型:設(shè)定值

);圖5.8例5.17的時(shí)序仿真圖3.進(jìn)程語(yǔ)句設(shè)計(jì)實(shí)例(續(xù)6)例5.17移位寄存器的描述。3.進(jìn)程語(yǔ)句設(shè)計(jì)實(shí)例(續(xù)7)例5.18二進(jìn)制加法/減法計(jì)數(shù)器的描述。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.NUMERIC_STD.ALL;

ENTITYbinary_up_down_counterIS

GENERIC(min_count:NATURAL:=0;

max_count:NATURAL:=255);

PORT(clk :INSTD_LOGIC; reset :INSTD_LOGIC; enable :INSTD_LOGIC; updown :INSTD_LOGIC; q :OUTINTEGERRANGEmin_countTOmax_count);

ENDENTITY;3.進(jìn)程語(yǔ)句設(shè)計(jì)實(shí)例(續(xù)7)例5.18二進(jìn)制加法/減法計(jì)3.進(jìn)程語(yǔ)句設(shè)計(jì)實(shí)例(續(xù)8)例5.18二進(jìn)制加法/減法計(jì)數(shù)器的描述。ARCHITECTURErtlOFbinary_up_down_counterIS

SIGNALdirection:INTEGER;--定義計(jì)數(shù)方向信號(hào)BEGIN

Proc1: PROCESS(updown)

BEGIN

IF(updown=‘1’)THEN

direction<=1;

ELSE direction<=-1;

ENDIF;

ENDPROCESSProc1;Proc2: PROCESS(clk)

VARIABLEcnt:INTEGERRANGEmin_countTOmax_count;

BEGIN

IF(clk'EVENTandclk='1')THEN

IFreset='1'THEN cnt:=0;--計(jì)數(shù)器復(fù)位

ELSIFenable=‘1’THEN

cnt:=cnt+direction;--加法/減法計(jì)數(shù)

ENDIF;

ENDIF; q<=cnt;--輸出當(dāng)前計(jì)數(shù)值

ENDPROCESSProc2;ENDrtl;3.進(jìn)程語(yǔ)句設(shè)計(jì)實(shí)例(續(xù)8)例5.18二進(jìn)制加法/減法計(jì)3.進(jìn)程語(yǔ)句設(shè)計(jì)實(shí)例(續(xù)9)例5.18二進(jìn)制加法/減法計(jì)數(shù)器的描述。例5.18的時(shí)序仿真圖3.進(jìn)程語(yǔ)句設(shè)計(jì)實(shí)例(續(xù)9)例5.18二進(jìn)制加法/減法計(jì)5.3結(jié)構(gòu)描述語(yǔ)句5.3.1元件例化語(yǔ)句

1.元件聲明(ComponentDeclaration)

所有準(zhǔn)備使用的元件都需要通過(guò)元件聲明語(yǔ)句聲明,并必須放置在當(dāng)前設(shè)計(jì)結(jié)構(gòu)體中關(guān)鍵字BEGIN之前。

COMPONENT例化元件名IS GENERIC(類(lèi)屬表

); PORT(例化元件端口名表

); ENDCOMPONENT;2.元件例化(ComponentInstantiation)

元件例化語(yǔ)句必須放置在當(dāng)前設(shè)計(jì)結(jié)構(gòu)體中關(guān)鍵字BIGIN之后的說(shuō)明部分。

例化元件標(biāo)號(hào):例化元件名PORTMAP(端口映射表);5.3結(jié)構(gòu)描述語(yǔ)句5.3.1元件例化語(yǔ)句5.3.1

元件例化語(yǔ)句(續(xù)1)例5.2216進(jìn)制加法計(jì)數(shù)器的描述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.NUMERIC_STD.ALL;

ENTITYcounter_16IS PORT(

Clk

:INSTD_LOGIC;

reset

:INSTD_LOGIC;

enable:INSTD_LOGIC;

out_q:OUTINTEGERRANGE0TO16 );ENDENTITY;5.3.1元件例化語(yǔ)句(續(xù)1)例5.2216進(jìn)制加5.3.1

元件例化語(yǔ)句(續(xù)2)例5.2216進(jìn)制加法計(jì)數(shù)器的描述ARCHITECTUREinstOFcounter_16IS

COMPONENTbinary_up_down_counterIS GENERIC(

min_count:NATURAL:=0;

max_count:NATURAL:=16--更改了最大計(jì)數(shù)值);

PORT(

clk

:INSTD_LOGIC;

reset

:INSTD_LOGIC;

enable

:INSTD_LOGIC;

updown

:INSTD_LOGIC:='1';--只保留加法計(jì)數(shù)

q

:OUTINTEGERRANGEmin_countTOmax_count );

ENDCOMPONENTbinary_up_down_counter;BEGINu1:binary_up_down_counterPORTMAP(

clk=>clk,reset=>reset,enable=>enable,q=>out_q);ENDinst;5.3.1元件例化語(yǔ)句(續(xù)2)例5.2216進(jìn)制加5.3.1

元件例化語(yǔ)句(續(xù)3)例5.2216進(jìn)制加法計(jì)數(shù)器的描述例5.22的時(shí)序仿真圖5.3.1元件例化語(yǔ)句(續(xù)3)例5.2216進(jìn)制加5.3.2

配置語(yǔ)句 CONFIGURATION

配置名OF

實(shí)體名IS FOR選配結(jié)構(gòu)體名

配置說(shuō)明

ENDFOR; END

配置名;例5.23一位全加器中配置語(yǔ)句的使用。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;

ENTITYfulladder_cfgIS

PORT(a,b,ci:INSTD_LOGIC;S,co:OUTSTD_LOGIC);ENDfulladder_cfg;5.3.2配置語(yǔ)句 CONFIGURATION配置名O5.3.2

配置語(yǔ)句(續(xù)1)例5.23一位全加器中配置語(yǔ)句的使用。ARCHITECTUREbehavioralOFfulladder_cfgIS

--以下是一位全加器結(jié)構(gòu)體行為描述BEGINS<='1'WHEN(a='0'ANDb='1'ANDci='0')ELSE'1'WHEN(a='1'ANDb='0'ANDci='0')ELSE'1'WHEN(a='0'ANDb='0'ANDci='1')ELSE'1'WHEN(a='1'ANDb='1'ANDci='1')ELSE'0';co<='1'WHEN(a='1'ANDb='1'ANDci='0')ELSE'1'WHEN(a='0'ANDb='1'ANDci='1')ELSE'1'WHEN(a='1'ANDb='0'ANDci='1')ELSE'1'WHEN(a='1'ANDb='1'ANDci='1')ELSE'0';ENDbehavioral;ARCHITECTUREDataflowOFfulladder_cfgIS

--以下是一位全加器結(jié)構(gòu)體數(shù)據(jù)流描述BEGIN S<=aXORbXORci; co<=(aANDb)OR(bANDci)OR(aANDci);ENDDataflow;--以下是結(jié)構(gòu)體的配置CONFIGURATIONfirstOFfulladder_cfgIS

FORbehavioral

ENDFOR;ENDfirst;ENDfulladder_cfg;5.3.2配置語(yǔ)句(續(xù)1)例5.23一位全加器中配置語(yǔ)5.3.2

配置語(yǔ)句(續(xù)2)例5.24四位串行加法器的結(jié)構(gòu)描述。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;--以下是四位串行加法器的實(shí)體描述ENTITYfulladder_4IS

PORT(ain,bin:INSTD_LOGIC_VECTOR(3DOWNTO0); Cin:INSTD_LOGIC;Sum:OUTSTD_LOGIC_VECTOR(3DOWNTO0); Count:OUTSTD_LOGIC);ENDfulladder_4;--以下是四位全加器結(jié)構(gòu)體描述ARCHITECTUREinstOFfulladder_4IS

--

假定fulladder_cfg已在work目錄中,且結(jié)構(gòu)體沒(méi)有配置

COMPONENTfulladder_cfgIS

PORT(a,b,ci:INSTD_LOGIC;

s,co:OUTSTD_LOGIC);

ENDCOMPONENT;SIGNALcarry:STD_LOGIC_VECTOR(3DOWNTO1);

--定義內(nèi)部進(jìn)位信號(hào)BEGIN u1:fulladder_cfgPORTMAP(a=>ain(0),b=>bin(0),ci=>cin,s=>sum(0),co=>carry(1));u2:fulladder_cfgPORTMAP(a=>ain(1),b=>bin(1),ci=>carry(1),s=>sum(1),co=>carry(2));u3:fulladder_cfgPORTMAP(a=>ain(2),b=>bin(2),ci=>carry(2),s=>sum(2),co=>carry(3));u4:fulladder_cfgPORTMAP(a=>ain(3),b=>bin(3),ci=>carry(3),s=>sum(3),co=>count);ENDinst;5.3.2配置語(yǔ)句(續(xù)2)例5.24四位串行加法器的結(jié)5.3.2

配置語(yǔ)句(續(xù)3)例5.24四位串行加法器的結(jié)構(gòu)描述。--以下是一位全加器的結(jié)構(gòu)體配置CONFIGURATIONselOFfulladder_4IS

FORinst

FORu1,u2:fulladder_cfg

USEENTITY

WORK.fulladder_cfg(behavioral);

ENDFOR;

FOROTHERS:fulladder_cfg--本例中為u3、u4

USEENTITYWORK.fulladder_cfg(Dataflow);

ENDFOR;

ENDFOR;ENDsel;5.3.2配置語(yǔ)句(續(xù)3)例5.24四位串行加法器的結(jié)5.3.3

生成語(yǔ)句生成語(yǔ)句的語(yǔ)句格式有如下兩種形式:標(biāo)號(hào):FOR

循環(huán)變量取值范圍GENERATE

說(shuō)明語(yǔ)句

BEGIN

并行語(yǔ)句

END

GENERATE

標(biāo)號(hào);

標(biāo)號(hào):IF

條件GENERATE

說(shuō)明語(yǔ)句

BEGIN

并行語(yǔ)句

ENDGENERATE

標(biāo)號(hào);5.3.3生成語(yǔ)句生成語(yǔ)句的語(yǔ)句格式有如下兩種形式:5.3.3

生成語(yǔ)句(續(xù)1)例5.25帶異步復(fù)位、置位端的4位D觸發(fā)器的描述。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;--4位D觸發(fā)器的實(shí)體描述ENTITYASYNC_FF_4IS

PORT(D,SET

:INSTD_LOGIC_VECTOR(3DOWNTO0);

CLK,RST:INSTD_LOGIC;

Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDASYNC_FF_4;--4位D觸發(fā)器的結(jié)構(gòu)體描述ARCHITECTUREGENEROFASYNC_FF_4IS

COMPONENTASYNC_FF--需要確定ASYNC_FF已在work庫(kù)中

PORT(D,CLK,SET,RST:INSTD_LOGIC;

Q:OUTSTD_LOGIC);

ENDCOMPONENT;5.3.3生成語(yǔ)句(續(xù)1)例5.25帶異步復(fù)位、置位端5.3.3

生成語(yǔ)句(續(xù)2)例5.25帶異步復(fù)位、置位端的4位D觸發(fā)器的描述。BEGINlable:FORiIN3DOWNTO0

GENERATE

BEGIN

U1:ASYNC_FFPORTMAP(

D=>D(i),CLK=>CLK,

SET=>SET(i),RST=>RST,

Q=>Q(i));ENDGENERATElable;ENDGENER;5.3.3生成語(yǔ)句(續(xù)2)例5.25帶異步復(fù)位、置位端5.3.4

塊語(yǔ)句

塊語(yǔ)句應(yīng)用只是一種將結(jié)構(gòu)體中的并行描述語(yǔ)句進(jìn)行組合的方法,它的主要目的是改善并行語(yǔ)句及其結(jié)構(gòu)的可讀性。

塊標(biāo)號(hào):BLOCK

接口說(shuō)明

類(lèi)屬說(shuō)明 BEGIN

并行語(yǔ)句 ENDBLOCK塊標(biāo)號(hào);5.3.4塊語(yǔ)句塊語(yǔ)句應(yīng)用只是一種將結(jié)構(gòu)體5.3.4

塊語(yǔ)句(續(xù))例5.27塊語(yǔ)句應(yīng)用示例1。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;

ENTITYblock_testIS

PORT(a,b:INSTD_LOGIC; s,c:OUTSTD_LOGIC);END;

ARCHITECTUREexampleOFblock_testISBEGINrr1:BLOCK--塊定義 PORT(a1,b1:INSTD_LOGIC;--塊中的端口定義

s1:OUTSTD_LOGIC;

c1:OUTSTD_LOGIC); PORTMAP(a1=>a,b1=>b,s1=>s,c1=>c);--端口映射說(shuō)明 BEGIN

p1:PROCESS(a1,b1)--使用的是塊定義的局部變量 BEGIN

s1<=a1XORb1; ENDPROCESSp1;

p2:PROCESS(a1,b1) BEGIN

c1<=a1ANDb1; ENDPROCESSp2;ENDBLOCKrr1;ENDARCHITECTUREexample;5.3.4塊語(yǔ)句(續(xù))例5.27塊語(yǔ)句應(yīng)用示例1。本章小結(jié)結(jié)構(gòu)體描述語(yǔ)句分為順序語(yǔ)句和并行語(yǔ)句兩大基本系列,其中順序語(yǔ)句是按照代碼的書(shū)寫(xiě)順序一條一條順序執(zhí)行的,描述的是硬件電路中各支路信號(hào)傳輸?shù)奶匦?;而并行語(yǔ)句具有多進(jìn)程并發(fā)性,各并行語(yǔ)句是同時(shí)執(zhí)行的,與其書(shū)寫(xiě)順序無(wú)關(guān),很好地描述了硬件電路中各分支電路同時(shí)并行工作的特性。結(jié)構(gòu)體的描述有行為描述、數(shù)據(jù)流描述和結(jié)構(gòu)描述三種方式。行為描述語(yǔ)句包括賦值語(yǔ)句、并行信號(hào)賦值語(yǔ)句、順序控制語(yǔ)句、NULL語(yǔ)句、WAIT語(yǔ)句和進(jìn)程語(yǔ)句。結(jié)構(gòu)描述語(yǔ)句包括元件例化語(yǔ)句、配置語(yǔ)句、生成語(yǔ)句和塊語(yǔ)句。本章小結(jié)結(jié)構(gòu)體描述語(yǔ)句分為順序語(yǔ)句和并行語(yǔ)句兩大基本系列,其第五章VHDL主要描述語(yǔ)句第五章VHDL主要描述語(yǔ)句主要內(nèi)容概

述行為描述語(yǔ)句結(jié)構(gòu)描述語(yǔ)句主要內(nèi)容概述5.1

述VHDL中的描述語(yǔ)句了分為順序語(yǔ)句(SequentialStatements)和并行語(yǔ)句

(ConcurrentStatements)兩大基本系列。5.1概述VHDL中的描述語(yǔ)句了分為順序語(yǔ)句(Sequ5.2

行為描述語(yǔ)句5.2.1賦值語(yǔ)句

賦值語(yǔ)句有兩種,即信號(hào)賦值語(yǔ)句和變量賦值語(yǔ)句。每一種賦值語(yǔ)句都有三個(gè)基本組成部分,即賦值目標(biāo)、賦值符號(hào)和賦值源。信號(hào)賦值語(yǔ)句和變量賦值語(yǔ)句的語(yǔ)法格式如下:

信號(hào)賦值目標(biāo)

<=賦值源;

變量賦值目標(biāo):=賦值源;標(biāo)識(shí)符、數(shù)組元素目標(biāo)的賦值語(yǔ)句示例如下:SIGNALs1,s2:STD_LOGIC;SIGNALarray

1:STD_LOGIC_VECTOR(0TO3);PROCESS(s1)VARIABLEv1,v2:STD_LOGIC;BEGIN V1:=‘0’; V2:=‘1’; S1<=s1ANDs2; S2<=s1ORs2; array

1(0)<=V1; array

1(1)<=V2; array

1(2)<=S1; array

1(3)<=S2;

ENDPROCESS;5.2行為描述語(yǔ)句5.2.1賦值語(yǔ)句標(biāo)識(shí)符、數(shù)組元素5.2.2

并行信號(hào)賦值語(yǔ)句1.一般信號(hào)賦值語(yǔ)句

信號(hào)賦值目標(biāo)

<=延遲選項(xiàng)表達(dá)式延遲表達(dá)式;例5.1四位并行加法器的數(shù)據(jù)流描述。LIBRARY

IEEE;USE

IEEE.STD_LOGIC_1164.ALL;USE

IEEE.STD_LOGIC_UNSIGNED.ALL

ENTITYADD4IS

PORT(

A:IN

STD_LOGIC_VECTOR(3DOWNTO0);

B:IN

STD_LOGIC_VECTOR(3DOWNTO0);

CIN:IN

STD_LOGIC;

SUM:OUT

STD_LOGIC_VECTOR(

3DOWNTO0);

COUT:OUT

STD_LOGIC );ENDADD4;ARCHITECTUREADD4_concurntOFADD4IS--定義包含有進(jìn)位的SUM信號(hào)SIGNALSUMINT:STD_LOGIC_VECTOR(

4DOWNTO0);BEGIN SUMINT<=('0'&A)+('0'&B)+("0000"&CIN)AFTER10ns; COUT<=SUMINT(4)AFTER15ns; SUM<=SUMINT(3DOWNTO0)AFTER15ns;ENDADD4_concurnt;5.2.2并行信號(hào)賦值語(yǔ)句1.一般信號(hào)賦值語(yǔ)句例5.1四5.2.2

并行信號(hào)賦值語(yǔ)句(續(xù)1)2.條件信號(hào)賦值語(yǔ)句

賦值目標(biāo)

<=表達(dá)式WHEN

賦值條件ELSE

表達(dá)式WHEN

賦值條件ELSE

表達(dá)式;例5.23選1多路選擇器的行為描述。5.2.2并行信號(hào)賦值語(yǔ)句(續(xù)1)2.條件信號(hào)賦值語(yǔ)句5.2.2

并行信號(hào)賦值語(yǔ)句(續(xù)2)2.條件信號(hào)賦值語(yǔ)句

例5.23選1多路選擇器的行為描述。LIBRARY

IEEE;USEIEEE.STD_LOGIC

1164.ALL;

ENTITYmux31IS PORT(a,b,c:INSTD_LOGIC;

en1,en2:INSTD_LOGIC;

z:OUT

STD_LOGIC);ENDmux31;

ARCHITECTUREbehavioralOFmux31ISBEGIN Z<=aWHENen2='1'ELSE

bWHENen1='1'ELSE

c;ENDbehavioral;5.2.2并行信號(hào)賦值語(yǔ)句(續(xù)2)2.條件信號(hào)賦值語(yǔ)句5.2.2

并行信號(hào)賦值語(yǔ)句(續(xù)3)3.選擇信號(hào)賦值語(yǔ)句

WITH

選擇表達(dá)式SELECT

賦值目標(biāo)信號(hào)<=表達(dá)式WHEN

選擇值,

表達(dá)式WHEN

選擇值,

表達(dá)式WHEN

選擇值,

表達(dá)式WHEN

選擇值;

例5.3簡(jiǎn)易的指令譯碼器設(shè)計(jì)。5.2.2并行信號(hào)賦值語(yǔ)句(續(xù)3)3.選擇信號(hào)賦值語(yǔ)句例5.2.2

并行信號(hào)賦值語(yǔ)句(續(xù)4)3.選擇信號(hào)賦值語(yǔ)句

例5.3簡(jiǎn)易的指令譯碼器設(shè)計(jì)。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;

ENTITYDECODERIS PORT(A,B,C

:INSTD_LOGIC;

data1,data2:INSTD_LOGIC;

data_out

:OUTSTD_LOGIC);ENDDECODER;

ARCHITECTUREbehavioralOFDECODERIS SIGNALinstruction:STD_LOGIC_VECTOR(0TO2); BEGIN Instruction<=A&B&C;

WITHinstructionSELECT data_out<=NOTdata1

WHEN"000",

data1ANDdata2

WHEN"001",

data1ORdata2

WHEN"010",

data1NANDdata2

WHEN"011",

data1NORdata2

WHEN"100",

data1XORdata2

WHEN"101",

data1XNORdata2

WHEN"110",

‘Z’

WHEN

OTHERS;ENDbehavioral;5.2.2并行信號(hào)賦值語(yǔ)句(續(xù)4)3.選擇信號(hào)賦值語(yǔ)句5.2.3順序控制語(yǔ)句1.IF語(yǔ)句第一種形式:IF

條件THEN --順序語(yǔ)句;

ELSE --順序語(yǔ)句;ENDIF;第二種形式:IF

條件THEN

--順序語(yǔ)句;

ENDIF;第三種形式:IF

條件THEN --順序語(yǔ)句;

ELSIF條件THEN --順序語(yǔ)句;

… ELSE --順序語(yǔ)句;ENDIF;第四種形式:IF

條件THEN --順序語(yǔ)句;

ELSIF條件THEN --順序語(yǔ)句;

…ENDIF;5.2.3順序控制語(yǔ)句1.IF語(yǔ)句第一種形式:第二種形1.IF語(yǔ)句(續(xù)1)例5.4采用兩種不同IF語(yǔ)句結(jié)構(gòu)實(shí)現(xiàn)同一結(jié)構(gòu)和功能的數(shù)據(jù)選擇器。ENTITYif_statementISPORT(A,B,C,X:IN

BIT_VECTOR(3DOWNTO0);Z:OUTBIT_VECTOR(3DOWNTO0));ENDif_statement;ARCHITECTUREexample1OFif_statementISBEGIN PROCESS(A,B,C,X) BEGIN Z<=A;

IF(X="1111")THEN

Z<=B;

ELSIF(X>"1000")THEN

Z<=C;

ENDIF; ENDPROCESS;

ENDexample1;1.IF語(yǔ)句(續(xù)1)例5.4采用兩種不同IF語(yǔ)句結(jié)構(gòu)實(shí)現(xiàn)1.IF語(yǔ)句(續(xù)2)例5.4采用兩種不同IF語(yǔ)句結(jié)構(gòu)實(shí)現(xiàn)同一結(jié)構(gòu)和功能的數(shù)據(jù)選擇器。ARCHITECTUREexample2OFif_statementISBEGINPROCESS(A,B,C,X)

BEGIN

IF(X="1111")THEN

Z<=B;

ELSIF(X>"1000")THEN

Z<=C;

ELSE

Z<=A;

ENDIF;ENDPROCESS;ENDexample2;1.IF語(yǔ)句(續(xù)2)例5.4采用兩種不同IF語(yǔ)句結(jié)構(gòu)實(shí)現(xiàn)1.IF語(yǔ)句(續(xù)3)例5.5利用IF語(yǔ)句的多分支嵌套實(shí)現(xiàn)四選一多路選擇器。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;

ENTITYMUX_41IS

PORT(S1,S0,A,B,C,D:INSTD_LOGIC;

Z:OUTSTD_LOGIC);ENDMUX_41;ARCHITECTUREBEHAV_MUX41OFMUX_41ISBEGINP1:PROCESS(S1,S0,A,B,C,D)

BEGIN

IFS1='0'ANDS0='0'THEN Z<=A;

ELSIFS1='0'ANDS0='1'THEN Z<=B;

ELSIFS1='1'ANDS0='0'THEN Z<=C;

ELSE Z<=D;

ENDIF;

ENDPROCESSP1;ENDBEHAV_MUX41;1.IF語(yǔ)句(續(xù)3)例5.5利用IF語(yǔ)句的多分支嵌套實(shí)現(xiàn)1.IF語(yǔ)句(續(xù)4)例5.6利用IF語(yǔ)句的多分支嵌套實(shí)現(xiàn)四選一多路選擇器的錯(cuò)誤示例。P1:PROCESS(S1,S0,A,B,C,D)

BEGIN

IFS1='0'ANDS0='0'THEN Z<=A;

ELSIFS1='0'ANDS0='1'THEN Z<=B;

ELSIFS1='1'ANDS0='0'THEN Z<=C;

ELSIFS1='1'ANDS0='1'THEN Z<=D;

ENDIF;

ENDPROCESSP1;1.IF語(yǔ)句(續(xù)4)例5.6利用IF語(yǔ)句的多分支嵌套實(shí)現(xiàn)5.2.3

順序控制語(yǔ)句2.CASE語(yǔ)句CASE

表達(dá)式

ISWHEN

選擇值_1=>順序語(yǔ)句;WHEN

選擇值_2|選擇值_3=>順序語(yǔ)句;WHEN

選擇值_4TO選擇值_N=>順序語(yǔ)句;WHEN

OTHERS=>順序語(yǔ)句;ENDCASE;選擇值可以有四種不同的表達(dá)方式:單個(gè)普通數(shù)值,如選擇值_1;并列數(shù)值,如選擇值_2|選擇值_3,表示取值為選擇值_2或者選擇值_3;數(shù)值選擇范圍,如選擇值_4TO選擇值_N,表示取值可以是該范圍中的任意一個(gè);混合方式,以上三種方式的混合。5.2.3順序控制語(yǔ)句2.CASE語(yǔ)句CASE表達(dá)2.CASE

語(yǔ)句(續(xù)1)例5.7CASE語(yǔ)句描述的8線(xiàn)-3線(xiàn)編碼器。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;

ENTITY

encoder_83ISPORT(s:IN

STD_LOGIC_VECTOR(7DOWNTO0);z:OUT

STD_LOGIC_VECTOR(2DOWNTO0));ENDencoder_83;

ARCHITECTUREbehavioralOFencoder_83ISBEGIN PROCESS(s)

BEGIN CASEsIS

WHEN"11111110"=>z<="000"; WHEN"11111101"=>z<="001"; WHEN"11111011"=>z<="010"; WHEN"11110111"=>z<="011"; WHEN"11101111"=>z<="100"; WHEN"11011111"=>z<="101"; WHEN"10111111"=>z<="110"; WHEN"01111111"=>z<="111"; WHENOTHERS=>z<="XXX"; ENDCASE; ENDPROCESS;ENDbehavioral;2.CASE語(yǔ)句(續(xù)1)例5.7CASE語(yǔ)句描述的82.CASE

語(yǔ)句

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論