




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第9章第1節
設計方法
<EDA技術與應用>課程講義下一章合肥工業大學彭良清上一章
第9章第1節
設計方法
<EDA技術與應用>課程講義下1本節內容可編程邏輯設計的基本原則可編程邏輯設計常用設計思想和技巧Altera公司推薦的編碼風格面積優化速度優化本節內容可編程邏輯設計的基本原則2可編程邏輯設計的基本原則面積和速度的平衡與互換原則硬件原則系統原則同步設計原則避免使鎖存器(LATCH)Peter關于成功設計的十大原則可編程邏輯設計的基本原則面積和速度的平衡與互換原則3面積和速度:含義面積:含義:設計所消耗的FPGA/CPLD的邏輯資源數量衡量指標:觸發器數(FF),查找表數(LUT),宏單元數(MC),邏輯門數(GATE),邏輯單元數(LE)速度含義:設計在芯片上穩定運行所達到的最高頻率影響最高頻率的因子:PADtoPADTimeClockSetupTimeClockHoldTimeClocktoOutputDelay面積和速度:含義面積:4建立時間(Tsetuptime)&
保持時間(Tholdtime)返回建立時間(Tsetuptime)&
保持時間(Tho5時鐘的最小周期定義(Xilinx模型)TCLK=TCKO+TLOGIC+TNET+TSETUP-TCLK_SKEW時鐘的最小周期定義(Xilinx模型)TCLK=TCKO+T6時鐘的最小周期定義(Xilinx模型)TCLK=TCKO+TLOGIC+TNET+TSETUP-TCLK_SKEWTCLK: 最小時鐘周期TCKO: 時鐘輸出時間TLOGIC: 同步元件之間的組合邏輯時間TNET: 網線延時TSETUP: 同步元件的建立時間TCLK_SKEW: 時鐘信號延時的差別TCLK_SKEW=TCD2-TCD1時鐘的最小周期定義(Xilinx模型)TCLK=TCKO+T7時鐘的最小周期定義(Altera模型)時鐘的最小周期定義(Altera模型)8面積和速度:含義一個設計的速度和面積往往是一個范圍,是可變的如何改變設計的速度和面積:修改代碼,采用不同的代碼結構在EDA軟件中對設計的目標碼進行編譯控制選擇不同的器件設計的目標不是:占用最小的面積達到最快的速度設計的目標而是:在滿足項目功能和性能指標要求的情況下達到面積和速度均衡面積和速度:含義一個設計的速度和面積往往是一個范圍,是可變的9硬件原則差異: 不能用編寫軟件語言(C,C++,JAVA)的邏輯來編寫VHDL代碼過程: 必須對實現的硬件電路“成竹在胸”,然后再用HDL代碼實現之串行和并行: 必須深刻理解之基本語句電路: 對基本IF,SWITCH,CASE,FOR等語句生成的電路應完全掌握硬件原則差異:10系統原則
與其他部分的任務劃分: 在一塊具有DSPCPUFPGA/CPLD的系統中如何劃分”勢力范圍”?內部資源的任務劃分不同RAM資源的使用(M512RAM/M4KRAM/MRAM)軟核的使用SERDES的使用其他資源系統原則
與其他部分的任務劃分:11同步原則一般電路,盡量使用同步設計對于高速電路, 必須使用同步電路結構 進行設計Why? 請看:同步與異步的比較:同步原則一般電路,盡量使用同步設計12異步電路核心邏輯用組合邏輯實現電路的主要信號、輸出信號不依賴于時鐘容易產生毛刺不利于器件移植不容易進行時序分析異步電路核心邏輯用組合邏輯實現13同步電路核心邏輯用觸發器實現電路的主要信號、輸出信號依賴于時鐘邊沿可完全避免產生毛刺利于器件移植容易進行時序分析同步電路核心邏輯用觸發器實現14異步設計的例子BinaryCounter:LLLLLLLHLLHLLLHH..........HHHHBCDtoDEC:LLLL->HHHHHHHHHLLLLH->HHHHHHHHLHLLHL->HHHHHHHLHHLLHH->HHHHHHLHHH..........->............................HLLH->LHHHHHHHHH異步設計的例子BinaryCounter:LLLLBC15預期的輸出波形這是一個理想的
輸出波形但是實際的波形是什么?預期的輸出波形這是一個理想的16功能仿真輸出What
is
this?功能仿真輸出Whatisthis?17時序仿真輸出這里出錯!!!原因?電路設計問文題還是CPLD器件問題?但.....該電路使用74xxTTL邏輯電路可工作很好,用AlteraDevice卻不正常t一定是AlteraDevice問題.......…???時序仿真輸出18改用同步設計
Synchornousm7442CircuitDesign改用同步設計
Synchornousm7442Circu19避免使鎖存器(LATCH)避免使鎖存器(LATCH)20使用寄存器(Register)使用寄存器(Register)21Peter關于成功設計的十大原則(English)原文原文參考中譯Peter關于成功設計的十大原則(English)原文原文參22Peter關于成功設計的十大原則所有狀態機輸出應該有寄存器(registered)使用寄存器(register),不使用鎖存器(latch)狀態輸入、包括復位信號應該使用同步設計路徑時間越短,問題越少時鐘偏斜(skew)應該盡量小對于不同時鐘域的信號傳遞應該引起極大注意,應該同步這些信號。狀態機中應無“死”狀態產生不應該存在未知的異步邏輯反饋電路所有解碼邏輯應該精心設計,避免異步邏輯產生不應該依賴于仿真器,有時仿真正確,但設計卻很糟。Peter關于成功設計的十大原則所有狀態機輸出應該有寄存器(23常用設計思想和技巧
常用的4中設計技巧乒乓操作串并轉換流水線操作數據接口同步常用設計思想和技巧
常用的4中設計技巧24乒乓操作輸入數據選擇單元MUX2-1數據緩沖模塊1數據緩沖模塊2輸出數據選擇單元MUX2-1…6,5,4,3,2,1…6,4,2…5,3,1有何好處?…6,5,4,3,2,1乒乓操作輸入數據緩沖數據緩沖輸出…6,5,4,3,2,1…625乒乓操作:
低速模塊處理高速數據?輸入數據選擇單元MUX2-1數據緩沖模塊1數據緩沖模塊2輸出數據選擇單元MUX2-1100Mhz100Mhz數據處理模塊1數據處理模塊2XXMhz?乒乓操作:
低速模塊處理高速數據?輸入數據緩沖數據緩沖輸26串并轉換串行->并行提高了速度面積換取速度通過邏輯復制提高數據吞吐率并行->串行減小了面積占用速度換取面積問題:如何實現?串并轉換串行->并行27串->并轉換串->并轉換28流水線(Pipelining)操作:概念將處理過程分成串連的n個步驟,并將單向串連起來,每個步驟之間用D觸發器分割。Step1Step2Stepn…流水線(Pipelining)操作:概念將處理過程分成串連的29問題:下圖的流水線為何可以提高速度?問題:下圖的流水線為何可以提高速度?30流水線(Pipelining)操作:過程圖示step2step1step3step4step2step1step3step4step2step1step3step4step2step1step3step4step2step1step3step4Time流水線(Pipelining)操作:過程圖示step2ste31流水線操作:應用高速電路設計的常用方法適合場合:單向數據流應用實例:N位加法器,N位乘法器等流水線技術具有廣法的應用:CPU,DSP,AD/DA流水線操作:應用高速電路設計的常用方法32數據接口同步:概念含義:異步時鐘域的數據同步問題:如何達到2個不同時鐘域的數據同步?異域時鐘的2種情況時鐘頻率相同,但相差不固定,或者相差固定但不可測時鐘頻率不相同問題:相差固定,頻率相同的時鐘是異域時鐘嗎?數據接口同步:概念含義:異步時鐘域的數據同步33數據接口同步:同步方法不推薦的方法:使用buffer等組合邏輯延時來調整時間使用時鐘的正負沿調整數據采樣數據接口同步:同步方法不推薦的方法:34數據接口同步:同步方法推薦方法同頻異相問題使用后級時鐘對前級數據采樣2次使用FIFO,DPRAM作為緩沖,用前級時鐘控制數據寫入,用后級時鐘控制數據讀出異頻問題使用FIFO,DPRAM作為緩沖,用前級時鐘控制數據寫入,用后級時鐘控制數據讀出問題:數據吞吐率不同的影響?問題:緩沖池的大小?數據接口同步:同步方法推薦方法35Altera公司推薦的編碼風格組合邏輯的注意事項時鐘設計的注意事項狀態機設計的一般原則全局異步復位資源三態信號的設計Altera公司推薦的編碼風格組合邏輯的注意事項36組合邏輯的注意事項(一)避免組合邏輯環(CombinationalLoops)DQCLKCLRN組合邏輯如何修改?加入寄存器注意此類錯誤的warning信息組合邏輯的注意事項(一)避免組合邏輯環(Combinatio37替換異步脈沖產生單元
(PulseGenerator)如何產生脈沖信號?異步電路常用DelayChains差生問題:脈沖寬度無法確定這是同步電路的脈沖產生方法:替換異步脈沖產生單元
(PulseGenerator)如何38同步脈沖產生方法DQCLKDQCLK同步脈沖產生方法DQDQ39時鐘設計的注意事項
有全局時鐘引腳如時鐘信號使用PLL(ALTERA)或者DLL(XILINX)進行分頻/倍頻、移相輸出,控制內部的全局時鐘網絡使用圖示:問題:在原理圖和VHDL2種設計中如何遵循以上原則?時鐘設計的注意事項
有全局時鐘引腳如時鐘信號40Cyclone的PLL結構Cyclone的PLL結構41QuartusII的altpllmegafunction.QuartusII的altpllmegafunctio42狀態機設計的一般原則CPLD使用Gray狀態碼,FPGA使用one-hot編碼使用2進程狀態機必須有初態處理多狀態相同操作的邏輯復用狀態機設計的一般原則CPLD使用Gray狀態碼,FPGA使用43全局異步復位資源使用專用的全局復位引腳對芯片進行復位操作全局異步復位資源使用專用的全局復位引腳對芯片進行復位操作44三態信號的設計
只能在頂層模塊使用:三態設計雙向端口三態信號的設計
只能在頂層模塊使用:45面積優化
為何要進行面積優化?采用規模更小的芯片,降低成本占用資源越少,電路性能越好保留資源用于系統升級設計降低功耗常用的3種面積優化方法資源共享邏輯優化串行化面積優化
為何要進行面積優化?46資源共享:乘法器共享舉例X代碼詳見代碼詳見資源共享:乘法器共享舉例X代碼詳見代碼詳見47……..ENTITYmultmuxIS PORT( A0, B0, B:IN STD_LOGIC_VECTOR(3DOWNTO0); sel :IN STD_LOGIC; result :OUTSTD_LOGIC_VECTOR(7DOWNTO0) );ENDENTITYmultmux;ARCHITECTUREbhvOFmultmuxISBEGIN PROCESS(A0,A1,B,sel) BEGIN IFsel='0'THEN
result<=A0*B;
ELSE result<=A1*B;
ENDIF; ENDPROCESS;ENDARCHITECTUREbhv;優化前:代碼詳見P311_ex10_1_multmux……..優化前:代碼詳見48面積優化
之
資源共享代碼面積優化
之
資源共享代碼49FlowSummary1(16位寬度)FlowStatus ;Successful-ThuApr2711:07:032006;QuartusIIVersion ;5.0Build14804/26/2005SJWebEdition;RevisionName ;p312_ex10_1Top-levelEntityName ;multmuxFamily ;CycloneDevice ;EP1C3T144C6TimingModels ;FinalMettimingrequirements ;YesTotallogicelements ;528/2,910(18%)
Totalpins ;81/104(77%)Totalvirtualpins ;0Totalmemorybits ;0/59,904(0%)TotalPLLs ;0/1(0%)比較:FlowSummary2FlowSummary1(16位寬度)FlowS50………ENTITYmultmuxIS PORT( A0, B0, B:IN STD_LOGIC_VECTOR(3DOWNTO0); sel :IN STD_LOGIC; result :OUTSTD_LOGIC_VECTOR(7DOWNTO0) );ENDENTITYmultmux;ARCHITECTUREbhvOFmultmuxISSIGNALtemp :STD_LOGIC_VECTOR(7DOWNTO0);BEGIN PROCESS(A0,A1,B,sel) BEGIN
IFsel='0'THEN temp <= A0; ELSE temp <= A1; ENDIF; result<=temp*B;
ENDPROCESS;ENDARCHITECTUREbhv;優化后:
少用一個乘法器詳見P311_ex10_2_multmux優化后:
少用一個乘法器詳見51共享一個乘法器共享一個乘法器52FlowSummary2(16位寬度)FlowStatus ;Successful-ThuApr2711:07:032006;QuartusIIVersion ;5.0Build14804/26/2005SJWebEdition;RevisionName ;p312_ex10_2Top-levelEntityName ;multmuxFamily ;CycloneDevice ;EP1C3T144C6比較TimingModels ;FinalMettimingrequirements ;YesTotallogicelements ;528/2,910(18%)
Totalpins ;81/104(77%)Totalvirtualpins ;0Totalmemorybits ;0/59,904(0%)TotalPLLs ;0/1(0%)比較:FlowSummary1FlowSummary2(16位寬度)FlowSt53資源共享之反例Why?資源共享之反例Why?54資源共享的適用范圍需要共享的模塊特征占用資源較多被多處使用設計邏輯中可以分時使用該模塊資源共享的適用范圍需要共享的模塊特征55邏輯優化:目的,途徑修改
VHDL代碼結構來達到邏輯優化的目的良好的VHDL代碼可以
大大降低占用資源邏輯優化:目的,途徑修改56ENTITYmult1IS PORT( clk :IN STD_LOGIC; ma :IN STD_LOGIC_VECTOR(11DOWNTO0); mc :OUT STD_LOGIC_VECTOR(23DOWNTO0) );ENDENTITYmult1;ARCHITECTURErt1OFmult1IS SIGNALta,tb :STD_LOGIC_VECTOR(11 DOWNTO0);BEGIN PROCESS(clk) BEGIN
IF(clk'EVENTANDclk='1')THEN ta <= ma; tb <= "100110111001"; mc <= ta*tb; ENDIF; ENDPROCESS;ENDARCHITECTURErt1;邏輯優化:
代碼1(乘法器)詳見P313_ex10_3_mult1邏輯優化:
代碼1(乘法器)詳見57邏輯優化:
代碼2(乘法器)之
資源占用邏輯優化:
代碼2(乘法器)之
資源占用58ENTITYmult1IS PORT( clk :IN STD_LOGIC; ma :IN STD_LOGIC_VECTOR(11DOWNTO0); mc :OUT STD_LOGIC_VECTOR(23DOWNTO0) );ENDENTITYmult2;ARCHITECTURErt1OFmult1ISSIGNALta :STD_LOGIC_VECTOR(11 DOWNTO0);CONSTANTtb :STD_LOGIC_VECTOR(11 DOWNTO0) :="100110111001";BEGIN PROCESS(clk) BEGIN
IF(clk'EVENTANDclk='1')THEN ta <= ma; mc <= ta*tb; ENDIF; ENDPROCESS;ENDARCHITECTURErt1;邏輯優化:
代碼2(乘法器)詳見P314_ex10_4_mult2邏輯優化:
代碼2(乘法器)詳見59邏輯優化:
代碼2(乘法器)之資源占用邏輯優化:
代碼2(乘法器)之資源占用60串行化串行化就是我們前面所介紹的串并轉換中的
并->串轉換時間上復用某個占用很多資源的模塊例如:16位并行乘加器&16位串行乘加器串行化串行化61ENTITYmult1IS PORT( clk :IN STD_LOGIC; a0,a1,a2,a3 :IN STD_LOGIC_VECTOR(7DOWNTO0); b0,b1,b2,b3 :IN STD_LOGIC_VECTOR(7DOWNTO0); yout :OUT STD_LOGIC_VECTOR(15DOWNTO0) );ENDENTITYmult1;ARCHITECTURErt1OFmult1ISBEGIN PROCESS(clk) BEGIN
IF(clk'EVENTANDclk='1')THEN youy<=((a0*b0)+(a1*b1))+((a3*b3)+(a4*b4)); ENDIF; ENDPROCESS;ENDARCHITECTURErt1;并行乘加器:代碼ENTITYmult1IS并行乘加器:代碼62并行乘加器:圖并行乘加器:圖63------------------------------------------------------------------+FlowSummary;-----------------------+------------------------------------------+FlowStatus ;Successful-SatApr2917:21:212006QuartusIIVersion;4.1Build18106/29/2004SJFullVersion;RevisionName ;pmultaddTop-levelEntityName ;pmultaddFamily ;FLEX10KTotallogicelements ;712/1,152(61%)
Totalpins ;82/102(80%)Totalmemorybits ;0/6,144(0%)Device ;EPF10K10TC144-3TimingModels ;Production并行乘加器資源占用------------------------------64ENTITYsmultaddIS PORT(clk :IN STD_LOGIC; a0,a1,a2,a3 :IN STD_LOGIC_VECTOR(7DOWNTO0); b0,b1,b2,b3 :IN STD_LOGIC_VECTOR(7DOWNTO0); yout :OUT STD_LOGIC_VECTOR(15DOWNTO0));ENDENTITYsmultadd;ARCHITECTUREs_archOFsmultaddISSIGNALcnt :STD_LOGIC_VECTOR(2 DOWNTO0);SIGNALtmpa,tmpb :STD_LOGIC_VECTOR(7 DOWNTO0);SIGNALtmp,ytmp :STD_LOGIC_VECTOR(15 DOWNTO0); BEGIN tempa <= a0WHENcnt=0ELSE a1WHENcnt=1ELSE a2WHENcnt=2ELSE a3WHENcnt=3ELSE a0; tempb <= b0WHENcnt=0ELSE b1WHENcnt=1ELSE b2WHENcnt=2ELSE b3WHENcnt=3ELSE b0; tmp <= tmpa*tmpb; PROCESS(clk) BEGIN IF(clk'EVENTANDclk='1')THEN IFstart='1'THEN cnt <= "000"; ytmp <= (others=>'0'); ELSIF(cnt<4)THEN cnt <=cnt+1; ytmp<=ytmp+tmp; ELSIF(cnt=4)THEN yout <= ytmp; ENDIF; ENDIF; ENDPROCESS;END ARCHITECTURE s_arch;串行乘加器:代碼串行乘加器:代碼65EDA技術與應用講義第9章第1節設計方法課件66EDA技術與應用講義第9章第1節設計方法課件67乘法器乘法器68------------------------------------------------------------------+FlowSummary;-----------------------+------------------------------------------+FlowStatus ;Successful-SatApr2917:21:212006QuartusIIVersion;4.1Build18106/29/2004SJFullVersion;RevisionName ;smultaddTop-levelEntityName ;smultaddFamily ;FLEX10KTotallogicelements ;264/576(45%)
Totalpins ;82/102(80%)Totalmemorybits ;0/6,144(0%)Device ;EPF10K10TC144-3TimingModels ;Production串行乘加器:資源占用------------------------------69速度優化流水線設計寄存器配平關鍵路徑法速度優化流水線設計70流水線設計:原因Tclk≥Tdelay+Tco+Tsetup流水線設計:原因Tclk≥Tdelay+Tco+Tse71流水線設計:
方法Tclk≥
Tdelay/2+Tco+Tsetup流水線設計:
方法Tclk≥Tdelay/2+Tco+72流水線設計:效果提高了電路的數據處理速度增加了資源占用流水線的級別越多,速度越快!!!請看:例子1,例子2(教材)流水線設計:效果提高了電路的數據處理速度7324位加法器實現24位加法器實現74加法器:
不使用Pipelining加法器:
不使用Pipelining75ARCHITECTUREnormal_archOFadder4IS
SIGNALt0,t1,t2,t3 :STD_LOGIC_VECTOR(7 DOWNTO0); SIGNALaddtmp0,addtmp1 :STD_LOGIC_VECTOR(8 DOWNTO0); BEGIN PROCESS(clk) BEGIN IF(clk'EVENTANDclk='1')THEN t0<= a0; t1<= a1; t2<= a2; t3<= a3; ENDIF; ENDPROCESS; addtemp0<='0'&t0+t1; addtemp1<='0'&t2+t3; PROCESS(clk) BEGIN IF(clk'EVENTANDclk='1')THEN yout <= '0'&addtmp0+addtmp1; ENDIF; ENDPROCESS;END ARCHITECTURE normal_arch;加法器:
不使用Pipelining代碼ARCHITECTUREnormal_archOFad76加法器:
使用Pipelining加法器:
使用Pipelining77ARCHITECTUREpipelining_archOFpipeaddIS
SIGNALt0,t1,t2,t3 :STD_LOGIC_VECTOR(7 DOWNTO0); SIGNALaddtmp0,addtmp1 :STD_LOGIC_VECTOR(8 DOWNTO0); BEGIN PROCESS(clk) BEGIN IF(clk'EVENTANDclk='1')THEN t0<= a0; t1<= a1; t2<= a2; t3<= a3; ENDIF; ENDPROCESS; PROCESS(clk) BEGIN IF(clk'EVENTANDclk='1')THEN addtmp0<='0'&t0+t1; addtmp1<='0'&t2+t3;
yout <= '0'&addtmp0+addtmp1; ENDIF; ENDPROCESS;END ARCHITECTURE pipelining;加法器:
使用Pipelining代碼ARCHITECTUREpipelining_archO78寄存器配平(RegisterBlalancing)不合理的結構寄存器配平(RegisterBlalancing)不合理的79寄存器配平(RegisterBlalancing)合理的結構寄存器配平(RegisterBlalancing)合理的結80關鍵路徑法關鍵路徑法81問題:在quartusII軟件中可以進行那些優化設計的配置?如何使用流水線技術設計高速的24位加法器電路?問題:在quartusII軟件中可以進行那些優化設計的配82
Theend.
83
以下內容
為
正文的引用,
可不閱讀。 以下內容
為
正文的引用,
可不閱讀。84建立時間和保持時間返回建立時間和保持時間返回85報告類型
文件擴展名Analysis&Synthesis.map.rptAssembler.asm.rptCompilation(Thisreportfileisasinglefilethatcombinestheinformationoftheindividualmodulecompilationreportfiles.).cmp.rptDesignAssistant.drc.rptEDANetlistWriter.eda.rptFitter.fit.rptFlow.flow.rptSimulator.sim.rptTimingAnalyzer.tan.rptQuartusII中的編譯報告文件報告類型文件擴展名Analysis&Synthesis86
第9章第1節
設計方法
<EDA技術與應用>課程講義下一章合肥工業大學彭良清上一章
第9章第1節
設計方法
<EDA技術與應用>課程講義下87本節內容可編程邏輯設計的基本原則可編程邏輯設計常用設計思想和技巧Altera公司推薦的編碼風格面積優化速度優化本節內容可編程邏輯設計的基本原則88可編程邏輯設計的基本原則面積和速度的平衡與互換原則硬件原則系統原則同步設計原則避免使鎖存器(LATCH)Peter關于成功設計的十大原則可編程邏輯設計的基本原則面積和速度的平衡與互換原則89面積和速度:含義面積:含義:設計所消耗的FPGA/CPLD的邏輯資源數量衡量指標:觸發器數(FF),查找表數(LUT),宏單元數(MC),邏輯門數(GATE),邏輯單元數(LE)速度含義:設計在芯片上穩定運行所達到的最高頻率影響最高頻率的因子:PADtoPADTimeClockSetupTimeClockHoldTimeClocktoOutputDelay面積和速度:含義面積:90建立時間(Tsetuptime)&
保持時間(Tholdtime)返回建立時間(Tsetuptime)&
保持時間(Tho91時鐘的最小周期定義(Xilinx模型)TCLK=TCKO+TLOGIC+TNET+TSETUP-TCLK_SKEW時鐘的最小周期定義(Xilinx模型)TCLK=TCKO+T92時鐘的最小周期定義(Xilinx模型)TCLK=TCKO+TLOGIC+TNET+TSETUP-TCLK_SKEWTCLK: 最小時鐘周期TCKO: 時鐘輸出時間TLOGIC: 同步元件之間的組合邏輯時間TNET: 網線延時TSETUP: 同步元件的建立時間TCLK_SKEW: 時鐘信號延時的差別TCLK_SKEW=TCD2-TCD1時鐘的最小周期定義(Xilinx模型)TCLK=TCKO+T93時鐘的最小周期定義(Altera模型)時鐘的最小周期定義(Altera模型)94面積和速度:含義一個設計的速度和面積往往是一個范圍,是可變的如何改變設計的速度和面積:修改代碼,采用不同的代碼結構在EDA軟件中對設計的目標碼進行編譯控制選擇不同的器件設計的目標不是:占用最小的面積達到最快的速度設計的目標而是:在滿足項目功能和性能指標要求的情況下達到面積和速度均衡面積和速度:含義一個設計的速度和面積往往是一個范圍,是可變的95硬件原則差異: 不能用編寫軟件語言(C,C++,JAVA)的邏輯來編寫VHDL代碼過程: 必須對實現的硬件電路“成竹在胸”,然后再用HDL代碼實現之串行和并行: 必須深刻理解之基本語句電路: 對基本IF,SWITCH,CASE,FOR等語句生成的電路應完全掌握硬件原則差異:96系統原則
與其他部分的任務劃分: 在一塊具有DSPCPUFPGA/CPLD的系統中如何劃分”勢力范圍”?內部資源的任務劃分不同RAM資源的使用(M512RAM/M4KRAM/MRAM)軟核的使用SERDES的使用其他資源系統原則
與其他部分的任務劃分:97同步原則一般電路,盡量使用同步設計對于高速電路, 必須使用同步電路結構 進行設計Why? 請看:同步與異步的比較:同步原則一般電路,盡量使用同步設計98異步電路核心邏輯用組合邏輯實現電路的主要信號、輸出信號不依賴于時鐘容易產生毛刺不利于器件移植不容易進行時序分析異步電路核心邏輯用組合邏輯實現99同步電路核心邏輯用觸發器實現電路的主要信號、輸出信號依賴于時鐘邊沿可完全避免產生毛刺利于器件移植容易進行時序分析同步電路核心邏輯用觸發器實現100異步設計的例子BinaryCounter:LLLLLLLHLLHLLLHH..........HHHHBCDtoDEC:LLLL->HHHHHHHHHLLLLH->HHHHHHHHLHLLHL->HHHHHHHLHHLLHH->HHHHHHLHHH..........->............................HLLH->LHHHHHHHHH異步設計的例子BinaryCounter:LLLLBC101預期的輸出波形這是一個理想的
輸出波形但是實際的波形是什么?預期的輸出波形這是一個理想的102功能仿真輸出What
is
this?功能仿真輸出Whatisthis?103時序仿真輸出這里出錯!!!原因?電路設計問文題還是CPLD器件問題?但.....該電路使用74xxTTL邏輯電路可工作很好,用AlteraDevice卻不正常t一定是AlteraDevice問題.......…???時序仿真輸出104改用同步設計
Synchornousm7442CircuitDesign改用同步設計
Synchornousm7442Circu105避免使鎖存器(LATCH)避免使鎖存器(LATCH)106使用寄存器(Register)使用寄存器(Register)107Peter關于成功設計的十大原則(English)原文原文參考中譯Peter關于成功設計的十大原則(English)原文原文參108Peter關于成功設計的十大原則所有狀態機輸出應該有寄存器(registered)使用寄存器(register),不使用鎖存器(latch)狀態輸入、包括復位信號應該使用同步設計路徑時間越短,問題越少時鐘偏斜(skew)應該盡量小對于不同時鐘域的信號傳遞應該引起極大注意,應該同步這些信號。狀態機中應無“死”狀態產生不應該存在未知的異步邏輯反饋電路所有解碼邏輯應該精心設計,避免異步邏輯產生不應該依賴于仿真器,有時仿真正確,但設計卻很糟。Peter關于成功設計的十大原則所有狀態機輸出應該有寄存器(109常用設計思想和技巧
常用的4中設計技巧乒乓操作串并轉換流水線操作數據接口同步常用設計思想和技巧
常用的4中設計技巧110乒乓操作輸入數據選擇單元MUX2-1數據緩沖模塊1數據緩沖模塊2輸出數據選擇單元MUX2-1…6,5,4,3,2,1…6,4,2…5,3,1有何好處?…6,5,4,3,2,1乒乓操作輸入數據緩沖數據緩沖輸出…6,5,4,3,2,1…6111乒乓操作:
低速模塊處理高速數據?輸入數據選擇單元MUX2-1數據緩沖模塊1數據緩沖模塊2輸出數據選擇單元MUX2-1100Mhz100Mhz數據處理模塊1數據處理模塊2XXMhz?乒乓操作:
低速模塊處理高速數據?輸入數據緩沖數據緩沖輸112串并轉換串行->并行提高了速度面積換取速度通過邏輯復制提高數據吞吐率并行->串行減小了面積占用速度換取面積問題:如何實現?串并轉換串行->并行113串->并轉換串->并轉換114流水線(Pipelining)操作:概念將處理過程分成串連的n個步驟,并將單向串連起來,每個步驟之間用D觸發器分割。Step1Step2Stepn…流水線(Pipelining)操作:概念將處理過程分成串連的115問題:下圖的流水線為何可以提高速度?問題:下圖的流水線為何可以提高速度?116流水線(Pipelining)操作:過程圖示step2step1step3step4step2step1step3step4step2step1step3step4step2step1step3step4step2step1step3step4Time流水線(Pipelining)操作:過程圖示step2ste117流水線操作:應用高速電路設計的常用方法適合場合:單向數據流應用實例:N位加法器,N位乘法器等流水線技術具有廣法的應用:CPU,DSP,AD/DA流水線操作:應用高速電路設計的常用方法118數據接口同步:概念含義:異步時鐘域的數據同步問題:如何達到2個不同時鐘域的數據同步?異域時鐘的2種情況時鐘頻率相同,但相差不固定,或者相差固定但不可測時鐘頻率不相同問題:相差固定,頻率相同的時鐘是異域時鐘嗎?數據接口同步:概念含義:異步時鐘域的數據同步119數據接口同步:同步方法不推薦的方法:使用buffer等組合邏輯延時來調整時間使用時鐘的正負沿調整數據采樣數據接口同步:同步方法不推薦的方法:120數據接口同步:同步方法推薦方法同頻異相問題使用后級時鐘對前級數據采樣2次使用FIFO,DPRAM作為緩沖,用前級時鐘控制數據寫入,用后級時鐘控制數據讀出異頻問題使用FIFO,DPRAM作為緩沖,用前級時鐘控制數據寫入,用后級時鐘控制數據讀出問題:數據吞吐率不同的影響?問題:緩沖池的大小?數據接口同步:同步方法推薦方法121Altera公司推薦的編碼風格組合邏輯的注意事項時鐘設計的注意事項狀態機設計的一般原則全局異步復位資源三態信號的設計Altera公司推薦的編碼風格組合邏輯的注意事項122組合邏輯的注意事項(一)避免組合邏輯環(CombinationalLoops)DQCLKCLRN組合邏輯如何修改?加入寄存器注意此類錯誤的warning信息組合邏輯的注意事項(一)避免組合邏輯環(Combinatio123替換異步脈沖產生單元
(PulseGenerator)如何產生脈沖信號?異步電路常用DelayChains差生問題:脈沖寬度無法確定這是同步電路的脈沖產生方法:替換異步脈沖產生單元
(PulseGenerator)如何124同步脈沖產生方法DQCLKDQCLK同步脈沖產生方法DQDQ125時鐘設計的注意事項
有全局時鐘引腳如時鐘信號使用PLL(ALTERA)或者DLL(XILINX)進行分頻/倍頻、移相輸出,控制內部的全局時鐘網絡使用圖示:問題:在原理圖和VHDL2種設計中如何遵循以上原則?時鐘設計的注意事項
有全局時鐘引腳如時鐘信號126Cyclone的PLL結構Cyclone的PLL結構127QuartusII的altpllmegafunction.QuartusII的altpllmegafunctio128狀態機設計的一般原則CPLD使用Gray狀態碼,FPGA使用one-hot編碼使用2進程狀態機必須有初態處理多狀態相同操作的邏輯復用狀態機設計的一般原則CPLD使用Gray狀態碼,FPGA使用129全局異步復位資源使用專用的全局復位引腳對芯片進行復位操作全局異步復位資源使用專用的全局復位引腳對芯片進行復位操作130三態信號的設計
只能在頂層模塊使用:三態設計雙向端口三態信號的設計
只能在頂層模塊使用:131面積優化
為何要進行面積優化?采用規模更小的芯片,降低成本占用資源越少,電路性能越好保留資源用于系統升級設計降低功耗常用的3種面積優化方法資源共享邏輯優化串行化面積優化
為何要進行面積優化?132資源共享:乘法器共享舉例X代碼詳見代碼詳見資源共享:乘法器共享舉例X代碼詳見代碼詳見133……..ENTITYmultmuxIS PORT( A0, B0, B:IN STD_LOGIC_VECTOR(3DOWNTO0); sel :IN STD_LOGIC; result :OUTSTD_LOGIC_VECTOR(7DOWNTO0) );ENDENTITYmultmux;ARCHITECTUREbhvOFmultmuxISBEGIN PROCESS(A0,A1,B,sel) BEGIN IFsel='0'THEN
result<=A0*B;
ELSE result<=A1*B;
ENDIF; ENDPROCESS;ENDARCHITECTUREbhv;優化前:代碼詳見P311_ex10_1_multmux……..優化前:代碼詳見134面積優化
之
資源共享代碼面積優化
之
資源共享代碼135FlowSummary1(16位寬度)FlowStatus ;Successful-ThuApr2711:07:032006;QuartusIIVersion ;5.0Build14804/26/2005SJWebEdition;RevisionName ;p312_ex10_1Top-levelEntityName ;multmuxFamily ;CycloneDevice ;EP1C3T144C6TimingModels ;FinalMettimingrequirements ;YesTotallogicelements ;528/2,910(18%)
Totalpins ;81/104(77%)Totalvirtualpins ;0Totalmemorybits ;0/59,904(0%)TotalPLLs ;0/1(0%)比較:FlowSummary2FlowSummary1(16位寬度)FlowS136………ENTITYmultmuxIS PORT( A0, B0, B:IN STD_LOGIC_VECTOR(3DOWNTO0); sel :IN STD_LOGIC; result :OUTSTD_LOGIC_VECTOR(7DOWNTO0) );ENDENTITYmultmux;ARCHITECTUREbhvOFmultmuxISSIGNALtemp :STD_LOGIC_VECTOR(7DOWNTO0);BEGIN PROCESS(A0,A1,B,sel) BEGIN
IFsel='0'THEN temp <= A0; ELSE temp <= A1; ENDIF; result<=temp*B;
ENDPROCESS;ENDARCHITECTUREbhv;優化后:
少用一個乘法器詳見P311_ex10_2_multmux優化后:
少用一個乘法器詳見137共享一個乘法器共享一個乘法器138FlowSummary2(16位寬度)FlowStatus ;Successful-ThuApr2711:07:032006;QuartusIIVersion ;5.0Build14804/26/2005SJWebEdition;RevisionName ;p312_ex10_2Top-levelEntityName ;multmuxFamily ;CycloneDevice ;EP1C3T144C6比較TimingModels ;FinalMettimingrequirements ;YesTotallogicelements ;528/2,910(18%)
Totalpins ;81/104(77%)Totalvirtualpins ;0Totalmemorybits ;0/59,904(0%)TotalPLLs ;0/1(0%)比較:FlowSummary1FlowSummary2(16位寬度)FlowSt139資源共享之反例Why?資源共享之反例Why?140資源共享的適用范圍需要共享的模塊特征占用資源較多被多處使用設計邏輯中可以分時使用該模塊資源共享的適用范圍需要共享的模塊特征141邏輯優化:目的,途徑修改
VHDL代碼結構來達到邏輯優化的目的良好的VHDL代碼可以
大大降低占用資源邏輯優化:目的,途徑修改142ENTITYmult1IS PORT( clk :IN STD_LOGIC; ma :IN STD_LOGIC_VECTOR(11DOWNTO0); mc :OUT STD_LOGIC_VECTOR(23DOWNTO0) );ENDENTITYmult1;ARCHITECTURErt1OFmult1IS SIGNALta,tb :STD_LOGIC_VECTOR(11 DOWNTO0);BEGIN PROCESS(clk) BEGIN
IF(clk'EVENTANDclk='1')THEN ta <= ma; tb <= "100110111001"; mc <= ta*tb; ENDIF; ENDPROCESS;ENDARCHITECTURErt1;邏輯優化:
代碼1(乘法器)詳見P313_ex10_3_mult1邏輯優化:
代碼1(乘法器)詳見143邏輯優化:
代碼2(乘法器)之
資源占用邏輯優化:
代碼2(乘法器)之
資源占用144ENTITYmult1IS PORT( clk :IN STD_LOGIC; ma :IN STD_LOGIC_VECTOR(11DOWNTO0); mc :OUT STD_LOGIC_VECTOR(23DOWNTO0) );ENDENTITYmult2;ARCHITECTURErt1OFmult1ISSIGNALta :STD_LOGIC_VECTOR(11 DOWNTO0);CONSTANTtb :STD_LOGIC_VECTOR(11 DOWNTO0) :="100110111001";BEGIN PROCESS(clk) BEGIN
IF(clk'EVENTANDclk='1')THEN ta <= ma; mc <= ta*tb; ENDIF; ENDPROCESS;ENDARCHITECTURErt1;邏輯優化:
代碼2(乘法器)詳見P314_ex10_4_mult2邏輯優化:
代碼2(乘法器)詳見145邏輯優化:
代碼2(乘法器)之資源占用邏輯優化:
代碼2(乘法器)之資源占用146串行化串行化就是我們前面所介紹的串并轉換中的
并->串轉換時間上復用某個占用很多資源的模塊例如:16位并行乘加器&16位串行乘加器串行化串行化147ENTITYmult1IS PORT( clk :IN STD_LOGIC; a0,a1,a2,a3 :IN STD_LOGIC_VECTOR(7DOWNTO0); b0,b1,b2,b3 :IN STD_LOGIC_VECTOR(7DOWNTO0); yout :OUT STD_LOGIC_VECTOR(15DOWNTO0) );ENDENTITYmult1;ARCHITECTURErt1OFmult1ISBEGIN PROCESS(clk) BEGIN
IF(clk'EVENTANDclk='1')THEN youy<=((a0*b0)+(a1*b1))+((a3*b3)+(a4*b4)); ENDIF; ENDPROCESS;ENDARCHITECTURErt1;并行乘加器:代碼ENTITYmult1IS并行乘加器:代碼148并行乘加器:圖并行乘加器:圖149------------------------------------------------------------------+FlowSummary;-----------------------+------------------------------------------+FlowStatus ;Successful-SatApr2917:21:212006QuartusIIVersion;4.1Build18106/29/2004SJFullVersion;RevisionName ;pmultaddTop-levelEntityName ;pmultaddFamily
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 大班幼兒在數學閱讀健康情感社交五大領域的發展策略
- 2024年中考押題預測卷02(天津卷)-歷史(考試版)A3
- 【高中語文】學校高三三模語文試題
- 2024-2025學年下學期高一生物滬科版期末必刷常考題之基因突變是生物變異的根本來源
- 點、直線和平面的投影
- 2024-2025學年浙江省杭州市部分重點中學高二下學期開學檢測語文試題(解析版)
- 2025年秋三年級上冊語文同步教案 口語交際:身邊的“小事”
- 學校德育工作心得體會
- 高一升高二(英語)
- 治療室換藥室消毒管理制度講課件
- 信息化項目網絡設備、網絡安全設備、服務器和存儲系統集成項目培訓方案
- 漢語語法教學-是……的
- 2009-2022歷年河北省公安廳高速交警總隊招聘考試真題含答案2022-2023上岸必備帶詳解版4
- 無犯罪記錄無吸毒史證明模板
- 六年級信息技術下冊《走進人工智能》優質課獲獎課件
- 第18課 現代設計與現代媒體-高中美術魯美版美術鑒賞
- 國際商務畢業論文范文
- 勞動法課件(完整版)
- GB∕T 37456-2019 海洋平臺電驅動齒輪齒條升降裝置
- 營運車輛智能視頻監控系統管理制度范本及動態監控管理制度
- DB34∕T 3587-2020 城鎮排水管道檢測與修復技術規程
評論
0/150
提交評論