VHDL順序語句學(xué)習(xí)課件_第1頁
VHDL順序語句學(xué)習(xí)課件_第2頁
VHDL順序語句學(xué)習(xí)課件_第3頁
VHDL順序語句學(xué)習(xí)課件_第4頁
VHDL順序語句學(xué)習(xí)課件_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計1第5講VHDL順序語句順序描述語句只能出現(xiàn)在進程(Process)或子程序中,它定義進程或子程序所執(zhí)行的算法。順序描述語句按這些語句在進程或子程序中出現(xiàn)的順序執(zhí)行,這一點與高級語言類似。

VHDL中常用的順序描述語句包括:信號和變量賦值、Wait、If、Case、Loop、Next、Exit、斷言語句、過程調(diào)用語句、空語句等。許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計2第5講VHDL順序語句所有的順序描述語句都只能在進程(process)中使用,進程內(nèi)是順序執(zhí)行,進程與進程之間是并發(fā)的,有點類似于計算機操作系統(tǒng)中“進程”的概念。5.1進程(Process)

Process語句的格式:

[進程名]:Process(敏感信號列表)

Begin

順序描述語句;

EndProcess;

Process語句從Process開始,到End

Process結(jié)束,進程名可以省略。功能相對獨立的模塊可以用一個進程來描述。許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計3第5講VHDL順序語句Process語句的格式:例1:

Entitymux2Is

Port

(a,b:Instd_logic;

s:Instd_logic;

f:Outstd_logic);

Endmux2;

ArchitecturebehaviorOfmux2Is

Begin

mux2:Process(a,b,s)

Begin

If(s=‘0’)Thenf<=a;

Elsef<=b;

EndIf;

EndProcess;

Endbehavior;5.1進程(Process)許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計4第5講VHDL順序語句Process的啟動和敏感信號列表:進程在仿真運行中,總是處于兩個狀態(tài)之一:執(zhí)行或掛起。初始啟動時,進程處于執(zhí)行狀態(tài),進程中的順序語句從前向后逐句執(zhí)行一遍,即從Process執(zhí)行到EndProcess之前。當(dāng)最后一條語句執(zhí)行完后,返回到進程開始的Process語句,進程處于掛起狀態(tài)。此時,只要該進程的敏感信號列表中任何一個信號發(fā)生變化(即信號的值發(fā)生變化,如從“1”變到“0”或從“0”變到“1”),進程又再次處于執(zhí)行狀態(tài)。然后,再掛起,再執(zhí)行,一直循環(huán)下去,直到仿真結(jié)束。從硬件方面來看,一個Process相當(dāng)于一個電路模塊,它的敏感信號列表指明了所有能引起該電路模塊狀態(tài)發(fā)生改變的信號。例1中mux2進程的敏感信號列表是(a,b,s),三個信號中的任何一個發(fā)生變化,都引起進程重新執(zhí)行。從硬件特性來看,二選一電路的a,b,s輸入的變化都可能引起輸出發(fā)生變化。5.1進程(Process)許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計5第5講VHDL順序語句Process的啟動和敏感信號列表:敏感信號列表對于進程至關(guān)重要,它是進程描述的一個重要組成部分。一般來說,如果描述的是組合電路模塊,那么敏感信號列表必須包括所有的輸入信號;否則,在綜合時會出錯,在仿真時將導(dǎo)致一個錯誤的結(jié)果。如果描述的是時序電路模塊,那么敏感信號列表只需要包括時鐘信號和異步清零/置位信號。因為,觸發(fā)器的輸出只在時鐘上升/下降沿才會改變。在一個結(jié)構(gòu)體里可以有多個Process語句,這些Process之間可以通過一些信號相互聯(lián)系。在一個Process的執(zhí)行中,某個信號的值發(fā)生改變,它會導(dǎo)致另一個(或幾個)進程的重新執(zhí)行,如此構(gòu)成所有進程的反復(fù)執(zhí)行。5.1進程(Process)許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計6第5講VHDL順序語句1.信號和變量的賦值:信號的賦值語句格式:目標信號名<=表達式;例2:

