It計(jì)算機(jī)課件 第四章 VHDL基本描述語(yǔ)句_第1頁(yè)
It計(jì)算機(jī)課件 第四章 VHDL基本描述語(yǔ)句_第2頁(yè)
It計(jì)算機(jī)課件 第四章 VHDL基本描述語(yǔ)句_第3頁(yè)
It計(jì)算機(jī)課件 第四章 VHDL基本描述語(yǔ)句_第4頁(yè)
It計(jì)算機(jī)課件 第四章 VHDL基本描述語(yǔ)句_第5頁(yè)
已閱讀5頁(yè),還剩181頁(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)介

第4章VHDL基本描述語(yǔ)句

第四章VHDL基本描述語(yǔ)句

4.1順序描述語(yǔ)句

4.2并行描述語(yǔ)句

4.3屬性描述語(yǔ)句

濫認(rèn)第4章VHDL基本描述語(yǔ)句______________________

4.1VHDL順序語(yǔ)句

順序語(yǔ)句(SequentialStaements)和并行語(yǔ)句(Concurrent

Statements)是VHDL程序設(shè)計(jì)中兩大基本描述語(yǔ)句系列。在

邏輯系統(tǒng)的設(shè)計(jì)中,這些語(yǔ)句從多側(cè)面完整地描述數(shù)字系統(tǒng)

的硬件結(jié)構(gòu)和基本邏輯功能,其中包括通信的方式、信號(hào)的

賦值、多層次的元件例化以及系統(tǒng)行為等。

順序語(yǔ)句是相對(duì)于并行語(yǔ)句而言的,其特點(diǎn)是每一條順

序語(yǔ)句的執(zhí)行(指仿真執(zhí)行)順序是與它們的書寫順序基本一致

的。

在理解過(guò)程中要注意區(qū)分VHDL語(yǔ)言的軟件行為及描述綜

合后的硬件行為間的差異。

第4章VHDL基本描述語(yǔ)句

順序語(yǔ)句只能出現(xiàn)在進(jìn)程(Process)和子程序中。在

VHDL中,一個(gè)進(jìn)程是由一系列順序語(yǔ)句構(gòu)成的,在同一設(shè)

計(jì)實(shí)體中,所有的進(jìn)程是并行執(zhí)行的。然而任一給定的時(shí)

刻內(nèi),在每一個(gè)進(jìn)程內(nèi),只能執(zhí)行一條順序語(yǔ)句。一個(gè)進(jìn)

程與其設(shè)計(jì)實(shí)體的其他部分進(jìn)行數(shù)據(jù)交換的方式只能通過(guò)

信號(hào)或端口。如果要在進(jìn)程中完成某些特定的算法和邏輯

操作,也可以通過(guò)依次調(diào)用子程序來(lái)實(shí)現(xiàn),但子程序本身

并無(wú)順序和并行語(yǔ)句之分。利用順序語(yǔ)句可以描述邏輯系

統(tǒng)中的組合邏輯、時(shí)序邏輯或它們的綜合體。

VHDL有如下六類基本順序語(yǔ)句:賦值語(yǔ)句;轉(zhuǎn)向控制

語(yǔ)句;等待語(yǔ)句;子程序調(diào)用語(yǔ)句;返回語(yǔ)句;空操作語(yǔ)

句?!D一-

濫認(rèn)第4章VHDL基本描述語(yǔ)句______________________

4.4.1WAIT語(yǔ)句

進(jìn)程的運(yùn)行要么處于執(zhí)行狀態(tài),要么處于掛起狀態(tài),進(jìn)程

的執(zhí)行是由敏感信號(hào)列表來(lái)觸發(fā)的,所以此時(shí)進(jìn)程的同步點(diǎn)

由敏感信號(hào)列表來(lái)控制,這是一種隱式同步,同步點(diǎn)

在“ENDPROCESS[進(jìn)程名廠這一行上。

當(dāng)進(jìn)程沒有敏感信號(hào)表時(shí),進(jìn)程的狀態(tài)就由WAIT來(lái)控制,

這是一顯式同步,同步點(diǎn)在“WAIT語(yǔ)句”這一行上。

在進(jìn)程中(包括過(guò)程中),當(dāng)執(zhí)行到WAIT等待語(yǔ)句時(shí),運(yùn)

行程序?qū)⒈粧炱?,直到滿足此語(yǔ)句設(shè)置的結(jié)束掛起條件后,

將重新開始執(zhí)行進(jìn)程或過(guò)程中的程序。VHDL規(guī)定,已列出敏

感量的進(jìn)程中不能使用任何形式的WAIT語(yǔ)句。

第4章VHDL基本描述語(yǔ)句______________________

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

如果在進(jìn)程中僅僅使用WAIT語(yǔ)句而沒有其它條件使

進(jìn)程跳出等待,則進(jìn)程將進(jìn)入無(wú)限等待狀態(tài),這是正常的

程序設(shè)計(jì)中應(yīng)該避免的,此時(shí)電路仿真表現(xiàn)為“死機(jī)”。

cwaitl:PROCESS

BEGIN

y<=(aANDb)OR(mXORt);

zv=cNANDd;

WAIT;—無(wú)限等待

ENDPROCESScwaitl;

小缸第4章VHDL基本描述語(yǔ)句______________________

2.WAITFOR語(yǔ)句說(shuō)明

WAITFOR時(shí)間表達(dá)式為超時(shí)語(yǔ)句,在此語(yǔ)句中定義了一

個(gè)時(shí)間段,從執(zhí)行到當(dāng)前的WAIT語(yǔ)句開始,在此時(shí)間段

內(nèi),進(jìn)程處于掛起狀態(tài),當(dāng)超過(guò)這一時(shí)間段后,進(jìn)程自動(dòng)

恢復(fù)執(zhí)行。(此語(yǔ)句不可綜合)

cwait2:PROCESS

BEGIN

yv=(aANDb)OR(mXORt);

zv=cNANDd;

WAITFOR10*(ctl+ct2);--等待由該表達(dá)式

計(jì)算的時(shí)間

ENDPROCESScwait2;

茄k第4章VHDL基本描述語(yǔ)句______________________

3.WAITON語(yǔ)句說(shuō)明

WAITON信號(hào)[,信號(hào)],稱為敏感信號(hào)等待語(yǔ)句,

在信號(hào)表中列出的信號(hào)是等待語(yǔ)句的敏感信號(hào)。

當(dāng)進(jìn)程執(zhí)行該等待語(yǔ)句時(shí),進(jìn)程被掛起,然后等待敏

