1.?前言
在工程師實際開發(fā)過程中,可能會經(jīng)常遇到這樣的需求:數(shù)據(jù)從數(shù)據(jù)源端不斷地持續(xù)輸入FPGA,F(xiàn)PGA需要對數(shù)據(jù)進行處理,最后將處理好的數(shù)據(jù)輸出至客戶端。
在數(shù)據(jù)處理過程中,可能需要一系列的處理步驟。比如常規(guī)的信號進行處理步驟有(這里的處理步驟只是舉個例子):信號解調(diào)、濾波、傅里葉變換。
假如數(shù)據(jù)源每10ns輸入一個數(shù)據(jù),一個采用數(shù)據(jù)經(jīng)過信號解調(diào)需要10ns,完成濾波需20ns,傅里葉變換需要30ns。我們該如何用verilog語言設(shè)計硬件電路使得數(shù)據(jù)處理效率高效?
2.?面臨問題
FPGA一個較大的優(yōu)勢是其并行處理機制,即利用并行架構(gòu)實現(xiàn)信號/數(shù)據(jù)處理的功能。
大家首先想到的方法就是復(fù)制多份數(shù)據(jù)處理電路,如下圖所示:
將數(shù)據(jù)處理電路復(fù)制6份,這樣即便每路數(shù)據(jù)處理需要60ns,也能保證整個由6路處理鏈路組成的數(shù)據(jù)模塊能處理每10ns輸出一個數(shù)據(jù)的數(shù)據(jù)源。
這種解決方案的確利用了FPGA獨特的優(yōu)勢,但面臨的問題是顯而易見的,它需要消耗大量的硬件資源。比如當(dāng)處理算法較復(fù)雜時,一條處理鏈路可能就用掉了FPGA相應(yīng)60%的資源,這樣除非換更大容量的FPGA,否則在當(dāng)前FPGA上即使復(fù)制兩遍處理鏈路的電路都是不支持的。
此外,我們深入分析會發(fā)現(xiàn),電路雖然被復(fù)制了6份,但在同一時刻電路被使用率是很低的。假設(shè)輸入一個數(shù)據(jù)時刻為0ns,則在第50ns時,真正處于工作狀態(tài)的電路如下圖所示(黃色標(biāo)的區(qū)域):
可見同一時刻,工作的電路比例很低,其它白色的電路模塊都是閑置的未工作的電路。
3. Pipeline解決方案
所謂流水線(pipeline)處理,如同生產(chǎn)裝配線一樣,將操作執(zhí)行工作量分成若干個時間上均衡的操作段,從流水線的起點連續(xù)地輸入,流水線的各操作段以重疊方式執(zhí)行。
這使得操作執(zhí)行速度只與流水線輸入的速度有關(guān),而與處理所需的時間無關(guān)。這樣,在理想的流水操作狀態(tài)下,其運行效率很高。
比如仍然以上面信號處理例子為例,我們不需要去復(fù)制6份同樣的電路,而是去優(yōu)化我們單條信號處理電路。利用pipeline的設(shè)計理念,我們需要把處理時間大于10ns的電路模塊拆分成多個小于等于10ns的子電路(操作信號處理工作量分成若干個時間上均衡的處理段),并且每個子電路的輸入是前一級子電路的輸出,每一級子電路都能鎖存當(dāng)前時鐘周期的輸出結(jié)果。改造后的電路如下圖所示:
對于一個輸入數(shù)據(jù)的樣本來說,數(shù)據(jù)是串行被處理的,但對于多個輸入數(shù)據(jù)來說,各個處理階段是并行執(zhí)行的,所以數(shù)據(jù)處理從整體上看是并行執(zhí)行的,由于是并行執(zhí)行,所以能夠充分利用FPGA資源。
需要注意的是,在工作時鐘頻率一定的情況下,pipeline的設(shè)計思路并不會提高對單個數(shù)據(jù)的處理速度,但該設(shè)計方式可以極大提高數(shù)據(jù)的吞吐率。同時由于pipeline的設(shè)計方式降低了FPGA寄存器間的傳播延時,反而又使得設(shè)計出來的電路能以更高的系統(tǒng)時鐘進行工作,某種程度上又會提高FPGA系統(tǒng)的工作速度獲取更快的計算處理速率。
由于網(wǎng)上pipeline示例代碼資源很多,本文就不提供pipeline的示例代碼了。
4.?小結(jié)
利用pipeline的設(shè)計方法,可以提高FPGA系統(tǒng)的工作速度。這種方法可廣泛運用于各種設(shè)計,特別是大型的、對速度要求較高的系統(tǒng)設(shè)計。雖然有時候采用流水線反而會增大對資源的使用,但是它可降低寄存器間的傳播延時,保證系統(tǒng)維持高的系統(tǒng)時鐘速度。文章來源:http://www.zghlxwxcb.cn/news/detail-803149.html
在實際應(yīng)用中,考慮到資源的使用和速度的要求,可以根據(jù)實際情況來選擇流水線的級數(shù)以滿足設(shè)計需要。文章來源地址http://www.zghlxwxcb.cn/news/detail-803149.html
到了這里,關(guān)于南京觀海微電子----Verilog流水線設(shè)計——Pipeline的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!