利用AutoESL高級(jí)綜合工具可實(shí)現(xiàn)在 Xilinx Virtex-5器件中構(gòu)建復(fù)雜的寬帶無(wú)線系統(tǒng)接收器。
空分復(fù)用MIMO處理技術(shù)可顯著提高無(wú)線通信系統(tǒng)的頻譜效率,進(jìn)而大幅增加無(wú)線通信系統(tǒng)的容量。正因如此,它已成為新一代WiMAX以及其它基于OFDM無(wú)線通信系統(tǒng)的核心組成部分。空分復(fù)用MIMO處理技術(shù)是一項(xiàng)計(jì)算密集型應(yīng)用,可實(shí)現(xiàn)高要求的信號(hào)處理算法。
在MIMO系統(tǒng)中,空分復(fù)用技術(shù)的一個(gè)具體實(shí)例是球形解碼。球形解碼是一種解決MIMO檢測(cè)問(wèn)題的有效方法,其在比特誤碼率 (BER) 性能方面能與最佳的最大似然檢測(cè)算法相媲美。但是,DSP處理器的計(jì)算能力有限,不足以滿足球形解碼實(shí)時(shí)性方面的要求。
現(xiàn)場(chǎng)可編程門陣列 (FPGA) 是一個(gè)極具吸引力的平臺(tái),可實(shí)現(xiàn)如球形解碼器這樣的復(fù)雜DSP密集型算法。現(xiàn)代FPGA 是一種高性能并行計(jì)算平臺(tái),可在保持可編程DSP處理器靈活性的同時(shí),為系統(tǒng)提供所需的專用硬件。多項(xiàng)研究表明在多個(gè)信號(hào)處理應(yīng)用中,F(xiàn)PGA的性能比傳統(tǒng) DSP 處理器高100倍,性價(jià)比可提高30倍。
盡管FPGA的性能具有相當(dāng)大的優(yōu)勢(shì),但通常無(wú)法應(yīng)用于無(wú)線信號(hào)處理,主要因?yàn)閭鹘y(tǒng)的DSP程序員認(rèn)為它們不容易處理。事實(shí)上,造成FPGA無(wú)法在無(wú)線應(yīng)用中得到廣泛使用的真正阻礙是以硬件為中心的傳統(tǒng)設(shè)計(jì)流程與工具。
目前,要想利用FPGA來(lái)進(jìn)行設(shè)計(jì),需要具備豐富的硬件設(shè)計(jì)經(jīng)驗(yàn),包括熟悉VHDL與Verilog等硬件描述語(yǔ)言。最近,新型高級(jí)綜合工具可以作為FPGA的輔助設(shè)計(jì)工具。這些設(shè)計(jì)工具將高級(jí)算法描述作為輸入,并生成可與標(biāo)準(zhǔn)FPGA實(shí)現(xiàn)工具(例如 Xilinx? ISE?design suite 與嵌入式開(kāi)發(fā)套件)一起使用的RTL。該工具可提高設(shè)計(jì)效率,縮短開(kāi)發(fā)時(shí)間,同時(shí)實(shí)現(xiàn)高質(zhì)量的設(shè)計(jì)。
我們可利用該工具設(shè)計(jì)基于 FPGA 的復(fù)雜無(wú)線算法應(yīng)用,即802.16e系統(tǒng)下的空分復(fù)用MIMO球形檢測(cè)器。我們專門選擇AutoESL的AutoPilot高級(jí)綜合工具作為時(shí)鐘頻率為225MHz的Xilinx Virtex?-5的輔助設(shè)計(jì)工具。
球形解碼
球形檢測(cè)作為解碼過(guò)程的一部分,是一種用于簡(jiǎn)化空分復(fù)用系統(tǒng)檢測(cè)復(fù)雜程度的有效方法,在 BER 性能方面可與復(fù)雜度更高的最佳最大似然 (ML) 檢測(cè)算法相媲美。
如圖1所示,在MIMO 802.16e無(wú)線接收器的方框圖中,我們假設(shè)接收器可以準(zhǔn)確估計(jì)信道矩陣,該假設(shè)條件可通過(guò)傳統(tǒng)的信道估算方法來(lái)實(shí)現(xiàn)。該實(shí)現(xiàn)的流水線具有 3 個(gè)構(gòu)建模塊:信道重新排序、QR分解以及球形檢測(cè)器 (SD)。我們通過(guò)計(jì)算檢測(cè)到的比特對(duì)數(shù)似然比(LLR) 來(lái)產(chǎn)生軟輸出,從而為軟輸入、軟輸出信道解碼器(比如渦輪解碼器)的
使用做準(zhǔn)備。
圖 1 球形解碼器方框圖
信道矩陣重排序
球形檢測(cè)器處理天線的順序可對(duì)BER的性能產(chǎn)生較大影響。在進(jìn)行球形檢測(cè)之前,首先執(zhí)行信道重排序。檢測(cè)器利用信道矩陣預(yù)處理器實(shí)現(xiàn)了類似貝爾實(shí)驗(yàn)室分層空時(shí) (BLAST) 結(jié)構(gòu)上采用的連續(xù)干擾抵消處理技術(shù),最終達(dá)到了接近ML性能。
該方法利用信道重排序處理來(lái)實(shí)現(xiàn),通過(guò)多次迭代確定復(fù)雜信道矩陣最佳列檢測(cè)次序。該算法根據(jù)迭代次數(shù)來(lái)選擇范數(shù)最大或最小的行。歐幾里德范數(shù)最小的行表示天線影響最強(qiáng),而歐幾里德范數(shù)最大的行表示天線影響最弱。這種新穎的方案首先處理最弱的數(shù)據(jù)流,隨后依次迭代處理功率從高到低的數(shù)據(jù)流。
為了滿足應(yīng)用對(duì)高數(shù)據(jù)速率的要求,我們實(shí)現(xiàn)了圖2所示的基于流水線架構(gòu)的信道排序模塊。該模塊可以在時(shí)分復(fù)用 (TDM) 模式下同時(shí)處理5條信道。這種方案延長(zhǎng)了同一信道不同矩陣元素之間的處理時(shí)間,同時(shí)可保持高數(shù)據(jù)吞吐量。
在圖2中,G矩陣計(jì)算是要求最高的組成部分。該過(guò)程的核心是矩陣求逆,可通過(guò)QR分解 (QRD) 來(lái)實(shí)現(xiàn)。實(shí)現(xiàn)QRD的常用方法是使用吉文斯旋轉(zhuǎn)。
圖 2 迭代信道矩陣重排序算法
該方法可執(zhí)行對(duì)角線單元和非對(duì)角線單元的復(fù)雜旋轉(zhuǎn),這些單元都是我們所使用脈動(dòng)陣列的基本計(jì)算單元。改進(jìn)的實(shí)數(shù)矩陣QRD在獲取信道矩陣列的最佳排序之后,下一步應(yīng)對(duì)實(shí)數(shù)矩陣系數(shù)進(jìn)行QR分解。用于該QRD處理的功能單元與計(jì)算逆矩陣的QRD引擎類似,但有一些不同之處。本例子的輸入數(shù)據(jù)是實(shí)數(shù),因此脈動(dòng)陣列結(jié)構(gòu)的維數(shù)會(huì)相應(yīng)更高(即8×8實(shí)數(shù)值而不是4×4復(fù)數(shù)值)。
為了滿足時(shí)序約束的要求,輸入數(shù)據(jù)消耗速率必須保持在每時(shí)鐘周期1個(gè)輸入采樣。這種要求給處理時(shí)延帶來(lái)了挑戰(zhàn),即我們無(wú)法在5條信道的TDM結(jié)構(gòu)中處理該問(wèn)題。因此,在TDM組中將信道數(shù)量增加至 15 條,以延長(zhǎng)同一信道矩陣中連續(xù)元素之間的處理時(shí)間。
球形檢測(cè)器設(shè)計(jì)
您可以將迭代球形檢測(cè)算法視為遍歷樹(shù)過(guò)程,樹(shù) i 的每一層對(duì)應(yīng)于第 i 個(gè)天線的處理符號(hào)。實(shí)現(xiàn)遍歷樹(shù)有幾種可選方法。我們選擇的是廣度優(yōu)先搜索法,因?yàn)樵摲桨妇哂袀涫軞g迎的硬件友好特征。在每一層,只選擇具有最小部分歐氏距離的K節(jié)點(diǎn)來(lái)計(jì)算擴(kuò)展情況。這類檢測(cè)器稱為 K-best 檢測(cè)器。范數(shù)計(jì)算是在球形檢測(cè)器的部分歐氏距離 (PED) 模塊中完成的。根據(jù)樹(shù)的層次,我們可以利用3種不同的PED模塊。根節(jié)點(diǎn)PED模塊計(jì)算所有可能的PED(樹(shù)層次指數(shù)是 i = M = 8)。
第二層PED模塊分別對(duì)第一層計(jì)算得出的8個(gè)幸存路徑進(jìn)行計(jì)算,計(jì)算每個(gè)幸存路徑的8個(gè)可能PED。在樹(shù)層次指數(shù) i = 7的情況下,將得出64個(gè)生成PED。第三類PED模塊用于樹(shù)的其它層次,負(fù)責(zé)為上一級(jí)計(jì)算得出的所有PED計(jì)算出最近節(jié)點(diǎn)的PED。這會(huì)將每一層的分支數(shù)量固定為 K = 64,如此傳播至最后一層 i = 1 ,并產(chǎn)生64個(gè)最終PED以及它們的檢測(cè)符號(hào)序列。SD流水線架構(gòu)可允許在每個(gè)時(shí)鐘周期中進(jìn)行數(shù)據(jù)處理。因此,樹(shù)的每一層只需要 1 個(gè) PED 模塊,從而使PED模塊總數(shù)量與樹(shù)的層數(shù)量相等。這樣對(duì)4×4 64-QAM調(diào)制方式而言,PED的總數(shù)量為 8。圖 3為 SD 結(jié)構(gòu)圖。
圖 3 球形檢測(cè)器處理流水線
FPGA性能實(shí)現(xiàn)目標(biāo)
目標(biāo)FPGA器件為Xilinx Virtex-5,其目標(biāo)時(shí)鐘頻率是225MHz。如果為每個(gè)數(shù)據(jù)副載波估計(jì)信道矩陣,就會(huì)限制每個(gè)信道矩陣的處理時(shí)間。對(duì)于選定的時(shí)鐘頻率和5MHz通信帶寬(在WiMAX系統(tǒng)中相當(dāng)于360個(gè)數(shù)據(jù)副載波),我們可以按如下公式計(jì)算每個(gè)信道矩陣間隔的可用處理時(shí)鐘周期數(shù):
如前所述,我們?cè)O(shè)計(jì)了計(jì)算量要求最高的 4×4 天線與 64-QAM 調(diào)制方案的配置結(jié)構(gòu)。本方案的原始數(shù)據(jù)速率可達(dá)到 83.965Mb/s。
針對(duì) FPGA 的高級(jí)綜合
高級(jí)綜合工具將具體算法的高級(jí)描述作為其輸入,可執(zhí)行并生成基于FPGA實(shí)現(xiàn)的 RTL 描述,如圖4所示。該RTL描述可與參考設(shè)計(jì)、IP核或已有RTL代碼結(jié)合在一起,利用傳統(tǒng)Xilinx ISE/EDK工具來(lái)創(chuàng)建完整的FPGA實(shí)現(xiàn)方案。
圖 4 – 針對(duì) FPGA 的高級(jí)綜合
現(xiàn)代高級(jí)綜合工具將非定時(shí)C/C++描述作為輸入規(guī)范。該工具對(duì)同一C/C++ 代碼執(zhí)行 2 種解讀:輸入/輸出行為的順序語(yǔ)義與基于 C/C++ 代碼與編譯器指令的架構(gòu)規(guī)范。這些高級(jí)綜合工具根據(jù) C/C++ 代碼、編譯器指令以及目標(biāo)吞吐量的要求來(lái)生成高性能的流水線架構(gòu)。高級(jí)綜合工具還具有流水線級(jí)數(shù)的自動(dòng)插入與資源共享等其它功能,這樣可減少 FPGA資源的消耗?;旧现v,高級(jí)綜合工具提高了FPGA設(shè)計(jì)的抽象級(jí),并將耗時(shí)且容易發(fā)生錯(cuò)誤的RTL設(shè)計(jì)任務(wù)實(shí)現(xiàn)透明化。
我們將重點(diǎn)集中在 C++ 描述的使用,其目標(biāo)是利用 C++ 模板類來(lái)代表任意精度的整數(shù)類型以及利用模板功能來(lái)代表架構(gòu)中參數(shù)化的模塊。
圖5給出總體設(shè)計(jì)方案,出發(fā)點(diǎn)是從MATLAB?功能描述中獲得的C/C++參考代碼。如圖所示,在任何硬件目標(biāo)平臺(tái)中實(shí)現(xiàn)應(yīng)用的第一步通常是重組C/C++ 參考代碼。我們將“重組”表示為將原始C/C++ 代碼以一種更適合目標(biāo)處理引擎的格式進(jìn)行重寫(xiě)(通常是為了使代碼清晰明了、易于概念理解而不考慮最優(yōu)性能)。例如,必須重新排列DSP處理器中的應(yīng)用代碼,以便算法可以高效地利用緩存。當(dāng)目標(biāo)器件是FPGA時(shí),重組可能包括:重寫(xiě)代碼用以表示可達(dá)到預(yù)期吞吐量的架構(gòu)規(guī)范,或重寫(xiě)代碼以高效利用FPGA的特定功能,例如嵌入式DSP宏。
圖 5 C/C++ 改進(jìn)型迭代設(shè)計(jì)方案
我們通過(guò)利用傳統(tǒng)C/C++編譯器(例如 gcc),并重新利用適用于C/C++參考代碼校驗(yàn)的C/C++級(jí)測(cè)試臺(tái),可實(shí)現(xiàn)對(duì) C/C++ 執(zhí)行代碼的功能校驗(yàn)。C/C++執(zhí)行代碼是高級(jí)綜合工具的主要輸入。但是,額外輸入會(huì)顯著影響生成硬件、及其性能和FPGA資源的使用數(shù)量。因此存在 2 個(gè)基本約束條件,分別為目標(biāo)FPGA系列產(chǎn)品與目標(biāo)時(shí)鐘頻率,它們都會(huì)影響生成架構(gòu)中流水線級(jí)數(shù)的數(shù)量。
此外,高級(jí)綜合工具可接受編譯器指令(例如,在C/C++ 代碼中插入注解),使設(shè)計(jì)者可以在不同C/C++代碼段中應(yīng)用不同的指令類型。例如,應(yīng)用于循環(huán)(例如,循環(huán)展開(kāi))和其它數(shù)組(例如,指定哪些 FPGA 資源必須用于執(zhí)行數(shù)組操作)的指令。
根據(jù)這些輸入,高級(jí)綜合工具生成輸出架構(gòu) (RTL),并報(bào)告其吞吐量。然后設(shè)計(jì)者根據(jù)吞吐量的大小來(lái)修改指令,執(zhí)行C/C++代碼。如果生成的架構(gòu)滿足吞吐量方面的要求,則RTL輸出用于FPGA實(shí)現(xiàn)工具 (ISE/EDK) 的輸入。
只有在完成邏輯綜合和布局布線之后,才報(bào)告可實(shí)現(xiàn)的最終時(shí)鐘頻率和FPGA資源使用數(shù)量。如果該設(shè)計(jì)不能滿足時(shí)序和FPGA資源限制這2方面要求,則該設(shè)計(jì)與預(yù)期設(shè)計(jì)不相符,那么設(shè)計(jì)者應(yīng)修改C/C++執(zhí)行代碼或編譯器指令。
SD高級(jí)綜合實(shí)現(xiàn)
我們已經(jīng)利用A u t o E S L的AutoPilot 2010.07.ft 工具實(shí)現(xiàn)了圖1所示的WiMAX球形解碼器的3個(gè)關(guān)鍵構(gòu)建模塊。需要重點(diǎn)強(qiáng)調(diào)的是,本方案所選擇的算法與最近SDR會(huì)議論文中的算法一致,因此可以實(shí)現(xiàn)相同的BER。
在本節(jié)中,我們給出了用于該特殊實(shí)現(xiàn)的代碼重寫(xiě)與編譯器指令的具體示例。從MATLAB功能描述中獲得的原始C參考代碼大約有2000行,包括綜合C代碼與驗(yàn)證C代碼。
代碼只包括使用C內(nèi)置數(shù)據(jù)類型的定點(diǎn)運(yùn)算。一個(gè)對(duì)FPGA友好的實(shí)現(xiàn)幾乎可以完成所有要求的浮點(diǎn)運(yùn)算(例如 sqrt)。除了描述 FPGA 綜合功能的C參考代碼之外,還有一個(gè)完整的C級(jí)驗(yàn)證測(cè)試平臺(tái)。我們從MATLAB描述中生成輸入測(cè)試矢量和重要的輸出參考文件。
原始C / C + +參考代碼符合MATLAB 規(guī)范的比特精度要求,并可通過(guò)由多個(gè)數(shù)據(jù)集構(gòu)成的回歸分析套件。該C/C++參考代碼經(jīng)歷了不同類型的代碼重組。例如,圖5顯示了3個(gè)我們已經(jīng)實(shí)現(xiàn)的代碼重組的例子。我們重新使用 C 級(jí)驗(yàn)證設(shè)施來(lái)檢驗(yàn) C/C++代碼執(zhí)行中的任何變化。而且,我們是在 C 級(jí)執(zhí)行所有驗(yàn)證,而不是在寄存器傳送級(jí),這樣可避免非常耗時(shí)的RTL仿真,從而有助于減少總體開(kāi)發(fā)時(shí)間。
宏架構(gòu)說(shuō)明
代碼重構(gòu)的最重要部分是重寫(xiě)C/C++代碼,以描述可有效實(shí)現(xiàn)特定功能的宏架構(gòu)。換句話說(shuō),設(shè)計(jì)人員負(fù)責(zé)宏架構(gòu)說(shuō)明,而高級(jí)綜合工具負(fù)責(zé)宏架構(gòu)的生成。這類代碼重組對(duì)得到的吞吐量和質(zhì)量結(jié)果具有重大影響。就球形解碼器而言,有幾個(gè)這類代碼重組的實(shí)例。例如,為了滿足信道排序模塊的高吞吐量要求,設(shè)計(jì)人員應(yīng)使用C/C++來(lái)描述圖2所示的宏架構(gòu)。
這類C/C++代碼由幾個(gè)以數(shù)組為傳遞參數(shù)的函數(shù)構(gòu)成。該高級(jí)綜合工具可自動(dòng)調(diào)用乒乓緩沖器中的數(shù)組,以實(shí)現(xiàn)在流
水線中并行執(zhí)行多個(gè)矩陣計(jì)算模塊。本級(jí)代碼重組的另一個(gè)實(shí)例是決定特定模塊的TDM結(jié)構(gòu)中所使用信道的數(shù)量(例如,信道矩陣重排序模塊使用5條信道,修正后的實(shí)部QR分解模塊使用15條信道)。
圖6是宏架構(gòu)說(shuō)明的一個(gè)實(shí)例。圖3為描述球形檢測(cè)器的C++代碼片段框圖。我們注意到圖中有一條調(diào)用9個(gè)函數(shù)的流水線,其中每個(gè)函數(shù)代表圖3中的一個(gè)模塊。函數(shù)之間的通信通過(guò)傳遞數(shù)組來(lái)完成,這些數(shù)組被第5行和第7行的適當(dāng)指令 (pragmas) 映射至數(shù)據(jù)流接口(不是 FPGA 嵌入式 BRAM 存儲(chǔ)器)。
圖 6 球形檢測(cè)器宏架構(gòu)描述
參數(shù)化的重要性
參數(shù)化是代碼重寫(xiě)的另一個(gè)關(guān)鍵實(shí)例。我們廣泛利用C++模板函數(shù)來(lái)表示架構(gòu)中的參數(shù)化模塊。在球形解碼器的實(shí)現(xiàn)過(guò)程中,該類代碼重寫(xiě)有幾個(gè)不同實(shí)例。一個(gè)具體實(shí)例是應(yīng)用于信道重排序模塊的不同類型矩陣操作。圖2所示的矩陣計(jì)算模塊(4×4, 3×3與2×2)就包含不同類型的矩陣操作,例如矩陣求逆或矩陣相乘。將這些模塊進(jìn)行編碼并作為 C++ 模板函數(shù),模板參數(shù)即矩陣的行數(shù)與列數(shù)。
圖7為矩陣相乘的C++模板函數(shù)。除了矩陣行數(shù)和列數(shù)這兩個(gè)參數(shù)之外,該模板函數(shù)還有第三個(gè)參數(shù),即MM_II(矩陣相乘初始化間隔),該參數(shù)用于指定二次連續(xù)循環(huán)迭代之間的時(shí)鐘周期數(shù)量。第 9 行的指令 (pragma)用于對(duì)具體實(shí)例所需吞吐量進(jìn)行參數(shù)化。這是一項(xiàng)很重要的功能,原因是它可對(duì)生成的微體系架構(gòu)產(chǎn)生重要影響—也就是高級(jí)綜合工具具備充分利用資源共享的能力,從而可以減少用于具體實(shí)現(xiàn)中的 FPGA 資源數(shù)量。例如,高級(jí)綜合工具僅僅通過(guò)修改初始化間隔 (Initiation Interval) 參數(shù)并使用相同的 C++ 代碼,即可在執(zhí)行不同矩陣求逆(4×4, 3×3, 2×2) 模塊的過(guò)程中自動(dòng)實(shí)現(xiàn)不同層面的資源共享。
圖 7 代碼參數(shù)化實(shí)例
FPGA最優(yōu)化
FPGA最優(yōu)化是代碼重寫(xiě)的最后一個(gè)實(shí)例。設(shè)計(jì)人員可以重寫(xiě)C/C++代碼,以更高效地利用特定FPGA資源,從而可以改善時(shí)序并減小存儲(chǔ)區(qū)域的使用。該類最優(yōu)化方面的兩個(gè)具體實(shí)例是比特寬度最優(yōu)化與嵌入式DSP模塊 (DSP48) 的高效使用。高效利用DSP48可以改善時(shí)序并提高FPGA資源利用率。
我們利用內(nèi)置C/C++數(shù)據(jù)類型(例如short、int)來(lái)編寫(xiě)C/C++參考代碼,同時(shí)利用18位定點(diǎn)數(shù)據(jù)類型來(lái)表示矩陣元素。我們已經(jīng)利用C++模板類來(lái)表示任意精度的定點(diǎn)數(shù)據(jù)類型,因此可減少FPGA資源的使用并將時(shí)序影響最小化。
圖8是一個(gè)先執(zhí)行乘法后執(zhí)行減法的C++模板函數(shù),而輸入操作數(shù)寬度是需要設(shè)置的參數(shù)??蓪⑦@兩個(gè)運(yùn)算操作映射至嵌入式DSP48模塊中。在圖8中,有兩條指令指示高級(jí)綜合工具用最多兩個(gè)時(shí)鐘周期來(lái)調(diào)度這些操作并使用寄存器來(lái)存儲(chǔ)輸出返回值。
圖 8 針對(duì) DSP48 有效利用的 FPGA 性能最優(yōu)化
生產(chǎn)力度量指標(biāo)
在圖9中,我們繪出利用AutoESL的AutoPilot所生成設(shè)計(jì)的規(guī)模大?。碏PGA資源使用情況)隨時(shí)間變化的曲線,并與傳統(tǒng)系統(tǒng)生成器 (RTL)的實(shí)現(xiàn)過(guò)程相比較。利用高級(jí)綜合工具,我們可以實(shí)現(xiàn)很多有效的解決方案,且這些解決方案的規(guī)模隨時(shí)間而變化。因此,設(shè)計(jì)人員可根據(jù)代碼重組的數(shù)量,在獲取解決方案的速度與解決方案的規(guī)模大小之間做出權(quán)衡。另外,RTL 解決方案只有一種,而且開(kāi)發(fā)周期較長(zhǎng)。
?
圖 9 FPGA 資源用量隨著開(kāi)發(fā)時(shí)間增加而下降
我們已經(jīng)觀察到可以用相對(duì)較少的時(shí)間來(lái)獲得幾個(gè)明顯比傳統(tǒng)RTL解決方案使用更多FPGA資源(例如區(qū)域)的綜合解決方案。另一方面,設(shè)計(jì)人員也可自行決定在工具專家等級(jí)下工作,通過(guò)執(zhí)行更高級(jí)的C/C++代碼重組技術(shù)(例如特定FPGA的最優(yōu)化),實(shí)現(xiàn)用更少的FPGA資源生成更多的解決方案。
最后,因?yàn)槲覀兪窃贑/C++級(jí)執(zhí)行所有驗(yàn)證,從而可以避免耗時(shí)的RTL。因此,在 C/C++ 級(jí)執(zhí)行設(shè)計(jì)驗(yàn)證將明顯縮短總體開(kāi)發(fā)時(shí)間。
質(zhì)量結(jié)果
在圖10中,我們對(duì)比了分別利用高級(jí)綜合工具與系統(tǒng)參考生成器(基本屬于結(jié)構(gòu)化的RTL設(shè)計(jì),顯示使用如DSP48模塊的FPGA基元)這兩種不同方法來(lái)實(shí)現(xiàn)的完整球形解碼器,在其最終FPGA資源使用量和總體開(kāi)發(fā)時(shí)間這兩方面進(jìn)行了比較。AutoESL開(kāi)發(fā)時(shí)間包括工具學(xué)習(xí)、產(chǎn)生結(jié)果、設(shè)計(jì)空間探測(cè)與詳細(xì)驗(yàn)證所需要的時(shí)間。
圖 10 質(zhì)量結(jié)果的度量標(biāo)準(zhǔn)體現(xiàn)了 AutoESL 優(yōu)勢(shì)。
為了更精確地比較,我們利用針對(duì)Virtex-5 FPGA的最新Xilinx ISE 12.1工具重新實(shí)現(xiàn)RTL參考設(shè)計(jì)。同樣,我們利用針對(duì)同類FPGA的ISE 12.1來(lái)執(zhí)行由AutoESL AutoPilot生成的RTL。圖10顯示AutoESL AutoPilot節(jié)約FPGA資源效果明顯,主要是因?yàn)樵趯?shí)現(xiàn)矩陣求逆模塊時(shí)實(shí)現(xiàn)了資源共享。
我們也觀察到寄存器的使用數(shù)量明顯減少,查找表 (LUT) 的使用量略有提高。產(chǎn)生這種結(jié)果的部分原因在于 AutoESL
實(shí)現(xiàn)過(guò)程中延遲線被映射至 SRL16(例如 LUT),而在系統(tǒng)生成器方案中,則利用寄存器實(shí)現(xiàn)上述功能。在其它模塊中, 我們交替使用BRAM 與 LUTRAM,導(dǎo)致信道預(yù)處理器的 BRAM 使用率較低。
AutoESL AutoPilot完成對(duì)底層FPGA實(shí)現(xiàn)細(xì)節(jié)的抽象(例如時(shí)序與流水線設(shè)計(jì))。與使用傳統(tǒng)RTL設(shè)計(jì)方案相比,其產(chǎn)生的質(zhì)量結(jié)果更具競(jìng)爭(zhēng)力。C/C++級(jí)驗(yàn)證避免使用耗時(shí)的RTL仿真,從而可以減少總體開(kāi)發(fā)時(shí)間。但是,對(duì)于具有挑戰(zhàn)性的復(fù)雜設(shè)計(jì)而言,如果想取得卓越的效果,則必須給出優(yōu)異的宏架構(gòu)定義,且必須具備扎實(shí)的FPGA設(shè)計(jì)工具知識(shí),還要有理解與解釋FPGA工具報(bào)告的能力。
評(píng)論