VHDL設計深入課件_第1頁
VHDL設計深入課件_第2頁
VHDL設計深入課件_第3頁
VHDL設計深入課件_第4頁
VHDL設計深入課件_第5頁
已閱讀5頁,還剩74頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第7章VHDL設計深入

7.1進程中的信號賦值與變量賦值7.1進程中的信號賦值與變量賦值判斷下面3個程序中是否有錯誤,若有則指出錯誤所在,并給出完整程序。

程序1:

程序2:SignalA,EN:std_logic;ArchitectureoneofsampleisProcess(A,EN)variablea,b,c:integer;VariableB:std_logic;beginBeginc<=a+b;ifEN=1thenB<=A;endif;end;endprocess;判斷下面3個程序中是否有錯誤,若有則指出錯誤所在,并給出完整程序。

程序3:libraryieee;useieee.std_logic_1164.all;entitymux21isport(a,b:instd_logic;sel:instd_logic;c:outstd_logic;);endsam2;architectureoneofmux21isbeginifsel='0'thenc:=a;elsec:=b;endif;endtwo;【例7-3】ARCHITECTUREbhvOFDFF3ISSIGNALA,B:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENA<=D1;B<=A;Q1<=B;ENDIF;ENDPROCESS;

END;

時序波形圖的分析【例7-4】ARCHITECTUREbhvOFDFF3ISBEGINPROCESS(CLK)VARIABLEA,B:STD_LOGIC;BEGINIFCLK'EVENTANDCLK='1'THENA:=D1;B:=A;Q1<=B;ENDIF;ENDPROCESS;

END;

時序波形圖的分析VHDL語句的執(zhí)行時間順序問題

和軟件語言的重要差異。很令人困惑的問題?。?zhí)行賦值≠完成賦值:結論:關于VHDL代碼的

執(zhí)行時間順序問題signal和variable代入語句的執(zhí)行時間不同variable代入后,其數(shù)值立即發(fā)生改變!signal代入后,數(shù)值不立即改變,只有在ENDPROCESS前才改變。7.1進程中的信號賦值與變量賦值Signal的一個例子p39ARCHITECTUREbhvOFp39ISSIGNAL a,b,c,y,z: INTEGER;BEGIN PROCESS(a,b,c) BEGIN y<=a+b; z<=c-a; y<=b; ENDPROCESS;ENDARCHITECTUREbhv;如果a,b,c分別為1,2,3Y的值等于多少?線與【例7-6】process(i0,i1,i2,i3,a,b)beginmuxval<=0;if(a='1')thenmuxval<=muxval+1;endif;if(b='1')thenmuxval<=muxval+2;endif;casemuxvaliswhen0=>q<=i0;when1=>q<=i1;when2=>q<=i2;when3=>q<=i3;whenothers=>null;4選1選擇器的電路圖(7-6代碼)【例7-7】variablemuxval:integerrange7downto0;beginmuxval:=0;if(a='1')thenmuxval:=muxval+1;endif;if(b='1')thenmuxval:=muxval+2;endif;casemuxvaliswhen0=>q<=i0;when1=>q<=i1;when2=>q<=i2;when3=>q<=i3;whenothers=>null;

4選1選擇器的電路圖(7-7代碼)差之毫厘謬之千里上面2

個圖的差異?看似相似的代碼,生成的電路卻

大相徑庭??!產生了不需要的 時序電路單元(DFF)圖

例7-6中錯誤的工作時序

圖例7-7中正確的工作時序

小結:變量賦值與信號賦值

變量與信號的差異:

1)賦值方式的不同:變量:=表達式;信號<=表達式;

2)硬件實現(xiàn)的功能不同:信號代表電路單元、功能模塊間的互聯(lián),代表實際的硬件連線;變量代表電路單元內部的操作,代表暫存的臨時數(shù)據(jù)。3)有效范圍的不同:信號:程序包、實體、結構體;全局量。變量:進程、子程序;局部量。

ARCHITECTURE{SIGNALDeclarations}label1:PROCESS{VARIABLEDeclarations}label2:PROCESS{VARIABLEDeclarations}┇4)賦值行為的不同:信號賦值延遲更新數(shù)值、時序電路;變量賦值立即更新數(shù)值、組合電路。5)信號的多次賦值

a.一個進程:最后一次賦值有效

b.多個進程:多源驅動線與、線或、三態(tài)例:信號的多次賦值architecturertlofexissignala:std_logic;beginprocess(…)begina<=b;…a<=c;endprocess;endrtl;architecturertlofexissignala:std_logic;beginprocess(…)begina<=b;…endprocess;process(…)begina<=c;...endprocess;endex;三態(tài)門:要點三態(tài)電路是總線電路設計的必須狀態(tài)CPLD/FPGA器件

不能 在內部產生三態(tài)電路

只能在

端口處產生三態(tài)電路內部三態(tài)電路必須用

選擇器電路代替7.2含高阻輸出的電路設計

EN1EN1EN1…G1G2GnA1A2An數(shù)據(jù)總線011…101…110…