感信號(hào)的變化(如從0?1或從1?0的變化),只要進(jìn)程表中的

信號(hào)有一個(gè)發(fā)生變化,進(jìn)程將結(jié)束掛起,繼續(xù)執(zhí)行WAIT

ON語(yǔ)句后面的語(yǔ)句。

如:WAITONSI,S2;

表示當(dāng)SI或S2中任一信號(hào)發(fā)生改變時(shí),就恢復(fù)執(zhí)行

WAIT語(yǔ)句之后的語(yǔ)句。

?k第4章VHDL基本描述語(yǔ)句

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYmux2_lIS

P0RT(data09datal:INSTDLOGIC;

sei:INSTDLOGIC;

q:OUTSTDLOGIC);

ENDmux21;

茄k第4章VHDL基本描述語(yǔ)句______________________

ARCHITECTUREbehavioralOFmux2_lIS

SIGNALtemp1,temp2,temp3:STDLOGIC;

BEGIN

cwait3:PROCESS

BEGIN

tempiv=dataOANDsei;

temp2v=datalAND(NOTsei);

temp3<=tempiORtemp2;

q<=temp3;

WAITONdataO,data1,q;

ENDPROCESScwait3;

ENDbehavioral;

茄k第4章VHDL基本描述語(yǔ)句______________________

WAITON語(yǔ)句和PROCESS語(yǔ)句中所使用的敏感信號(hào)列表的對(duì)比

ARCHITECTUREbehavioralOFmux2_lIS

SIGNALtemp1,temp2,temp3:STDLOGIC;

BEGIN

cwait4:PROCESS(dataO,datal,q)

BEGIN

tempi<=dataOANDsei;

temp2<=datalAND(NOTsei);

temp3v二tempiORtemp2;

q<=temp3;

ENDPROCESScwait4;

ENDbehavioral;

第4章VHDL基本描述語(yǔ)句______________________

…。4.WAITUNTIL語(yǔ)句說(shuō)明

WAITUNTIL條件表達(dá)式;稱為條件等待語(yǔ)句,該語(yǔ)

句將把進(jìn)程掛起,直到條件表達(dá)式中所含信號(hào)發(fā)生了改變,

并且條件表達(dá)式為真時(shí),進(jìn)程才能脫離掛起狀態(tài),恢復(fù)執(zhí)

行WAIT語(yǔ)句之后的語(yǔ)句。

條件表達(dá)式中至少應(yīng)該包含一個(gè)信號(hào)量,否則該表達(dá)

式在進(jìn)程被掛起后就不再計(jì)算。

一般地,只有WAIT_UNTIL格式的等待語(yǔ)句可以被綜

合器接受(其余語(yǔ)句格式只能在VHDL仿真器中使用)。

一般地,在一個(gè)進(jìn)程中使用了WAIT語(yǔ)句后,經(jīng)綜合就

會(huì)產(chǎn)生時(shí)序邏輯電路。時(shí)序邏輯電路的運(yùn)行依賴于時(shí)鐘的

上升沿或下降沿,同時(shí)還具有數(shù)據(jù)存儲(chǔ)的功能。

小缸第4章VHDL基本描述語(yǔ)句______________________

ARCHITECTUREbehavioralOFexamplewaituntilIS

SIGNALtemp:INTEGER;

BEGIN

cwait5:PROCESS

BEGIN

*

*

WAITUNTIL((temp+5)>=20);該表

達(dá)式是布爾表達(dá)式

ENDPROCESScwait5;

ENDbehavioral;

濫認(rèn)第4章VHDL基本描述語(yǔ)句______________________

WAITUNTILENABLE=1;進(jìn)程的啟動(dòng)條件是ENABLE出現(xiàn)一個(gè)上跳

信號(hào)沿。

PROCESS

BEGIN

WAITUNTILCLK=1;

AVE〈=A;該進(jìn)程將完成一個(gè)

WAITUNTILCLK=T;硬件求平均的功能,每

〈=;

AVEAVE+A一個(gè)時(shí)鐘脈沖由A輸入一

WAITUNTILCLK=1;

個(gè)數(shù)值,4個(gè)時(shí)鐘脈沖后

AVE〈=AVE+A;

WAITUNTILCLK=T;將獲得此4個(gè)數(shù)值的平均

AVE<=(AVE+A)/4;值。

ENDPROCESS;

茄k第4章VHDL基本描述語(yǔ)句______________________

4.1.2代入語(yǔ)句

信號(hào)代入語(yǔ)句格式:

目的信號(hào)量<=信號(hào)量表達(dá)式;

表示把右邊的信號(hào)量表達(dá)式的值代入到目的信號(hào)量。

SIGNALA,B:STD_LOGIC_VECTOR(1TO4);

A(1T02)v="10”;一等效于A(1):=T,A(2):=609

A(4DOWNTOl)<=n1011n;

tempO<=aNANDb;

茄k第4章VHDL基本描述語(yǔ)句______________________

信號(hào)和變量不同,信號(hào)具有全局性特征,它不但可以

作為一個(gè)設(shè)計(jì)實(shí)體內(nèi)部各單元之間數(shù)據(jù)傳送的載體,而且

可通過(guò)信號(hào)與其他的實(shí)體進(jìn)行通信(端口本質(zhì)上也是一種信

號(hào))。信號(hào)的賦值并不是立即發(fā)生的,它發(fā)生在一個(gè)進(jìn)程結(jié)

束時(shí)。賦值過(guò)程總是有某種延時(shí)的,它反映了硬件系統(tǒng)并

不是立即發(fā)生的,它發(fā)生在一個(gè)進(jìn)程結(jié)束時(shí)。賦值過(guò)程總

是有某些延時(shí)的,它反映了硬件系統(tǒng)的重要特性,綜合后

可以找到與信號(hào)對(duì)應(yīng)的硬件結(jié)構(gòu),如一根傳輸導(dǎo)線、一個(gè)

輸入輸出端口或一個(gè)D觸發(fā)器等。

第4章VHDL基本描述語(yǔ)句______________________

4.1.3賦值語(yǔ)句

變量賦值語(yǔ)句格式:

變量賦值目標(biāo)尸賦值源;

表示把右邊的變量表達(dá)式的值代入到目的變量。

濫認(rèn)第4章VHDL基本描述語(yǔ)句______________________

cfuzhi:PROCESS

BEGIN

tempO:=cvolt;—變量直接賦值

tempi:=(cvolt+1.8)*ccurrent;一變量表達(dá)式賦值

temp2:=c+78;

