楊文濤 侯睿 顧明超 劉子奕 李春曉
摘要:憑借開發(fā)周期短、使用場景靈活等優(yōu)點(diǎn),現(xiàn)場可編程邏輯門陣列(Field Programmable Gate Array,F(xiàn)PGA)在電子對抗系統(tǒng)中的應(yīng)用越來越廣泛。隨著電子對抗系統(tǒng)的復(fù)雜化和功能多樣化,系統(tǒng)設(shè)計(jì)對FPGA的硬件資源規(guī)模需求越來越大,隨之帶來了成本驟升的問題。針對日漸復(fù)雜的系統(tǒng)設(shè)計(jì)和有限的FPGA硬件資源的矛盾,提出了一種基于FPGA和DSP實(shí)現(xiàn)的部分重構(gòu)系統(tǒng)方案。通過不同時(shí)刻動(dòng)態(tài)加載不同F(xiàn)PGA功能模塊的方式,實(shí)現(xiàn)了FPGA資源的復(fù)用。這種技術(shù)是數(shù)字系統(tǒng)設(shè)計(jì)方法、設(shè)計(jì)思想的變革,使FPGA資源利用率成倍提高,實(shí)現(xiàn)系統(tǒng)功能所用的硬件規(guī)模大大下降。
關(guān)鍵詞:現(xiàn)場可編程邏輯門陣列;部分重構(gòu);測向
中圖分類號:TN911文獻(xiàn)標(biāo)志碼:A文章編號:1008-1739(2022)13-48-5
現(xiàn)場可編程邏輯門(Field Programmable Gate Array,F(xiàn)PGA)憑借其編程及重構(gòu)高度靈活、邏輯資源和I/O資源豐富等優(yōu)勢在通信、電子對抗等領(lǐng)域應(yīng)用越來越廣泛[1]。目前,主流的FPGA芯片基本都基于SRAM工藝,芯片上電后首先需要通過BPI,SPI,JTAG,SelectMAP等方式加載配置bit文件,常規(guī)應(yīng)用時(shí)需要為FPGA配備可存放bit文件的EPROM芯片。隨著現(xiàn)代軟件無線電技術(shù)的進(jìn)步,偵察測向領(lǐng)域?qū)PGA芯片資源的需求越來越大[2]。持續(xù)升級硬件資源更豐富的FPGA芯片會(huì)引起硬件成本的持續(xù)攀升,因此,對FPGA硬件資源實(shí)現(xiàn)“分時(shí)復(fù)用”就顯得尤為重要。
FPGA芯片的bit加載有2種方式[3]:整個(gè)bit重新加載,對整個(gè)FPGA進(jìn)行重新配置,此種應(yīng)用常配合EPROM使用,即在EPROM中燒寫多個(gè)bit文件,根據(jù)需要通過上位機(jī)切換存儲的bit文件。由于EPROM芯片的存儲容量有限,能夠存儲的bit文件個(gè)數(shù)受限,且因?yàn)檎麄€(gè)FPGA都進(jìn)行了重新配置,SRIO接口需要重新入網(wǎng),所有功能都必須重新啟動(dòng)。切換時(shí)間較長,功能連續(xù)性受限。部分重構(gòu)(Partial Reconfiguration,PR)可以在一個(gè)FPGA程序設(shè)計(jì)內(nèi),動(dòng)態(tài)改變模塊功能[4]。FPGA本身是一個(gè)可以靈活配置程序的器件,PR在此基礎(chǔ)上更進(jìn)一步,通過一個(gè)部分配置文件(通常稱為部分bit文件),來改變FPGA的部分功能,在這個(gè)過程中,F(xiàn)PGA的其他部分仍然可以正常工作。
Xilinx幾乎所有的7系列芯片都支持邏輯資源、乘法器資源和存儲資源的部分重構(gòu)[5],UltraScale,UltraScale+和Zynq UltraScale+系列還額外支持時(shí)鐘資源的重構(gòu)。由于UltraScale系列芯片價(jià)格昂貴,且目前無國產(chǎn)化可替代芯片,應(yīng)用場景局限性大,因此選擇Xilinx的XC7VX690T FPGA來完成部分重構(gòu)系統(tǒng)設(shè)計(jì)。Xilinx的XC7VX690T芯片擁有3 600個(gè)乘法器、1 470個(gè)BRAM及豐富的LUT資源,芯片大小及豐富的接口非常適合部分重構(gòu)的設(shè)計(jì)?;诖?,本文提供了一種基于FPGA部分重構(gòu)的偵察測向?qū)崿F(xiàn)方案,可實(shí)現(xiàn)多路寬帶測向和窄帶測向預(yù)處理的實(shí)時(shí)切換,實(shí)現(xiàn)了FPGA資源的“復(fù)用”,為FPGA應(yīng)用的低成本工程化提供了一種參考方法。
1.1部分重構(gòu)原理
Xilinx XC7VX690T芯片可將芯片內(nèi)部邏輯劃分為靜態(tài)邏輯和動(dòng)態(tài)邏輯2個(gè)獨(dú)立部分,靜態(tài)部分上電后保持不變,動(dòng)態(tài)邏輯部分可以根據(jù)應(yīng)用需求實(shí)時(shí)切換[6]。FPGA部分重配置示意如圖1所示,Reconfig Block‘A為可重構(gòu)部分,整個(gè)FPGA中又可以包含多Reconfig Block‘A部分,可根據(jù)需要配置任意個(gè)數(shù)的子模塊A。芯片工作時(shí),靜態(tài)邏輯部分上電即正常運(yùn)行,可重構(gòu)邏輯部分可通過SRIO總線將需要的功能模塊的bit寫入FPGA,此寫入時(shí)間一般不超過100 ms,從上位機(jī)處可達(dá)到各種功能即點(diǎn)即用的視覺效果,由此可配合外部存儲達(dá)到“無限”擴(kuò)展FPGA資源的效果,適用于功能繁雜,但各種功能分時(shí)運(yùn)行的系統(tǒng)[7]。
部分重構(gòu)在PR流程中,經(jīng)過FPGA的布局布線過程后,不僅會(huì)生成每個(gè)功能的完整的bit文件,每一個(gè)重配置模塊(Reconfigurable Module,RM)還會(huì)生成一個(gè)部分bit文件[8]。所有的重配置模塊會(huì)共用一個(gè)頂層的、靜態(tài)的布局布線結(jié)果。每一個(gè)重配置模塊布局布線時(shí),會(huì)先讀入共用的靜態(tài)布局布線結(jié)果,在此基礎(chǔ)上再進(jìn)行重配置模塊的布局布線,這個(gè)過程可以稱為子實(shí)現(xiàn)(Child-implementation)。
1.2部分重構(gòu)實(shí)現(xiàn)流程
按重構(gòu)區(qū)域劃分,F(xiàn)PGA的重構(gòu)可分為動(dòng)態(tài)重構(gòu),和靜態(tài)重構(gòu)兩種方式。FPGA的設(shè)計(jì)流程共包括設(shè)計(jì)、編譯和運(yùn)行三個(gè)階段[9]。在設(shè)計(jì)階段,需要完成邏輯設(shè)計(jì)、綜合、布局布線設(shè)計(jì)。靜態(tài)重構(gòu)只包含一個(gè)功能電路的邏輯設(shè)計(jì),并對該功能電路進(jìn)行綜合、布局布線。動(dòng)態(tài)重構(gòu)則根據(jù)需求包含F(xiàn)1~F多個(gè)功能電路的邏輯設(shè)計(jì),并且布局布線時(shí)需要對設(shè)計(jì)中的所有功能電路進(jìn)行布局布線。在編譯階段,需要配置文件生成工具并產(chǎn)成配置文件,靜態(tài)重構(gòu)只產(chǎn)生一個(gè)配置文件,而動(dòng)態(tài)重構(gòu)則需要通過配置文件生成工具生成多個(gè)配置文件,最終在重構(gòu)件生成器的作用下得到初始構(gòu)件和多個(gè)重構(gòu)件。在運(yùn)行階段,靜態(tài)重構(gòu)只需在系統(tǒng)啟動(dòng)時(shí)載入FPGA運(yùn)行即可。動(dòng)態(tài)重構(gòu)則需要在上位機(jī)的控制下,通過總線將編譯階段產(chǎn)生的重構(gòu)件寫入FPGA,實(shí)現(xiàn)各子功能電路的部分重構(gòu)。設(shè)計(jì)流程如圖2所示。
Xilinx芯片實(shí)現(xiàn)部分重構(gòu)需要將編譯生成的不同重構(gòu)子bit文件寫入FPGA中,bit重加載需基于ICAP接口,XC7V690T芯片對應(yīng)接口為ICAPE2。bit寫入時(shí)序如圖3所示。其中,CSI_B為讀寫使能,RDWR_B為讀寫狀態(tài)控制,DATA為bit文件數(shù)據(jù)接口。
2.1偵察測向處理單元
某偵察測向處理單元需要實(shí)現(xiàn)寬帶信號偵察、5陣源干涉儀測向、26個(gè)頻點(diǎn)特定信號分析解調(diào)等功能。針對該應(yīng)用需求,設(shè)計(jì)了一塊由FPGA和DSP等組成的硬件單元,在FPGA中實(shí)現(xiàn)了測向和分析解調(diào)預(yù)處理功能,在DSP中完成了干涉儀測向和分析解調(diào)功能。
2.2硬件電路設(shè)計(jì)
為降本增效并滿足可國產(chǎn)化替代的需求,硬件電路設(shè)計(jì)時(shí)選用了一片型號為XC7V690T的FPGA芯片和一片型號為TMS320C6678的DSP芯片作為硬件單元主處理器件。通過一片CPS1848芯片實(shí)現(xiàn)本單元及其他硬件單元的SRIO交換互聯(lián)功能;XC7K325T和單片機(jī)控制板卡上電加載及初始化芯片;在DSP上接入了4片DDR3顆粒用以滿足DSP緩存需求。詳細(xì)結(jié)構(gòu)如圖4所示。
2.3 FPGA部分重構(gòu)設(shè)計(jì)
為滿足系統(tǒng)分辨率需求,需在FPGA中實(shí)現(xiàn)5路32 000點(diǎn)連續(xù)FFT、26路寬帶數(shù)字下變頻(DDC)、其他自檢接口及數(shù)據(jù)傳輸模塊等功能。核算資源可知,所有模塊需要3 710個(gè)乘法器資源,超出XC7V690T片內(nèi)可用乘法器設(shè)計(jì)能力?;诖?,將上述需求進(jìn)行部分重構(gòu)模塊設(shè)計(jì)。
為滿足7系列芯片部分重構(gòu)規(guī)則并利于FPGA布局布線,將除I/O接口和時(shí)鐘分頻外的大部分硬件資源劃分為一個(gè)PR區(qū)域,靜態(tài)區(qū)域放置采樣接口、時(shí)鐘接口、時(shí)統(tǒng)接口和SRIO接口。采樣接口用來接收ADC采集的外界信號;3組連接在交換芯片上的SRIO接口分別用來對外傳輸數(shù)據(jù)和接收上位機(jī)指令,其中,SRIO3還可用于為FPGA本身動(dòng)態(tài)配置PR產(chǎn)生的重構(gòu)bit文件。FPGA部分重構(gòu)程序框架結(jié)構(gòu)如圖5所示。
為平衡功能需求及硬件資源限制,將干涉儀測向預(yù)處理功能和寬帶分析解調(diào)功能分別設(shè)計(jì)為FPGA的部分重構(gòu)子模塊。拆分后子模塊硬件資源占用均可滿足芯片最大硬件資源限制并能通過SRIO總線動(dòng)態(tài)切換功能模塊。各重構(gòu)子模塊都可以實(shí)時(shí)回讀當(dāng)前模塊版本標(biāo)志。
重構(gòu)子模塊1包含26路DDC模塊和數(shù)據(jù)傳輸仲裁模塊,可實(shí)現(xiàn)26個(gè)頻點(diǎn)信號的變頻抽取濾波,并通過SRIO將數(shù)據(jù)傳輸?shù)紻SP實(shí)現(xiàn)分析解調(diào)算法解析。重構(gòu)子模塊1共需占用乘法器資源3 250個(gè),滿足芯片資源限制條件。重構(gòu)子模塊1結(jié)構(gòu)如圖6所示。
重構(gòu)子模塊2包含5路FFT模塊和數(shù)據(jù)傳輸仲裁模塊,可對5陣源的采樣信號進(jìn)行連續(xù)FFT運(yùn)算,計(jì)算信號幅度相位,并通過SRIO將數(shù)據(jù)傳輸?shù)紻SP實(shí)現(xiàn)信號偵察和干涉儀測向處理。重構(gòu)子模塊2共需占用乘法器資源460個(gè),滿足芯片資源限制條件。重構(gòu)子模塊2結(jié)構(gòu)如圖7所示。
2.4測試結(jié)果分析
對基于部分重構(gòu)方法設(shè)計(jì)的偵察測向處理單元進(jìn)行板級測試,首先將靜態(tài)邏輯部分bit文件燒寫進(jìn)EPROM中,F(xiàn)PGA上電后主動(dòng)從EPROM中加載靜態(tài)邏輯部分配置文件。板卡上電后首先通過DSP配置DSP和FPGA的板內(nèi)路由,通過配置CPS1848將FPGA的3組SRIO與DSP的1組SRIO配置為全交換模式。完成路由配置后將重構(gòu)子模塊1的子bit配置文件從DSP寫入FPGA中,完成對FPGA局部邏輯的電路配置。完成bit加載后,測試當(dāng)前模塊輸出結(jié)果。讀取重構(gòu)子模塊標(biāo)志碼,得到代表重構(gòu)子模塊1的特殊標(biāo)志,即0x12345678與計(jì)數(shù)器的拼接。重構(gòu)區(qū)當(dāng)前功能標(biāo)志如圖8所示。
確認(rèn)重構(gòu)模塊標(biāo)志后對子模塊進(jìn)行功能測試,外部輸入184.32MS/s采樣率,141MHz中頻的信號,DDC下變頻140MHz,使能兩級半帶濾波器,CIC抽取倍數(shù)設(shè)為4,得到1 MHz頻偏,11.52 MS/s采樣率的復(fù)信號。經(jīng)驗(yàn)證,部分重構(gòu)后的模塊功能輸出正確。DSP收到的IQ數(shù)據(jù)如圖9所示。
重復(fù)上述子bit文件配置過程,將重構(gòu)子模塊2的子bit加載到FPGA中,讀取重構(gòu)子模塊標(biāo)志碼,得到代表重構(gòu)子模塊2的特殊標(biāo)志,即0x5555AAAA與計(jì)數(shù)器的拼接。重構(gòu)區(qū)當(dāng)前功能標(biāo)志如圖10所示。
輸入相同的外部信號,對部分重構(gòu)后的重構(gòu)區(qū)數(shù)據(jù)回讀得到頻譜數(shù)據(jù),經(jīng)驗(yàn)證,頻點(diǎn)與輸入信號相對應(yīng)。測試結(jié)果如圖11所示。
本文設(shè)計(jì)通過DSP加FPGA的方式實(shí)現(xiàn)了一種復(fù)用FPGA硬件資源的工程應(yīng)用方案。通過局部動(dòng)態(tài)重構(gòu)設(shè)計(jì),在單片F(xiàn)PGA中實(shí)現(xiàn)了總資源需求超過FPGA本身硬件資源的算法模塊,理論上按照本方案可以實(shí)現(xiàn)FPGA資源的“無限”疊加復(fù)用。為偵察測向、信號分析解調(diào)、信號產(chǎn)生等領(lǐng)域的FPGA設(shè)計(jì)提供了一種具有參考意義的實(shí)現(xiàn)方案。對節(jié)省硬件成本,提高FPGA器件使用靈活性具有積極意義,為復(fù)雜多功能系統(tǒng)的小型化設(shè)計(jì)提供了一種思路。
[1]張宇,范建華,呂遵明,等.FPGA動(dòng)態(tài)部分可重構(gòu)技術(shù)概述[J].計(jì)算機(jī)與現(xiàn)代化,2014,49(3):210-214.
[2]任季中,趙倩.基于FPGA的高速跳頻信號實(shí)時(shí)偵測[J].無線電通信技術(shù), 2013,39(5): 78-80.
[3]姚愛紅,張國印,關(guān)琳.基于動(dòng)態(tài)可重構(gòu)FPGA的自演化硬件概述[J].智能系統(tǒng)學(xué)報(bào),2008(5):436-442.
[4]吳冬梅,何管清,邱昊.基于ARM的DSP與FPGA動(dòng)態(tài)配置方案的設(shè)計(jì)與實(shí)現(xiàn)[J].艦船電子工程,2013,33(7):47-48.
[5]陳曦,沈佐峰.一種可靠的FPGA動(dòng)態(tài)配置方法及實(shí)現(xiàn)[J].通信技術(shù),2012,45(3):105-107.
[6]張煒,楊虎,張爾揚(yáng).一種靈活的實(shí)時(shí)FPGA數(shù)據(jù)配置方法[J].通信技術(shù),2003(2):23-24,27.
[7]覃祥菊,朱明程,張?zhí)?,?FPGA動(dòng)態(tài)可重構(gòu)技術(shù)原理及實(shí)現(xiàn)方法分析[J].電子器件,2004(2):277-282.
[8]李庭勝.基于DSP+FPGA系統(tǒng)在線重構(gòu)技術(shù)[J].信息安全與通信保密,2005(11):62-64.
[9]呂書東,徐光輝. FPGA被動(dòng)串行配置控制器的研究與實(shí)現(xiàn)[J].軍事通信技術(shù),2006,27(4):66-69.