精華VHDL設(shè)計(jì)初步新模_第1頁
精華VHDL設(shè)計(jì)初步新模_第2頁
精華VHDL設(shè)計(jì)初步新模_第3頁
精華VHDL設(shè)計(jì)初步新模_第4頁
精華VHDL設(shè)計(jì)初步新模_第5頁
已閱讀5頁,還剩104頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

會(huì)計(jì)學(xué)1精華VHDL設(shè)計(jì)初步新?!稊?shù)字電路與系統(tǒng)設(shè)計(jì)》EDA實(shí)驗(yàn)內(nèi)容安排:電子工程學(xué)院必修課(☆)硬件描述語言(VHDLorVerilogHDL) (10學(xué)時(shí)☆)EDA設(shè)計(jì)工具軟件及實(shí)驗(yàn) (10學(xué)時(shí)☆※)綜合設(shè)計(jì)實(shí)驗(yàn) (10學(xué)時(shí)☆※)西安電子科技大學(xué)國家電工電子教學(xué)基地顏猛嘿鈣馮笑蛾籬瘍邯拖吳性購瀝徒愛恐拾尉指訛蘇埔智喻變牧須抒絕織VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第1頁/共109頁第1部分VHDL設(shè)計(jì)初步《數(shù)字電路與系統(tǒng)設(shè)計(jì)》EDA實(shí)驗(yàn)殘保禮脆鋤迪謹(jǐn)贅走激奠杭嗓務(wù)魔柵弧緯囊憚壞穴恰棒嚇踢慎昂規(guī)棵掣盯VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第2頁/共109頁VHDL歷史回顧VHDL語言是美國國防部(DOD)在20世紀(jì)80年代初為實(shí)現(xiàn)其高速集成電路計(jì)劃(VHSIC-VeryHighSpeedIntegratedCircuit)而提出的一種硬件描述語言(HDL-HardwareDescriptionLanguage),以作為各合同商之間提交復(fù)雜電路設(shè)計(jì)文檔的一種標(biāo)準(zhǔn)方案,VHDL的含義為超高速集成電路硬件描述語言。1987年被采納為IEEE1076標(biāo)準(zhǔn)(VHDL’87)。1993年被更新為IEEE1164標(biāo)準(zhǔn)(VHDL’93)。鉗溶撞嵌特守?zé)肓勘俅翱A筒劫彴懶x骯扭倉哮鈣右聾誘淘逞椿茲VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第3頁/共109頁VHDL

—VHSICHardwareDescriptionLanguageHDL的出現(xiàn)是為了適應(yīng)電子系統(tǒng)設(shè)計(jì)的日益復(fù)雜性。若以計(jì)算機(jī)軟件的設(shè)計(jì)與電路設(shè)計(jì)做個(gè)類比:

機(jī)器碼好比晶體管/MOS管;

匯編語言好比電路網(wǎng)表;HDL語言就如同高級(jí)語言。樸饞尤敞專淡悶剝水籌肯手還堅(jiān)藥棗憨亂捏標(biāo)檢琶戌簿屁妖礬波椅溶雌鉻VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第4頁/共109頁幾種常用的HDL語言:(1)VHDL硬件描述語言:功能強(qiáng),規(guī)范性好;(2)VerilogHDL硬件描述語言:功能強(qiáng)、靈活性高;(3)ABEL硬件描述語言:屬于較低級(jí)的硬件描述語言;(4)AHDL硬件描述語言:Altera公司開發(fā),語法簡單,但不通用。其中:VHDL和VerilogHDL已成為IEEE標(biāo)準(zhǔn)。VHDL

—VHSICHardwareDescriptionLanguage非儀脹渺淳拋紙斡服惦壺篇迸剩呵述擒非輿卡齲殷賞粗通蓮呵篩詣居興賠VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第5頁/共109頁VHDL在語法和風(fēng)格上類似于現(xiàn)代高級(jí)編程語言。但要注意,VHDL畢竟描述的是硬件,它包含許多硬件特有的結(jié)構(gòu)。

HDL是用文字化方法描述電子電路與系統(tǒng)。計(jì)算機(jī)語言描述特點(diǎn)是:順序性HDL語言描述的特點(diǎn)是:并行性VHDL

—VHSICHardwareDescriptionLanguage邵拙戳室圈范側(cè)輪華槐終剎佐片火函帽耿藐屢麗拇蓋凡混轟賭通朱獎(jiǎng)嫌歸VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第6頁/共109頁VHDL與計(jì)算機(jī)語言的區(qū)別運(yùn)行的基礎(chǔ)計(jì)算機(jī)語言是在CPU+RAM構(gòu)建的平臺(tái)上運(yùn)行

VHDL設(shè)計(jì)的結(jié)果是由具體的邏輯、觸發(fā)器組成的數(shù)字電路(使用QuartusⅡ軟件編程,最終下載入可編程邏輯器件中實(shí)現(xiàn)一個(gè)數(shù)字系統(tǒng))執(zhí)行方式計(jì)算機(jī)語言基本上以串行的方式執(zhí)行VHDL在總體上是以并行方式工作驗(yàn)證方式計(jì)算機(jī)語言主要關(guān)注于變量值的變化VHDL要實(shí)現(xiàn)嚴(yán)格的時(shí)序邏輯關(guān)系悉昔撂誠甚桅菜腫蚊鹽竊轉(zhuǎn)憐貶粱若隨辣式皖惕補(bǔ)揉幣諺廊隨犯草粱榔裁VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第7頁/共109頁《數(shù)字電路與系統(tǒng)設(shè)計(jì)》回顧組合邏輯電路時(shí)序邏輯電路分析設(shè)計(jì)真值表分析設(shè)計(jì)輸入/輸出抽象(實(shí)體)電路功能實(shí)現(xiàn)(結(jié)構(gòu)體)EntityArchitecture……與、或、非與非、或非異或、同或RS觸發(fā)器D觸發(fā)器T觸發(fā)器JK觸發(fā)器饋蔑完取感搗咯撩香橫繼趁苔傻枕茨姿片邁迫麥寸虜憶倫曝號(hào)基袁掂賭稱VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第8頁/共109頁主要內(nèi)容安排1多路選擇器的VHDL描述2時(shí)序電路的VHDL描述3更復(fù)雜電路的VHDL描述5VHDL設(shè)計(jì)練習(xí)4有限狀態(tài)機(jī)(狀態(tài)轉(zhuǎn)移圖)設(shè)計(jì)跨棍趴怎雕谷糾砸扶土掛促汾防誤酣袖姐怔礬訴燎厄秦官酶懾扼奢眺嫡島VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第9頁/共109頁1多路選擇器的VHDL描述例1.12選1多路選擇器的VHDL描述2選1MUX輸入/輸出端口(實(shí)體-Entity)abymux21s電路功能實(shí)現(xiàn)(結(jié)構(gòu)體-Architecture)?納霸初辣擠轅做瘤浙軀矽擅禾燒儈送便啥暮勃洶久垮系亂石段俗陷悔吼弦VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第10頁/共109頁例1.12選1多路選擇器的實(shí)體描述1多路選擇器的VHDL描述abymux21sENTITY

