It計算機課件 第四章 VHDL基本描述語句_第1頁
It計算機課件 第四章 VHDL基本描述語句_第2頁
It計算機課件 第四章 VHDL基本描述語句_第3頁
It計算機課件 第四章 VHDL基本描述語句_第4頁
It計算機課件 第四章 VHDL基本描述語句_第5頁
已閱讀5頁,還剩181頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第4章VHDL基本描述語句

第四章VHDL基本描述語句

4.1順序描述語句

4.2并行描述語句

4.3屬性描述語句

濫認第4章VHDL基本描述語句______________________

4.1VHDL順序語句

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

Statements)是VHDL程序設計中兩大基本描述語句系列。在

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

的硬件結構和基本邏輯功能,其中包括通信的方式、信號的

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

順序語句是相對于并行語句而言的,其特點是每一條順

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

的。

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

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

第4章VHDL基本描述語句

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

VHDL中,一個進程是由一系列順序語句構成的,在同一設

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

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

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

信號或端口。如果要在進程中完成某些特定的算法和邏輯

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

并無順序和并行語句之分。利用順序語句可以描述邏輯系

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

VHDL有如下六類基本順序語句:賦值語句;轉向控制

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

句?!D一-

濫認第4章VHDL基本描述語句______________________

4.4.1WAIT語句

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

的執(zhí)行是由敏感信號列表來觸發(fā)的,所以此時進程的同步點

由敏感信號列表來控制,這是一種隱式同步,同步點

