EDA應(yīng)用技術(shù) 第2版 課件 02-VHDL順序語(yǔ)句課件_第1頁(yè)
EDA應(yīng)用技術(shù) 第2版 課件 02-VHDL順序語(yǔ)句課件_第2頁(yè)
EDA應(yīng)用技術(shù) 第2版 課件 02-VHDL順序語(yǔ)句課件_第3頁(yè)
EDA應(yīng)用技術(shù) 第2版 課件 02-VHDL順序語(yǔ)句課件_第4頁(yè)
EDA應(yīng)用技術(shù) 第2版 課件 02-VHDL順序語(yǔ)句課件_第5頁(yè)
已閱讀5頁(yè),還剩15頁(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)介

VHDL的順序語(yǔ)句只能出現(xiàn)在進(jìn)程(process)、過(guò)程(procedure)和函數(shù)(function)中,利用順序語(yǔ)句可以描述數(shù)字邏輯系統(tǒng)中的組合邏輯電路和時(shí)序邏輯電路。VHDL程序中常見(jiàn)的順序語(yǔ)句有:賦值語(yǔ)句、流程控制語(yǔ)句、wait語(yǔ)句、子程序調(diào)用語(yǔ)句、空操作語(yǔ)句、斷言語(yǔ)句、report語(yǔ)句等。項(xiàng)目5VHDL的順序語(yǔ)句1.順序賦值語(yǔ)句順序賦值語(yǔ)句是出現(xiàn)在進(jìn)程、過(guò)程和函數(shù)中的賦值語(yǔ)句,有信號(hào)賦值語(yǔ)句和變量賦值語(yǔ)句。它們的格式如下:

變量名:=表達(dá)式;

信號(hào)名<=表達(dá)式;變量賦值具有局部特征,它的賦值是立即發(fā)生的。信號(hào)賦值具有全局特征,它可以作為一個(gè)設(shè)計(jì)實(shí)體內(nèi)部各單元之間數(shù)據(jù)傳送的載體,還可通過(guò)信號(hào)進(jìn)行實(shí)體間通信。信號(hào)在順序語(yǔ)句中的賦值發(fā)生在一個(gè)進(jìn)程結(jié)束或子程序調(diào)用完成以后,信號(hào)的賦值有一定的延時(shí)。項(xiàng)目5VHDL的順序語(yǔ)句【例5.1】變量賦值和信號(hào)賦值的應(yīng)用項(xiàng)目5VHDL的順序語(yǔ)句信號(hào)“scnt”與變量“vcnt”都從0開(kāi)始加1計(jì)數(shù),但是信號(hào)計(jì)數(shù)輸出“sigcnt”值比變量計(jì)數(shù)輸出“varcnt”值延遲一個(gè)時(shí)鐘周期。相當(dāng)于信號(hào)賦值是通過(guò)寄存器賦值,而變量賦值是直接賦值。2.流程控制語(yǔ)句流程控制語(yǔ)句通過(guò)對(duì)條件的判斷來(lái)決定執(zhí)行哪一條或幾條語(yǔ)句,常用的流程控制語(yǔ)句有if語(yǔ)句、case語(yǔ)句、loop語(yǔ)句等。(1)if語(yǔ)句if語(yǔ)句是通過(guò)對(duì)分支條件的判斷決定執(zhí)行哪個(gè)分支的順序語(yǔ)句。if語(yǔ)句的常用格式有以下三種。①單分支if語(yǔ)句。單分支if語(yǔ)句格式如下:If條件判斷表達(dá)式then

順序執(zhí)行語(yǔ)句;endif;當(dāng)程序執(zhí)行到單分支if語(yǔ)句時(shí),如果if的判斷條件為真,則if語(yǔ)句所包含的順序執(zhí)行語(yǔ)句將被執(zhí)行;否則,不做任何操作。項(xiàng)目5VHDL的順序語(yǔ)句【例5.2】單分支if語(yǔ)句的應(yīng)用項(xiàng)目5VHDL的順序語(yǔ)句在組合電路中使用單分支if語(yǔ)句,從“in_a”到“out_a”產(chǎn)生的是鎖存器;在時(shí)序電路中使用單分支if語(yǔ)句,從“in_b”到“out_b”產(chǎn)生的是寄存器。②兩分支if語(yǔ)句。兩分支if語(yǔ)句格式:If條件判斷表達(dá)式then

