版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、復(fù)雜數(shù)字系統(tǒng)設(shè)計的常用技巧提綱復(fù)雜數(shù)字系統(tǒng)設(shè)計的關(guān)鍵矛盾提高吞吐量的方法減小Latency的方法時序優(yōu)化方法面積優(yōu)化方法復(fù)雜數(shù)字系統(tǒng)設(shè)計的關(guān)鍵矛盾速度與面積在設(shè)計功能正確之后,需要處理的主要矛盾是速度與面積之間的矛盾。經(jīng)常遇到的問題:功能正確,設(shè)計時序不滿足要求;功能和時序滿足要求,占用SLICE資源太多;幾乎所有的設(shè)計技巧都是為了解決這一矛盾。速度的三重含義Throughput:吞吐量單位時間內(nèi)能處理的數(shù)據(jù)量常用單位有bit/s,符號/s等Latency:時延指的是從數(shù)據(jù)輸入到達(dá)至相應(yīng)數(shù)據(jù)輸出之間的時間。單位是微秒等。Timing:時序指的是時序單元之間的路徑所對應(yīng)的時延。通常說時序關(guān)系不滿
2、足一般指觸發(fā)器間關(guān)鍵路徑的最大時延超過目標(biāo)時鐘周期。標(biāo)準(zhǔn)度量是時鐘周期或頻率。解決速度與面積矛盾的基本原則向關(guān)鍵路徑要速度;對于關(guān)鍵路徑,可以采用犧牲面積換取速度的方式;向非關(guān)鍵路徑要面積。對于非關(guān)鍵路徑,通過各種方式換取面積。在速度的三個方面進(jìn)行折中:Latency換ThroughputTiming換ThroughputTiming換Latency等工具優(yōu)化與代碼優(yōu)化隨著EDA工具的逐步完善,許多優(yōu)化工作可以通過在工具中添加約束、設(shè)置優(yōu)化選項等方式來實現(xiàn)。但是在有的情況下,工具優(yōu)化不能完全滿足設(shè)計要求。例如:時序約束關(guān)系無法滿足。由于代碼風(fēng)格問題造成片內(nèi)一些資源不能有效利用等。代碼優(yōu)化在某些
3、條件下仍然必不可少。提綱復(fù)雜數(shù)字系統(tǒng)設(shè)計的關(guān)鍵矛盾提高吞吐量的方法減小Latency的方法時序優(yōu)化方法面積優(yōu)化方法提高吞吐量的方法流水線技術(shù)多路并行處理流水線技術(shù)流水線技術(shù)就是把本來只能在一個較長的時鐘周期內(nèi)執(zhí)行的操作(組合邏輯)分成幾步較小的操作,并在多個較高速的時鐘內(nèi)完成。這些步驟的劃分是通過多級寄存器來實現(xiàn)的。前級寄存器處理新輸入數(shù)據(jù)的同時,末級寄存器產(chǎn)生老輸入數(shù)據(jù)所對應(yīng)的輸出。流水線例子x的三次方“軟件”代碼:XPower = 1;for (i=0;i 3; i+)XPower = X * XPower;單核處理器,完全串行執(zhí)行,而且對一個內(nèi)存地址反復(fù)訪問!module power3(
4、XPower, finished,X, clk, start); output 7:0 XPower;output finished;input 7:0 X;input clk, start;reg 7:0 ncount;reg 7:0 XPower;assign finished = (ncount = 0);always(posedge clk)beginif(start) begin XPower = X; ncount = 2;endelse if(!finished) begin ncount = ncount - 1; XPower = XPower * X;endendendmo
5、dule與軟件類似的實現(xiàn)方式流水線例子上述實現(xiàn)方法的優(yōu)缺點:優(yōu)點:節(jié)省資源,只需要一個乘法器缺點:必須在前一運算結(jié)束之后才能開始新的運算需要握手信號Throughput = 8/3, or 2.7 bits/clockLatency = 3 clocksTiming =One multiplier delay in the critical path流水線例子不采用流水線結(jié)構(gòu)的綜合結(jié)果Cell usage:FD 1 useFDE 8 usesFDR 1 useGND 1 useMULT18X18 1 useLUT2 1 useLUT3 9 usesI/O primitives: 18IBUF
6、9 usesOBUF 9 usesBUFGP 1 use流水線例子module power3(XPower, clk,X);output 7:0 XPower;input clk;input 7:0 X;reg 7:0 XPower;reg 7:0 XPower1, XPower2;reg 7:0 X1, X2;always (posedge clk) begin/ Pipeline stage 1X1 = X;XPower1 = X;/ Pipeline stage 2X2 = X1;XPower2 = XPower1 * X1;/ Pipeline stage 3XPower = XPow
7、er2 * X2;endendmodulePower3的流水線實現(xiàn)方法Throughput = 8/1, or 8 bits/clockLatency=3 clocksTiming =One multiplier delayin the critical path流水線例子FD 16 usesGND 1 useMULT18X18S 2 usesVCC 1 useI/O primitives: 16IBUF 8 usesOBUF 8 usesBUFGP 1 use多路并行處理提高Throughput的另一種有效方法是將耗時較長的電路復(fù)制若干份,每份處理部分?jǐn)?shù)據(jù)。這種處理方法需要對輸入數(shù)據(jù)進(jìn)行分解
8、,對輸出數(shù)據(jù)進(jìn)行合并。主要用于減小Latency。提綱復(fù)雜數(shù)字系統(tǒng)設(shè)計的關(guān)鍵矛盾提高吞吐量的方法減小Latency的方法時序優(yōu)化方法面積優(yōu)化方法減小Latency的主要思想盡快將數(shù)據(jù)從輸入傳遞到輸出,減小中間過程處理時延。流水線技術(shù)不符合低Latency的要求經(jīng)常采用的方法:并行處理去掉流水線減小Latency的例子module power3_latency(XPower, clk,X);output 7:0 XPower;input clk;input 7:0 X;reg 7:0 XPower;reg 7:0 XPower1, XPower2;reg 7:0 X1, X2;always (p
9、osedge clk) XPower = XPower2 * X2;always * beginX1 = X;XPower1 = X;endalways * beginX2 = X1;XPower2 = XPower1*X1;endendmoduleThroughput = 8 bits/clock (assuming one new input per clock)Latency = 1 clockTiming = Two multiplier delays in the critical path減小Latency的例子減小Latency的代價打開pipeline,有可能會減小Trough
10、put會造成關(guān)鍵路徑時延增大同時保證Latency和Throughput的方法既要保證Throughput,又要保證較小的Latency,只能采取前述并行處理方法。提綱復(fù)雜數(shù)字系統(tǒng)設(shè)計的關(guān)鍵矛盾提高吞吐量的方法減小Latency的方法時序優(yōu)化方法面積優(yōu)化方法最高時鐘頻率相互聯(lián)系的任意兩個時序元素(通常是指寄存器)之間的最大時延將決定設(shè)計所能夠工作的最大時鐘頻率。改善時序性能的方法添加寄存器層關(guān)鍵路徑改造為并行結(jié)構(gòu)展平邏輯結(jié)構(gòu)寄存器配平減小扇出添加寄存器層改善時序的第一種策略是在關(guān)鍵路徑的中間添加中間寄存器層。主要應(yīng)用條件:本身就是流水線結(jié)構(gòu)增加時鐘Latency不能違背設(shè)計要求整個設(shè)計的功能不
11、受影響。添加寄存器層假設(shè)右側(cè)方式不能滿足時序設(shè)計要求如200MHzmodule fir(Y,A,B,C,X,clk, validsample);output 7:0 Y;input 7:0 A, B, C, X;input clk;input validsample;reg 7:0 X1, X2, Y;always (posedge clk)if(validsample) beginX1 = X;X2 = X1;Y = A* X+B* X1+C* X2;endendmodule所有乘加操作在一個時鐘周期內(nèi)完成,屬于一個關(guān)鍵路徑添加寄存器層添加寄存器層module fir(Y,A,B,C,X,c
12、lk, validsample);output 7:0 Y;input 7:0 A, B, C, X;input clk;input validsample;reg 7:0 X1, X2, Y;reg 7:0 prod1, prod2, prod3;always (posedge clk) beginif(validsample) beginX1 = X;X2 = X1;prod1 = A * X;prod2 = B * X1;prod3 = C * X2;endY = prod1 + prod2 + prod3;endendmodule將加法處理與乘法處理分開添加寄存器層關(guān)鍵路徑修改為并行結(jié)
13、構(gòu)在某些情況下關(guān)鍵路徑的時延過大是由于參與運算的數(shù)據(jù)比特數(shù)太多造成的,這種情況下往往可以將關(guān)鍵路徑修改為并行結(jié)構(gòu)。將多比特的數(shù)學(xué)運算分為多個運算的組合,這些組合是并行處理的。關(guān)鍵路徑修改為并行結(jié)構(gòu)并行乘法器當(dāng)FPGA內(nèi)的專用乘法器資源不足時,需要用CLB(SLICE)資源搭建高速乘法器。串行結(jié)構(gòu)乘法器逐比特運算速度很慢,可以改為并行結(jié)構(gòu)。關(guān)鍵路徑修改為并行結(jié)構(gòu)module mul_addtree(mul_a, mul_b, mul_out, clk, rst_n);parameter MUL_WIDTH = 4;parameter MUL_RESULT = 8;input MUL_WIDTH-
14、1 : 0 mul_a;input MUL_WIDTH-1 : 0 mul_b;input clk;input rst_n;output MUL_RESULT-1 : 0 mul_out;reg MUL_RESULT-1 : 0 mul_out;reg MUL_RESULT-1 : 0 stored0;reg MUL_RESULT-1 : 0 stored1;reg MUL_RESULT-1 : 0 stored2;reg MUL_RESULT-1 : 0 stored3;reg MUL_RESULT-1 : 0 add01;reg MUL_RESULT-1 : 0 add23;always
15、(posedge clk or negedge rst_n)beginif(!rst_n)begin /初始化寄存器變量mul_out = 8b0000_0000;stored0 = 8b0000_0000;stored1 = 8b0000_0000;stored2 = 8b0000_0000;stored3 = 8b0000_0000;add01 = 8b0000_0000;add23 = 8b0000_0000;endelse begin /實現(xiàn)移位相加stored3 = mul_b3?1b0,mul_a,3b0: 8b0;stored2 = mul_b2?2b0,mul_a,2b0: 8
16、b0;stored1 = mul_b1?3b0,mul_a,1b0: 8b0;stored0 = mul_b0?4b0,mul_a: 8b0;add01 = stored1 + stored0;add23 = stored3 + stored2;mul_out = add01 + add23;end end endmodule關(guān)鍵路徑修改為并行結(jié)構(gòu)展平邏輯結(jié)構(gòu)關(guān)鍵:在關(guān)鍵路徑部分盡量避免使用多優(yōu)先級結(jié)構(gòu)。通常,綜合與布局工具具有一定的智能性,能夠復(fù)制一些邏輯來減小扇出。但是它們不能打破代碼中以串行方式給出的邏輯結(jié)構(gòu),也無法判斷代碼中所體現(xiàn)出來的優(yōu)先級是不是必須的。展平邏輯結(jié)構(gòu)module re
17、gwrite(output reg 3:0 rout,input clk, in,input 3:0 ctrl);always (posedge clk)if(ctrl0) rout0 = in;else if(ctrl1) rout1 = in;else if(ctrl2) rout2 = in;else if(ctrl3) rout3 = in;endmodule具有優(yōu)先級的地址譯碼展平邏輯結(jié)構(gòu)module regwrite(output reg 3:0 rout,input clk, in,input 3:0 ctrl);always (posedge clk) beginif(ctrl
18、0) rout0 = in;if(ctrl1) rout1 = in;if(ctrl2) rout2 = in;if(ctrl3) rout3 = in;endendmodule寄存器配平原理:在寄存器之間重新分配邏輯,使得任意兩個寄存器之間的最大時延最小化。用于關(guān)鍵路徑與相鄰路徑之間時延嚴(yán)重不平衡的情況。由于時鐘頻率只是受最大時延路徑限制,因此可以通過較小的修改就有可能使關(guān)鍵路徑滿足時序要求。綜合工具本身有寄存器配平選項,這個選項的特征是找出一些特定的結(jié)構(gòu),按照事先確定的方式重新定位寄存器。寄存器配平綜合工具的寄存器配平功能是受目前EDA水平限制的,對于一些特有的功能塊綜合工具不可能完全辨識
19、出它們的邏輯關(guān)系。因此,有時需要在代碼中手工修改設(shè)計,進(jìn)行寄存器配平。寄存器配平module adder(output reg 7:0 Sum,input 7:0 A, B, C,input clk);reg 7:0 rA, rB, rC;always (posedge clk) beginrA = A;rB = B;rC = C;Sum = rA + rB + rC;endendmodule寄存器配平module adder(output reg 7:0 Sum,input 7:0 A, B, C,input clk);reg 7:0 rABSum, rC;always (posedge c
20、lk) beginrABSum = A + B;rC = C;Sum = rABSum + rC;endendmodule減小扇出提高關(guān)鍵路徑速度的一個常用方法是復(fù)制電路,減少關(guān)鍵路徑的扇出。當(dāng)一個信號網(wǎng)絡(luò)所帶負(fù)載增加時,其路徑延時也相應(yīng)增加。這對復(fù)位信號網(wǎng)絡(luò)可能影響不大,但對三態(tài)使能等信號是不能容忍的。扇出對關(guān)鍵路徑延時的影響甚至超過了邏輯的級延時。確保一個網(wǎng)絡(luò)的扇出少于一定值。減小扇出大部分情況下綜合工具可以自動完成這個工作。部分情況下,當(dāng)最后的靜態(tài)時序分析不滿足時需要手工復(fù)制電路,減小扇出。提綱復(fù)雜數(shù)字系統(tǒng)設(shè)計的關(guān)鍵矛盾提高吞吐量的方法減小Latency的方法時序優(yōu)化方法面積優(yōu)化方法面積
21、優(yōu)化方法資源共享合理使用復(fù)位信號資源共享基于if語句的資源共享if (siz = 4b0001).)count = count + 4b0001;else if (siz = 4b0010)count = count + 4b0010;else if (siz = 4b0011)count = count + 4b0011;else if (siz = 4b0000)count=count + 4b0100;if (siz = 4b0000)count = count + 0100;else if (.) count = count + siz;資源共享if (select)sum=A +B;
22、elsesum=C +D;if (sel =1)begin temp1 =A;temp2 =B;endelse begintemp1 =C;temp2 =D;endsum = temp1 + temp2;資源共享子表達(dá)式共享一個表達(dá)式中子表達(dá)式包含2個或更多的變量,如果相同的子表達(dá)式在多個等式中出現(xiàn),應(yīng)共享這些運算減少電路的面積。通過聲明一個臨時變量存儲子表達(dá)式然后在任何需要重復(fù)使用這個子表達(dá)式的地方用臨時變量代替。temp = a + b;x = temp;y = temp + c;資源共享綜合工具與資源共享綜合工具都有資源共享選項,但是只有滿足某些條件的情況下綜合工具才能夠認(rèn)出可共享資源。
23、為了保證可移植性,盡可能在代碼中體現(xiàn)出資源共享。資源共享資源共享與乒乓操作“乒乓操作”是一個常常應(yīng)用于數(shù)據(jù)流控制的處理技巧。資源共享與乒乓操作乒乓操作的處理流程為:輸入數(shù)據(jù)流通過“輸入數(shù)據(jù)選擇單元”將數(shù)據(jù)流等時分配到兩個(或以上)數(shù)據(jù)緩沖區(qū)。數(shù)據(jù)緩沖模塊可以為任何存儲模塊,比較常用的存儲單元為雙口RAM(DPRAM)、單口RAM(SPRAM)、FIFO等。在第一個緩沖周期,將輸入的數(shù)據(jù)流緩存到“數(shù)據(jù)緩沖模塊1”;在第2個緩沖周期,通過“輸入數(shù)據(jù)選擇單元”的切換,將輸入的數(shù)據(jù)流緩存到“數(shù)據(jù)緩沖模塊2”,同時將“數(shù)據(jù)緩沖模塊1”緩存的第1個周期數(shù)據(jù)通過“輸入數(shù)據(jù)選擇單元”的選擇,送到“數(shù)據(jù)流運算處理模塊”進(jìn)行運算處理;在第3個緩沖周期通過“輸入數(shù)據(jù)選擇單元”的再次切換,將輸入的數(shù)據(jù)流緩存到“數(shù)據(jù)緩沖模塊1”,同時將“數(shù)據(jù)
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度辦公用品及辦公設(shè)備租賃一體化服務(wù)合同
- 二零二五年度養(yǎng)老社區(qū)入住與緊急救援協(xié)議3篇
- 2025年度養(yǎng)豬場養(yǎng)殖廢棄物處理設(shè)施建設(shè)合同3篇
- 2025年度農(nóng)村房屋買賣合同及土地承包權(quán)轉(zhuǎn)讓與配套設(shè)施租賃及物業(yè)管理合同
- 2025年度農(nóng)副產(chǎn)品線上與線下銷售融合合作協(xié)議3篇
- 二零二五年度?;饭坟浳镞\輸安全管理合同3篇
- 二零二五年度公司經(jīng)理戰(zhàn)略合作伙伴關(guān)系聘用協(xié)議3篇
- 二零二五年度美發(fā)行業(yè)美容美發(fā)行業(yè)投資合作協(xié)議書3篇
- 2025年度農(nóng)村自建房合同協(xié)議書(含節(jié)能環(huán)保建筑材料)
- 二零二五年度農(nóng)村房屋置換項目合作框架協(xié)議
- 數(shù)據(jù)分析基礎(chǔ)與應(yīng)用指南
- 人教版(PEP)小學(xué)六年級英語上冊全冊教案
- 廣東省廣州市海珠區(qū)2023-2024學(xué)年六年級上學(xué)期月考英語試卷
- 消防水域救援個人防護(hù)裝備試驗 大綱
- 機(jī)電樣板施工主要技術(shù)方案
- 涉稅風(fēng)險管理方案
- 青島市2022-2023學(xué)年七年級上學(xué)期期末道德與法治試題
- 高空作業(yè)安全免責(zé)協(xié)議書范本
- 石油化學(xué)智慧樹知到期末考試答案章節(jié)答案2024年中國石油大學(xué)(華東)
- 手術(shù)后如何防止排尿困難
- 特種設(shè)備“日管控、周排查、月調(diào)度”表格
評論
0/150
提交評論