在“ENDPROCESS[進程名廠這一行上。

當進程沒有敏感信號表時,進程的狀態(tài)就由WAIT來控制,

這是一顯式同步,同步點在“WAIT語句”這一行上。

在進程中(包括過程中),當執(zhí)行到WAIT等待語句時,運

行程序將被掛起,直到滿足此語句設置的結束掛起條件后,

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

感量的進程中不能使用任何形式的WAIT語句。

第4章VHDL基本描述語句______________________

LWAIT語句說明

如果在進程中僅僅使用WAIT語句而沒有其它條件使

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

程序設計中應該避免的,此時電路仿真表現(xiàn)為“死機”。

cwaitl:PROCESS

BEGIN

y<=(aANDb)OR(mXORt);

zv=cNANDd;

WAIT;—無限等待

ENDPROCESScwaitl;

小缸第4章VHDL基本描述語句______________________

2.WAITFOR語句說明

WAITFOR時間表達式為超時語句,在此語句中定義了一

個時間段,從執(zhí)行到當前的WAIT語句開始,在此時間段

內(nèi),進程處于掛起狀態(tài),當超過這一時間段后,進程自動

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

cwait2:PROCESS

BEGIN

yv=(aANDb)OR(mXORt);

zv=cNANDd;

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

計算的時間

ENDPROCESScwait2;

茄k第4章VHDL基本描述語句______________________

3.WAITON語句說明

WAITON信號[,信號],稱為敏感信號等待語句,

在信號表中列出的信號是等待語句的敏感信號。

當進程執(zhí)行該等待語句時,進程被掛起,然后等待敏

感信號的變化(如從0?1或從1?0的變化),只要進程表中的

信號有一個發(fā)生變化,進程將結束掛起,繼續(xù)執(zhí)行WAIT

ON語句后面的語句。

如:WAITONSI,S2;

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

WAIT語句之后的語句。

?k第4章VHDL基本描述語句

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYmux2_lIS

P0RT(data09datal:INSTDLOGIC;

sei:INSTDLOGIC;

q:OUTSTDLOGIC);

ENDmux21;

茄k第4章VHDL基本描述語句______________________

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基本描述語句______________________

WAITON語句和PROCESS語句中所使用的敏感信號列表的對比

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基本描述語句______________________

…。4.WAITUNTIL語句說明

WAITUNTIL條件表達式;稱為條件等待語句,該語

句將把進程掛起,直到條件表達式中所含信號發(fā)生了改變,

并且條件表達式為真時,進程才能脫離掛起狀態(tài),恢復執(zhí)

行WAIT語句之后的語句。

條件表達式中至少應該包含一個信號量,否則該表達

式在進程被掛起后就不再計算。

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

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

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

會產(chǎn)生時序邏輯電路。時序邏輯電路的運行依賴于時鐘的

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

小缸第4章VHDL基本描述語句______________________

ARCHITECTUREbehavioralOFexamplewaituntilIS

SIGNALtemp:INTEGER;

BEGIN

cwait5:PROCESS

BEGIN

*

*

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

達式是布爾表達式

ENDPROCESScwait5;

ENDbehavioral;

濫認第4章VHDL基本描述語句______________________

WAITUNTILENABLE=1;進程的啟動條件是ENABLE出現(xiàn)一個上跳

信號沿。

PROCESS

BEGIN

WAITUNTILCLK=1;

AVE〈=A;該進程將完成一個

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

〈=;

AVEAVE+A一個時鐘脈沖由A輸入一

WAITUNTILCLK=1;

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

AVE〈=AVE+A;

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

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

ENDPROCESS;

茄k第4章VHDL基本描述語句______________________

4.1.2代入語句

信號代入語句格式:

目的信號量<=信號量表達式;

表示把右邊的信號量表達式的值代入到目的信號量。

SIGNALA,B:STD_LOGIC_VECTOR(1TO4);

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

A(4DOWNTOl)<=n1011n;

tempO<=aNANDb;

茄k第4章VHDL基本描述語句______________________

信號和變量不同,信號具有全局性特征,它不但可以

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

可通過信號與其他的實體進行通信(端口本質(zhì)上也是一種信

號)。信號的賦值并不是立即發(fā)生的,它發(fā)生在一個進程結

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

不是立即發(fā)生的,它發(fā)生在一個進程結束時。賦值過程總

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

可以找到與信號對應的硬件結構,如一根傳輸導線、一個

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

第4章VHDL基本描述語句______________________

4.1.3賦值語句

變量賦值語句格式:

變量賦值目標尸賦值源;

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

濫認第4章VHDL基本描述語句______________________

cfuzhi:PROCESS

BEGIN

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

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

temp2:=c+78;

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

temp4:=d;

temp5:=temp4(2);

ENDPROCESScfuzhi;

ENDbehavioral;

濫認第4章VHDL基本描述語句______________________

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

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

程之外。信號具有全局性特征,它不但可以作為一個設計實體

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

體進行通信。

(2)對變量的賦值是立即發(fā)生的(假設進程已啟動),即是一

種時間延遲為零的賦值行為。對信號的賦值不是立即發(fā)生的,

它發(fā)生在一個進程結束時,賦值過程總是有某種延時的,它反

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

第4章VHDL基本描述語句

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

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

在信號賦值中,需要注意的是,當在同一進程中,同

一信號賦值目標有多個賦值源時,信號賦值目標獲得的是

最后一個賦值源的賦值,其前面相同的賦值目標不作任何

變化。

茄k第4章VHDL基本描述語句__________________

ARCHITECTUREbehavioralOFexampleduibiIS

SIGNALdO,dl,d2,d3:STDLOGIC;--定義信號

SIGNALqO,ql:STDLOGIC;

BEGIN

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

BEGIN

d2<=dO;-信號量代入進程cduibi_l的

運行結果:一

qO<=d2ORd3;

qO=dlORd3

d2<=dl;-信號量代入ql=dlORd3

ql<=d2ORd3;

ENDPROCESScduibi_l;

癡k第4章VHDL基本描述語句

cduibi_2:PROCESS(dO,dl,d3)

VARIABLEm2:STDLOGIC;

BEGIN

m2:=dO;—變量賦值

qO<=m2ORd3;

m2:=dl;-變量賦值

進程cduibi_2的

ql<=m2ORd3;運行結果:一

ENDPROCESScduibi_2;qO=dOORd3

ql=dlORd3

ENDbehavioral;

第4章VHDL基本描述語句______________________

4.1.4IF語句

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

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

1.單IF語句

格式:IF條件THEN

順序語句;

ENDIF;

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

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

行后續(xù)的語句。

第4章VHDL基本描述語句

LIBRARYIEEE;

USEIEEE.STDL0GIC1164.ALL;

ENTITYcdfflIS

PORT(d:INSTDLOGIC;

elk:INSTDLOGIC;

q:OUTSTDLOGIC;

qnot:OUTSTDLOGIC);

ENDcdffl;

茄k第4章VHDL基本描述語句______________________

ARCHITECTUREdataflowOFcdfflIS

BEGIN

cd叱example:PROCESS(elk)

BEGIN

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

qv=d;

qnotv=NOTd;

ENDIF;

ENDPROCESScdffLexample;

ENDdataflow;

癡k第4章VHDL基本描述語句

力證第4章VHDL基本描述語句______________________

2.二選擇的IF語句

IF條件THEN

順序語句1;

ELSIF

順序語句2;

ENDIF;

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

句2o

第4章VHDL基本描述語句

LIBRARYIEEE;-二選一選擇器

USEIEEE.STDL0GIC1164.ALL;

ENTITYmux2_2IS

PORT(a0,al:INBIT;

sei:INBIT;

q:OUTBIT);

ENDmux2_2;

癡k第4章VHDL基本描述語句

ARCHITECTURErtlOFmux2_2IS

BEGIN

cmux2_2:PROCESS(aO,al,sei)

BEGIN

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

qv=aO;

ELSE

q<=al;

ENDIF;

ENDPROCESScmux2_2;

ENDrtl;

?k第4章VHDL基本描述語句

wsei1

i>"a10wwwLnArLnjwwmMiwuwmjwuu

aO0n_jn_n_ru

-Oq0JUWLfWWUUmwwwuwu

癡第4章VHDL基本描述語句

3.多選擇IF語句

IF條件1THEN

順序語句1;當條件1成立時,

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

順序語句2;否則判斷條件語句

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

順序語句2;依此

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

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

ELSE語句n+1

順序語句n+1;

ENDIF;

茄k第4章VHDL基本描述語句______________________

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYmux4_lIS

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

sei:INSTDLOGICVECTOR(1DOWNTO0);

q:OUTSTDLOGIC);