順序執(zhí)行語(yǔ)句1;else

順序執(zhí)行語(yǔ)句2;Endif;當(dāng)if條件成立時(shí),程序執(zhí)行then和else之間的順序執(zhí)行語(yǔ)句;當(dāng)if語(yǔ)句的條件不成立時(shí),程序執(zhí)行else和endif之間的順序執(zhí)行語(yǔ)句,即根據(jù)所指定的條件是否滿足,程序可以選擇兩條不同的執(zhí)行路徑,可以看成是一個(gè)二選一數(shù)選擇器。項(xiàng)目5VHDL的順序語(yǔ)句【例5.3】?jī)煞种f語(yǔ)句的應(yīng)用項(xiàng)目5VHDL的順序語(yǔ)句從兩分支if語(yǔ)句寄存器傳輸級(jí)綜合效果圖中可知,兩分支if語(yǔ)句是一個(gè)二選一數(shù)據(jù)選擇器。③多分支if語(yǔ)句。多分支if語(yǔ)句的格式:if條件判斷表達(dá)式1then

順序語(yǔ)句1;elsif條件判斷表達(dá)式2then

順序語(yǔ)句2; …elsif條件判斷表達(dá)式nthen

順序語(yǔ)句n;else

順序語(yǔ)句n+1;endif;項(xiàng)目5VHDL的順序語(yǔ)句沒(méi)有else分支的格式:if條件判斷表達(dá)式1then

順序語(yǔ)句1;elsif條件判斷表達(dá)式2then

順序語(yǔ)句2; …elsif條件判斷表達(dá)式nthen

順序語(yǔ)句n;endif;多分支if語(yǔ)句執(zhí)行多選擇控制功能,允許在一個(gè)語(yǔ)句中出現(xiàn)多重條件,即條件嵌套。當(dāng)滿足所設(shè)置的多個(gè)條件之一時(shí),就執(zhí)行該條件后的順序執(zhí)行語(yǔ)句。【例5.4】多分支if語(yǔ)句的應(yīng)用項(xiàng)目5VHDL的順序語(yǔ)句從多分支if語(yǔ)句寄存器傳輸級(jí)綜合效果圖中可知,輸出“out_a”的多分支if語(yǔ)句最后加了else分支,沒(méi)有產(chǎn)生鎖存器;輸出“out_b”的多分支if語(yǔ)句最后沒(méi)有加else分支,產(chǎn)生了鎖存器,而且前面還產(chǎn)生了一個(gè)3輸入的“或門(mén)”等資源消耗。(2)case語(yǔ)句case語(yǔ)句的格式如下:case判斷表達(dá)式iswhen選擇項(xiàng)值1=>順序語(yǔ)句1;when選擇項(xiàng)值2=>順序語(yǔ)句2;