temp3:=c/5;—此時(shí)c必須是5的倍數(shù)

temp4:=d;

temp5:=temp4(2);

ENDPROCESScfuzhi;

ENDbehavioral;

濫認(rèn)第4章VHDL基本描述語(yǔ)句______________________

變量賦值與信號(hào)賦值的區(qū)別

(1)變量只能在進(jìn)程、子程序中使用,無(wú)法將其值傳遞到進(jìn)

程之外。信號(hào)具有全局性特征,它不但可以作為一個(gè)設(shè)計(jì)實(shí)體

內(nèi)部各單元之間數(shù)據(jù)傳送的載體,而且可通過(guò)信號(hào)與其他的實(shí)

體進(jìn)行通信。

(2)對(duì)變量的賦值是立即發(fā)生的(假設(shè)進(jìn)程已啟動(dòng)),即是一

種時(shí)間延遲為零的賦值行為。對(duì)信號(hào)的賦值不是立即發(fā)生的,

它發(fā)生在一個(gè)進(jìn)程結(jié)束時(shí),賦值過(guò)程總是有某種延時(shí)的,它反

映了硬件系統(tǒng)并不是立即發(fā)生的,對(duì)應(yīng)了硬件系統(tǒng)的重要特性。

第4章VHDL基本描述語(yǔ)句

在某些條件下變量賦值行為與信號(hào)賦值行為所產(chǎn)生的

硬件結(jié)果是相同的,如都可以向系統(tǒng)引入寄存器。

在信號(hào)賦值中,需要注意的是,當(dāng)在同一進(jìn)程中,同

一信號(hào)賦值目標(biāo)有多個(gè)賦值源時(shí),信號(hào)賦值目標(biāo)獲得的是

最后一個(gè)賦值源的賦值,其前面相同的賦值目標(biāo)不作任何

變化。

茄k第4章VHDL基本描述語(yǔ)句__________________

ARCHITECTUREbehavioralOFexampleduibiIS

SIGNALdO,dl,d2,d3:STDLOGIC;--定義信號(hào)

SIGNALqO,ql:STDLOGIC;

BEGIN

cduibi_l:PROCESS(dO,dl,d2,d3)

BEGIN

d2<=dO;-信號(hào)量代入進(jìn)程cduibi_l的

運(yùn)行結(jié)果:一

qO<=d2ORd3;

qO=dlORd3

d2<=dl;-信號(hào)量代入ql=dlORd3

ql<=d2ORd3;

ENDPROCESScduibi_l;

癡k第4章VHDL基本描述語(yǔ)句

cduibi_2:PROCESS(dO,dl,d3)

VARIABLEm2:STDLOGIC;

BEGIN

m2:=dO;—變量賦值

qO<=m2ORd3;

m2:=dl;-變量賦值

進(jìn)程cduibi_2的

ql<=m2ORd3;運(yùn)行結(jié)果:一

ENDPROCESScduibi_2;qO=dOORd3

ql=dlORd3

ENDbehavioral;

第4章VHDL基本描述語(yǔ)句______________________

4.1.4IF語(yǔ)句

IF語(yǔ)句是一種條件語(yǔ)句,它根據(jù)語(yǔ)句中所設(shè)置的一種

或多種條件,有選擇地執(zhí)行指定的順序語(yǔ)句。

1.單IF語(yǔ)句

格式:IF條件THEN

順序語(yǔ)句;

ENDIF;

當(dāng)條件成立時(shí),執(zhí)行所包含的順序語(yǔ)句。如果條件不

成立,程序則跳過(guò)該IF語(yǔ)句所包含的順序語(yǔ)句向下繼續(xù)執(zhí)

行后續(xù)的語(yǔ)句。

第4章VHDL基本描述語(yǔ)句

LIBRARYIEEE;

USEIEEE.STDL0GIC1164.ALL;

ENTITYcdfflIS

PORT(d:INSTDLOGIC;

elk:INSTDLOGIC;

q:OUTSTDLOGIC;

qnot:OUTSTDLOGIC);

ENDcdffl;

茄k第4章VHDL基本描述語(yǔ)句______________________

ARCHITECTUREdataflowOFcdfflIS

BEGIN

cd叱example:PROCESS(elk)

BEGIN

IF(cl^EVENTANDclk=T)THEN一單IF語(yǔ)句

qv=d;

qnotv=NOTd;

ENDIF;

ENDPROCESScdffLexample;

ENDdataflow;

癡k第4章VHDL基本描述語(yǔ)句

力證第4章VHDL基本描述語(yǔ)句______________________

2.二選擇的IF語(yǔ)句

IF條件THEN

順序語(yǔ)句1;

ELSIF

順序語(yǔ)句2;

ENDIF;

條件成立時(shí)執(zhí)行順序語(yǔ)句1;條件不成立時(shí)執(zhí)行順序語(yǔ)

句2o

第4章VHDL基本描述語(yǔ)句

LIBRARYIEEE;-二選一選擇器

USEIEEE.STDL0GIC1164.ALL;

ENTITYmux2_2IS

PORT(a0,al:INBIT;

sei:INBIT;

q:OUTBIT);

ENDmux2_2;

癡k第4章VHDL基本描述語(yǔ)句

ARCHITECTURErtlOFmux2_2IS

BEGIN

cmux2_2:PROCESS(aO,al,sei)

BEGIN

IF(sei=fr)THEN一二選擇的IF語(yǔ)句

qv=aO;

ELSE

q<=al;

ENDIF;

ENDPROCESScmux2_2;

ENDrtl;

?k第4章VHDL基本描述語(yǔ)句

wsei1

i>"a10wwwLnArLnjwwmMiwuwmjwuu

aO0n_jn_n_ru

-Oq0JUWLfWWUUmwwwuwu

癡第4章VHDL基本描述語(yǔ)句

3.多選擇IF語(yǔ)句

IF條件1THEN

順序語(yǔ)句1;當(dāng)條件1成立時(shí),

ELSIF條件2THEN就執(zhí)行順序語(yǔ)句1;

順序語(yǔ)句2;否則判斷條件語(yǔ)句

2,如成立則執(zhí)行

順序語(yǔ)句2;依此

ELSIF條件nTHEN類推,如條件都不

順序語(yǔ)句n;成立,則執(zhí)行順序

ELSE語(yǔ)句n+1

順序語(yǔ)句n+1;

ENDIF;

茄k第4章VHDL基本描述語(yǔ)句______________________

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYmux4_lIS

