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