趙 鵬,谷京朝
(空軍雷達(dá)學(xué)院,武漢430019)
FPGA可重構(gòu)技術(shù)根據(jù)重構(gòu)過(guò)程的行為差異分為靜態(tài)重構(gòu)和動(dòng)態(tài)重構(gòu)。其中動(dòng)態(tài)重構(gòu)又可根據(jù)重構(gòu)實(shí)現(xiàn)的面積大小不同分為動(dòng)態(tài)全局重構(gòu)和動(dòng)態(tài)局部重構(gòu)2類(lèi)。動(dòng)態(tài)全局重構(gòu),是在重配置時(shí)對(duì)可重構(gòu)FPGA器件進(jìn)行全部的重新更換。而動(dòng)態(tài)局部重構(gòu),重配置時(shí)只對(duì)重構(gòu)硬件內(nèi)部分資源進(jìn)行操作,其余邏輯資源保持不變且繼續(xù)工作,與重構(gòu)過(guò)程無(wú)關(guān)聯(lián)。
本文通過(guò)對(duì)比傳統(tǒng)的DPR設(shè)計(jì)過(guò)程,以Xilinx公司提供的FPGA開(kāi)發(fā)工具System Generator for DSP為系統(tǒng)設(shè)計(jì)基礎(chǔ),結(jié)合ISE、PlanAhead開(kāi)發(fā)工具,在EAPR設(shè)計(jì)流程基礎(chǔ)上提出一種改進(jìn)的DPR設(shè)計(jì)方法,在一定程度上提高了DPR開(kāi)發(fā)效率。
System Generator for DSP(SysGen)軟件是由Xilinx公司開(kāi)發(fā)的 MATLAB/Simulink環(huán)境下的一個(gè)工具箱,包括Xilinx集合和模型到硬件的轉(zhuǎn)換軟件。Simulink擴(kuò)展了MATLAB工程應(yīng)用描述范圍,為建立動(dòng)態(tài)系統(tǒng)模型提供了一個(gè)通用的環(huán)境。而SysGen則是一個(gè)可以擴(kuò)展Simulink功能的軟件,它為數(shù)字邏輯的DSP功能提供了準(zhǔn)確的仿真。它還可以把Simulink的模型轉(zhuǎn)換成硬件執(zhí)行程序,轉(zhuǎn)換后的硬件執(zhí)行程序可以在Xilinx公司的FPGA中運(yùn)行。在Simulink環(huán)境下,如果由Xilinx公司提供的模塊組成的模型在Simulink的環(huán)境中正常運(yùn)行,它將會(huì)以同樣的方式在硬件中執(zhí)行。如果由SysGen提供的模塊可以和Simulink提供的模塊任意組合使用,從而建立系統(tǒng)模型,雖然能達(dá)到功能仿真的目的,但是該系統(tǒng)無(wú)法在FPGA中運(yùn)行。
SysGen作為數(shù)字信號(hào)處理高層系統(tǒng)設(shè)計(jì)與Xilinx FPGA實(shí)現(xiàn)的“橋梁”,在Simulink下完成算法的模型建立后可根據(jù)設(shè)計(jì)要求生成相應(yīng)的工程文件。ISE可對(duì)SysGen生成的工程進(jìn)行調(diào)用、仿真、綜合,最后完成算法的硬件化,另外也可以由Sys-Gen直接生成位流文件,直接下載到FPGA。
與語(yǔ)言設(shè)計(jì)方法相比,使用SysGen主要有3個(gè)優(yōu)勢(shì):
(1)圖形化操作,簡(jiǎn)單易用;
(2)實(shí)現(xiàn)的算法能確保與仿真結(jié)果相符;
二氧化碳的排放主要來(lái)源于高碳天然氣、燃煤電廠、水泥廠、鋼鐵廠、煤化工和煉化廠等。經(jīng)過(guò)近年來(lái)的研究和示范,國(guó)內(nèi)已形成高碳天然氣、燃煤電廠和煉化廠排放源的捕集技術(shù),建成了130多萬(wàn)噸的二氧化碳捕集能力,其中煤化工二氧化碳排放濃度高,捕集成本低。
(3)無(wú)需為仿真和實(shí)現(xiàn)建立不同的模型。
針對(duì)FPGA動(dòng)態(tài)局部重構(gòu),Xilinx公司主要提出過(guò)4種設(shè)計(jì)方法,即JBits動(dòng)態(tài)重構(gòu)設(shè)計(jì)方法、基于差異的局部重構(gòu)方法、基于模塊的局部重構(gòu)方法和早期獲取部分可重構(gòu)(EAPR)[6]。EAPR設(shè)計(jì)方法作為Xilinx最新提出并且推薦使用的一種DPR設(shè)計(jì)方法,因其有重構(gòu)區(qū)域靈活、布線簡(jiǎn)單、使用基于Slice的總線宏和布局易修改等優(yōu)點(diǎn),所以在可重構(gòu)設(shè)計(jì)領(lǐng)域得到廣泛的應(yīng)用。EAPR實(shí)現(xiàn)步驟如圖1所示。
圖1 EAPR設(shè)計(jì)流程
(1)系統(tǒng)設(shè)計(jì)和系統(tǒng)仿真:通過(guò)系統(tǒng)仿真軟件(LabView、Simulink等)對(duì)整個(gè)算法進(jìn)行驗(yàn)證,檢測(cè)算法是否滿足設(shè)計(jì)要求。
(2)硬件描述語(yǔ)言(HDL)設(shè)計(jì)描述和綜合:根據(jù)系統(tǒng)仿真成功后的算法模型,利用ISE軟件進(jìn)行HDL硬件描述語(yǔ)言的編寫(xiě),包括頂層模塊設(shè)計(jì)和綜合、靜態(tài)模塊的設(shè)計(jì)與綜合以及各重構(gòu)模塊的設(shè)計(jì)和綜合;
(3)添加約束:定義用戶控制文件(UCF),主要包括時(shí)序約束、區(qū)域約束、引腳約束;
(4)實(shí)現(xiàn)靜態(tài)模塊和重構(gòu)模塊:主要包括綜合、映射和布局布線;
(5)裝配:完成頂層模塊與靜態(tài)模塊和動(dòng)態(tài)模塊的裝配,使得各模塊形成1個(gè)完整的系統(tǒng)。
(6)生成配置文件下載驗(yàn)證:最后生成初始化的比特流文件以及各個(gè)模塊的局部重配置比特流文件,通過(guò)下載到相應(yīng)FPGA目標(biāo)板進(jìn)行驗(yàn)證。
通過(guò)分析EAPR設(shè)計(jì)方法可發(fā)現(xiàn),EAPR設(shè)計(jì)方法與傳統(tǒng)DPR設(shè)計(jì)方法相比簡(jiǎn)單快捷,但從系統(tǒng)設(shè)計(jì)到硬件寄存器傳輸級(jí)(RTL)級(jí)硬件語(yǔ)言實(shí)現(xiàn)的過(guò)程依然復(fù)雜,作為系統(tǒng)仿真和硬件實(shí)現(xiàn)的橋梁,若能夠?qū)ysGen引入DPR設(shè)計(jì)將會(huì)大大提高設(shè)計(jì)效率。本著上述思路,基于SysGen的DPR實(shí)現(xiàn)方法的主體流程是以EAPR為基礎(chǔ),利用SysGen軟件系統(tǒng)設(shè)計(jì)的優(yōu)勢(shì),將EAPR設(shè)計(jì)流程(圖1)中算法設(shè)計(jì)、系統(tǒng)仿真和HDL設(shè)計(jì)輸入3個(gè)步驟進(jìn)行整合,在SysGen軟件環(huán)境下進(jìn)行仿真驗(yàn)證和代碼生成,減少設(shè)計(jì)過(guò)程中HDL語(yǔ)言的手動(dòng)編寫(xiě)。
首先針對(duì)動(dòng)態(tài)局部重構(gòu)系統(tǒng)設(shè)計(jì),對(duì)各重構(gòu)系統(tǒng)進(jìn)行模塊化設(shè)計(jì)分類(lèi)時(shí),由于局部重構(gòu)系統(tǒng)中包含靜態(tài)模塊和動(dòng)態(tài)模塊,所以并不是所有的模塊劃分方式都能適合DPR設(shè)計(jì),必須選擇使各個(gè)重構(gòu)系統(tǒng)具有公共部分的系統(tǒng)模型。如圖2所示,在該例中兩重構(gòu)系統(tǒng)分別實(shí)現(xiàn)的是加法和乘法運(yùn)算,其系統(tǒng)模型對(duì)動(dòng)態(tài)部分和靜態(tài)部分有嚴(yán)格的區(qū)分,并且2個(gè)系統(tǒng)中的靜態(tài)部分結(jié)構(gòu)保持一致。
然后,在Simulink提供的圖形化環(huán)境對(duì)系統(tǒng)進(jìn)行建模。SysGen作為1個(gè)工具箱包含在Simulink中,包括Xilinx BlockSet、Xilinx Reference BlockSet和Xilinx XtremeDSP Kit 3個(gè)庫(kù),利用這3個(gè)庫(kù)可方便搭建出系統(tǒng)模型。需注意在SysGen環(huán)境下數(shù)據(jù)必須是定點(diǎn)運(yùn)算,所以作為整個(gè)系統(tǒng)的開(kāi)始和結(jié)束都要使用Gateway模塊,它承接了雙精度和定點(diǎn)運(yùn)算的轉(zhuǎn)換,并且只有在Gateway之間的Xilinx模塊才能被轉(zhuǎn)化為硬件實(shí)現(xiàn)。另外,與Simulink仿真不同的是,SysGen系統(tǒng)仿真必須包含System Generator模塊,它給定整個(gè)系統(tǒng)控制和仿真的參數(shù),并應(yīng)用于系統(tǒng)工程到硬件實(shí)現(xiàn)的轉(zhuǎn)化。
最后,動(dòng)態(tài)局部重構(gòu)技術(shù)將N個(gè)分系統(tǒng)取其公用部分作為靜態(tài)模塊,非公用部分作為動(dòng)態(tài)模塊,所以在系統(tǒng)論證時(shí)需對(duì)每個(gè)系統(tǒng)分別進(jìn)行仿真驗(yàn)證,檢查結(jié)果是否符合規(guī)則,確保后續(xù)重構(gòu)設(shè)計(jì)正確。
圖2 局部重構(gòu)系統(tǒng)的模型架設(shè)
各重構(gòu)系統(tǒng)經(jīng)過(guò)仿真后,需將各重構(gòu)系統(tǒng)拆分為子系統(tǒng),主要原因有:
(1)據(jù)軟件使用規(guī)定,SysGen只能對(duì)擁有完整輸入輸出的系統(tǒng)進(jìn)行代碼生成;
(2)拆分子系統(tǒng)后,靜態(tài)模塊代碼只需生成1次,其余重構(gòu)系統(tǒng)只生成動(dòng)態(tài)模塊。
如圖3所示,將各系統(tǒng)模型按照靜態(tài)部分和動(dòng)態(tài)部分進(jìn)行拆分,需對(duì)各子系統(tǒng)端口重新定義,即添加Gateway模塊,并通過(guò)System Generator模塊實(shí)現(xiàn)靜態(tài)和動(dòng)態(tài)模塊的超高級(jí)定義語(yǔ)言(VHDL)/Verilog代碼生成。當(dāng)所有重構(gòu)系統(tǒng)都已拆分轉(zhuǎn)化完畢,留作等候ISE調(diào)用。
圖3 拆分系統(tǒng)模塊
據(jù)EAPR設(shè)計(jì)規(guī)則,首先在ISE環(huán)境下完成頂層文件的設(shè)計(jì),主要包括對(duì)靜態(tài)、動(dòng)態(tài)模塊和總線宏的連接定義以及時(shí)鐘控制等;然后再分別創(chuàng)建新模塊并相應(yīng)地調(diào)用動(dòng)態(tài)或靜態(tài)源代碼。需要注意在ISE調(diào)用SysGen生成的代碼時(shí),除了頂層文件外其余子文件不能在“Xilinx Specific Options”中選擇Add I/O Buffers。
另外,在頂層文件對(duì)全局系統(tǒng)進(jìn)行連接定義時(shí),需要注意靜態(tài)區(qū)域與動(dòng)態(tài)區(qū)域連接必須有總線宏,并且總線宏的數(shù)據(jù)寬度取決于N個(gè)系統(tǒng)中連接位寬的最大值。經(jīng)過(guò)綜合后生成網(wǎng)表文件,建立等待PlanAhead工程調(diào)用的結(jié)構(gòu)文檔[6]。
PlanAhead軟件可以幫助設(shè)計(jì)者有效克服在進(jìn)行大型復(fù)雜FPGA時(shí)遇到的時(shí)序問(wèn)題、復(fù)雜時(shí)鐘和大型輸出問(wèn)題。
在PlanAhead環(huán)境下主要進(jìn)行劃分區(qū)域、放置總線宏、設(shè)計(jì)規(guī)則檢查(DRC)、靜態(tài)模塊實(shí)現(xiàn)、動(dòng)態(tài)模塊實(shí)現(xiàn)等工作,通過(guò)PR Assemble完成動(dòng)態(tài)模塊和靜態(tài)模塊的整合,最后將生成的位流文件進(jìn)行下載上板檢測(cè)。
與傳統(tǒng)DPR設(shè)計(jì)流程相比,EAPR受到的設(shè)計(jì)規(guī)則限制較少,極大地提高了設(shè)計(jì)的靈活性?;赟ysGen的動(dòng)態(tài)局部可重構(gòu)設(shè)計(jì)是一種改進(jìn)的EAPR設(shè)計(jì)流程,該方案利用SysGen軟件可以快捷地對(duì)系統(tǒng)仿真向硬件設(shè)計(jì)語(yǔ)言(HDL)進(jìn)行轉(zhuǎn)換,有效減少開(kāi)發(fā)人員對(duì)RTL級(jí)硬件語(yǔ)言的手動(dòng)編寫(xiě)。該方法簡(jiǎn)單易行,能夠較好地應(yīng)用于軟件無(wú)線電等設(shè)計(jì)中,具有廣闊的應(yīng)用前景。
[1]覃祥菊,朱明程,張?zhí)?FPGA動(dòng)態(tài)可重構(gòu)技術(shù)原理及實(shí)現(xiàn)方法分析[J].電子器件,2004(6):277-282.
[2]Xilinx Inc.ISR and Xilinx Roll Out Ready-to-Wear SDR[EB/OL].www.fpgajournal.com.2006-06-23.
[3]Manuel G.Gericota,Gustavo R.Alves.DRAFT an online fault detection method for dynamic and partially reconfigurable FPGAs[A].Proceedings of the 7th International on-line Testing Workshop[C].IEEE,2001:34-36.
[4]Xilinx Inc.Xilinx Honored for Enabling Technology in the ALICE Experiment at CERN,Programmable Logic Design Line[EB/OL].http://www.pldesignline.com/news/207101017,2008-08-09.
[5]紀(jì)志成,高春能.FPGA數(shù)字信號(hào)處理設(shè)計(jì)教程[M].西安:西安電子科技大學(xué)出版社,2008:33-43.
[6]Xilinx Inc.Early Access Partial Reconfiguration User Guide[EB/OL].http://www.xilinx.com/,2006.