目錄/contents
● 速度-面積互換原則概述
● 設(shè)計(jì)思想1:乒乓操作
● 設(shè)計(jì)思想2:串/并轉(zhuǎn)換
● 設(shè)計(jì)思想3:流水線設(shè)計(jì)
● 設(shè)計(jì)思想4:邏輯復(fù)制與模塊復(fù)用
01速度-面積互換原則概述
速度-面積互換原則是貫穿FPGA設(shè)計(jì)的重要原則:速度是指工程穩(wěn)定運(yùn)行所能達(dá)到的最高時(shí)鐘頻率,通常決定了FPGA內(nèi)部寄存器的運(yùn)行時(shí)序;面積是指工程運(yùn)行所消耗的資源數(shù)量,通常包括觸發(fā)器(Flip-Flop)和查找表(Look Up Table)等資源。在FPGA設(shè)計(jì)過(guò)程中,速度的提高通常以面積擴(kuò)增為代價(jià),面積的縮減通常以速度的降低為代價(jià)。如何權(quán)衡二者的性能要求,在滿足時(shí)序(速度)要求的前提下盡可能節(jié)約邏輯資源(面積),是FPGA設(shè)計(jì)過(guò)程中需要考慮的重點(diǎn)。
例如,工程中占用一定的邏輯資源可以實(shí)現(xiàn)50Mbps的數(shù)據(jù)吞吐量,采用三倍的資源實(shí)現(xiàn)相應(yīng)的功能,通過(guò)并行處理則可以實(shí)現(xiàn)150Mbps的數(shù)據(jù)吞吐量,從而實(shí)現(xiàn)用面積換速度的操作。
速度-面積互換原則的常用設(shè)計(jì)思想包括:乒乓操作、串/并轉(zhuǎn)換、流水線設(shè)計(jì)、邏輯復(fù)制與模塊復(fù)用。
02設(shè)計(jì)思想1:乒乓操作
乒乓操作是一種常用的犧牲面積換取速度設(shè)計(jì)思想,常用于圖像數(shù)據(jù)傳輸?shù)葦?shù)據(jù)量較大且實(shí)時(shí)性要求較高的場(chǎng)景。乒乓操作的具體流程為:分配輸入數(shù)據(jù)進(jìn)入多路緩存,常用緩存模塊包括RAM、FIFO等,隨后依次從多路緩存中輸出數(shù)據(jù),從而保證數(shù)據(jù)高速傳輸?shù)倪B續(xù)性。
以上述圖中所示模塊為例:在第一個(gè)周期,輸入數(shù)據(jù)流Data in通過(guò)DEMUX分配緩存在BUFFER1模塊中;在第二個(gè)周期,輸入數(shù)據(jù)流Data in通過(guò)DEMUX分配緩存在BUFFER2模塊中,同時(shí),MUX將BUFFER1模塊中的緩存數(shù)據(jù)輸出到后續(xù)處理模塊;在第三個(gè)周期,輸入數(shù)據(jù)流Data in再次通過(guò)DEMUX分配緩存在BUFFER1模塊中,同時(shí),MUX將BUFFER2模塊中的緩存數(shù)據(jù)輸出到后續(xù)處理模塊...如此反復(fù)循環(huán)切換,通過(guò)乒乓操作完成數(shù)據(jù)的緩沖與傳輸,保證數(shù)據(jù)流無(wú)停頓地持續(xù)傳輸。
乒乓操作經(jīng)常應(yīng)用于外部接口傳輸以圖像數(shù)據(jù)為代表的按幀劃分的數(shù)據(jù)。在圖像數(shù)據(jù)傳輸過(guò)程中,當(dāng)前幀存入緩存BUFFER1的同時(shí),顯示器用于顯示BUFFER2的圖像數(shù)據(jù)幀;下一幀存入BUFFER2的同時(shí),顯示器用于顯示BUFFER1的圖像數(shù)據(jù)幀。乒乓操作保證顯示器瞬間完成圖像的切換,提高圖像數(shù)據(jù)傳輸?shù)男屎头€(wěn)定性,特別是在通信環(huán)境較差的情況下。
03設(shè)計(jì)思想2:串/并轉(zhuǎn)換
串/并轉(zhuǎn)換是體現(xiàn)速度-面積互換思想的另一種設(shè)計(jì)方案,在高速數(shù)據(jù)流處理中發(fā)揮重要的作用。串/并轉(zhuǎn)換通常將數(shù)據(jù)分成多個(gè)較小的數(shù)據(jù)塊,這些數(shù)據(jù)塊可以同時(shí)并行傳輸,從而提高數(shù)據(jù)的傳輸速率。
串/并轉(zhuǎn)換的實(shí)現(xiàn)方法多種多樣,根據(jù)數(shù)據(jù)數(shù)量的不同,可以選用寄存器、RAM、FIFO等實(shí)現(xiàn)。對(duì)于數(shù)量較小的設(shè)計(jì)通??梢圆捎靡莆患拇嫫鲗?shí)現(xiàn)。
以上述圖中所示模塊為例:串行輸入數(shù)據(jù)data in通過(guò)n個(gè)移位寄存器后,通過(guò)位寬為n的并行總線輸出數(shù)據(jù)data out。移位過(guò)程通常依賴于時(shí)鐘進(jìn)行同步,因此,完成一個(gè)周期的n位串/并轉(zhuǎn)換需要消耗n個(gè)串行時(shí)鐘周期。例如,串行傳輸時(shí)鐘頻率為100MHz,若將串行數(shù)據(jù)轉(zhuǎn)為4bit并行數(shù)據(jù)輸出,并行傳輸?shù)臅r(shí)鐘頻率將降低至25MHz,這是串入并出的基本設(shè)計(jì)思想。
串/并轉(zhuǎn)換通過(guò)犧牲面積換取數(shù)據(jù)帶寬,提高數(shù)據(jù)傳輸?shù)耐掏铝浚瑥囊欢ǔ潭壬咸岣吡藬?shù)據(jù)的傳輸速率,同樣體現(xiàn)出速度-面積互換思想。
04設(shè)計(jì)思想3:流水線設(shè)計(jì)
流水線設(shè)計(jì)通過(guò)處理模塊復(fù)制的方法提高數(shù)據(jù)流的處理速度,在高速信號(hào)處理領(lǐng)域發(fā)揮著重要作用。流水線設(shè)計(jì)主要應(yīng)用于單向數(shù)據(jù)處理過(guò)程,即前一個(gè)模塊的輸出可以直接作為下一個(gè)模塊的輸入,運(yùn)算處理不涉及反饋和迭代,那么可以考慮采用流水線設(shè)計(jì)方法提高系統(tǒng)的工作頻率。
以上述圖中所示模塊為例,當(dāng)原設(shè)計(jì)在一個(gè)時(shí)鐘周期內(nèi)實(shí)現(xiàn)一個(gè)較大的組合邏輯時(shí),通過(guò)切割可以將較大的組合邏輯分解為多個(gè)較小的組合邏輯,分割后的組合邏輯需要在多個(gè)時(shí)鐘周期內(nèi)完成。盡管分割后的設(shè)計(jì)需要更多的時(shí)鐘周期,但是這部分邏輯運(yùn)行的時(shí)鐘周期會(huì)有明顯的提升,系統(tǒng)時(shí)鐘頻率提升后的耗時(shí)總體上優(yōu)于提升前的單周期耗時(shí),同時(shí)保證系統(tǒng)時(shí)序更加穩(wěn)定可靠,尤其在當(dāng)前組合邏輯所涉及的路徑是一條關(guān)鍵路徑時(shí),采用流水線設(shè)計(jì)后,整個(gè)系統(tǒng)的性能將得到極大提升。
例如,當(dāng)一個(gè)流水線設(shè)計(jì)需要四個(gè)時(shí)鐘周期時(shí),輸入數(shù)據(jù)in1從第一個(gè)時(shí)鐘周期1clk開(kāi)始,直到第四個(gè)時(shí)鐘周期4clk才處理完,但是在前四個(gè)周期處理完成后,每個(gè)時(shí)鐘周期內(nèi)都會(huì)有處理完成的數(shù)據(jù)輸出。由此可見(jiàn),流水線設(shè)計(jì)僅在開(kāi)始時(shí)需要一定的處理時(shí)間,之后將不間斷地輸出數(shù)據(jù),從而極大提高處理速度。如果不采用流水線設(shè)計(jì)對(duì)四周期處理過(guò)程進(jìn)行分割,那么每個(gè)輸入數(shù)據(jù)的處理都將需要四個(gè)時(shí)鐘周期,而在耗費(fèi)更多時(shí)鐘周期的同時(shí),系統(tǒng)的時(shí)鐘頻率也受到極大限制,甚至出現(xiàn)時(shí)序紊亂的情況。
流水線設(shè)計(jì)犧牲面積換取時(shí)鐘頻率,從而提高數(shù)據(jù)的傳輸速率,這種設(shè)計(jì)思想在高速通信、高速信號(hào)采集、圖像處理等領(lǐng)域得到廣泛應(yīng)用。
05設(shè)計(jì)思想4:邏輯復(fù)制與模塊復(fù)用
邏輯復(fù)制通過(guò)犧牲面積改善時(shí)序條件,從而降低信號(hào)的路徑延時(shí),常應(yīng)用于信號(hào)扇出(fan out)的調(diào)整。如果某個(gè)信號(hào)的扇出很大,即需要驅(qū)動(dòng)的后記邏輯信號(hào)較多,為增強(qiáng)這個(gè)信號(hào)的驅(qū)動(dòng)能力,通常需要加入多級(jí)Buffer,這在一定程度上增加了信號(hào)的路徑演示。此時(shí)可以復(fù)制生成這個(gè)信號(hào)的邏輯,用多路同頻同相的信號(hào)驅(qū)動(dòng)后續(xù)電路,降低平均到每路的扇出,從而在滿足驅(qū)動(dòng)能力的同時(shí),避免多級(jí)Buffer造成的路徑延時(shí)。
模塊復(fù)用通過(guò)犧牲速率換取更低的資源占用面積,是邏輯復(fù)制的逆過(guò)程,可以極大降低硬件資源消耗。
下面通過(guò)兩段代碼設(shè)計(jì)闡釋上述概念:
Ex1:
input a,b,c,d;
input sel;
output dout;
assign dout = sel ? (a+b) : (c+d);
Ex2:
input a,b,c,d;
input sel;
output dout;
wire ac;
wire bd;
assign ac = sel ? a : c;
assign bd = sel ? b : d;
assign dout = ac + bd;
上述兩端代碼實(shí)現(xiàn)功能相同:Ex1綜合出的RTL視圖使用了兩個(gè)2選1數(shù)據(jù)選擇器和一個(gè)加法器;Ex2綜合出的RTL視圖使用了兩個(gè)加法器和一個(gè)2選1數(shù)據(jù)選擇器。Ex1占用更多的資源,但是處理速率更快;Ex2占用資源較少,但是處理速率較慢。
從一方面看,Ex1相對(duì)于Ex2是一種邏輯復(fù)制的過(guò)程,由于這個(gè)設(shè)計(jì)通過(guò)一個(gè)加法器就可以實(shí)現(xiàn),但是為了提高處理速度,所以對(duì)加法器進(jìn)行邏輯復(fù)制;從另一方面看,Ex2相對(duì)于Ex1是一種模塊復(fù)用的過(guò)程,通過(guò)復(fù)用加法器邏輯模塊,降低資源的消耗。
值得一提的是,當(dāng)前很多綜合工具都可以自動(dòng)設(shè)置最大扇出值。如果某個(gè)信號(hào)的扇出值大于最大扇出值,那么該信號(hào)將會(huì)自動(dòng)被綜合工具復(fù)制。
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1625文章
21623瀏覽量
601242 -
FPGA設(shè)計(jì)
+關(guān)注
關(guān)注
9文章
428瀏覽量
26465 -
寄存器
+關(guān)注
關(guān)注
31文章
5294瀏覽量
119817 -
流水線
+關(guān)注
關(guān)注
0文章
118瀏覽量
25578 -
RTL
+關(guān)注
關(guān)注
1文章
385瀏覽量
59665
原文標(biāo)題:FPGA速度-面積互換原則設(shè)計(jì)
文章出處:【微信號(hào):Carlinx FPGA,微信公眾號(hào):Carlinx FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論