《EDA技術(shù)實(shí)踐教程》課件3.3VHDL順序語句_第1頁
《EDA技術(shù)實(shí)踐教程》課件3.3VHDL順序語句_第2頁
《EDA技術(shù)實(shí)踐教程》課件3.3VHDL順序語句_第3頁
《EDA技術(shù)實(shí)踐教程》課件3.3VHDL順序語句_第4頁
《EDA技術(shù)實(shí)踐教程》課件3.3VHDL順序語句_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

3.3

VHDL順序語句

順序語句只能出現(xiàn)在進(jìn)程(PROCESS)、過程(PROCEDURE)和函數(shù)(FUNCTION)中,其特點(diǎn)與傳統(tǒng)的計(jì)算機(jī)編程語句類似,是按程序書寫的順序自上而下、一條一條地執(zhí)行。利用順序語句可以描述數(shù)字邏輯系統(tǒng)中的組合邏輯電路和時(shí)序邏輯電路。VHDL的順序語句有賦值語句、流程控制語句、等待語句、子程序調(diào)用語句、返回語句、空操作語句等六類。

3.3.1

VHDL賦值語句順序語句——在進(jìn)程(PROCESS)或子程序(PROCEDURE)、函數(shù)(FUNCTION)中使用,按程序書寫的順序自上而下、一個(gè)一個(gè)語句地執(zhí)行;并行語句——出現(xiàn)在結(jié)構(gòu)體中,各語句并行(同步)執(zhí)行,與書寫的順序無關(guān)。

一、變量賦值語句格式:目標(biāo)變量名:=賦值源(表達(dá)式);例如:x:=5.0;二、

信號賦值語句格式:目標(biāo)信號名<=賦值源;例如:y<=‘1’;說明:該語句若出現(xiàn)在進(jìn)程或子程序中則是順序語句,若出現(xiàn)在結(jié)構(gòu)體中則是并行語句。三、數(shù)組元素賦值例如:SIGNALa,b:STD

LOGIC

VECTOR(1TO4);

a<=“1101”;

a(1TO2)<=“10” a(1TO2)<=b(2TO3);

3.3.2

流程控制語句

一、IF語句格式1:IF條件句Then

順序語句; ENDIF;格式2:IF條件句Then

順序語句; ELSE

順序語句; ENDIF;格式3:IF條件句Then

順序語句; ELSIF條件句Then

順序語句;

… ELSE

順序語句; ENDIF;例1:用VHDL語言描述下圖硬件電路cabyLIBRARYIEEE;USEIEEE.STD

LOGIC

1164.ALLENTITYcontrol

stmtsISPORT(a,b,c:INBOOLEAN;

y:OUTBOOLEAN);ENDcontrol

stmts;ARCHITECTUREexample1OFcontrol

stmtsISBEGIN PROCESS(a,b,c)

VARIABLEn:BOOLEAN;

BEGIN IFaTHENn:=b;

ELSE n:=c;

ENDIF; y<=n;

ENDPROCESS;ENDexample1;

例2,8線-3線優(yōu)先編碼器的設(shè)計(jì)

(真值表)輸入

輸出a0a1a2a3a4a5a6a7y0y1y2xxxxxxx0111xxxxxx01011xxxxx011101xxxx0111001xxx01111110xx011111010x011111110001111111000LIBRARYIEEE;USEIEEE.STD

LOGIC

1164.ALLENTITYcoderISPORT(a:INSTD

LOGIC

VECTOR(0TO7);

y:OUTSTD

LOGIC

VECTOR(0TO2));ENDcoder;ARCHITECTUREexample2OFcoderISBEGINPROCESS(a)

BEGIN IF(a(7)=‘0’)THENy<=”111”;

ELSIF(a(6)=’0’) THENy<=”011”; ELSIF(a(5)=’0’) THENy<=”101”; ELSIF(a(4)=’0’) THENy<=”001”; ELSIF(a(3)=’0’) THENy<=”110”; ELSIF(a(2)=’0’) THENy<=”010”; ELSIF(a(1)=’0’) THENy<=”100”; ELSEy<=”000”; ENDIF; ENDPROCESS;ENDexample2;

二、CASE語句格式:CASE表達(dá)式IS When選擇值=>順序語句; When選擇值=>順序語句;

… WhenOTHERS=>順序語句;

ENDCASE;說明:“=>”不是運(yùn)算符,相當(dāng)“THEN”例3,用CASE語句描述4選1數(shù)據(jù)選擇器數(shù)據(jù)選擇器as2zbcds1LIBRARYIEEE;USEIEEE.STD

LOGIC

1164.ALLENTITYmux41ISPORT(s1,s2:INSTD

LOGIC;

a,b,c,d:INSTD

LOGIC;

z:OUTSTD

LOGIC);ENDmux41;ARCHITECTUREexample3OFmux41ISSIGNALs:STD

LOGIC

VECTOR(1DOWNTO0)BEGIN s<=s1&s2 PROCESS(s1,s2,a,b,c,d)

BEGIN CASEsIS WHEN“00”=>z<=a;

WHEN“01”=>z<=b;

WHEN“10”=>z<=c;

WHEN“11”=>z<=d;

WHENOTHERS=>z<=‘X’;

ENDCASE;

ENDPROCESS;ENDexample3;

三、FORLOOP語句格式1:[標(biāo)號:]FOR循環(huán)變量IN初值TO終值LOOP

