版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年新世紀版九年級歷史下冊階段測試試卷含答案
- 2025年湘師大新版八年級地理下冊月考試卷含答案
- 2025年新世紀版選修6歷史下冊月考試卷含答案
- 2025年人民版必修3歷史下冊月考試卷含答案
- 2025年人教A新版九年級地理下冊階段測試試卷含答案
- 2025年滬科版八年級歷史下冊階段測試試卷含答案
- 2025年滬科版九年級地理下冊階段測試試卷
- 2025年外研版必修三歷史上冊階段測試試卷
- 2025年教科新版必修3生物下冊月考試卷含答案
- 2025年新科版選擇性必修3生物下冊階段測試試卷含答案
- 課題申報書:GenAI賦能新質(zhì)人才培養(yǎng)的生成式學(xué)習(xí)設(shè)計研究
- 2024年江蘇省中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 駱駝祥子-(一)-劇本
- 全國醫(yī)院數(shù)量統(tǒng)計
- 《中國香文化》課件
- 2024年醫(yī)美行業(yè)社媒平臺人群趨勢洞察報告-醫(yī)美行業(yè)觀察星秀傳媒
- 第六次全國幽門螺桿菌感染處理共識報告-
- 天津市2023-2024學(xué)年七年級上學(xué)期期末考試數(shù)學(xué)試題(含答案)
- 經(jīng)濟學(xué)的思維方式(第13版)
- 盤錦市重點中學(xué)2024年中考英語全真模擬試卷含答案
- 背景調(diào)查報告
評論
0/150
提交評論