ENDmux4_l;

茄k第4章VHDL基本描述語句______________________

ARCHITECTURErtlOFmux4_lIS

BEGIN

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

BEGIN

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

qv=aO;

ELSIF(sei="01”)THEN

q<=al;

ELSIF(sei="10")THEN

q<=a2;

ELSE

q<=a3;

ENDIF;

ENDPROCESScmux4_l;

ENDrtl;

信第4章VHDL基本描述語句

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

4.IF語句的嵌套結構

IF外部條件THEN

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

順序語句1;

ENDIF;

ELSE

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

順序語句2;

ENDIF;

ENDIF;

濫認第4章VHDL基本描述語句______________________

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYmux4_2IS

P0RT(cdata:INSTDLOGICVECTOR(3DOWNTO0);

sei:INSTDLOGICVECTOR(1DOWNTO0);

creset:INSTDLOGIC;

q:OUTSTDLOGIC);

ENDmux4_2;

曲第4章VHDL基本描述語句______________________

^ARCHITECTURErtlOFmux4_2IS

BEGIN

cmux4_2:PROCESS(cdata,sei,creset)

BEGIN

IF(creset=T)THEN

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

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基本描述語句

小缸第4章VHDL基本描述語句______________________

4.1.5CASE語句

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

的一項執(zhí)行。

CASE語句的結構如下:

CASE表達式IS

WHEN選擇值1=>順序語句1;

WHEN選擇值2=>順序語句2;

???

WHEN選擇值n=>順序語句n;

[WHENOTHERS=>順序語句n+1;]

ENDCASE;

第4章VHDL基本描述語句

當執(zhí)行到CASE語句時,首先計算表達式的值,然后根

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

結束CASE語句。

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

用。

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

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

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

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

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

茄k第4章VHDL基本描述語句______________________

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基本描述語句

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

濫認第4章VHDL基本描述語句______________________

使用CASE語句需注意以下幾點:

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

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

達式的取值,否則最末一個條件句中的選擇必須用

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

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

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

不定態(tài)X等。

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

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

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

中的一條。這表明CASE語句中至少要包含一個條件語句。

茄k第4章VHDL基本描述語句______________________

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基本描述語句______________________

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

CASEdIS-CASE語句的控制表達式是位矢量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基本描述語句

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

是因為它把條件中所有可能出現(xiàn)的情況全部列出來了,可

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

那樣有一個逐項條件順序比較的過程。CASE語句中條件句

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

般地,綜合后,對相同的邏輯功能,CASE語句比IF語句的

描述耗用更多的硬件資源,而且有的邏輯,CASE語句無法

描述,只能用IF語句來描述。這是因為IF_THEN_ELSIF語

句具有條件相與的功能和自動將邏輯值“?。酆雎裕莅ㄟM去

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

件相或的功能。

第4章VHDL基本描述語句______________________

4.1.6FORLOOP語句

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

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

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

順序語句;

ENDLOOP[標號];

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

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

數(shù)變量。

濫認第4章VHDL基本描述語句______________________

例4-16偶校驗

LIBRARYIEEE;

USEIEEE.STDL0GIC1164.ALL;

ENTITYcparitylIS

PORT(cdata:INSTDLOGICVECTOR(31DOWNTO0);

q:OUTSTDLOGIC;

qnot:OUTSTDLOGIC);

ENDENTITYcparityl;

ARCHITECTURErtlcparityOFcparitylIS

BEGIN

茄k第4章VHDL基本描述語句

cparityexample:PROCESS(cdata)

VARIABLEtemp:STDLOGIC;

BEGIN

temp:=T;

FORiINOTO31LOOP

temp:=tempXORcdata(i);

ENDLOOP;

qv=temp;

qnotv=NOTtemp;

ENDPROCESScparityexample;

ENDARCHITECTURErtlcparity;

第4章VHDL基本描述語句______________________

4.1.7WHILELOOP語句

格式:

[標號:]WHILE條件表達式LOOP

順序語句;

ENDLOOP[標號];

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

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

癡k第4章VHDL基本描述語句

例4-17

VARIABLEsumtemp:INTEGER:=0;

VARIABLEi:INTEGER:=0;

BEGIN

sumexample:WHILE(i<100)LOOP

sumtemp:=sumtemp+i;

i:=i+1;

ENDLOOPsumexample;

ENDPROCESS;

缸第4章VHDL基本描述語句

例"二18奇校驗―

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYcparity2IS

P0RT(cdata:INSTDLOGICVECTOR(31DOWNTO0);

q:OUTSTDLOGIC;

qnot:OUTSTDLOGIC);

ENDENTITYcparity2;

ARCHITECTUREbehavcparitylOFcparity2IS

BEGIN

茄k第4章VHDL基本描述語句______________________

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;

濫認第4章VHDL基本描述語句______________________

4.1.8NEXT語句

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

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

控制語句。它的語句格式:

NEXT[標號][WHEN條件表達式];

(1)無標號和無WHEN時,則執(zhí)行NEXT語句時,即刻

無條件終止當前的循環(huán),跳回到本次循環(huán)LOOP語句開始處,

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

(2)有標號和無WHEN時,跳轉到指定標號的LOOP語

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

(3)無標號和有WHEN時,當條件表達式的值為TRUE,

則執(zhí)行NEXT語句,進入跳轉操作,否則繼續(xù)向下執(zhí)行。

濫認第4章VHDL基本描述語句______________________

【例4-19132位奇偶校驗電路程序。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYcparity3IS

P0RT(cdata:INSTDLOGICVECTOR(31DOWNTO0);

ccontrol:INSTDLOGIC;

q:OUTSTDLOGIC;

qnot:OUTSTDLOGIC);

ENDENTITYcparity3;

ARCHITECTURErtlcparityOFcparity3IS

BEGIN

茄k第4章VHDL基本描述語句______________________

cparityexample:PROCESS(cdata,ccontrol)

VARIABLEtemp:STDLOGIC;

BEGIN

temp:='O';

FORiINOTO31LOOP—FORLOOP語句對32位邏輯值奇偶判斷

NEXTWHENccontrol=*0*;—外部信號ccontrol為邏輯低電平

temp:=tempXORcdata(i);

WAITFOR200ms;-使得程序等待200ms

ENDLOOP;

qv=temp;

qnot<=NOTtemp;

ENDPROCESScparity_example;

ENDARCHITECTURErtl_cparity;

濫認第4章VHDL基本描述語句______________________

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

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

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

*

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

*

ENDLOOPCTEST2;

ENDLOOPCTEST1;

第4章VHDL基本描述語句______________________

4.1.9EXIT語句

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

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

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

EXIT[標號][WHEN條件表達式];

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

處是:

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

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

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

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

第4章VHDL基本描述語句

(1)無標號和無WHEN時,則執(zhí)行EXIT語句,則立即無

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

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

LOOP語句中。

(2)有標號和無WHEN時,貝UEXIT立即退出循環(huán)體,從

標號指定的位置開始執(zhí)行程序。

(3)無標號和有WHEN時,當條件表達式的值為TRUE,

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

茄k第4章VHDL基本描述語句_______________________

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

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ù)類型轉換