mux21

IS

PORT

(a,b:INBIT

;

S:INBIT

;

y:OUTBIT);

END

ENTITYmux21;說明:以關(guān)鍵字ENTITY引導(dǎo),以END(ENTITY)xxx結(jié)尾的語句部分,稱為實(shí)體。描述電路的外部情況及接口性質(zhì)。攀島醬哭飾動(dòng)坪仔是打從揮哎硫茲邀佯軒且癰耽尼家耙疏振枉愧地漢我蝕VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第11頁/共109頁ENTITYmux21ISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21;ARCHITECTUREoneOFmux21ISBEGINy<=aWHENs='0'ELSEb;ENDARCHITECTUREone;例1.12選1多路選擇器的結(jié)構(gòu)體描述1(行為描述)abymux21sS=0S=1abyS說明:以關(guān)鍵字ARCHITECTURE引導(dǎo),以END(ARCHITECTURE)xxx結(jié)尾的語句部分,稱為結(jié)構(gòu)體。描述電路的內(nèi)部邏輯功能或電路結(jié)構(gòu)。1多路選擇器的VHDL描述食煎力債鳥酮壁趕賓付獰個(gè)領(lǐng)稀痕綸郊爆富池須緊方忠捐跪妓提著惠壺吁VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第12頁/共109頁例1.12選1多路選擇器的結(jié)構(gòu)體描述2(原理圖描述)……ARCHITECTUREoneOFmux21ISSIGNALd,e:BIT;--d,e為內(nèi)部信號(hào)BEGIN

d<=aAND(NOTS);e<=bANDs;y<=dORe;ENDARCHITECTUREone;abymux21s1多路選擇器的VHDL描述楷捂仟昏眼楞壤同壓裳摳剪搶奠濁緊運(yùn)魔哦蘸猛編薄草稅玄幻拈畜陡治聞VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第13頁/共109頁例1.12選1多路選擇器的結(jié)構(gòu)體描述3(布爾方程描述)1多路選擇器的VHDL描述y<=(aAND(NOTs))OR(bANDs);ARCHITECTUREbehaveOFmux21ISBEGINENDbehave;……y=as+bsabymux21s說明:以上三種結(jié)構(gòu)體描述都是并行語句簡靠標(biāo)運(yùn)散晤面描笛燕也輻瓢怠宜攬?zhí)泱E匯氓腰廂卓尉奪鄂頗默適誤述潛VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第14頁/共109頁例1.12選1多路選擇器的結(jié)構(gòu)體描述4(進(jìn)程描述)1多路選擇器的VHDL描述S=0S=1abySabymux21s……ARCHITECTUREoneOFmux21ISBEGINPROCESS(a,b,s)BEGIN IFs='0'THENy<=a; ELSEy<=b; ENDIF;ENDPROCESS;ENDARCHITECTUREone;--a,b,s為敏感信號(hào)表謊媳堰琴濟(jì)擯棲炎盒搭壤日真哼測件剔懇隔孝譴索截副敝咨均嘻緣供厲袍VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第15頁/共109頁2選1多路選擇器功能時(shí)序波形例1.12選1多路選擇器的EDA軟件仿真結(jié)果1多路選擇器的VHDL描述菠個(gè)壕灸雙骨梳孤農(nóng)尚甜設(shè)尤叁輸冗甩壹考糟綱胃寺嫉罪瓶海源克憋寺廳VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第16頁/共109頁1.1實(shí)體表達(dá)(ENTITY)1多路選擇器的VHDL描述例1.1VHDL描述中出現(xiàn)的相關(guān)語句結(jié)構(gòu)和語法說明ENTITY實(shí)體名IS[GENERIC(類屬表);]PORT(端口表);END[ENTITY]實(shí)體名;

實(shí)體在電路中主要是說明該電路的輸入、輸出關(guān)系,更具體地說就是用來定義實(shí)體與外部的連接關(guān)系以及需傳送給實(shí)體的參數(shù)。人撮襄氯彪陽啃值寬馴恍衛(wèi)革仇遮虧口騁羹派告詣炮捅迷滅踩營穗棄邵律VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第17頁/共109頁ENTITY實(shí)體名IS[GENERIC(類屬表);]PORT(端口表);END[ENTITY]實(shí)體名;(1)類屬表:用于指定參數(shù)的大小、實(shí)體中子元件的數(shù)目及實(shí)體的定時(shí)特性等,用以將信息參數(shù)傳遞到實(shí)體。(2)端口表:指明實(shí)體的輸入、輸出信號(hào)及其模式、數(shù)據(jù)類型。PORT(端口名:端口模式數(shù)據(jù)類型;

{端口名:端口模式數(shù)據(jù)類型});英文字母+數(shù)字?jǐn)?shù)據(jù)流動(dòng)方向主要有“位”和“位矢量”兩類設(shè)計(jì)者自己命名的名稱(文件名)例如:mux21的端口描述增加以下語句:generic(m:time:=1ns)類屬參數(shù)說明語句,它定義了延時(shí)時(shí)間為1ns況拈遼啄磺衷傘縣傣酒翟飲忘焉磷縣簧聚鋤挺屁妻驢鑼褒焰駭火蒼彼欽肘VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第18頁/共109頁注意簡單地說

In不可以出現(xiàn)在賦值符號(hào)(<=或:=)的左邊

out不可以出現(xiàn)在賦值符號(hào)(<=或:=)的右邊

buffer可以出現(xiàn)在賦值符號(hào)(<=或:=)的兩邊In信號(hào)只能被引用,不能被賦值out信號(hào)只能被賦值,不能被引用buffer信號(hào)可以被引用,也可以被賦值方向定義含義IN輸入,定義的通道為單向輸入模式OUT輸出,定義的通道為單向輸出模式INOUT雙向,定義的通道確定為輸入輸出雙向端口BUFFER緩沖端口,其功能與INOUT類似常用端口模式:擅淮殺卯督薛壯那謀潦庭醬笛圃約漫大暴備邦勉棄阜蔭臂杖狄種抱箔腮貴VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第19頁/共109頁例:ENTITY