…when選擇項(xiàng)值n=>順序語(yǔ)句n;whenothers=>順序語(yǔ)句n+1;endcase;當(dāng)執(zhí)行case語(yǔ)句時(shí),首先計(jì)算判斷表達(dá)式的值,然后根據(jù)條件句中與之相同的選擇值對(duì)應(yīng)的順序語(yǔ)句執(zhí)行,最后結(jié)束case語(yǔ)句。選擇項(xiàng)可以是一個(gè)值,也可以是多個(gè)用“值|值|值”表示的值,還可用“值to值”約束一個(gè)范圍,但選擇項(xiàng)不能有重復(fù)。項(xiàng)目5VHDL的順序語(yǔ)句使用case語(yǔ)句注意點(diǎn):①條件句中的“=>”是操作符,它相當(dāng)于if語(yǔ)句中的“then”。②條件句中的選擇值,必須在“判斷表達(dá)式”的取值范圍之內(nèi)。③case語(yǔ)句中每一條語(yǔ)句的選擇值只能出現(xiàn)一次。④除非所有條件句中的選擇值能完全覆蓋case語(yǔ)句表達(dá)式的取值,否則最末一個(gè)條件句中的選擇值,必須用“others”表示,它代表已給的所有條件句中未能列出的其他可能的取值。關(guān)鍵詞“others”只能出現(xiàn)一次,且只能作為最后一條件取值。⑤與if語(yǔ)句相比,if語(yǔ)句是有序的,先處理最起始、最優(yōu)先的條件,后處理次優(yōu)先的條件。case語(yǔ)句是無(wú)序的,所有表達(dá)式的值都并行處理。項(xiàng)目5VHDL的順序語(yǔ)句【例5.5】case語(yǔ)句與多分支if語(yǔ)句的差別項(xiàng)目5VHDL的順序語(yǔ)句使用case語(yǔ)句從輸入到輸出“out_a”是一個(gè)數(shù)據(jù)選擇器,只有一個(gè)數(shù)據(jù)選擇器的延時(shí)。多分支if語(yǔ)句從輸入到輸出“out_b”由多級(jí)級(jí)連的二選一數(shù)據(jù)選擇器組成,等級(jí)最低的if分支從輸入到輸出要經(jīng)過(guò)多級(jí)二選一數(shù)據(jù)選擇器的延時(shí)。(3)loop語(yǔ)句loop語(yǔ)句的功能是循環(huán)執(zhí)行一條或多條順序語(yǔ)句,主要有for循環(huán)、while循環(huán)和條件跳出等三種形式。①for/loop語(yǔ)句。for/loop語(yǔ)句格式如下:[標(biāo)號(hào)]:for循環(huán)變量in循環(huán)變量的范圍loop

順序語(yǔ)句;endloop[標(biāo)號(hào)];for循環(huán)語(yǔ)句中的循環(huán)變量是一個(gè)臨時(shí)變量,是loop語(yǔ)句的局部變量,不必事先定義,由loop語(yǔ)句自動(dòng)定義,它只能作為賦值源,不能被賦值。在同一loop語(yǔ)句中不能再使用與此變量同名的標(biāo)識(shí)符。循環(huán)變量的循環(huán)范圍從循環(huán)變量的初值開(kāi)始,每執(zhí)行一次,就改變一次,直到循環(huán)變量范圍的終值。項(xiàng)目5VHDL的順序語(yǔ)句【例5.6】for/loop語(yǔ)句的應(yīng)用項(xiàng)目5VHDL的順序語(yǔ)句例5.6VHDL程序是16位偶校驗(yàn)電路。從仿真結(jié)果可知,輸入第1個(gè)“data”值的所有位中有4個(gè)1,校驗(yàn)結(jié)果“xoro”為“0”,與偶校驗(yàn)位相同,輸入的“data”值中有偶數(shù)個(gè)“1”;輸入第2個(gè)“data”值的所有位中有5個(gè)1,校驗(yàn)結(jié)果“xoro”為“1”,與偶校驗(yàn)位不相同,輸入的“data”值中有奇數(shù)個(gè)“1”。同理,可分析圖中其它輸入數(shù)值的偶校驗(yàn)。②while/loop語(yǔ)句。while/loop語(yǔ)句格式如下:[標(biāo)號(hào)]:while條件loop