IFINTEGER(areatemp)>150THEN

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

ENDIF;

ENDLOOP;

ENDPROCESScexitexample;

ENDARCHITECTUREbehav_cexit;

茄k第4章VHDL基本描述語句______________________

4.1.10RETURN

返回語句用于子程序體或進程中,并用來結束當前子程

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

RETURN[表達式];

當表達式缺省時,只能用于進程,它只是結束進程,并

不返回任何值;

當有表達式時,只能用于函數(shù),并且必須返回一個值。

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

須至少包含一個返回語句,并可以擁有多個返回語句,但

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

茄k第4章VHDL基本描述語句______________________

【例4-22】采用RETURN語句的示例程序

FUNCTIONcmax21(dl:INTEGER;

d2:INTEGER)

RETURNINTEGERIS

VARIABLEtemp:INTEGER:=1;

BEGIN

IFdl>d2THEN

temp:=dl;

ELSE

temp:=d2;

ENDIF;

RETURNtemp;

ENDcmax21;

茄k第4章VHDL基本描述語句______________________

4.1.11REPORT語句

REPORT可以在程序運行中向程序員上報程序的運行狀

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

其語句格式如下:

[標號:]REPORT"輸出字符串”[SEVERITY

出錯等級];

茄k第4章VHDL基本描述語句_________________

