EDA技術(shù)實(shí)用教程-VHDL版第3章VHDL設(shè)計初步.ppt
《EDA技術(shù)實(shí)用教程-VHDL版第3章VHDL設(shè)計初步.ppt》由會員分享,可在線閱讀,更多相關(guān)《EDA技術(shù)實(shí)用教程-VHDL版第3章VHDL設(shè)計初步.ppt(72頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第3章VHDL設(shè)計初步,3.1組合邏輯電路的VHDL描述,3.1.12選1多路選擇器的VHDL描述,圖3-1mux21a實(shí)體,3.1組合邏輯電路的VHDL描述,3.1.12選1多路選擇器的VHDL描述,圖3-2mux21a結(jié)構(gòu)體,3.1組合邏輯電路的VHDL描述,【例】二選一選擇器描述方法1ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISSIGNALd,e:BIT;-說明語句BEGINd=aAND(NOTS);e=bANDs;y=dORe;ENDARCHITECTUREone;,3.1.12選1多路選擇器的VHDL描述,3.1組合邏輯電路的VHDL描述,此電路的VHDL描述由兩大部分組成:(1)以關(guān)鍵詞ENTITY引導(dǎo),ENDENTITYmux2la結(jié)尾的語句部分,稱為實(shí)體。實(shí)體描述了電路器件的外部情況及各信號端口的基本性質(zhì)。(2)以關(guān)鍵詞ARCHITECTURE引導(dǎo),ENDARCHITECTUREone結(jié)尾的語句部分,稱為結(jié)構(gòu)體。結(jié)構(gòu)體負(fù)責(zé)描述電路器件的內(nèi)部邏輯功能或電路結(jié)構(gòu)。,3.1組合邏輯電路的VHDL描述,3.1.2相關(guān)語句結(jié)構(gòu)和語法說明,ENTITYe_nameISPORT(p_name:port_mdata_type;.p_namei:port_midata_type);ENDENTITYe_name;紅色為描述實(shí)體的關(guān)鍵詞,不分大小寫。,1.實(shí)體表達(dá),2.實(shí)體名e_name,由設(shè)計者自定的標(biāo)識符。由字母、數(shù)字、下劃線構(gòu)成。不能以數(shù)字起頭,不能用中文,不能與關(guān)鍵詞或EDA工具庫的元件名相同。如:72lk,OR2均為非法實(shí)體名。,3.端口語句和端口信號名PORT();描述電路的端口及其端口信號。如PORT(a,b:INBIT;s:INBIT;y:OUTBIT);,3.1組合邏輯電路的VHDL描述,端口信號名,端口模式,端口信號的數(shù)據(jù)類型,3.1.2相關(guān)語句結(jié)構(gòu)和語法說明,3.1組合邏輯電路的VHDL描述,3.1.2相關(guān)語句結(jié)構(gòu)和語法說明,4.端口模式,IN:輸入端口,定義的通道為單向只讀模式,OUT:輸出端口,定義的通道為單向輸出模式,INOUT:定義的通道確定為輸入輸出雙向端口,BUFFER:緩沖端口,其功能與INOUT類似,3.1組合邏輯電路的VHDL描述,3.1.2相關(guān)語句結(jié)構(gòu)和語法說明,5.數(shù)據(jù)類型INTEGER類型(整數(shù)類型)BOOLEAN類型(布爾類型)取值范圍為true,falseSTD_LOGIC類型(標(biāo)準(zhǔn)邏輯位類型)取值范圍有:U,X,0,1,Z,W,L,H,-BIT類型(位類型)取值范圍是邏輯位1,0,3.1組合邏輯電路的VHDL描述,3.1.2相關(guān)語句結(jié)構(gòu)和語法說明,6.結(jié)構(gòu)體表達(dá),ARCHITECTUREarch_nameOFe_nameIS說明語句BEGIN(功能描述語句)ENDARCHITECTUREarch_name;紅色為描述結(jié)構(gòu)體的關(guān)鍵詞,不分大小寫。說明語句并非必須,而功能描述語句必須存在。,結(jié)構(gòu)體名,實(shí)體名,7.邏輯操作符,AND、OR、NOT、NAND(與非)、NOR(或非)、XOR(異或)、XNOR(同或)邏輯操作符的操作數(shù)是BIT、BOOLEAN、STD_LOGIC。,3.1組合邏輯電路的VHDL描述,3.1.2相關(guān)語句結(jié)構(gòu)和語法說明,3.1組合邏輯電路的VHDL描述,3.1.2相關(guān)語句結(jié)構(gòu)和語法說明,8.賦值符號和數(shù)據(jù)比較符號,賦值符“=”如表達(dá)式y(tǒng)=a表示輸入端口a的數(shù)據(jù)向輸出端口y傳輸。注:賦值符“=”兩邊的信號的數(shù)據(jù)類型必須一致。,數(shù)據(jù)比較符號“=”其輸出結(jié)果的數(shù)據(jù)類型是BOOLEAN類型。,如表達(dá)式IFs=0THEN.,3.1組合邏輯電路的VHDL描述,【例】二選一選擇器描述方法2ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINy=aWHENs=0ELSEb;ENDARCHITECTUREone;,3.1組合邏輯電路的VHDL描述,3.1.2相關(guān)語句結(jié)構(gòu)和語法說明,9.WHEN_ELSE條件信號賦值語句(屬于并行語句),賦值目標(biāo)=表達(dá)式WHEN賦值條件ELSE表達(dá)式WHEN賦值條件ELSE.表達(dá)式;,z=aWHENp1=1ELSEbWHENp2=1ELSEc;,3.1組合邏輯電路的VHDL描述,【例3-3】二選一選擇器描述方法3ENTITYmux21aISPORT(a,b,s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINPROCESS(a,b,s)BEGINIFs=0THENy=a;ELSEy=b;ENDIF;ENDPROCESS;ENDARCHITECTUREone;,3.1.2相關(guān)語句結(jié)構(gòu)和語法說明,進(jìn)程的敏感信號表,3.1組合邏輯電路的VHDL描述,3.1.2相關(guān)語句結(jié)構(gòu)和語法說明,10.條件語句(屬于順序語句),IF_THEN_ELSE,IF語句必須以語句“ENDIF;”結(jié)束,如IFs=0THENy=a;ELSEy=b;ENDIF;,ENDIF;,3.1組合邏輯電路的VHDL描述,3.1.2相關(guān)語句結(jié)構(gòu)和語法說明,11.進(jìn)程語句和順序語句,順序語句“IF_THEN_ELSEENDIF;”是放在由“PROCESSENDPROCESS”引導(dǎo)的語句中的。由PROCESS引導(dǎo)的語句稱為進(jìn)程語句。在VHDL中,所有合法的順利描述語句都必須放在進(jìn)程語句中。PROCESS旁的()稱為進(jìn)程的敏感信號表,要求將進(jìn)程中的所有輸入信號都放在敏感信號表中。當(dāng)信號表中的某一敏感信號從原來的“1”變成“0”,或者從原來的“0”變成“1”時,將啟動此進(jìn)程語句,即將其中的語句全部執(zhí)行一遍。,12.文件取名和存盤,12.文件取名和存盤,3.1組合邏輯電路的VHDL描述,用Quartusii提供的VHDL文本編輯器編輯VHDL代碼文件,在保存文件時,文件名為“*.vhd”。建議程序的文件名盡可能與該程序的實(shí)體名一致。推薦使用小寫。,3.1.2相關(guān)語句結(jié)構(gòu)和語法說明,3.1組合邏輯電路的VHDL描述,mux21a功能時序波形圖,3.1組合邏輯電路的VHDL描述,【例3-18】或門邏輯描述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYor2aISPORT(a,b:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDENTITYor2a;ARCHITECTUREoneOFor2aISBEGINc=aORb;ENDARCHITECTUREone;,半加器h_adder電路圖及其真值表,3.3.1半加器描述,3.3.1半加器描述,3.31位二進(jìn)制全加器的VHDL描述,【例3-16】LIBRARYIEEE;-半加器描述(1):布爾方程描述方法USEIEEE.STD_LOGIC_1164.ALL;ENTITYh_adderISPORT(a,b:INSTD_LOGIC;co,so:OUTSTD_LOGIC);ENDENTITYh_adder;ARCHITECTUREfh1OFh_adderisBEGINso;.;;.WHENOTHERS=;ENDCASE;,3.1組合邏輯電路的VHDL描述,2.標(biāo)準(zhǔn)邏輯矢量數(shù)據(jù)類型,STD_LOGIC_VECTOR與STD_LOGIC都被定義在STD_LOGIC_1164的程序包中。STD_LOGIC_VECTOR定義為標(biāo)準(zhǔn)一維數(shù)組,數(shù)組中的每個元素都是標(biāo)準(zhǔn)邏輯位STD_LOGIC。,在使用STD_LOGIC_VECTOR中,必須注明其數(shù)組寬度,即位寬,如:B:OUTSTD_LOGIC_VECTOR(7DOWNTO0);或SIGNALA:STD_LOGIC_VECTOR(1TO4);,B=01100010;-B(7)為0B(4DOWNTO1)=1101;-B(4)為1B(7DOWNTO4)bin,co=d,so=e);-例化語句u2:h_adderPORTMAP(a=e,b=cin,co=f,so=sum);cout連接端口名);其中,例化名相當(dāng)于當(dāng)前系統(tǒng)(電路板)中的一個插座名。元件名相當(dāng)于準(zhǔn)備在此插座上插入的已定義的元件,即為待調(diào)用的元件的名字。PORTMAP為關(guān)鍵詞。端口名為待調(diào)用的元件本身的端口名。連接端口名為頂層文件中準(zhǔn)備與調(diào)用元件的端口相連的通信線(端口)名。,3.2基本時序電路的VHDL描述,3.2.1D觸發(fā)器的VHDL描述,KX康芯科技,【例3-8】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF1ISPORT(CLK:INSTD_LOGIC;D:INSTD_LOGIC;Q:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF1ISSIGNALQ1:STD_LOGIC;-類似于在芯片內(nèi)部定義一個數(shù)據(jù)的暫存節(jié)點(diǎn)BEGINPROCESS(CLK,Q1)BEGINIFCLKEVENTANDCLK=1THENQ1=D;ENDIF;ENDPROCESS;Qb1THENq1=1;ELSIFa1b1THENq1b1THENq1=1;ELSEq1=0;ENDIF;.,3.2.3實(shí)現(xiàn)時序電路的VHDL不同表述,【例3-11】(方法2).PROCESS(CLK)BEGINIFCLKEVENTAND(CLK=1)AND(CLKLAST_VALUE=0)THENQ=D;-確保CLK的變化是一次上升沿的跳變ENDIF;ENDPROCESS;,3.2.3實(shí)現(xiàn)時序電路的VHDL不同表述,【例3-12】(方法3).PROCESS(CLK)BEGINIFCLK=1ANDCLKLAST_VALUE=0THENQ=D;ENDIF;ENDPROCESS;,【例3-13】(方法4)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF3ISPORT(CLK,D:INSTD_LOGIC;Q:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF3ISSIGNALQ1:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFrising_edge(CLK)-上升沿檢測函數(shù),是IEEE庫中的STD_LOGIC_1164程序包中的預(yù)定義函數(shù)THENQ1=D;ENDIF;ENDPROCESS;Q=Q1;END;,3.2.3實(shí)現(xiàn)時序電路的VHDL不同表述,【例3-14】(方法5).PROCESSBEGINwaituntilCLK=1;-利用waitunitl語句,Q=D;如果當(dāng)前CLK不為1,等待并保持Q原值不變,直到CLK為1時才對Q進(jìn)行賦值操作。ENDPROCESS;,3.2.3實(shí)現(xiàn)時序電路的VHDL不同表述,【例3-15】(方法6).PROCESS(CLK)BEGINIFCLK=1THENQ=D;-利用進(jìn)程的啟動特性產(chǎn)生對CLK的邊沿檢測ENDIF;ENDPROCESS;,圖3-76種描述方法的電路仿真時序波形,3.2.3實(shí)現(xiàn)時序電路的VHDL不同表述,【例3-16】電平觸發(fā)型D寄存器,即CLK處于高電平時,輸出Q隨D的變化而變化,CLK處于低電平時,Q保持不變。.PROCESS(CLK,D)BEGINIFCLK=1THENQ=D;ENDIF;ENDPROCESS;注:將D放在進(jìn)程的敏感信號表中,D的任何變化都會啟動進(jìn)程,進(jìn)而判斷IF語句,條件成立(即CLK=1),則對Q不斷進(jìn)行更新。條件不成立時,即使D有變化,都不執(zhí)行Q=D。,3.2.4異步時序電路設(shè)計,【例3-17】用兩個進(jìn)程描述一個異步時序電路。.ARCHITECTUREbhvOFMULTI_DFFISSIGNALQ1,Q2:STD_LOGIC;BEGINPRO1:PROCESS(CLK)BEGINIFCLKEVENTANDCLK=1THENQ1=NOT(Q2ORA);ENDIF;ENDPROCESS;PRO2:PROCESS(Q1)BEGINIFQ1EVENTANDQ1=1THENQ2=D;ENDIF;ENDPROCESS;QQ=Q2;.,圖3-9例3-15綜合后的電路(Synplify綜合),3.2.4異步時序電路設(shè)計,3.3計數(shù)器設(shè)計,【例3-18】方法1ENTITYCNT4ISPORT(CLK:INBIT;Q:BUFFERINTEGERRANGE15DOWNTO0);END;ARCHITECTUREbhvOFCNT4ISBEGINPROCESS(CLK)BEGINIFCLKEVENTANDCLK=1THENQ=Q+1;ENDIF;ENDPROCESS;ENDbhv;,3.3.14位二進(jìn)制加法計數(shù)器設(shè)計,表式Q=Q+1的右項(xiàng)與左項(xiàng)并非處于相同的時刻內(nèi),對于時序電路,除了傳輸延時外,前者的結(jié)果出現(xiàn)于當(dāng)前時鐘周期;后者,即左項(xiàng)要獲得當(dāng)前的Q+1,需等待下一個時鐘周期。,3.3.2整數(shù)類型,Q:BUFFERINTEGERRANGE15DOWNTO0;設(shè)置Q的端口模式為BUFFER,數(shù)據(jù)類型為INTEGER,取值范圍為15到0。注:VHDL規(guī)定算術(shù)運(yùn)算的操作數(shù)為INTEGER需要用RANGE語句對所定義的數(shù)限定范圍。此題綜合器對Q綜合成四條信號線:Q3,Q2,Q1,Q0。,3.3.2整數(shù)類型,1十進(jìn)制整數(shù)0十進(jìn)制整數(shù)35十進(jìn)制整數(shù)10E3十進(jìn)制整數(shù),等于十進(jìn)制整數(shù)100016#D9#十六進(jìn)制整數(shù),等于十六進(jìn)制整數(shù)D9H8#720#八進(jìn)制整數(shù),等于八進(jìn)制整數(shù)720O2#11010010#二進(jìn)制整數(shù),等于二進(jìn)制整數(shù)11010010B,整數(shù)常量的書寫方式示例,3.3.2整數(shù)類型整數(shù)類型有以下子類型:NATURAL(自然數(shù)類型)取值范圍為0和所有正整數(shù)。POSITIVE(正整數(shù)類型)取值范圍為所有正整數(shù)。注:數(shù)據(jù)類型BIT,BIT_VECTOR,INTEGER,NATURAL,POSITIVE都被定義在VHDL的標(biāo)準(zhǔn)庫(STD庫)中的標(biāo)準(zhǔn)程序包STANDARD中的。是默認(rèn)打開的,說明語句可以省略。,KX康芯科技,3.3.3計數(shù)器設(shè)計的其他表述方法,【例3-19】方法2LIBRARYIEEE;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)BEGINIFCLKEVENTANDCLK=1THENQ1=Q1+1;ENDIF;ENDPROCESS;Q=Q1;ENDbhv;,上例中,Q的端口模式為OUT,沒有輸入特性,因此不能使用Q=Q+1的語句。解決方法:定義一個內(nèi)部信號Q1,內(nèi)部信號沒有端口模式,即Q1的數(shù)據(jù)流動方向不受限制,可執(zhí)行Q1=Q1+1的操作。新的問題:Q10);-計數(shù)器異步復(fù)位ELSIFCLKEVENTANDCLK=1THEN-檢測時鐘上升沿IFEN=1THEN-檢測是否允許計數(shù)(同步使能)IFCQI0);-大于9,計數(shù)值清零ENDIF;ENDIF;ENDIF;IFCQI=“1001”THENCOUT=1;-計數(shù)大于9,輸出進(jìn)位信號ELSECOUT=0;ENDIF;CQ=CQI;-將計數(shù)值向端口輸出ENDPROCESS;ENDbehav;,相關(guān)語法說明:,1.變量,VARIABLECQI:STD_LOGIC_VECTOR(3DOWNTO0);定義標(biāo)識符CQI為變量,其數(shù)據(jù)類型為含有4個元素的標(biāo)準(zhǔn)邏輯矢量。變量的功能主要用于數(shù)據(jù)的暫存。變量的賦值符號是:=信號的賦值符號是0);等價于da(5),OTHERS=a(1);等價于d0)產(chǎn)生。,由IFEN=1THEN產(chǎn)生。,由IFCQI=9THENCOUT=1;ELSECOUT=0;產(chǎn)生。,十進(jìn)制加法計數(shù)器的工作時序,習(xí)題,3-1.畫出與下例實(shí)體描述對應(yīng)的原理圖符號元件:ENTITYbuf3sIS-實(shí)體1:三態(tài)緩沖器PORT(input:INSTD_LOGIC;-輸入端enable:INSTD_LOGIC;-使能端output:OUTSTD_LOGIC);-輸出端ENDbuf3x;ENTITYmux21IS-實(shí)體2:2選1多路選擇器PORT(in0,in1,sel:INSTD_LOGIC;output:OUTSTD_LOGIC);END;,習(xí)題,3-2.圖所示的是4選1多路選擇器,試分別用IF_THEN語句和CASE語句的表達(dá)方式寫出此電路的VHDL程序。選擇控制的信號s1和s0的數(shù)據(jù)類型為STD_LOGIC_VECTOR;當(dāng)s1=0,s0=0;s1=0,s0=1;s1=1,s0=0和s1=1,s0=1分別執(zhí)行y=a、y=b、y=c、y=d。,4選1多路選擇器,習(xí)題,3-3.圖所示的是雙2選1多路選擇器構(gòu)成的電路MUXK,對于其中MUX21A,當(dāng)s=0和1時,分別有y=a和y=b。試在一個結(jié)構(gòu)體中用兩個進(jìn)程來表達(dá)此電路,每個進(jìn)程中用CASE語句描述一個2選1多路選擇器MUX21A。,雙2選1多路選擇器,習(xí)題,3-4.下圖是一個含有上升沿觸發(fā)的D觸發(fā)器的時序電路,試寫出此電路的VHDL設(shè)計文件。,習(xí)題,3-5.給出1位全減器的VHDL描述。要求:(1)首先設(shè)計1位半減器,然后用例化語句將它們連接起來,圖4-20中h_suber是半減器,diff是輸出差,s_out是借位輸出,sub_in是借位輸入。(2)以1位全減器為基本硬件,構(gòu)成串行借位的8位減法器,要求用例化語句來完成此項(xiàng)設(shè)計(減法運(yùn)算是xy-sun_in=diffr)。,1位全減器,習(xí)題,3-6.根據(jù)下圖,寫出頂層文件MX3256.VHD的VHDL設(shè)計文件。,3-7.設(shè)計含有異步清零和計數(shù)使能的16位二進(jìn)制加減可控計數(shù)器。,- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- EDA 技術(shù) 實(shí)用教程 VHDL 設(shè)計 初步
鏈接地址:http://m.appdesigncorp.com/p-11495835.html