P0RT(aO,al,a2,a3:INSTDLOGIC;

sei:INSTDLOGICVECTOR(1DOWNTO0);

q:OUTSTDLOGIC);

ENDmux4_l;

茄k第4章VHDL基本描述語(yǔ)句______________________

ARCHITECTURErtlOFmux4_lIS

BEGIN

cmux4_l:PROCESS(aO,al,a2,a3,sei)

BEGIN

IF(sei=”00")THEN-多選擇的IF語(yǔ)句

qv=aO;

ELSIF(sei="01”)THEN

q<=al;

ELSIF(sei="10")THEN

q<=a2;

ELSE

q<=a3;

ENDIF;

ENDPROCESScmux4_l;

ENDrtl;

信第4章VHDL基本描述語(yǔ)句

---------------------------------、1二r...―—?…,.-T"7-TT-

4.IF語(yǔ)句的嵌套結(jié)構(gòu)

IF外部條件THEN

IF內(nèi)部條件1THEN

順序語(yǔ)句1;

ENDIF;

ELSE

IF內(nèi)部條件2THEN

順序語(yǔ)句2;

ENDIF;

ENDIF;

濫認(rèn)第4章VHDL基本描述語(yǔ)句______________________

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYmux4_2IS

P0RT(cdata:INSTDLOGICVECTOR(3DOWNTO0);

sei:INSTDLOGICVECTOR(1DOWNTO0);

creset:INSTDLOGIC;

q:OUTSTDLOGIC);

ENDmux4_2;

曲第4章VHDL基本描述語(yǔ)句______________________

^ARCHITECTURErtlOFmux4_2IS

BEGIN

cmux4_2:PROCESS(cdata,sei,creset)

BEGIN

IF(creset=T)THEN

IF(sei=”00")THEN-多選擇的IF語(yǔ)句

q<=cdata(0);

ELSIF(sei="01")THEN

q<=cdata(1);

ELSIF(sei=”10")THEN

q<=cdata(2);

ELSE

q<=cdata(3);

ENDIF;

ELSE

q<=O;

ENDIF;

ENDPROCESScmux4_2;

ENDrtk

?k第4章VHDL基本描述語(yǔ)句

小缸第4章VHDL基本描述語(yǔ)句______________________

4.1.5CASE語(yǔ)句

CASE語(yǔ)句根據(jù)滿足的條件直接選擇多項(xiàng)順序語(yǔ)句中

的一項(xiàng)執(zhí)行。

CASE語(yǔ)句的結(jié)構(gòu)如下:

CASE表達(dá)式IS

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

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

???

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

[WHENOTHERS=>順序語(yǔ)句n+1;]

ENDCASE;

第4章VHDL基本描述語(yǔ)句

當(dāng)執(zhí)行到CASE語(yǔ)句時(shí),首先計(jì)算表達(dá)式的值,然后根

據(jù)條件句中與之相同的選擇值,執(zhí)行對(duì)應(yīng)的順序語(yǔ)句,最后

結(jié)束CASE語(yǔ)句。

條件句中的“=>”不是操作符,它只相當(dāng)于“THEN”的作

用。

選擇值可以有四種不同的表達(dá)方式:

①單個(gè)普通數(shù)值,如4;

②數(shù)值選擇范圍,如(2TO4),表示取值2、3或4;

③并列數(shù)值,如3|5,表示取值為3或者5;

④混合方式,以上三種方式的混合。

茄k第4章VHDL基本描述語(yǔ)句______________________

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYmux4_3IS

P0RT(cdata:INSTDLOGICVECTOR(3DOWNTO0);

sei:INSTDLOGICVECTOR(1DOWNTO0);

q:OUTSTDLOGIC);

ENDmux4_3;

ARCHITECTURErtl_mux4OFmux4_3IS

SIGNALtempsei:INTEGERRANGE0TO3;

BEGIN

茄k第4章VHDL基本描述語(yǔ)句

cmux4_3:PROCESS(cdata,sei)

BEGIN

PROCESS(cdata,sei)

tempseiv='O';

IF(sei(0)=T)THENBEGIN

tempsei<=tempsei+1;CASEseiIS

ENDIF;WHENn00n=>q<=cdata(0);

IF(sei⑴=T)THENWHENn01n=>q<=cdata(0);

temp_sel<=temp_sel+2;WHENn10n=>q<=cdata(0);

ENDIF;WHEN”11'=>qv=cdata(0);

CASEtemp_selIS

WHEN0=>qv=cdata(0);WHENOTHERS=>q<='0';

WHEN1=>q<=cdata(1);ENDCASE;

WHEN2=>q<=cdata(2);ENDPROCESS;

WHEN3=>q<=cdata(3);

WHENOTHERS=>qv=q

ENDCASE;

ENDPROCESScmux4_3;

ENDrtlmux4;

IB9

濫認(rèn)第4章VHDL基本描述語(yǔ)句______________________

使用CASE語(yǔ)句需注意以下幾點(diǎn):

(1)條件句中的選擇值必須在表達(dá)式的取值范圍內(nèi)。

(2)除非所有條件句中的選擇值能完整覆蓋CASE語(yǔ)句中表

達(dá)式的取值,否則最末一個(gè)條件句中的選擇必須用

“OTHERS”表示。這樣可以避免綜合器插入不必要的寄存

器。對(duì)于定義為STDJLOGIC和STD_LOGIC_VECTOR數(shù)據(jù)

類型的數(shù)據(jù)對(duì)象,其取值除了1和0以外,還可能有高阻態(tài)Z、

不定態(tài)X等。

(3)CASE語(yǔ)句中每一條件句的選擇只能出現(xiàn)一次,不能有

相同選擇值的條件語(yǔ)句出現(xiàn)。

(4)CASE語(yǔ)句執(zhí)行中必須選中,且只能選中所列條件語(yǔ)句

中的一條。這表明CASE語(yǔ)句中至少要包含一個(gè)條件語(yǔ)句。

茄k第4章VHDL基本描述語(yǔ)句______________________

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYcdecoder_3_8IS

PORT(d:INSTDLOGICVECTOR(2DOWNTO0);

G1:INSTDLOGIC;

G2A,G2B:INSTDLOGIC;

q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDENTITYcdecoder_3_8;_VHDL1993版可以這么用

ARCHITECTURErtl_cdecoder_3_8OFcdecoder_3_8IS

BEGIN

PROCESS(d,Gl,G2A,G2B)

BEGIN

茄k第4章VHDL基本描述語(yǔ)句______________________

IF(Gl=TANDG2A=UANDG2B=O)THEN-譯碼器的使能信號(hào)

CASEdIS-CASE語(yǔ)句的控制表達(dá)式是位矢量d

WHEN“000”=>q<="11111110";

WHEN“001”=>qv="11111101”;

WHEN“010”=>q<="11111011";

WHEN"OH"=>q<=011110111";

WHEN“100”=>q<-"11101111";

WHEN“101”=>qv=”11011111”;

WHEN“110”=>q<="10111111";

WHEN"UI"=>q<="01111111";

WHENOTHERS=>qv="XXXXXXXX”;

ENDCASE;

ELSE

q<=nl1111111";

ENDIF;

ENDPROCESS;

ENDASiajTECTURErtlcdecoder38;--VHDL1993版可以這么用

第4章VHDL基本描述語(yǔ)句

與IF語(yǔ)句相比,CASE語(yǔ)句組的程序可讀性比較好,這

是因?yàn)樗褩l件中所有可能出現(xiàn)的情況全部列出來(lái)了,可

執(zhí)行條件一目了然。而且CASE語(yǔ)句的執(zhí)行過(guò)程不像IF語(yǔ)句

那樣有一個(gè)逐項(xiàng)條件順序比較的過(guò)程。CASE語(yǔ)句中條件句

的次序是不重要的,它的執(zhí)行過(guò)程更接近于并行方式。一

般地,綜合后,對(duì)相同的邏輯功能,CASE語(yǔ)句比IF語(yǔ)句的

描述耗用更多的硬件資源,而且有的邏輯,CASE語(yǔ)句無(wú)法

描述,只能用IF語(yǔ)句來(lái)描述。這是因?yàn)镮F_THEN_ELSIF語(yǔ)

句具有條件相與的功能和自動(dòng)將邏輯值“?。酆雎裕莅ㄟM(jìn)去

的功能(邏輯值“,有利于邏輯化簡(jiǎn)),而CASE語(yǔ)句只有條

件相或的功能。

第4章VHDL基本描述語(yǔ)句______________________

4.1.6FORLOOP語(yǔ)句

FORLOOP語(yǔ)句可以使所包含的一組順序語(yǔ)句被循環(huán)

執(zhí)行,循環(huán)的次數(shù)受迭代算法的控制。其語(yǔ)句格式如下:

[標(biāo)號(hào):]FOR循環(huán)變量IN離散范圍LOOP

順序語(yǔ)句;

ENDLOOP[標(biāo)號(hào)];

循環(huán)變量的值在每次循環(huán)中都會(huì)發(fā)生變化,而離散范

圍表示循環(huán)變量在循環(huán)過(guò)程中的取值范圍;循環(huán)變量是整

數(shù)變量。

濫認(rèn)第4章VHDL基本描述語(yǔ)句______________________

例4-16偶校驗(yàn)

LIBRARYIEEE;

USEIEEE.STDL0GIC1164.ALL;

ENTITYcparitylIS

PORT(cdata:INSTDLOGICVECTOR(31DOWNTO0);

q:OUTSTDLOGIC;

qnot:OUTSTDLOGIC);

ENDENTITYcparityl;

ARCHITECTURErtlcparityOFcparitylIS

BEGIN

茄k第4章VHDL基本描述語(yǔ)句

cparityexample:PROCESS(cdata)

VARIABLEtemp:STDLOGIC;

BEGIN

temp:=T;

FORiINOTO31LOOP

temp:=tempXORcdata(i);

ENDLOOP;

qv=temp;

qnotv=NOTtemp;

ENDPROCESScparityexample;

ENDARCHITECTURErtlcparity;

第4章VHDL基本描述語(yǔ)句______________________

4.1.7WHILELOOP語(yǔ)句

格式:

[標(biāo)號(hào):]WHILE條件表達(dá)式LOOP

順序語(yǔ)句;

ENDLOOP[標(biāo)號(hào)];

如果條件表達(dá)式的值為“真”,則一直進(jìn)行循環(huán);如

果條件表達(dá)式的值為“假”,則結(jié)束循環(huán);

癡k第4章VHDL基本描述語(yǔ)句

例4-17

VARIABLEsumtemp:INTEGER:=0;

VARIABLEi:INTEGER:=0;

BEGIN

sumexample:WHILE(i<100)LOOP

sumtemp:=sumtemp+i;

i:=i+1;

ENDLOOPsumexample;

ENDPROCESS;

缸第4章VHDL基本描述語(yǔ)句

例"二18奇校驗(yàn)―

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYcparity2IS

P0RT(cdata:INSTDLOGICVECTOR(31DOWNTO0);

q:OUTSTDLOGIC;

qnot:OUTSTDLOGIC);

ENDENTITYcparity2;

ARCHITECTUREbehavcparitylOFcparity2IS

BEGIN

茄k第4章VHDL基本描述語(yǔ)句______________________

cparityexample:PROCESS(cdata)

VARIABLEtemp:STDLOGIC;

VARIABLEi:INTEGER;―必須要有,不能省略

BEGIN

temp:='O';

i:=0;

WHILE(i<32)LOOP

temp:=tempXORcdata(i);

i:=i+1;

ENDLOOP;

qv=temp;

qnotv=NOTtemp;

ENDPROCESScparityexample;

ENDARCHITECTUREbehavcparityl;

濫認(rèn)第4章VHDL基本描述語(yǔ)句______________________

4.1.8NEXT語(yǔ)句

NEXT語(yǔ)句主要用在FORLOOP和WHILELOOP循環(huán)語(yǔ)句

中跳出本次循環(huán),而執(zhí)行下一次新的循環(huán),是一種循環(huán)內(nèi)部的

控制語(yǔ)句。它的語(yǔ)句格式:

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

(1)無(wú)標(biāo)號(hào)和無(wú)WHEN時(shí),則執(zhí)行NEXT語(yǔ)句時(shí),即刻

無(wú)條件終止當(dāng)前的循環(huán),跳回到本次循環(huán)LOOP語(yǔ)句開始處,

開始下一次循環(huán)。

(2)有標(biāo)號(hào)和無(wú)WHEN時(shí),跳轉(zhuǎn)到指定標(biāo)號(hào)的LOOP語(yǔ)

句開始處,重新開始執(zhí)行循環(huán)操作。

(3)無(wú)標(biāo)號(hào)和有WHEN時(shí),當(dāng)條件表達(dá)式的值為TRUE,

則執(zhí)行NEXT語(yǔ)句,進(jìn)入跳轉(zhuǎn)操作,否則繼續(xù)向下執(zhí)行。

濫認(rèn)第4章VHDL基本描述語(yǔ)句______________________

【例4-19132位奇偶校驗(yàn)電路程序。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYcparity3IS

P0RT(cdata:INSTDLOGICVECTOR(31DOWNTO0);

ccontrol:INSTDLOGIC;

q:OUTSTDLOGIC;

qnot:OUTSTDLOGIC);

ENDENTITYcparity3;

ARCHITECTURErtlcparityOFcparity3IS

BEGIN

茄k第4章VHDL基本描述語(yǔ)句______________________

cparityexample:PROCESS(cdata,ccontrol)

VARIABLEtemp:STDLOGIC;

BEGIN

temp:='O';

FORiINOTO31LOOP—FORLOOP語(yǔ)句對(duì)32位邏輯值奇偶判斷

NEXTWHENccontrol=*0*;—外部信號(hào)ccontrol為邏輯低電平

temp:=tempXORcdata(i);

WAITFOR200ms;-使得程序等待200ms

ENDLOOP;

qv=temp;

qnot<=NOTtemp;

ENDPROCESScparity_example;

ENDARCHITECTURErtl_cparity;

濫認(rèn)第4章VHDL基本描述語(yǔ)句______________________

【例4-201NEXT語(yǔ)句嵌在兩個(gè)循環(huán)中的示例程序。

CTEST1:FORmIN0TO50LOOP-外循環(huán)

CTEST2:FORnIN1TO40LOOP-內(nèi)循環(huán)

*

NEXTCTEST1WHENm=n;-NEXT語(yǔ)句的執(zhí)行條件

*

ENDLOOPCTEST2;

ENDLOOPCTEST1;

第4章VHDL基本描述語(yǔ)句______________________

4.1.9EXIT語(yǔ)句

EXIT語(yǔ)句用于FORLOOP和WHILELOOP循環(huán)語(yǔ)句

中跳出循環(huán),也就是提前結(jié)束循環(huán),接著執(zhí)行循環(huán)后面的

語(yǔ)句,也是一種循環(huán)內(nèi)部的控制語(yǔ)句。它的語(yǔ)句格式:

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

EXIT與NEXT的格式和操作非常相似,二者的不同之

處是:

執(zhí)行EXIT語(yǔ)句將結(jié)束循環(huán)狀態(tài),直接從循環(huán)語(yǔ)句中跳

出,不再執(zhí)行此循環(huán)。

執(zhí)行NEXT語(yǔ)句是僅僅結(jié)束本次循環(huán),接著執(zhí)行的是

本循環(huán)體而沒有跳出本循環(huán)。

第4章VHDL基本描述語(yǔ)句

(1)無(wú)標(biāo)號(hào)和無(wú)WHEN時(shí),則執(zhí)行EXIT語(yǔ)句,則立即無(wú)

條件跳出循環(huán);如果EXIT語(yǔ)句位于一個(gè)內(nèi)部循環(huán)中,則

執(zhí)行EXIT后僅跳出內(nèi)部循環(huán),而仍然停留在外部循環(huán)的

LOOP語(yǔ)句中。

(2)有標(biāo)號(hào)和無(wú)WHEN時(shí),貝UEXIT立即退出循環(huán)體,從

標(biāo)號(hào)指定的位置開始執(zhí)行程序。

(3)無(wú)標(biāo)號(hào)和有WHEN時(shí),當(dāng)條件表達(dá)式的值為TRUE,

則退出循環(huán),否則繼續(xù)向下執(zhí)行。

茄k第4章VHDL基本描述語(yǔ)句_______________________

【例4-21】采用EXIT語(yǔ)句的示例程序。

ARCHITECTUREbehav_cexitOFcexitinstIS

CONSTANTpi:REAL:=3.1415926;

BEGIN

cexit_example:PROCESS(elk)

VARIABLEareatemp:REAL:=1.0;

BEGIN

FORiIN1TO20LOOP

area_temp:=pi*REAL(i)*REAL(i);—數(shù)據(jù)類型轉(zhuǎn)換

IFINTEGER(areatemp)>150THEN

EXIT當(dāng)條件成立則提前退出循環(huán)

ENDIF;

ENDLOOP;

ENDPROCESScexitexample;

ENDARCHITECTUREbehav_cexit;

茄k第4章VHDL基本描述語(yǔ)句______________________

4.1.10RETURN

返回語(yǔ)句用于子程序體或進(jìn)程中,并用來(lái)結(jié)束當(dāng)前子程

序體的執(zhí)行。其語(yǔ)句格式如下:

RETURN[表達(dá)式];

當(dāng)表達(dá)式缺省時(shí),只能用于進(jìn)程,它只是結(jié)束進(jìn)程,并

不返回任何值;

當(dāng)有表達(dá)式時(shí),只能用于函數(shù),并且必須返回一個(gè)值。

用于函數(shù)的語(yǔ)句中的表達(dá)式提供函數(shù)返回值。每一函數(shù)必

須至少包含一個(gè)返回語(yǔ)句,并可以擁有多個(gè)返回語(yǔ)句,但

是在函數(shù)調(diào)用時(shí),只有其中一個(gè)返回語(yǔ)句可以將值帶出。

茄k第4章VHDL基本描述語(yǔ)句______________________

【例4-22】采用RETURN語(yǔ)句的示例程序

FUNCTIONcmax21(dl:INTEGER;

d2:INTEGER)

RETURNINTEGERIS

VARIABLEtemp:INTEGER:=1;

BEGIN

IFdl>d2THEN

temp:=dl;

ELSE

temp:=d2;

ENDIF;

RETURNtemp;

ENDcmax21;

茄k第4章VHDL基本描述語(yǔ)句______________________

4.1.11REPORT語(yǔ)句

REPORT可以在程序運(yùn)行中向程序員上報(bào)程序的運(yùn)行狀

態(tài),只能在VHDL仿真器中使用,便于程序的修改維護(hù)。

其語(yǔ)句格式如下:

[標(biāo)號(hào):]REPORT"輸出字符串”[SEVERITY

出錯(cuò)等級(jí)];

茄k第4章VHDL基本描述語(yǔ)句_________________

出錯(cuò)等級(jí)共有如下四種可能的值:

NOTE:可以用在仿真時(shí)傳遞信息。

WARNING:用在非平常的情形,此時(shí)仿真過(guò)程仍可繼

續(xù),但結(jié)果可能是不可預(yù)知的。

ERROR:用在仿真過(guò)程繼續(xù)執(zhí)行下去已經(jīng)不可能的情

況。

FAILURE:用在發(fā)生了致命錯(cuò)誤,仿真過(guò)程必須立即

停止的情況。

茄k第4章VHDL基本描述語(yǔ)句______________________

【例4-23】采用REPORT語(yǔ)句的示例程序

REPORTndataOistimedoutatn--data。在邏輯0上超時(shí)

SEVERITYERROR;

REPORTnqisnotatT”-q不在邏輯1電平上

SEVERITYWARNING;

茄k第4章VHDL基本描述語(yǔ)句_________________

4.1.12空操作語(yǔ)句(NULL)

空操作語(yǔ)句的語(yǔ)句格式如下:

NULL;

空操作語(yǔ)句不完成任何操作,它惟一的功能就是使邏

輯運(yùn)行流程跨入下一步語(yǔ)句的執(zhí)行。NULL常用于CASE語(yǔ)

句中,為滿足所有可能的條件,利用NULL來(lái)表不所余的不

用條件下的操作行為。

茄k第4章VHDL基本描述語(yǔ)句______________________

【例4-24]使用NULL語(yǔ)句的示例程序

ARCHITECTUREdataflowOFcnullIS

SIGNALd,q:STDLOGIC;

SIGNALsei:STDLOGICVECTOR(2DOWNTO0);

BEGIN

CASEseiIS

WHEN0|7=>qv=NOTd;

WHENOTHERS=>NULL;

ENDCASE;

ENDdataflow;

茄k第4章VHDL基本描述語(yǔ)句______________________

與其他的EDA工具不同,MAX+plusII對(duì)NULL語(yǔ)句的

執(zhí)行會(huì)出現(xiàn)擅自加入鎖存器的情況,因此,應(yīng)避免使用

NULL語(yǔ)句,改用確定操作,如可改為:

WHENOTHERS=>q<=O;

茄k第4章VHDL基本描述語(yǔ)句__________________

4.1.13ASSERT語(yǔ)句

ASSERT(斷言)語(yǔ)句只能在VHDL仿真器中使用,綜合

器通常忽略此語(yǔ)句。

語(yǔ)句格式是:

ASSERT條件表達(dá)式[REPORT"字符串”][SEVERITY

錯(cuò)誤等級(jí)];

ASSERT語(yǔ)句判斷指定的條件,如為TRUE,則往下執(zhí)

行其它語(yǔ)句;如為FALSE,則輸出報(bào)告信息和錯(cuò)誤等級(jí)。

濫認(rèn)第4章VHDL基本描述語(yǔ)句______________________

4.2并行語(yǔ)句

相對(duì)于傳統(tǒng)的軟件描述語(yǔ)言,并行語(yǔ)句結(jié)構(gòu)是最具

VHDL特色的。在VHDL中,各種并行語(yǔ)句在結(jié)構(gòu)體中的執(zhí)

行是同步進(jìn)行的,其執(zhí)行次序與書寫的順序無(wú)關(guān)。

在可編程邏輯器件中,用硬件描述語(yǔ)言VHDL描述的實(shí)際

系統(tǒng),由可編程邏輯器件中的不同硬件資源構(gòu)成,實(shí)際工作

時(shí)這些電路是同時(shí)工作的,所以在對(duì)系統(tǒng)進(jìn)行仿真時(shí),這些

系統(tǒng)元件在定義的仿真時(shí)刻應(yīng)該是并發(fā)工作的。VHDL中用并

行描述語(yǔ)句來(lái)描述這種行為。

癡k第4章VHDL基本描述語(yǔ)句

并行語(yǔ)句與順序語(yǔ)句并不是相互對(duì)立的語(yǔ)句,它們往

往互相包含、互為依存,它們是一個(gè)矛盾的統(tǒng)一體。嚴(yán)格

地說(shuō),VHDL中不存在純粹的并行行為和順序行為的語(yǔ)句。

例如,相對(duì)于其他的并行語(yǔ)句,進(jìn)程屬于并行語(yǔ)句,而進(jìn)

程內(nèi)部運(yùn)行的都是順序語(yǔ)句,而一個(gè)單句并行賦值語(yǔ)句,

從表面上看是一條完整的并行語(yǔ)句,但實(shí)質(zhì)上卻是一條進(jìn)

程語(yǔ)句的縮影,它完全可以用一個(gè)相同功能的進(jìn)程來(lái)替代。

所不同的是,進(jìn)程中必須列出所有的敏感信號(hào),而單純的

并行賦值語(yǔ)句的敏感信號(hào)是隱性列出的。

濫認(rèn)第4章VHDL基本描述語(yǔ)句______________________

4.2.1并行信號(hào)代入語(yǔ)句(并行信號(hào)賦值語(yǔ)句)

信號(hào)賦值語(yǔ)句在進(jìn)程中使用時(shí),它將作為順序語(yǔ)句的形式

出現(xiàn);當(dāng)信號(hào)賦值語(yǔ)句在結(jié)構(gòu)體的進(jìn)程之處使用時(shí),它將作為

并行語(yǔ)句的形式。

賦值目標(biāo)必須都是信號(hào),所有賦值語(yǔ)句與其他并行語(yǔ)句一

樣,在結(jié)構(gòu)體內(nèi)的執(zhí)行是同時(shí)發(fā)生的。每一信號(hào)賦值語(yǔ)句都相

當(dāng)于一條縮寫的進(jìn)程語(yǔ)句,而這條語(yǔ)句的所有輸入(或讀入)信

號(hào)都被隱性地列入此過(guò)程的敏感信號(hào)表中。因此,任何信號(hào)的

變化都將啟動(dòng)相關(guān)并行語(yǔ)句的賦值操作,而這種啟動(dòng)完全是獨(dú)

立于其他語(yǔ)句的,它們都可以直接出現(xiàn)在結(jié)構(gòu)體中。

茄k第4章VHDL基本描述語(yǔ)句_________________

如:

qO<=datal+data2;

qlv=data3*data4;

第一條語(yǔ)句描述了一個(gè)硬件加法器的行為,第二條描述

了一個(gè)硬件乘法器的行為,硬件加法器和硬件乘法器實(shí)際

工作時(shí)是獨(dú)立、同時(shí)工作的,所以描述這個(gè)行為的二個(gè)語(yǔ)

句也應(yīng)該是并發(fā)的。這就是信號(hào)賦值語(yǔ)句的并發(fā)性。

小缸第4章VHDL基本描述語(yǔ)句

信號(hào)賦值語(yǔ)句=簡(jiǎn)化的進(jìn)程

ARCHITECTUREbehavOFconcurrentexampleIS

BEGIN

q<=dONAND(dlORd2)AFTER7ns;

ENDARCHITECTUREbehav;

ARCHITECTUREbehavOFconcurrentexampleIS

BEGIN

PROCESS(dO,dl,d2)

BEGIN

qv=dONAND(dlORd2)AFTER7ns;

ENDPROCESS;

ENDARCHITECTUREbehav;

第4章VHDL基本描述語(yǔ)句

并行信號(hào)賦值語(yǔ)句有三種形式:簡(jiǎn)單信號(hào)賦值語(yǔ)句、

條件信號(hào)賦值語(yǔ)句和選擇信號(hào)賦值語(yǔ)句。

1.條件信號(hào)賦值語(yǔ)句

IF語(yǔ)句是一種條件賦值語(yǔ)句,但其是順序語(yǔ)句,只能

用在進(jìn)程或子程序內(nèi)部。

條件信號(hào)賦值語(yǔ)句是一種與IF語(yǔ)句相似的分支型條件

賦值語(yǔ)句,其是并發(fā)的,可用于進(jìn)程之外。

茄k第4章VHDL基本描述語(yǔ)句______________________

條件信號(hào)賦值語(yǔ)句的表達(dá)方式如下:

目的信號(hào)量V=信號(hào)量表達(dá)式1WHEN賦值條件1ELSE

信號(hào)量表達(dá)式2WHEN賦值條件2ELSE

???

信號(hào)量表達(dá)式nWHEN賦值條件nELSE

信號(hào)量表達(dá)式n+l;

當(dāng)賦值條件1成立時(shí),將信號(hào)量表達(dá)式1的值賦給目的

信號(hào)量,依次類推,如果所有的條件都不成立,則把信號(hào)量

表達(dá)式n+1的值賦給目的信號(hào)量。在整個(gè)語(yǔ)句中必須有一個(gè)

ELSE,而IF語(yǔ)句中沒有此要求。

濫認(rèn)第4章VHDL基本描述語(yǔ)句______________________

在執(zhí)行條件信號(hào)賦值語(yǔ)句時(shí),每一賦值條件是按書寫的先

后關(guān)系逐項(xiàng)測(cè)定的,一旦發(fā)現(xiàn)賦值條件=TRUE,立即將表達(dá)式

的值賦給賦值目標(biāo)。

Zv=AWHENP1='1'ELSE

BWHENP2-1'ELSE

C;

注意,由于條件測(cè)試的順序性,第一句具有最高賦值優(yōu)先

級(jí),第二句其次,第三句最后。這就是說(shuō),如果當(dāng)P1和P2同時(shí)

為1時(shí),Z獲得的賦值是A。

茄k第4章VHDL基本描述語(yǔ)句______________________

【例4?26]采用條件信號(hào)代入語(yǔ)句描述異或門