c<=‘1’;

q<=“010010”;

q(1)<=‘1’;

q(3downto1)<=“001”;

a<=b;

s<=axorb;

x<=y+z;需要特別注意的是:VHDL是強類型語言,左邊的信號量和右邊的表達式的類型和位長度都必須一致,否則將出錯。5.2進程(Process)中的順序語句許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計7第5講VHDL順序語句1.信號和變量的賦值:變量的賦值語句格式:目標變量名:=表達式;例3:

v:=‘1’;

s:=“010010”;

變量賦值的符號與信號賦值的符號不同,表達式與信號賦值的表達式寫法是完全一樣的。變量與信號有明顯的區(qū)別:變量只在定義它的進程和子程序內(nèi)有效,無法傳遞到進程之外;而信號在定義它的結(jié)構(gòu)體內(nèi)有效。賦給變量的值立即成為當(dāng)前值;而賦給信號的值必須在進程結(jié)束后才能成為當(dāng)前值。5.2進程(Process)中的順序語句許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計8第5講VHDL順序語句2.轉(zhuǎn)向控制語句:條件控制語句——If語句:

IF語句的基本格式:

If條件ThenIf條件Then順序描述語句; 順序描述語句;

ElseEndIf;順序描述語句;

EndIf;5.2進程(Process)中的順序語句許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計9第5講VHDL順序語句2.轉(zhuǎn)向控制語句:條件控制語句——If語句:例4:EntitydffIs

Port(d:Instd_logic;clk:Instd_logic;

q:Outstd_logic);Enddff;ArchitecturebehaviorOfdffIs

Begin

Process(clk)

Begin