順序語句; ENDLOOP[標(biāo)號];例4,8位奇偶校驗(yàn)器的描述8位奇偶校驗(yàn)器a(0)za(1)a(2)a(3)a(4)a(5)a(6)a(7)8位奇偶校驗(yàn)器za(7..0)LIBRARYIEEE;USEIEEE.STD

LOGIC

1164.ALLENTITYp

checkISPORT(a:INSTD_LOGIC_VECTOR(7DOWNTO0);

y:OUTSTD

LOGIC);ENDp

check;ARCHITECTUREexample4OFp

checkISBEGINPROCESS(a)VARIABLEtemp:STD_LOGIC; BEGIN temp:='0'; FORnIN7DOWNTO0LOOP temp:=tempXORa(n); ENDLOOP; y<=temp; ENDPROCESS; ENDexample4;

四、NEXT語句格式:NEXT[標(biāo)號][WHEN條件];功能:(1)NEXT——無條件結(jié)束本次循環(huán)(2)NEXT標(biāo)號——結(jié)束本次循環(huán),從“標(biāo)號”規(guī)定的位置繼續(xù)循環(huán);(3)NEXTWHEN條件——當(dāng)“條件”滿足時(shí)結(jié)束本次循環(huán),否則繼續(xù)循環(huán)。五、EXIT語句格式:EXIT[標(biāo)號][WHEN條件];功能:(1)EXIT——無條件跳出循環(huán)(2)EXIT標(biāo)號——跳出循環(huán),從“標(biāo)號”規(guī)定的位置開始循環(huán);(3)EXITWHEN條件——當(dāng)“條件”滿足時(shí)跳出循環(huán),否則繼續(xù)循環(huán)。

3.3.3

WAIT語句

一、格式1:WAITON敏感信號表;功能:將運(yùn)行的程序掛起直至敏感信號表中的任一信號發(fā)生變化時(shí)結(jié)束掛起,重新執(zhí)行程序。例如:SIGNALs1,s2:STD

LOGIC;

PROCESS … WAITONs1,s2;

ENDPROCESS;注意:含WAIT語句的進(jìn)程PROCESS的括弧中后不能加敏感信號,否則是非法的,例如

PROCESS(s1,s2)二、格式2:WAITUNTIL條件表達(dá)式;功能:將運(yùn)行的程序掛起直至表達(dá)式中的敏感信號發(fā)生變化,而且滿足表達(dá)式設(shè)置的條件時(shí)結(jié)束掛起,重新執(zhí)行程序。例如:WAITUNTILenable=‘1’;3.3.4

斷言(ASSERT)語句格式:ASSERT條件表達(dá)式[ REPORT字符串][ SEVERITY錯誤等級]功能:當(dāng)條件為“真”時(shí),向下執(zhí)行另一個(gè)語句,為“假”時(shí),則輸出“字符串”信息并指出“錯誤等級”。用途:用于仿真、調(diào)試程序時(shí)的人機(jī)對話。例如ASSERT(S=‘1’ANDR=‘1’)REPORT“BothvaluesofSandRareequal‘1’”SEVERITYERROR;錯誤等級:NOTE(注意),WARNING(警告),ERROR(出錯),F(xiàn)AILURE(失?。?.3.5

屬性(ATTRIBUTE)描述與定義語句

功能:用于檢出時(shí)鐘邊沿、完成定時(shí)檢查、獲得未約束的數(shù)據(jù)類型的范圍等。格式:屬性測試項(xiàng)目名‘屬性標(biāo)識符;--S‘屬性標(biāo)識符預(yù)定義屬性函數(shù)標(biāo)識符及功能:例如:TYPEnumberISINTEGERRANGE9DOWNTO0;

I:=number‘LEFT;--I=9 I:=number‘RIGTH;--I=0 I:=number‘HIGH;--I=9 I:=number‘LOW;--I=0EVENT——表示對當(dāng)前的一個(gè)極小的時(shí)間段內(nèi)發(fā)生事件的情況進(jìn)行檢測(如時(shí)鐘的邊沿)。例如:clock‘EVENT --檢測以clock為屬性測試項(xiàng)目的事件

clock‘EVENTANDclock=‘1’; --檢測clock的上升沿

clock‘EVENTANDclock=‘0’; --檢測clock的下降沿LAST_EVENT——從信號最近一次的發(fā)生至今所經(jīng)歷的時(shí)間,常用于檢查定時(shí)時(shí)間、建立時(shí)間、保持時(shí)間和脈沖寬度等。例如:檢查D觸發(fā)器的D輸入端的建立時(shí)間是否達(dá)到要求。LIBRARYIEEE;USEIEEE.STD

LOGIC

1164.ALLENTITYdffISGENERIC(setup_time,hold_time:TIME); PORT(d,clk:INSTD

LOGIC;

q:OUTSTD

LOGIC);BEGINSetup_checkPROCESS(clk)

BEGIN IF(clk=’1’)AND(clk’EVENT)THEN ASSERT(d’LAST_EVENT>=setup_time) REPORT“SETUPVIOLATION” SEVERITYERROR; ENDIF;ENDPROCESS;ENDdff;ARCHITECTUREdff_behavOFdffISBEGINDff_PROCESS:PROCESS(clk) BEGIN IF( clk=’1’)AND(

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論