mux21

IS

PORT

(a,b,:INBIT

;

S:INBIT

;

y:OUTBIT);

END

ENTITYmux21;VHDL中任何一種數(shù)據(jù)對象(信號(hào)、變量、常數(shù))必須嚴(yán)格限定其取值范圍。

VHDL中一個(gè)對象只能有一種類型,施加于該對象的操作必須與該類型相匹配。常用數(shù)據(jù)類型有:BIT,BIT_VECTOR,STD_LOGIC,STD_LOGIC_VECTOR,INTEGER,BOOLEAN等(參考書上P260表10.3.1)佯肢度竟蒂鄭門尊抒募莖抑運(yùn)昌膚岡騾茨葷塑亨閡氣齒潮憫柳碾酌鎬九徹VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第20頁/共109頁1.2結(jié)構(gòu)體表達(dá)(ARCHITECTURE)1多路選擇器的VHDL描述ARCHITECTURE結(jié)構(gòu)體名OF實(shí)體名IS[定義語句]內(nèi)部信號(hào),常數(shù),數(shù)據(jù)類型,函數(shù)等定義;BEGIN[功能描述語句];END[ARCHITECTURE]結(jié)構(gòu)體名;

以關(guān)鍵字ARCHITECTURE引導(dǎo),以END(ARCHITECTURE)xxx結(jié)尾的語句部分,稱為結(jié)構(gòu)體。描述電路的內(nèi)部邏輯功能或電路結(jié)構(gòu)。淖唾樣椎而滑稱慘雌伴痘窟遁喻酣梆與瞳赦喀岳獨(dú)完怠啃碳均械閥斂飽蜘VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第21頁/共109頁

結(jié)構(gòu)體名稱的命令:它是該結(jié)構(gòu)體的唯一名稱。“OF”后面緊跟的實(shí)體名表明了該結(jié)構(gòu)體所對應(yīng)的是哪一個(gè)實(shí)體。用“IS”來結(jié)束結(jié)構(gòu)體的命名。ARCHITECTURE結(jié)構(gòu)體名OF實(shí)體名IS[定義語句]內(nèi)部信號(hào),常數(shù),數(shù)據(jù)類型,函數(shù)等的定義;BEGIN[功能描述語句];END[ARCHITECTURE]結(jié)構(gòu)體名;尊痞拾極并卵達(dá)菊殆袍部倒激圭酪劊汁痢溶肥薔膨辜辛咽腔墮肋尉蛙災(zāi)逃VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第22頁/共109頁

定義語句:位于“ARCHITECTURE”和“BEGIN”之間。用于對結(jié)構(gòu)體內(nèi)部所使用的信號(hào)、常數(shù)、數(shù)據(jù)類型和函數(shù)等進(jìn)行定義。如:ARCHITECTURE結(jié)構(gòu)體名OF實(shí)體名IS[定義語句]內(nèi)部信號(hào),常數(shù),數(shù)據(jù)類型,函數(shù)等的定義;BEGIN[功能描述語句];END[ARCHITECTURE]結(jié)構(gòu)體名;SIGNAL

cont:STD_LOGIC_VECTOR(3

DOWNTO

0);SIGNAL

co_1:STD_LOGIC;CONSTANT

m:TIME:=2ns;TYPE

STATE

IS

(INIT,DAD,ADC,SRF,F(xiàn)RF);(枚舉類型)沃泣苛瘴惟辮蝦啊輥喳整壇完菇釉牛取赤惋窒墨濃洼酉繪竣舒瓊頤冠竄譴VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第23頁/共109頁

功能描述語句:處于“BEGIN”和“END”之間。具體描述了結(jié)構(gòu)體的行為及其連接關(guān)系。ARCHITECTURE結(jié)構(gòu)體名OF實(shí)體名IS[定義語句]內(nèi)部信號(hào),常數(shù),數(shù)據(jù)類型,函數(shù)等的定義;BEGIN[功能描述語句];END[ARCHITECTURE]結(jié)構(gòu)體名;結(jié)構(gòu)體功能可以用三種方式進(jìn)行描述,即:行為描述、數(shù)據(jù)流描述、結(jié)構(gòu)描述。啤峨讀號(hào)漲罵淋簍漁愛堆倔蘭心橇礦目膩茅靳隆徹婚慷園堂仁播苫礦鵬縣VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第24頁/共109頁Ⅰ.結(jié)構(gòu)體的行為描述(behavioral)結(jié)構(gòu)體的行為描述表示輸入與輸出間轉(zhuǎn)換的關(guān)系,是對設(shè)計(jì)實(shí)體按算法的路徑來進(jìn)行描述的。行為描述在EDA工程中稱為高層次描述或高級(jí)描述。看例題!例:如圖所示的半加器,其功能真值表已經(jīng)給出,寫出它的行為描述。半加器abcsabcs0000000011111110咳齊悔撒彬編狹褒救印攬從毒曠披惑恰彈窘就浦抑責(zé)敗康均貓謠饑塞搞晶VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第25頁/共109頁半加器真值表:abcs0000000011111110半加器abcs

(ENTITY部分省略)

ARCHITECTUREalg_haOFhalf_adderISBEGINPROCESS(a,b)BEGINIFa=‘0’ANDb=‘0’THENc<=‘0’;s<=‘0’ELSIFa=‘1’ANDb=‘1’THENc<=‘1’;s<=‘0’;ELSEc<=‘0’;s<=‘1’;ENDIF;ENDPROCESS;ENDalg_ha;高層次的功能描述,不必考慮在電路中到底是怎樣實(shí)現(xiàn)的。前查佛圈踩溜亂煽艱目壤墾丟崖似厚鴿足戲烈燃應(yīng)散請考仕筏賂險(xiǎn)醛骯巨VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第26頁/共109頁Ⅱ.結(jié)構(gòu)體的數(shù)據(jù)流描述(dataflow)它反映了從輸入數(shù)據(jù)到輸出數(shù)據(jù)之間所發(fā)生的邏輯變換,或者說描述了數(shù)據(jù)流程的運(yùn)動(dòng)路徑、運(yùn)動(dòng)方向和運(yùn)動(dòng)結(jié)果。Ⅲ.結(jié)構(gòu)體的結(jié)構(gòu)化描述(structural)結(jié)構(gòu)化描述給出了實(shí)體內(nèi)部結(jié)構(gòu)、所包含的模塊或元件間互連關(guān)系;與實(shí)體外部引線的對應(yīng)關(guān)系。練習(xí):試用上面的兩種方法描述半加器的功能。半加器abcs敦冗捧膿件嘆驢迎磨制挽時(shí)藉值嚷牧遠(yuǎn)鷹虧刮拓?fù)跫w宋軀稽月允巾湛蔓VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第27頁/共109頁結(jié)構(gòu)體中三種描述方式的比較布爾函數(shù)定義明白連接關(guān)系清晰,電路模塊化清晰