If(clk'eventandclk=’l’)Then

q<=d;

EndIf;

EndProcess;Endbehavior;5.2進程(Process)中的順序語句許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計10第5講VHDL順序語句2.轉(zhuǎn)向控制語句:條件控制語句——If語句:

IF語句的基本格式:

If條件1Then順序描述語句;

Elsif條件2Then順序描述語句;

Elsif條件3Then

...

Else順序描述語句;

EndIf; 5.2進程(Process)中的順序語句許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計11第5講VHDL順序語句2.轉(zhuǎn)向控制語句:條件控制語句——Case語句:

Case語句的基本格式:

Case表達式Is

When條件表達式1=>順序描述語句;

When條件表達式2=>順序描述語句;

...

When條件表達式n=>順序描述語句;

EndCase;

Case語句的各個條件表達式之間沒有優(yōu)先級,所以,給定的條件表達式不能有重疊,否則將無法確定執(zhí)行哪一個分支。而且,如果沒有列舉出Case和Is之間的表達式的全部取值,則Whenothers=>必不可少。

5.2進程(Process)中的順序語句條件表達式可以是以下格式:When值=>When值1|值2|...|值n=>When值ito值j=>Whenothers=>它們分別表示條件表達式的值是某個確定的值、多個值中的一個、一個取值范圍中的一個和其他所有的默認值。許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計12第5講VHDL順序語句2.轉(zhuǎn)向控制語句:

Case語句和If語句的區(qū)別:在大多數(shù)情況下,能用Case語句描述的邏輯電路,同樣也可以用多條件If語句來描述。但有時能用If語句描述的邏輯電路,卻不能用Case語句描述。通常在Case語句中,條件表達式(When語句)可以顛倒次序,不致于發(fā)生錯誤。但對于多條件的If語句,卻不能顛倒條件的次序。因為在Case語句中,條件表達式是沒有優(yōu)先級的,而多條件的If語句的條件是有優(yōu)先級的。在If語句中,最前面的條件其優(yōu)先級最高,越往后優(yōu)先級越低,也就是說,先處理最起始的條件;如果不滿足,再處理下一個條件。而在Case語句中,所有值的判定是并行處理的。例如,優(yōu)先級編碼器可以用If語句來描述,但不可以用Case語句描述。5.2進程(Process)中的順序語句許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計13第5講VHDL順序語句2.轉(zhuǎn)向控制語句:例5(8位優(yōu)先編碼器):EntitypriorityIsport(I:inbit_vector(7downto0);A:outbit_vector(2downto0);--encodedoutputGS:outbit);--groupsignaloutputEndpriority;Architecturev1OfpriorityIsBegin

process(I)beginGS<='1';--setdefaultoutputsA<="000";

IfI(7)='1'thenA<="111";ElsifI(6)='1'thenA<="110";ElsifI(5)='1'thenA<="101";ElsifI(4)='1'thenA<="100";ElsifI(3)='1'thenA<="011";ElsifI(2)='1'thenA<="010";ElsifI(1)='1'thenA<="001";ElsifI(0)='1'thenA<="000";ElseGS<='0';Endif;Endprocess;Endv1;5.2進程(Process)中的順序語句許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計14第5講VHDL順序語句2.轉(zhuǎn)向控制語句:循環(huán)控制語句——For循環(huán):

For循環(huán)語句的基本格式:

[標號:]For循環(huán)變量in循環(huán)次數(shù)范圍Loop順序描述語句;

End

Loop

[標號];這里,標號是可以省略的;循環(huán)變量是整數(shù)型變量,它不需要在結(jié)構(gòu)體或進程中定義,在循環(huán)體(由順序描述語句構(gòu)成)中不能通過信號或變量給循環(huán)變量賦值。5.2進程(Process)中的順序語句許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計15第5講VHDL順序語句2.轉(zhuǎn)向控制語句:例6

For循環(huán)(奇偶校驗電路):Entityparity_checkerIs

Port(data:Instd_logic_vector(7downtoO);

p:Outstd_logic);Endparity_checker;ArcLitecturebehaviorOfparity_checkerIs

Begin

Process(data)

Variabletmp:std_logic;

Begin

tmp:=‘0’;

Foriin7downto0Loop

tmp:=tmpxordata(O);

EndLoop;

p<=tmp;

EndProcess;Endbehavior;5.2進程(Process)中的順序語句許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計16第5講VHDL順序語句2.轉(zhuǎn)向控制語句:循環(huán)控制語句——While循環(huán):

While循環(huán)語句的基本格式:

[標號:]While條件Loop順序描述語句;

End

Loop

[標號];這里,當(dāng)條件為“真”時,執(zhí)行循環(huán)體中的語句;如果條件為“假”時,則結(jié)束循環(huán)。在循環(huán)體內(nèi),必須包含條件式中判別變量的賦值語句,否則會形成死循環(huán)。實際上,固定次數(shù)的循環(huán)一般用For循環(huán),不定次數(shù)的循環(huán)用While循環(huán)比較方便。但在進行需要綜合的電路描述時,不定次數(shù)的循環(huán)較難控制,所以,一般不用While循環(huán)。5.2進程(Process)中的順序語句許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計17第5講VHDL順序語句2.轉(zhuǎn)向控制語句:

Next語句:

Next語句的基本格式:

Next[標號]

[When條件];

Next語句用于從循環(huán)體跳出本次循環(huán)。執(zhí)行到該語句時,如果條件為“真”時,將結(jié)束本次循環(huán),跳到“標號”規(guī)定的語句,開始下次循環(huán)。如果標號省略,則表示跳到本層循環(huán)的起始位置,開始下一次循環(huán)。如果標號不省略,則可以跳到多層嵌套循環(huán)的指定外層循環(huán)起始處。如果“When條件”省略,則執(zhí)行到Next語句時無條件結(jié)束本次循環(huán)。如果“When條件”不省略,則條件為True時,結(jié)束本次循環(huán)。5.2進程(Process)中的順序語句許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計18第5講VHDL順序語句2.轉(zhuǎn)向控制語句:

Exit語句:

Exit語句的基本格式:

Exit[標號]

[When條件];

Exit語句用于結(jié)束循環(huán)。執(zhí)行到該語句時,如果條件為“真”時,將結(jié)束循環(huán),跳到“標號”規(guī)定的語句。如果標號省略,則表示跳到EndLoop語句的后繼位置,開始向后執(zhí)行。如果標號不省略,則可以跳到多層嵌套循環(huán)的指定外層循環(huán)起始處。如果“When條件”省略,則執(zhí)行到Next語句時無條件結(jié)束循環(huán)。如果“When條件”不省略,則條件為True時,結(jié)束循環(huán)。5.2進程(Process)中的順序語句許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計19第5講VHDL順序語句2.轉(zhuǎn)向控制語句:

Next語句和Exit語句的區(qū)別:

Next只結(jié)束本次循環(huán),開始下一次循環(huán);而Exit語句結(jié)束整個循環(huán),跳出循環(huán)體外。5.2進程(Process)中的順序語句許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計20第5講VHDL順序語句3.

Wait等待語句(進程掛起語句):進程的狀態(tài)還可以通過Wait語句來控制,當(dāng)進程執(zhí)行到Wait語句時,將被掛起,并設(shè)置好再次執(zhí)行的條件??梢允菬o限等待(Wait)或有限等待。有限等待的條件可以是:等待一段時間(WaitFor)、等待某些信號發(fā)生變化(Waiton)、等待某個條件滿足(WaitUntil),這幾個條件還可以組合成一個復(fù)合條件。5.2進程(Process)中的順序語句許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計21第5講VHDL順序語句3.

Wait等待語句(進程掛起語句):

Waiton語句格式:

Waiton信號列表;信號列表可以包括一個或多個信號,信號列表中的任何一個信號的值發(fā)生變化,進程將結(jié)束掛起狀態(tài),進入執(zhí)行狀態(tài),執(zhí)行Waiton語句后面的語句。如:

Waitona,b,s;它等待信號a、b、s中的任何一個發(fā)生變化。5.2進程(Process)中的順序語句許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計22第5講VHDL順序語句3.

Wait等待語句(進程掛起語句):例7:Entitymux2Is

Port(a,b:Instd_logic;

s:Instd_logic;

f:Outstd_logic);Endmux2;ArchitecturebehaviorOfmux2IsBegin

mux2:Process(a,b,s)

Begin

If(s=‘0’)Thenf<=a;

Elsef<=b;

EndIf;

EndProcess;Endbehavior;5.2進程(Process)中的順序語句mux2:Process()Begin

If(s=‘0’)Thenf<=a;

Elsef<=b;

EndIf;

Waitona,b,s;EndProcess;許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計23第5講VHDL順序語句3.

Wait等待語句(進程掛起語句):

WaitUntil語句格式:

WaitUntil布爾表達式;當(dāng)布爾表達式為“真”時,進程將結(jié)束掛起狀態(tài),進入執(zhí)行狀態(tài),執(zhí)行WaitUntil語句的后繼語句。如:

WaitUntila=’1’;此時,當(dāng)信號量a的值不是’1’時,進程執(zhí)行到該語句將被掛起,當(dāng)a的值為’1’時進程再次被啟動,繼續(xù)執(zhí)行Wait語句的后繼語句。5.2進程(Process)中的順序語句許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計24第5講VHDL順序語句3.

Wait等待語句(進程掛起語句):

WaitFor語句格式:

WaitFor時間表達式;如:

WaitFor30ns;

WaitFor語句只能仿真時使用,不能被綜合。5.2進程(Process)中的順序語句許鋼

2024/1/4在系統(tǒng)可編程技術(shù)應(yīng)用設(shè)計25第5講VHDL順序語句3.

Wait等待語句(進程掛起語句):

復(fù)合Wait語句:例如:

Waitonclkuntilclk=‘1’;該語句等待到clk信號的值發(fā)生變化,而且clk的值為‘1’(即clk從‘0’變到‘1’時),進程將結(jié)束掛起狀態(tài),進入執(zhí)行狀態(tài),執(zhí)行該語句的后繼語句。編程時注意

溫馨提示

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

評論

0/150

提交評論