注意:任何時刻,只允許一個三態(tài)門使能,其余為高阻態(tài)。用途主要作為TTL電路與總線(BUS)間的接口電路三態(tài)門:圖VHDL應如何表達?ENTITYtri_sIS PORT(enable, :IN STD_LOGIC;

datain :IN STD_LOGIC_VECTOR(7DOWNTO0);

dataout :OUT STD_LOGIC_VECTOR(7DOWNTO0));ENDENTITYtri_s;ARCHITECTUREBEHAVOFtri_sISBEGIN PROCESS(enable,datain) BEGIN IFenable='1'THEN

dataout <=datain; ELSE

dataout <="ZZZZZZZZ"; --errorcode:dataout<="zzzzzzzz"; ENDIF; ENDPROCESS;ENDARCHITECTUREBEHAV;三態(tài)門:代碼詳細參見:P1777-87.2.2雙向緩沖器:圖VHDL應如何表達?ENTITYbitri_stateIS PORT(control :IN STD_LOGIC; in1 :IN STD_LOGIC_VECTOR(7DOWNTO0); x :OUT STD_LOGIC_VECTOR(7DOWNTO0); q :INOUT STD_LOGIC_VECTOR(7DOWNTO0) );ENDENTITYbitri_state;ARCHITECTUREBEHAVOFbitri_stateISBEGINPROCESS(control,q,in1)BEGINIFcontrol=‘0'THEN x<=q; --errorcode,

ELSE q<=in1; x<="ZZZZZZZZ"; ENDIF;ENDPROCESS;ENDARCHITECTUREBEHAV;詳細參見:p178電路圖是?雙向端口:ex7-9Ex7-93.10雙向和三態(tài)電路信號賦值3.10.2雙向端口設計圖

例7-9的仿真波形圖

雙向端口:設計提示如果一個雙向端口用于輸入模式,必須使得原來呈現(xiàn)輸出模式的端口

為“Z”狀態(tài)ENTITYbitri_stateokIS PORT(control :IN STD_LOGIC; in1 :IN STD_LOGIC_VECTOR(7DOWNTO0); x :OUT STD_LOGIC_VECTOR(7DOWNTO0); q :INOUT STD_LOGIC_VECTOR(7DOWNTO0) );ENDENTITYbitri_stateok;ARCHITECTUREBEHAVOFbitri_stateokISBEGINPROCESS(control,q,in1)BEGINIFcontrol=‘0'THEN x<=q; q<="ZZZZZZZZ"; --correctcode,comparewithexample5_14;ELSE q<=in1; x<="ZZZZZZZZ"; --thecodecanbeomitted!!!ENDIF;ENDPROCESS;ENDARCHITECTUREBEHAV;詳細參見:p178_ex7-10雙向和三態(tài)電路信號賦值雙向端口設計圖

例7-10的仿真波形圖

聲明本部分內容是數(shù)字電子系統(tǒng)的設計中要遇到的特殊問題,雖不是考試重點,但卻是實際設計中的關鍵注意事項。藝無止境,講授本部分的目的僅僅是帶領入門,修行仍靠自身。要熟練使用這些技巧,并且有進一步的提高,必須經(jīng)過大量的項目實踐去積累。7.3資源優(yōu)化7.3.1資源共享資源共享即RTL級模塊中的兩個或兩個以上的部分共享一組邏輯7.3資源優(yōu)化7.3.2邏輯優(yōu)化

減少資源的占用7.3資源優(yōu)化7.3.3串行化在時間上復用邏輯塊7.3資源優(yōu)化7.3.3串行化47流水線技術幾乎是最常用的提供系統(tǒng)工作速率的強有力手段。7.4速度優(yōu)化

7.4.1流水線設計

將處理過程分成串連的n個步驟,并將單向串連起來,每個步驟之間用D觸發(fā)器分割。Step1Step2Stepn…問題:下圖的流水線為何可以提高速度?時序電路的主要時序參數(shù)clkDinclkDinThTsuTcoTsu:setuptimeTh:holdtimeTco:clockoutputdelay流水線設計:

方法Tclk≥

Tdelay/2+Tco+Tsetup電子科技大學51關于寄存輸入和寄存輸出數(shù)字系統(tǒng)中,各模塊應采?。拇孑斎牒停┘拇孑敵?,這樣做有如下優(yōu)點:模塊化清晰(特別是寄存輸出);提高系統(tǒng)最高工作速率;有利于整個系統(tǒng)和單個模塊分別進行靜態(tài)時序分析。關鍵路徑一個同步系統(tǒng)中的關鍵路徑,就是它所有的路徑中,路徑延遲最長的那一條。顯然,這個同步系統(tǒng)的最高工作頻率,等于關鍵路徑延遲的倒數(shù)。7.4速度優(yōu)化

7.4.1流水線設計

Clk=129MHz7.4速度優(yōu)化

7.4.1流水線設計

T=7.748nsf=129MT=3.63n3f=275M7.4速度優(yōu)化

7.4.2關鍵路徑法長路徑的避免實際上是一個很泛的技巧,總之,在設計中,時序能走短路徑就盡量走短路徑;組合電路能縮小就盡量縮小。以下僅舉兩例來說明。7.5仿真延時7.5.1固有延時z<=xXORyAFTER5ns;

z<=xXORy;

B<=AAFTER20ns;--固有延時模型

7.5仿真延時7.5.2傳輸延時B<=TRANSPORTAAFTER20ns;--

傳輸延時模型

圖3-28固有延時輸入輸出波形

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論