優(yōu)點(diǎn)小門數(shù)設(shè)計(jì)不易描述復(fù)雜電路,修改不易數(shù)據(jù)流描述電路層次化設(shè)計(jì)電路不易理解、繁瑣、復(fù)雜結(jié)構(gòu)化描述

適用場合

缺點(diǎn)描述方式電路特性清楚明了大型復(fù)雜的電路模塊設(shè)計(jì)進(jìn)行綜合效率相對較低行為描述苑靶硒諒免鵑扛仍亦渴女呻株冉僧餌祖瑩捅溯桃詐稚膿涯雹空驗(yàn)榷琵輯湯VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第28頁/共109頁

信號(hào)賦值符“<=”

表達(dá)式中的等號(hào)“=”沒有賦值的含義,只是一種數(shù)據(jù)比較符號(hào)。1.3賦值符號(hào)和數(shù)據(jù)比較符號(hào)1多路選擇器的VHDL描述例1.1VHDL描述中出現(xiàn)的相關(guān)語句結(jié)構(gòu)和語法說明……

ARCHITECTUREoneOFmux21ISBEGINPROCESS(a,b,s)BEGIN IFs='0'THEN

y<=a; ELSE

y<=b; ENDIF;ENDPROCESS;ENDARCHITECTUREone;允夠豎尤苞翌單漳聶噴句螟紫災(zāi)捍榜睛蘭硼臼冉黃楚鈔撣石牡統(tǒng)站棘笨俄VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第29頁/共109頁1.4邏輯操作符1多路選擇器的VHDL描述例1.1VHDL描述中出現(xiàn)的相關(guān)語句結(jié)構(gòu)和語法說明y<=(aAND(NOTs))OR(bANDs);ARCHITECTUREbehaveOFmux21ISBEGINENDbehave;……VHDL共有7種基本邏輯操作符:

AND(與)、OR(或)、NOT(取反)、NAND(與非)、

NOR(或非)、XOR(異或)、XNOR(同或)要求數(shù)據(jù)類型:

BITBOOLEANSTD_LOGIC閘簍紹堰農(nóng)單倆尹陵臉硼疆嫉蕉哦蘭低婁擰男埂壬翅務(wù)驢爍欲嘩司吻悔唇VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第30頁/共109頁……ARCHITECTUREoneOFmux21ISBEGINy<=aWHENs='0'ELSEb;ENDARCHITECTUREone;1.5WHEN_ELSE條件信號(hào)賦值語句1多路選擇器的VHDL描述例1.1VHDL描述中出現(xiàn)的相關(guān)語句結(jié)構(gòu)和語法說明賦值目標(biāo)<=表達(dá)式WHEN賦值條件ELSE

表達(dá)式WHEN賦值條件ELSE……

表達(dá)式;媚慷李拓形石釋也昭努臥鏟加碟巧魄蛋貼沃別犧俄艱慫飄尤俠輻妓賊歲茁VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第31頁/共109頁在VHDL中,所有的順序語句,如“IF_THEN_ELSE_ENDIF”,都必須放在由“PROCESS…ENDPROCESS”引導(dǎo)的進(jìn)程結(jié)構(gòu)中。在一個(gè)結(jié)構(gòu)體(ARCHITECTURE)中可以包含任意個(gè)進(jìn)程語句,所有的進(jìn)程語句都是并行語句,而進(jìn)程PROCESS引導(dǎo)的內(nèi)部語句結(jié)構(gòu)屬于順序語句。1.4進(jìn)程語句和順序語句1多路選擇器的VHDL描述例1.1VHDL描述中出現(xiàn)的相關(guān)語句結(jié)構(gòu)和語法說明孫渣伸潦擊忠輥曹攣蔚虐坎訪徑躬崗泳頭詳罐臃鑄足誼涵針仰窩齡瞎來副VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第32頁/共109頁1小結(jié)在2選1的VHDL描述中出現(xiàn)的語言現(xiàn)象歸納:實(shí)體:Entity結(jié)構(gòu)體:Architecture端口定義:Port()端口模式:In/Out/Inout…數(shù)據(jù)類型:Bit、Std_Logic信號(hào)賦值符:<=條件比較符:=邏輯操作符:AND…IF條件語句:IF……ENDIF并行條件語句:WHEN…ELSE進(jìn)程語句:Process…EndProcess順序語句:由進(jìn)程語句引導(dǎo)并行語句:簡單賦值語句

when….else語句

with….select語句白極翠瓊括水聯(lián)擒宰律桑酣禾炒趟雷肝光鹿床契沼析扔綏助撩鑄級(jí)堰膳袋VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第33頁/共109頁補(bǔ)充WITH….

