




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
程序中的語法解釋:
IF語句是VHDL中最常用的和最重要的順序條件語句,它是根據(jù)語句中所設(shè)置的一種或者多種條件,有選擇地執(zhí)行指定的順序語句。--IF的語法結(jié)構(gòu)(1)IF條件句THEN
順序語句
ENDIF;
格式(1)如果條件為真,于是(THEN)順序執(zhí)行條件句中所列出來的“順序語句”,直到ENDIF;如果條件為假,則直接跳過順序語句,結(jié)束IF語句的執(zhí)行。這是一種不完整的條件語句,用于產(chǎn)生時序電路。
格式(2)和格式(1)相比,當判斷條件為假時,并不直接跳離IF語句,而是執(zhí)行ELSE下列出來的一系列的順序語句。所以格式(2)具有條件分支的功能,它可以通過條件來判斷應(yīng)該執(zhí)行哪段順序語句。這是一種完整性語句描述,因為它給出了條件句所有可能的條件,因此通常用于產(chǎn)生組合電路。(2)IF條件句THEN
順序語句
ELSE
順序語句
ENDIF;
格式(3)是一種多重IF的嵌套式條件句,可以產(chǎn)生比較豐富的條件描述,既可以產(chǎn)生組合電路,也可以產(chǎn)生數(shù)字電路,或者是二者的混和。使用該語句時應(yīng)該注意,ENDIF的數(shù)量應(yīng)該與嵌套的條件句數(shù)量一致。(3)IF條件句THENIF條件句THEN......ENDIF;ENDIF;
(4)IF條件句THEN
順序語句
ELSEIF條件句THEN
順序語句
......ELSE
順序語句
ENDIF;ELSEIF來設(shè)定多個判斷條件,使判斷分支可以超過2個
顯然,程序的最后一項賦值語句“output<="111"”的執(zhí)行條件(相與條件)是:(din(7)='1')AND(din(6)='1')AND(din(5)='1')AND(din(4)='1')AND(din(3)='1')AND(din(2)='1')AND(din(1)='1')AND(din(0)=‘0')。
數(shù)碼轉(zhuǎn)換電路設(shè)計
4位二進制到十進制的真值表LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;--****************************************ENTITYycllIS PORT(A:INUNSIGNED(3DOWNTO0) ; BCD0,BCD1:OUTSTD_LOGIC_VECTOR(3DOWNTO0); SEVEN0,SEVEN1:OUTSTD_LOGIC_VECTOR(6DOWNTO0));ENDycll;--****************************************--(1)STD_LOGIC_ARITH程序包:包括數(shù)據(jù)類型UNSIGNED的定義及相關(guān)的算術(shù)運算符和轉(zhuǎn)換函數(shù);--(2)STD_LOGIC_UNSIGNED程序包:包括可用于INTEGER和STD_LOGIC型混合運算的運算符,并定義了STD_LOGIC型到INTEGER型的轉(zhuǎn)換函數(shù);--(3)UNSIGNED,具有數(shù)值和邏輯類型雙重身份,可以進行數(shù)值和邏輯運算。ARCHITECTUREbhvOFycllISSIGNALXC:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(A) BEGIN IFA<10THEN BCD1<="0000"; BCD0<=STD_LOGIC_VECTOR(A); SEVEN1<="0111111"; XC<=STD_LOGIC_VECTOR(A);--**************************************** ELSE BCD1<="0001"; BCD0<=STD_LOGIC_VECTOR(A)-10; SEVEN1<="0000110"; XC<=STD_LOGIC_VECTOR(A)-10;--**************************************** ENDIF;ENDPROCESS;
SEVEN_SEGMENT:BLOCK BEGIN SEVEN0<="0111111"WHENXC="0000"ELSE "0000110"WHENXC="0001"ELSE "1011011"WHENXC="0010"ELSE "1001111"WHENXC="0011"ELSE "1100110"WHENXC="0100"ELSE "1101101"WHENXC="0101"ELSE "1111101"WHENXC="0110"ELSE "0000111"WHENXC="0111"ELSE "1111111"WHENXC="1000"ELSE "1101111"WHENXC="1001"ELSE "0000000"; ENDBLOCKSEVEN_SEGMENT;ENDbhv;數(shù)碼轉(zhuǎn)換程序仿真結(jié)果--例18.有問題的4位加法器libraryIEEE;useIEEE.std_logic_1164.all;useIEEE.std_logic_arith.all;useIEEE.std_logic_unsigned.all;
ENTITYadderIS PORT(data1,data2:INUNSIGNED(3downto0); Sum:OUTSTD_LOGIC_VECTOR(3downto0); );ENDadder;architectureARCHofadderisBEGIN Sum<=data1+data2;ENDarch;--例4.23
4位加法器的VHDL程序libraryIEEE;useIEEE.std_logic_1164.all;useIEEE.std_logic_arith.all;useIEEE.std_logic_unsigned.all;--check4-BITadderfunctionentityADDER1isport(A:inUNSIGNED(3downto0); B:inUNSIGNED(3downto0); Cin:inSTD_LOGIC;BCDout:outSTD_LOGIC_VECTOR(3downto0); Cout:outSTD_LOGIC);endADDER1;ARCHITECTUREARCHofADDER1IS
SIGNALY,C:STD_LOGIC_VECTOR(3downto0);begin Y(0)<=A(0)XORB(0)XORCin; Y(1)<=A(1)XORB(1)XORC(0); Y(2)<=A(2)XORB(2)XORC(1); Y(3)<=A(3)XORB(3)XORC(2); C(0)<=(CinANDA(0))OR(CinANDB(0))OR(A(0)ANDB(0)); C(1)<=(C(0)ANDA(1))OR(C(0)ANDB(1))OR(A(1)ANDB(1)); C(2)<=(C(1)ANDA(2))OR(C(1)ANDB(2))OR(A(2)ANDB(2)); C(3)<=(C(2)ANDA(3))OR(C(2)ANDB(3))OR(A(3)ANDB(3)); BCDout<=Y(3)&Y(2)&Y(1)&Y(0); Cout<=C(3);endARCH;--例4.24全加器的簡化程序ARCHITECTUREARCHofADDER1isSIGNALY,C:STD_LOGIC_VECTOR(3downto0);Y(0)<=A(0)XORB(0)XORCin;C(0)<=(CinANDA(0))OR(CinANDB(0))OR(A(0)ANDB(0));GEN:FORIIN1TO3GENERATEY(I)<=A(I)XORB(I)XORC(I-1);C(I)<=(C(I-1)ANDA(I))OR(C(I-1)ANDB(I))OR(A(I)ANDB(I)); ENDGENERATE; BCDout<=Y(3)&Y(2)&Y(1)&Y(0); Cout<=C(3);endARCH;--例4.251位加法器的設(shè)計(全加器組件)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYFullAdderISPort( A :IN Std_Logic; B :IN Std_Logic; C :IN Std_Logic; Carry :INOUTStd_Logic; Sum :OUTStd_Logic );EndFullAdder;ARCHITECTUREaOFFullAdderISBeginSum<=AXORBXORC;Carry<=(AandB)or(AandC)or(BandC);enda;--例4.264位加法器的設(shè)計LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYtstisPORT( A:INSTD_LOGIC_VECTOR(3Downto0);
B:INSTD_LOGIC_VECTOR(3Downto0); S:OUTSTD_LOGIC_VECTOR(3Downto0); C:INOUTSTD_LOGIC_VECTOR(4Downto0) );ENDtst;ARCHITECTUREaOFtstIS ComponentFullAdder--組件定義
Port( A :IN Std_Logic; B :IN Std_Logic; C :IN Std_Logic; Carry:INOUTStd_Logic; Sum :OUTStd_Logic ); EndComponent; BEGINC(0)<='0';--組件映像GEN:FORIIN0TO3GENERATEBEGINFullAdderPORTMAP(A(I),B(I),C(I),C(I+1),S(I)); ENDGENERATE;
ENDa;--例4.27
4位加法計數(shù)器ENTITYCNT4ISPORT(CLK:INBIT;Q:BUFFERINTEGERRANGE15DOWNTO0);END;ARCHITECTUREbhvOFCNT4ISBEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ<=Q+1;ENDIF;ENDPROCESS;ENDbhv;--例4.28
4位計數(shù)器
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT4ISPORT(CLK:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));END;ARCHITECTUREbhvOFCNT4ISSIGNALQ1:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ1<=Q1+1;ENDIF;Q<=Q1;ENDPROCESS;ENDbhv;4位計數(shù)器的RTL電路--例4.29異步復(fù)位和時鐘使能的10進制計數(shù)器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT10ISPORT(CLK,RST,EN:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUT:OUTSTD_LOGIC);ENDCNT10;ARCHITECTUREbehavOFCNT10ISBEGIN
PROCESS(CLK,RST,EN)VARIABLECQI:STD_LOGIC_VECTOR(3DOWNTO0);-變量型BEGINIFRST='1'THENCQI:=(OTHERS=>'0');--計數(shù)器復(fù)位
ELSIFCLK'EVENTANDCLK='1'THEN--檢測時鐘上升沿
IFEN='1'THEN--檢測是否允許計數(shù)
IFCQI<"1001"THENCQI:=CQI+1;--允許計數(shù)
ELSECQI:=(OTHERS=>'0');--大于9,計數(shù)值清零
ENDIF;ENDIF;ENDIF;IFCQI="1001"THENCOUT<='1';ELSECOUT<='0';ENDIF;CQ<=CQI;--將計數(shù)值向端口輸出
ENDPROCESS;ENDbehav;--例4.32雙向移位寄存器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.AL
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 政治 (道德與法治)七年級上冊(2024)集體生活成就我教學設(shè)計及反思
- 人教版一年級上冊數(shù)學 第6、7單元階段性綜合復(fù)習
- 地質(zhì)勘探市場拓展策略考核試卷
- 鹽的農(nóng)藥殘留與環(huán)境風險評估考核試卷
- 小學手指第1課時教案設(shè)計
- 竹材采伐與加工設(shè)備應(yīng)用考核試卷
- 礦石的尾礦處理和回收利用考核試卷
- 重慶市沙坪壩區(qū)九年級歷史上冊 世界古代史 第二學習主題 古代亞非文明 第2課 上古亞非文明教學設(shè)計 川教版
- 社區(qū)公共衛(wèi)生事件應(yīng)對考核試卷
- 空調(diào)器室內(nèi)氣流組織優(yōu)化考核試卷
- 醫(yī)療質(zhì)量與安全管理委員會會議紀要
- 公路養(yǎng)護工技師專業(yè)技術(shù)理論知識競賽試題庫(附含答案)
- 房建技術(shù)員施工員考試參考題庫(含各題型)
- 新款h2夜視移動電源
- 相關(guān)人員因私出入境證件借出申請表
- 動火作業(yè)申請書
- DB11-T 1832.13-2022建筑工程施工工藝規(guī)程 第13部分:給水與排水工程
- 天津大學年《巖體力學》期末試題及答案
- 成果報告書(模板)
- 牛腿計算表(自動版)
- 供料機工作原理與使用
評論
0/150
提交評論