順序處理語(yǔ)句;endloop[標(biāo)號(hào)];在while/loop語(yǔ)句中,沒(méi)有給出循環(huán)次數(shù)的范圍,而給出了循環(huán)執(zhí)行順序語(yǔ)句的條件,沒(méi)有自動(dòng)遞增循環(huán)變量的功能。如果循環(huán)控制條件為真,則進(jìn)行循環(huán),否則結(jié)束循環(huán)。因而需要在順序處理語(yǔ)句中有修改循環(huán)條件的語(yǔ)句,使循環(huán)條件不滿足,從而結(jié)束循環(huán)。項(xiàng)目5VHDL的順序語(yǔ)句【例5.7】while/loop語(yǔ)句的應(yīng)用項(xiàng)目5VHDL的順序語(yǔ)句例5.7的VHDL程序是16位奇校驗(yàn)電路。從仿真結(jié)果可知,輸入第1個(gè)“data”值的所有位中有4個(gè)1,校驗(yàn)結(jié)果“xoro”為“1”,與奇校驗(yàn)位相同,說(shuō)明輸入的“data”值中有偶數(shù)個(gè)“1”;輸入第2個(gè)“data”值的所有位中有5個(gè)1,校驗(yàn)結(jié)果“xoro”為“0”,與奇校驗(yàn)位不相同,說(shuō)明輸入的“data”值中有奇數(shù)個(gè)“1”;同理,可分析圖中其它輸入數(shù)值的奇校驗(yàn)。③條件跳出循環(huán)。循環(huán)語(yǔ)句中的next與exit語(yǔ)句,用來(lái)結(jié)束循環(huán)或跳出循環(huán)。next語(yǔ)句用于控制內(nèi)循環(huán)的結(jié)束,其格式為:next[標(biāo)號(hào)][when條件];exit語(yǔ)句用于結(jié)束loop循環(huán)狀態(tài),其格式為:exit[標(biāo)號(hào)][when條件];next語(yǔ)句與exit語(yǔ)句具有相似的語(yǔ)句格式和跳轉(zhuǎn)功能,它們都是loop語(yǔ)句的內(nèi)部循環(huán)控制語(yǔ)句。next語(yǔ)句是跳向loop語(yǔ)句的起始點(diǎn),而exit語(yǔ)句是跳向loop語(yǔ)句的終點(diǎn)。項(xiàng)目5VHDL的順序語(yǔ)句3.wait語(yǔ)句wait語(yǔ)句的功能是把一個(gè)進(jìn)程掛起,直到滿足等待的條件成立才重新開(kāi)始進(jìn)程的執(zhí)行,含wait語(yǔ)句的進(jìn)程,process后不能加敏感信號(hào),否則是非法的。wait語(yǔ)句使用形式通常有waiton(敏感信號(hào)列表)、waituntil(判斷條件表達(dá)式)和waitfor(時(shí)間)等三種形式。項(xiàng)目5VHDL的順序語(yǔ)句(1)waiton語(yǔ)句waiton語(yǔ)句的使用格式為:processbegin

順序語(yǔ)句1;順序語(yǔ)句2;

…順序語(yǔ)句n;waiton信號(hào)[,信號(hào)];endprocess;waiton語(yǔ)句后的信號(hào)也可以稱為敏感信號(hào),如果信號(hào)發(fā)生變化,則執(zhí)行,否則進(jìn)程處于掛起狀態(tài)。waiton語(yǔ)句有些綜合工具不支持。3.wait語(yǔ)句項(xiàng)目5VHDL的順序語(yǔ)句(2)waituntil語(yǔ)句waituntil語(yǔ)句的使用格式為:processbegin

順序語(yǔ)句1;順序語(yǔ)句2;

…順序語(yǔ)句n;waituntil條件判斷表達(dá)式;endprocess;當(dāng)進(jìn)程執(zhí)行到waituntil語(yǔ)句時(shí)進(jìn)程被掛起,若條件判斷表達(dá)式為真,則進(jìn)程將被啟動(dòng)。waituntil語(yǔ)句中,條件判斷表達(dá)式隱式地建立了一個(gè)敏感信號(hào)量表。wait語(yǔ)句的功能是把一個(gè)進(jìn)程掛起,直到滿足等待的條件成立才重新開(kāi)始進(jìn)程的執(zhí)行,含wait語(yǔ)句的進(jìn)程,process后不能加敏感信號(hào),否則是非法的。wait語(yǔ)句使用形式通常有waiton(敏感信號(hào)列表)、waituntil(判斷條件表達(dá)式)和waitfor(時(shí)間)等三種形式。3.wait語(yǔ)句項(xiàng)目5VHDL的順序語(yǔ)句(3)waitfor語(yǔ)句waitfor語(yǔ)句的格式為:processbegin

順序語(yǔ)句1;順序語(yǔ)句2;

…順序語(yǔ)句n;waitfor時(shí)間

溫馨提示

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