出錯等級共有如下四種可能的值:

NOTE:可以用在仿真時傳遞信息。

WARNING:用在非平常的情形,此時仿真過程仍可繼

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

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

況。

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

停止的情況。

茄k第4章VHDL基本描述語句______________________

【例4-23】采用REPORT語句的示例程序

REPORTndataOistimedoutatn--data。在邏輯0上超時

SEVERITYERROR;

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

SEVERITYWARNING;

茄k第4章VHDL基本描述語句_________________

4.1.12空操作語句(NULL)

空操作語句的語句格式如下:

NULL;

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

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

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

用條件下的操作行為。

茄k第4章VHDL基本描述語句______________________

【例4-24]使用NULL語句的示例程序

ARCHITECTUREdataflowOFcnullIS

SIGNALd,q:STDLOGIC;

SIGNALsei:STDLOGICVECTOR(2DOWNTO0);

BEGIN

CASEseiIS

WHEN0|7=>qv=NOTd;

WHENOTHERS=>NULL;

ENDCASE;

ENDdataflow;

茄k第4章VHDL基本描述語句______________________

與其他的EDA工具不同,MAX+plusII對NULL語句的

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

NULL語句,改用確定操作,如可改為:

WHENOTHERS=>q<=O;

茄k第4章VHDL基本描述語句__________________

4.1.13ASSERT語句

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

器通常忽略此語句。

語句格式是:

ASSERT條件表達式[REPORT"字符串”][SEVERITY

錯誤等級];

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

行其它語句;如為FALSE,則輸出報告信息和錯誤等級。

濫認第4章VHDL基本描述語句______________________

4.2并行語句

相對于傳統(tǒng)的軟件描述語言,并行語句結構是最具

VHDL特色的。在VHDL中,各種并行語句在結構體中的執(zhí)

行是同步進行的,其執(zhí)行次序與書寫的順序無關。