SELECT語句用WITH….SELECT語句描述2選1多路選擇器ENTITYmux21ISPORT(a,b:INSTD_LOGIC;S:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDmux21;ARCHITECTUREoneOFmux21ISBEGINWITHsSELECTy<=aWHEN‘0’;bWHENOTHERS;ENDone;癌縛鵝吞潛枉植疼彬鉑膠濫滋珠佃飽詫蠶嗅威曬呈琺譏遍蕉筏舒祟睫腰柬VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第34頁/共109頁2時(shí)序電路的VHDL描述例2.1D觸發(fā)器的VHDL描述

最簡單、最具有代表性的時(shí)序電路是D觸發(fā)器。對D觸發(fā)器的描述包含了VHDL對時(shí)序電路的最基本和典型的表達(dá)方式,也包含了VHDL中許多最具特色的語言現(xiàn)象。(實(shí)體-Entity)電路功能描述(結(jié)構(gòu)體-Architecture)?DCLKQDFF1牌烏駒朽租汀贛言乖潞喘鞘齋卵攝階匈浦樹袒坡稗揚(yáng)屁魁丸噬鈣鋅矢臣奔VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第35頁/共109頁LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF1IS--端口聲明

PORT(CLK,D:INSTD_LOGIC;Q:OUTSTD_LOGIC);ENDENTITYDFF1;ARCHITECTUREbhvOFDFF1IS--結(jié)構(gòu)體描述

SIGNALQ1:STD_LOGIC;--類似于在芯片內(nèi)部定義一個(gè)數(shù)據(jù)的暫存節(jié)點(diǎn)BEGINPROCESS(CLK)--進(jìn)程

BEGINIFCLK'EVENTANDCLK='1'THENQ1<=D;ENDIF;ENDPROCESS;Q<=Q1;--將內(nèi)部的暫存數(shù)據(jù)向端口輸出(雙橫線--是注釋符號(hào))ENDARCHITECTUREbhv;例2.1D觸發(fā)器的VHDL描述VHDL電路描述與設(shè)計(jì)平臺(tái)和硬件實(shí)現(xiàn)對象(組合或時(shí)序邏輯)無關(guān)。DCLKQDFF1寺腎額燕韓季啡肥秘轉(zhuǎn)等吸品夕胞貫彪惠貸繕還佩撬跡爬物躬焙沁訣瓣思VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第36頁/共109頁例2.1中D觸發(fā)器的VHDL描述的語言現(xiàn)象說明2.1完整VHDL程序基本構(gòu)成VHDL設(shè)計(jì)VHDL文件庫和程序包聲明在設(shè)計(jì)或?qū)嶓w中將用到的常數(shù),數(shù)據(jù)類型,元件及子程序等實(shí)體(Entities)

聲明到其實(shí)體及其設(shè)計(jì)的接口,即定義本設(shè)計(jì)的輸入/出端口結(jié)構(gòu)體(Architectures)

定義了實(shí)體的實(shí)現(xiàn)。即電路功能的具體描述蠟焚贅涌巡惕戴全排催種耘刊慰禾負(fù)藉灌甥超城醞退霍陶題仿揀軌割鬧材VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第37頁/共109頁庫(Library)和程序包(Package)

程序包:定義了一組數(shù)據(jù)類型說明、常量說明、元件說明和子程序說明。以供其它多個(gè)設(shè)計(jì)實(shí)體引用。

庫:是專門存放預(yù)先編譯好的程序包的地方,這樣它們就可以在其它設(shè)計(jì)中被調(diào)用。

庫/程序包就是為了使一組類型說明,常量說明和子程序說明對多個(gè)設(shè)計(jì)實(shí)體都成為可見的而提供的一種結(jié)構(gòu)。它們?nèi)缤珻語言中的*.h文件,定義了一些類型說明,函數(shù)一樣。濁僚所倫箕普繕戍蔭肉窩滁榔琉魏紉皆募磅擱超啦翔胳島洲幟忍教綴嫩孝VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第38頁/共109頁

例如:

LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;USEIEEE.std_logic_unsigned.ALL;

IEEE是IEEE標(biāo)準(zhǔn)庫的標(biāo)志名,兩個(gè)USE語句使得以下設(shè)計(jì)可使用程序包std_logic_1164,std_logic_unsigned中所有預(yù)定義的內(nèi)容,如std_logic,in,out的定義等。格式:

LIBRARY<設(shè)計(jì)庫名>;USE<設(shè)計(jì)庫名>.<程序包名>.ALL;庫(Library)和程序包(Package)駿躬彰渣曙禽戴忿奮掏賤棄柵終憎何黃湘弄誼君艾宵救豢丑粵聳沒鄂爛叉VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第39頁/共109頁常用標(biāo)準(zhǔn)庫std和ieee庫中的程序包庫(Library)和程序包(Package)偏姐詞旦西純賬爾視嘿信棄寺焊拯傀蘸培賒火貳逮該茫闖蛤乘圓婆拌扼店VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第40頁/共109頁BIT數(shù)據(jù)類型定義:

TYPEBITIS('0','1');

即BIT數(shù)據(jù)類型僅可取值‘0’或‘1’;STD_LOGIC數(shù)據(jù)類型定義:

TYPESTD_LOGICIS('U','X','0','1','Z','W','L','H','-');

工業(yè)標(biāo)準(zhǔn)邏輯類型,取值‘U’,‘X’,‘0’,‘1’,‘Z’,‘W’,‘L’,‘H’和‘-’2.2標(biāo)準(zhǔn)邏輯位數(shù)據(jù)類型STD_LOGICENTITYDFF1IS--端口聲明

PORT(CLK,D:INSTD_LOGIC;Q:OUTSTD_LOGIC);ENDENTITYDFF1;ENTITYmux21ISPORT(a,b,:INBIT;S:INBIT;y:OUTBIT);ENDENTITYmux21;虞浩翟接衷恤嬰揩蚤倪鈣蠻微彩茹佬欠樣拂譽(yù)岸裔劃空環(huán)案骸澄防色敏嶄VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第41頁/共109頁ARCHITECTUREbhvOFDFF1ISSIGNALQ1:STD_LOGIC;BEGIN……2.3信號(hào)定義和數(shù)據(jù)對象信號(hào)(Signal):

信號(hào)的使用和定義范圍是實(shí)體、結(jié)構(gòu)體和程序包,在進(jìn)程和子程序的順序語句中不允許定義信號(hào)。(只有信號(hào)才能把進(jìn)程外的信息帶入進(jìn)程內(nèi)部,或?qū)⑦M(jìn)程內(nèi)的信息帶出進(jìn)程)SIGNAL信號(hào)名:數(shù)據(jù)類型:=初始值;信號(hào)賦值語句:目標(biāo)信號(hào)名<=表達(dá)式;稻惠肥政右數(shù)拈授上睹攤棺堵物宏墨慧劈益撅肌炬精秩耍摸駝琵蹭蔑拴酞VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第42頁/共109頁VARIABLE變量名:數(shù)據(jù)類型:=初始值;變量賦值語句:目標(biāo)變量名:=表達(dá)式;ARCHITECTUREbhvOFDFF1ISSIGNALQ1:STD_LOGIC;BEGIN……2.3信號(hào)定義和數(shù)據(jù)對象變量(Variable):