LIBRARYIEEE;

USEIEEE.STDLOGIC1164.ALL;

ENTITYcxorgateIS

PORT(dO,dl:INSTDLOGIC;

q:OUTSTDLOGIC);

ENDENTITYcxorgate;

ARCHITECTUREcxorgate_exampleOFcxorgateIS

BEGIN

qv=OWHENdO=OANDdl='0'ELSE

TWHENd0=OANDdl=TELSE

TWHENdO=TANDdl=OELSE

OWHENdO=TANDdl=TELSE

O;

ENDARCHITECTUREcxorgateexample;

茄k第4章VHDL基本描述語(yǔ)句___________________

【例4-27】3?8譯碼器(和例4—15相似)

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYcdecoder_3_8IS

PORT(d:INSTDLOGICVECTOR(2DOWNTO0);

G1:INSTDLOGIC;

G2A,G2B:INSTDLOGIC;

q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDENTITYcdecoder_3_8;

第4章VHDL基本描述語(yǔ)句

ARCHITECTUREdataflowOFcdecoder_3_8IS

BEGIN

q〈="11111110”WHEN(G1=TANDG2A='0'ANDG2B='0'ANDd="000")ELSE

"minor'WHEN(GI=TANDG2A='O'ANDG2B=0ANDa="001")ELSE

”11111011”WHEN(G1=TANDG2A='0'ANDG2B='0'ANDd="010")ELSE

n11110111nWHEN(G1=TANDG2A='0'ANDG2B='0'ANDd="011")ELSE

"HlOllir'WHEN(G1=TANDG2A=OANDG2B='0'ANDd="100")ELSE

"HOlllir'WHEN(G1=TANDG2A='0'ANDG2B='0'ANDd="101")ELSE

n101111ir'WHEN(G1=TANDG2A='0'ANDG2B=OANDd="110")ELSE

"Olllllir'WHEN(G1=TANDG2A='0'ANDG2B='0'ANDd="111")ELSE

"llllllir';—其中Gl、G2A、G2B是譯碼器的使能信號(hào)

ENDARCHITECTUREdata_flow;

茄k第4章VHDL基本描述語(yǔ)句

【例4-28】4選1選擇器(和4-12相同)

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYcselector_4_lIS

PORT(d:INSTD_LOGIC_VECTOR(3DOWNTO0);

sei:INSTDLOGICVECTOR(1DOWNTO0);

q:OUTSTDLOGIC);

ENDENTITYcselector_4」;

ARCHITECTUREdata_flowOFcselector_4_lIS

BEGIN

qv=d(0)WHEN(sei=”00")ELSE

d(l)WHEN(sei=”01”)ELSE

d(2)WHEN(sei=”10")ELSE

d(3)WHEN(sei=”11")ELSE

O;

ENDARCHITECTUREdata_flow;

/k第4章VHDL基本描述語(yǔ)句______________________

2.選擇信號(hào)賦值語(yǔ)句

前面講述的CASE語(yǔ)句是一種分支控制型的順序語(yǔ)句,

它只能用于進(jìn)程或子程序中;而選擇信號(hào)賦值語(yǔ)句的功能

和CASE語(yǔ)句相似,可用于進(jìn)程之外。

選擇信號(hào)賦值語(yǔ)句格式如下:

WITH選擇條件表達(dá)式SELECT

目的信號(hào)量<=表達(dá)式1WHEN選擇值1

表達(dá)式2WHEN選擇值2

表達(dá)式nWHEN選擇值n;

濫認(rèn)第4章VHDL基本描述語(yǔ)句______________________

CASE語(yǔ)句的執(zhí)行依賴于進(jìn)程中敏感信號(hào)的改變而啟動(dòng)進(jìn)

程,而且要求CAS

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論