在可編程邏輯器件中,用硬件描述語言VHDL描述的實際

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

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

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

行描述語句來描述這種行為。

癡k第4章VHDL基本描述語句

并行語句與順序語句并不是相互對立的語句,它們往

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

地說,VHDL中不存在純粹的并行行為和順序行為的語句。

例如,相對于其他的并行語句,進程屬于并行語句,而進

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

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

程語句的縮影,它完全可以用一個相同功能的進程來替代。

所不同的是,進程中必須列出所有的敏感信號,而單純的

并行賦值語句的敏感信號是隱性列出的。

濫認第4章VHDL基本描述語句______________________

4.2.1并行信號代入語句(并行信號賦值語句)

信號賦值語句在進程中使用時,它將作為順序語句的形式

出現(xiàn);當信號賦值語句在結構體的進程之處使用時,它將作為

并行語句的形式。

賦值目標必須都是信號,所有賦值語句與其他并行語句一

樣,在結構體內(nèi)的執(zhí)行是同時發(fā)生的。每一信號賦值語句都相

當于一條縮寫的進程語句,而這條語句的所有輸入(或讀入)信

號都被隱性地列入此過程的敏感信號表中。因此,任何信號的

變化都將啟動相關并行語句的賦值操作,而這種啟動完全是獨

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

茄k第4章VHDL基本描述語句_________________

如:

qO<=datal+data2;

qlv=data3*data4;

第一條語句描述了一個硬件加法器的行為,第二條描述

了一個硬件乘法器的行為,硬件加法器和硬件乘法器實際

工作時是獨立、同時工作的,所以描述這個行為的二個語

句也應該是并發(fā)的。這就是信號賦值語句的并發(fā)性。

小缸第4章VHDL基本描述語句

信號賦值語句=簡化的進程

ARCHITECTUREbehavOFconcurrentexampleIS

BEGIN

q<=dONAND(dlORd2)AFTER7ns;

ENDARCHITECTUREbehav;

ARCHITECTUREbehavOFconcurrentexampleIS

BEGIN

PROCESS(dO,dl,d2)

BEGIN

qv=dONAND(dlORd2)AFTER7ns;

ENDPROCESS;

ENDARCHITECTUREbehav;

第4章VHDL基本描述語句

并行信號賦值語句有三種形式:簡單信號賦值語句、

條件信號賦值語句和選擇信號賦值語句。

1.條件信號賦值語句

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

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

條件信號賦值語句是一種與IF語句相似的分支型條件

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

茄k第4章VHDL基本描述語句______________________

條件信號賦值語句的表達方式如下:

目的信號量V=信號量表達式1WHEN賦值條件1ELSE

信號量表達式2WHEN賦值條件2ELSE

???

信號量表達式nWHEN賦值條件nELSE

信號量表達式n+l;

當賦值條件1成立時,將信號量表達式1的值賦給目的

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

表達式n+1的值賦給目的信號量。在整個語句中必須有一個

ELSE,而IF語句中沒有此要求。

濫認第4章VHDL基本描述語句______________________

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

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

的值賦給賦值目標。

Zv=AWHENP1='1'ELSE

BWHENP2-1'ELSE

C;

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

級,第二句其次,第三句最后。這就是說,如果當P1和P2同時

為1時,Z獲得的賦值是A。

茄k第4章VHDL基本描述語句______________________

【例4?26]采用條件信號代入語句描述異或門

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基本描述語句___________________

【例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基本描述語句

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是譯碼器的使能信號

ENDARCHITECTUREdata_flow;

茄k第4章VHDL基本描述語句

【例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基本描述語句______________________

2.選擇信號賦值語句

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

它只能用于進程或子程序中;而選擇信號賦值語句的功能

和CASE語句相似,可用于進程之外。

選擇信號賦值語句格式如下:

WITH選擇條件表達式SELECT

目的信號量<=表達式1WHEN選擇值1

表達式2WHEN選擇值2

表達式nWHEN選擇值n;

濫認第4章VHDL基本描述語句______________________

CASE語句的執(zhí)行依賴于進程中敏感信號的改變而啟動進

程,而且要求CAS

溫馨提示

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

評論

0/150

提交評論