在VHDL中,變量是一個(gè)局部量,作為臨時(shí)的數(shù)據(jù)存儲(chǔ)單元,只能在進(jìn)程和子程序的順序語句中使用。變量定義中的初始值僅對仿真有效,實(shí)際的綜合器并不支持設(shè)置初始值。唯著竄睛蔥釉臃涼鐮軀涉撲簧姚謎圭絮渣疊堯揀懈南疊忙錘那常男舍霞普VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第43頁/共109頁CONSTANT常量名:數(shù)據(jù)類型:=表達(dá)式;ARCHITECTUREbhvOFDFF1ISSIGNALQ1:STD_LOGIC;BEGIN……2.3信號(hào)定義和數(shù)據(jù)對象常量(Constant):

常量的定義主要是為了程序更容易閱讀和修改。在所有的VHDL結(jié)構(gòu)中都可以定義常量,如實(shí)體、結(jié)構(gòu)體、程序包、進(jìn)程和子程序等。常量是一個(gè)恒定不變的值。寒烴剿凳赫呻鑰朱簡粕痢骨陽蘿靜梗焊琢葦勝蔗做位床騎況坍錘躍妒淄敞VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第44頁/共109頁<信號(hào)名>’EVENT(CLK’EVENT表示CLK信號(hào)發(fā)生變化)2.4上升沿檢測表達(dá)式和信號(hào)屬性函數(shù)EVENT……PROCESS(CLK)--進(jìn)程

BEGINIFCLK’EVENTANDCLK='1'THENQ1<=D;ENDIF;ENDPROCESS;……邊沿檢測語句用信號(hào)屬性函數(shù)EVENT來測定某信號(hào)的跳變邊沿,即怒苦韻劍股寬褐屠曳電脫游韭捶梢士依漏豬篡頁冗博札樞峪推保滾頰開夸VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第45頁/共109頁2.5不完整條件語句與時(shí)序電路LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF1IS--DFF端口聲明

PORT(CLK,D:INSTD_LOGIC;Q:OUTSTD_LOGIC);ENDENTITYDFF1;ARCHITECTUREbhvOFDFF1ISSIGNALQ1:STD_LOGIC;BEGINPROCESS(CLK)--進(jìn)程

BEGINIFCLK'EVENTANDCLK='1'THENQ1<=D;ENDIF;ENDPROCESS;Q<=Q1;ENDARCHITECTUREbhv;IF語句中沒有利用ELSE明確指出當(dāng)IF語句不滿足條件時(shí)如何操作,即不完整條件語句。IF語句表示:CLK'EVENTANDCLK='1'YesNoQ1<=D;

?價(jià)倪截北酚苗昂稍匣騁欣畫墊濾侄彩撒僧紊腰洗灘拭館售殊勒糊腳咆底耕VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第46頁/共109頁……

ARCHITECTUREoneOFmux21ISBEGINPROCESS(a,b,s)BEGIN IFs='0'THEN

y<=a; ELSE

y<=b; ENDIF;ENDPROCESS;ENDARCHITECTUREone;--a,b,s為敏感信號(hào)表

完整的條件語句只能構(gòu)成組合邏輯電路。IF語句表示:S=‘0’YesNoy<=a;y<=b;2.5不完整條件語句與時(shí)序電路氓東尚下蓮?fù)厝枘韨b敲哎賒心癰訓(xùn)足藤脯鞍呀壕厭鏡娛塵象揩豹名似虜VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第47頁/共109頁2.5不完整條件語句與時(shí)序電路ENTITYCOMP_BADISPORT(a1,b1:INBIT;q1:OUTBIT);END;ARCHITECTUREoneOFCOMP_BADISBEGINPROCESS(a1,b1)BEGIN

IFa1>b1THENq1<='1';ELSIFa1<b1THENq1<='0';ENDIF;

--未提及當(dāng)a1=b1時(shí),q1作何操作

ENDPROCESS;END;例a:EDA軟件綜合結(jié)果庇縮灌熙稻層閑工苛陡恍垮癡原褂兜緩添璃貳賀胰娘氛盟亮脹涎耳羞誣壽VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第48頁/共109頁2.5不完整條件語句與時(shí)序電路ENTITYCOMP_BADISPORT(a1,b1:INBIT;q1:OUTBIT);END;ARCHITECTUREoneOFCOMP_BADISBEGINPROCESS(a1,b1)BEGIN

IFa1>b1THENq1<='1';ELSEq1<='0';ENDIF;

ENDPROCESS;END;例b:EDA軟件綜合結(jié)果娥姥先壤動(dòng)奏甥垢玖孰錯(cuò)混虜釋貉管展哼類圍血馮茅映橢既醉昧期壁萎恥VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第49頁/共109頁2.6實(shí)現(xiàn)時(shí)序電路的VHDL不同表述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF1IS--DFF端口聲明

PORT(CLK,D:IN

STD_LOGIC

;

Q:OUT

STD_LOGIC

);ENDENTITYDFF1;ARCHITECTUREbhvOFDFF1IS

SIGNAL

Q1:STD_LOGIC;BEGINPROCESS(CLK)--進(jìn)程

BEGINIF

CLK’EVENTANDCLK='1'

THENQ1<=D;ENDIF;ENDPROCESS;Q<=Q1;ENDARCHITECTUREbhv;CLK信號(hào)定義為STD_LOGIC數(shù)據(jù)類型,有9種取值,該描述并不能保證CLK是從“0”到“1”的上升沿跳變。月夏討硯秦幀認(rèn)寂繼歪疙獅析躊僧匯罷椰夾茂挖雅韻艇賄瘓科闊題褥隴彩VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第50頁/共109頁...PROCESS(CLK)BEGINIFCLK’EVENTAND(CLK='1')AND(CLK’LAST_VALUE='0')THENQ<=D;--確保CLK的變化是一次上升沿的跳變

ENDIF;ENDPROCESS;...PROCESS(CLK)BEGIN--同上

IFCLK='1'ANDCLK'LAST_VALUE='0'THENQ<=D;ENDIF;ENDPROCESS;2.6實(shí)現(xiàn)時(shí)序電路的VHDL不同表述CLK’LAST_VALUE=‘0’為真,表示CLK在變化之前時(shí)刻為‘0’。貉球荔婆洶煤淬跟毀鉚兌垃矩謙喪檬穴本承孝搞謀楷熬右栓鑰版懲攆際丸VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第51頁/共109頁LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF3ISPORT(CLK,D:INSTD_LOGIC;Q:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF3ISSIGNALQ1:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFrising_edge(CLK)THENQ1<=D;ENDIF;ENDPROCESS;Q<=Q1;END;Rising_edge()是IEEE庫中STD_LOGIC_1164標(biāo)準(zhǔn)程序包內(nèi)預(yù)定義的函數(shù),該函數(shù)只能用于標(biāo)準(zhǔn)邏輯位數(shù)據(jù)類型STD_LOGIC的信號(hào)。因此,在實(shí)體前必須打開STD_LOGIC_1164程序包?;缸θ巢頋n眾追逗罰檸妖價(jià)佃磊余蒜排崔倪陋俏屆領(lǐng)鄧爬墑弄墻彰擇纖越VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第52頁/共109頁...PROCESSBEGINwaituntilCLK='1';Q<=D;ENDPROCESS;

當(dāng)進(jìn)程中使用wait語句后,就不必列出敏感信號(hào)表。2.6實(shí)現(xiàn)時(shí)序電路的VHDL不同表述庸藏堆窩破柯恃妨甥癡備端響坍唾江脾員馱虎偏迎潭扇分鬼韭恨弛狹憲吸VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第53頁/共109頁...PROCESS(CLK)BEGINIFCLK='1'THENQ<=D;ENDIF;ENDPROCESS;

將CLK放入敏感信號(hào)表中,CLK邊沿的檢測由PROCESS和IF語句結(jié)合實(shí)現(xiàn)。注:D信號(hào)并沒有在敏感表中。上升沿觸發(fā)DFF的仿真波形:2.6實(shí)現(xiàn)時(shí)序電路的VHDL不同表述卜陷取簽失左兢橢督直狙蔚胃抄晰郭錦餐窿斜之導(dǎo)糾戶傭肺守日彌用仗戒VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第54頁/共109頁...PROCESS(CLK,D)BEGINIFCLK='1'THENQ<=D;ENDIF;ENDPROCESS;

電平觸發(fā)DFF,即在CLK為高電平‘1’時(shí),輸出Q隨D的變化而變化,而CLK為‘0’時(shí)輸出保持不變。注:D信號(hào)在敏感表中。電平觸發(fā)DFF的仿真波形:2.6實(shí)現(xiàn)時(shí)序電路的VHDL不同表述薛翹指窗瞄付就胰癥閡捂虹枷綁詞盒腥陸晚馳礎(chǔ)尊磕貳燙麗疙齋巷鍛焊播VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第55頁/共109頁2小結(jié)VHDL庫:Library語句,包括IEEE庫、標(biāo)準(zhǔn)庫STD、工作庫Work等;程序包:USE語句,如Std_logic_1164程序包、Standard程序包等;數(shù)據(jù)類型:Std_logic,定義值中包括‘0’、‘1’、‘Z’和‘X’等共9種取值;數(shù)據(jù)對象:信號(hào)Signal、變量Variable、常量Constant;信號(hào)屬性:信號(hào)屬性函數(shù)EVENT、LAST_VALUE;時(shí)鐘檢測:上升沿檢測Clk’eventANDClk=‘1’、Rising_edge()。時(shí)序電路:不完整條件語句產(chǎn)生時(shí)序電路。單潰述譯咸蘊(yùn)胺頭槍斧酒囊步港住剃晝繃她庶唆惶勒婉禿弗港垮捧致碩噓VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第56頁/共109頁3更復(fù)雜電路的VHDL描述CLKQn

時(shí)序電路中,一般計(jì)數(shù)器的輸入/輸出信號(hào)包括:?EntityArchitecture電路設(shè)計(jì)3.1計(jì)數(shù)器的VHDL描述勁費(fèi)窯炒件淄捏札傈茲男累勝凍檄車銜盆盯臨開榷郭踩到邑結(jié)癟日楊吁啦VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第57頁/共109頁ENTITYCNT4ISPORT(CLK:INBIT;Q:BUFFERINTEGERrange15downto0);ENDCNT4;ARCHITECTUREbhvOFCNT4ISBEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ<=Q+1;ENDIF;ENDPROCESS;ENDbhv;【例1】:4位二進(jìn)制加法計(jì)數(shù)器注意:(1)Q的端口模式為BUFFER;

(2)Q的數(shù)據(jù)類型為INTEGER。注意CLKQn?葦墓放刨雀廖處蔥鍬愉線評揪須凹凰承碳蔡事哇嚨孵商咸俠建皚瓢郁歧薔VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第58頁/共109頁ENTITYCNT4ISPORT(CLK:INBIT;Q:BUFFERINTEGERrange15downto0);ENDCNT4;ARCHITECTUREbhvOFCNT4ISBEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ<=Q+1;--如何理解?

ENDIF;ENDPROCESS;ENDbhv;【例1】:4位二進(jìn)制加法計(jì)數(shù)器注意注意:在使用整數(shù)時(shí),VHDL綜合器要求必須使用“Range”限定范圍,否則無法綜合。澡踏蔣釁哪財(cái)硬垮租蠶幌熒鑼第鈍屯巳紀(jì)耿顫盟闡溶稚東旬仰勻淤青按輥VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第59頁/共109頁VHDL中規(guī)定,算術(shù)操作符“+”、“-”的數(shù)據(jù)類型(除特殊說明,如重載函數(shù))只能是整型“INTEGER”。1十進(jìn)制整數(shù)35十進(jìn)制整數(shù)10E3十進(jìn)制整數(shù)16#D9#十六進(jìn)制整數(shù)8#562#八進(jìn)制整數(shù)2#11001001#二進(jìn)制整數(shù)整數(shù)的表達(dá)不加引號(hào),而邏輯位的數(shù)據(jù)必須加引號(hào),如‘1’、‘0’、“101”。整數(shù)(Integer)類型VHDL中整數(shù)常量的書寫方式:韶掏姻檸濕邦流妙啼力縣孰聶芹僚趾拱跡瘴乒若洛螢做磋旨偽鄲睜鑄儉嘔VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第60頁/共109頁3.2計(jì)數(shù)器設(shè)計(jì)的其他表述方法LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;--運(yùn)算符重載ENTITYCNT4ISPORT(CLK:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDENTITYCNT4;ARCHITECTUREbhvOFCNT4ISSIGNALQ1:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ1<=Q1+1;--“+”運(yùn)算符重載

ENDIF;ENDPROCESS;Q<=Q1;ENDARCHITECTUREbhv;←①←②←③筑摳卷蓮桃樁關(guān)堤寺籽您礎(chǔ)嫩挑崎宵鮑俺模待斑身仇妖笆復(fù)韋孝悠沖癡氣VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第61頁/共109頁3.2計(jì)數(shù)器設(shè)計(jì)的其他表述方法LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;--運(yùn)算符重載ENTITYCNT4ISPORT(CLK:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDENTITYCNT4;ARCHITECTUREbhvOFCNT4ISSIGNALQ1:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ1<=Q1+1;--“+”運(yùn)算符重載

ENDIF;ENDPROCESS;Q<=Q1;ENDARCHITECTUREbhv;←①←②←③EDA軟件綜合結(jié)果組合電路加1邏輯4位二進(jìn)制鎖存器輸出反饋鎖存時(shí)鐘電嗆人緣侗留戴隕榆泥吝摩備嘗胖真靜錢緬睫益蒂頭閘耙翅抉彝褂姑爵速VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第62頁/共109頁3.2計(jì)數(shù)器設(shè)計(jì)的其他表述方法LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;--運(yùn)算符重載ENTITYCNT4ISPORT(CLK:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDENTITYCNT4;ARCHITECTUREbhvOFCNT4ISSIGNALQ1:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ1<=Q1+1;--“+”運(yùn)算符重載

ENDIF;ENDPROCESS;Q<=Q1;ENDARCHITECTUREbhv;←①←②←③4位二進(jìn)制計(jì)數(shù)器時(shí)序波形仿真結(jié)果廣鎳借瞻獲嗅捧繭績剝鹿拘將欲謬稽幣荊撻史薩墾卑樟甘不意迭艦塹飲式VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第63頁/共109頁3.3不同工作方式的時(shí)序電路設(shè)計(jì)例3.3.1:設(shè)計(jì)一個(gè)異步清零、有使能輸入的十進(jìn)制計(jì)數(shù)器。libraryieee; useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;ENTITYcntm10IS --實(shí)體聲明

PORT(clk,rst,en:INstd_logic;--時(shí)鐘、清零、使能信號(hào)

co:OUTstd_logic;--進(jìn)位輸出

qcnt:bufferstd_logic_vector(3downto0));ENDENTITYcntm10; clkenrstqcnt[3..0]co騎散偶臣籬坑蔭鹵吩違閘戳科蒜了拒憨執(zhí)坯婿捐藥鉀次魄笨港吭突拳饒寅VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第64頁/共109頁ARCHITECTUREbehaveOFcntm10IS--結(jié)構(gòu)體描述BEGINPROCESS(clk,rst)VARIABLEcqi:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIF(rst=‘1’)THENcqi:=(others=>’0’);--計(jì)數(shù)器復(fù)位(高有效)

ELSIF(clk‘EVENTANDclk=’1‘)THEN--檢測時(shí)鐘上升沿

IF(en=‘1’)THEN--檢測是否允許計(jì)數(shù)(不完全條件語句)

IFcqi<9THENcqi:=cqi+1;--允許計(jì)數(shù),且計(jì)數(shù)<9ELSEcqi:=(others=>’0’);--計(jì)數(shù)狀態(tài)=9,下一狀態(tài)清零

ENDIF;ENDIF;ENDIF;IFcqi=9THENco<=‘1’;--計(jì)數(shù)狀態(tài)=9,輸出進(jìn)位信號(hào)

ELSEco<=‘0’;ENDIF;qcnt<=cqi; --將計(jì)數(shù)值輸出到端口

ENDPROCESS;ENDbehave;EDA軟件綜合結(jié)果組合電路加1邏輯4位二進(jìn)制鎖存器4位比較器數(shù)據(jù)選擇器黎昏怨珊宛稅怠膘淮耽昆儡糖賂會(huì)箭喻擻劑墻伍悄沾冷鬼亞柜琶捷畢嚇證VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第65頁/共109頁ARCHITECTUREbehaveOFcntm10IS--結(jié)構(gòu)體描述BEGINPROCESS(clk,rst)VARIABLEcqi:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIF(rst=‘1’)THENcqi:=(others=>’0’);--計(jì)數(shù)器復(fù)位(高有效)

ELSIF(clk‘EVENTANDclk=’1‘)THEN--檢測時(shí)鐘上升沿

IF(en=‘1’)THEN--檢測是否允許計(jì)數(shù)(不完全條件語句)

IFcqi<9THENcqi:=cqi+1;--允許計(jì)數(shù),且計(jì)數(shù)<9ELSEcqi:=(others=>’0’);--計(jì)數(shù)狀態(tài)=9,下一狀態(tài)清零

ENDIF;ENDIF;ENDIF;IFcqi=9THENco<=‘1’;--計(jì)數(shù)狀態(tài)=9,輸出進(jìn)位信號(hào)

ELSEco<=‘0’;ENDIF;qcnt<=cqi; --將計(jì)數(shù)值輸出到端口

ENDPROCESS;ENDbehave;10進(jìn)制計(jì)數(shù)器時(shí)序波形仿真結(jié)果陪歡夾鳴蕊館隸絳扮拔氧亭靠糞績哪險(xiǎn)訊氈厘錦掀弱約沼茫課份址選柬捎VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第66頁/共109頁(1)變量VARIABLEcqi:STD_LOGIC_VECTOR(3DOWNTO0);(2)省略賦值操作符(OTHERS=>X)SIGNALd1:STD_LOGIC_VECTOR(4DOWNTO0);VARIABLEa1:STD_LOGIC_VECTOR(15DOWNTO0);...d1<=(OTHERS=>'0');a1:=(OTHERS=>'0');相關(guān)語法說明廷船曲洲耿硼技贊捂椰曝羹箭極漳猶粹廠灣困迷宙檸藤檬致松井犀胸紳恬VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第67頁/共109頁3.3不同工作方式的時(shí)序電路設(shè)計(jì)例3.3.2:設(shè)計(jì)一個(gè)帶有并行輸入置數(shù),串行輸出的移位寄存器。libraryieee; useieee.std_logic_1164.all;ENTITYshifterIS --實(shí)體聲明

PORT(clk,load:INstd_logic; din:INstd_logic_vector(7downto0);qb:OUTstd_logic);ENDENTITYshifter; 撿氧竿窮凈兒蠢廖栗丸竅準(zhǔn)境衡狡姥悍寵保程粥霜礁跑忻喬豺諸矣濘隔銘VHDL設(shè)計(jì)初步(新模版)VHDL設(shè)計(jì)初步(新模版)第68頁/共109頁ARCHITECTUREbehaveOFshifterIS--結(jié)構(gòu)體描述BEGINPROCESS(clk,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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

提交評論