王曉燕
(中國(guó)電子科技集團(tuán)公司第二十研究所, 陜西 西安 710068)
隨著雷達(dá)技術(shù)的不斷發(fā)展,對(duì)雷達(dá)信號(hào)處理的實(shí)時(shí)性和數(shù)據(jù)精確性要求越來越高,這就使得雷達(dá)信號(hào)處理在處理的數(shù)據(jù)量和運(yùn)算量方面壓力大大增加。以前采用的多片單核DSP 實(shí)現(xiàn)強(qiáng)大的信號(hào)處理功能的方法,不但結(jié)構(gòu)復(fù)雜,硬件量大,且已經(jīng)不能滿足一些大數(shù)據(jù)量處理的實(shí)時(shí)性要求,因此,多核DSP 的并行處理就成為發(fā)展趨勢(shì),再加上國(guó)產(chǎn)芯片的快速發(fā)展及我們對(duì)國(guó)產(chǎn)芯片的需求,使得我們對(duì)國(guó)產(chǎn)FT_M6678芯片的多核并行處理開發(fā)顯得尤為重要。
FT_M6678 芯片不但具有高達(dá)1 GHz 處理時(shí)鐘、8個(gè)核的高速處理能力;還擁有豐富的接口:srio 接口、emif 總線接口、網(wǎng)口,可外掛DDR 等,這讓基于FT_M6678 芯片的雷達(dá)信號(hào)處理的處理能力大大提高,讓自主搜索并精確跟蹤目標(biāo)的功能在一部雷達(dá)上實(shí)現(xiàn)成為可能。本文中就將對(duì)基于FT_M6678 的信號(hào)處理板卡的設(shè)計(jì)及實(shí)現(xiàn)進(jìn)行介紹,并在該板卡上實(shí)現(xiàn)雷達(dá)自主搜索并精確跟蹤功能。
本文中的信號(hào)處理板卡是典型的一片F(xiàn)PGA+兩片DSP(FT_M6678)的實(shí)時(shí)信號(hào)處理架構(gòu),每片DSP外掛DDR3 以擴(kuò)展存儲(chǔ)空間,F(xiàn)PGA 完成兩個(gè)波束的運(yùn)動(dòng)補(bǔ)償、脈沖壓縮、相參積累,每個(gè)幀周期內(nèi),每個(gè)DSP 完成一個(gè)波束的自主搜索功能,兩個(gè)DSP 均完成自主搜索后,可能會(huì)搜到若干目標(biāo),需將兩個(gè)波束中的重復(fù)目標(biāo)剔除,剩余目標(biāo)的速度,距離解模糊后,將距離、速度及角度信息在幀周期間滑窗,滿足3/5準(zhǔn)則的目標(biāo)即認(rèn)為搜到的真實(shí)目標(biāo)。
本文所實(shí)現(xiàn)的雷達(dá)信號(hào)處理機(jī)工作流程是:FPGA 通過光纖接收下變頻后的基帶雷達(dá)回波數(shù)據(jù)和雷達(dá)工作控制包,對(duì)寬帶信號(hào)進(jìn)行運(yùn)動(dòng)補(bǔ)償、脈沖壓縮、相參積累和移頻處理,以提高距離速度的檢測(cè)精度和目標(biāo)的信噪比;然后通過SRIO 接口將數(shù)據(jù)發(fā)送給高性能DSP,即FT_M6678,DSP 再根據(jù)工作狀態(tài),將數(shù)據(jù)分配到不同的核中進(jìn)行自主搜索或跟蹤,將處理結(jié)果通過SRIO 接口送給中心控制系統(tǒng)。
為了更好地監(jiān)測(cè)FT_M6678 的工作狀態(tài),我們還設(shè)計(jì)了信號(hào)處理自動(dòng)檢測(cè)功能,將FT_M6678 的上電加載狀態(tài)、通信狀態(tài),接口狀態(tài)及工作溫度等信息實(shí)時(shí)通過emif 總線發(fā)送給FPGA,和FPGA 的通信狀態(tài)等信息一起由FPGA 通過自定義串口或I2C 總線送出,可實(shí)時(shí)檢測(cè)板卡工作狀態(tài)。再利用FT_M6678 的千兆以太網(wǎng)接口,可將目標(biāo)的A 顯數(shù)據(jù)送出顯示,直觀觀測(cè)到目標(biāo)的運(yùn)動(dòng)狀態(tài)。
FT_M6678 共有8 個(gè)核[1-2],工作主頻高達(dá)1 GHz,每個(gè)核都有獨(dú)立的L1 和L2 緩存,8 核共享4 MB 內(nèi)存空間,還可外掛64 位2 GB 的DDR3 外部緩存,且功耗較小,各核可以并行運(yùn)行,也可以利用核間中斷流水運(yùn)行,支持定點(diǎn)、浮點(diǎn)運(yùn)算,為我們的硬件設(shè)計(jì)提供了很大的靈活設(shè)計(jì)空間。本文主要的應(yīng)用如下頁(yè)圖2,兩片DSP 具有不同的ID 編號(hào),每片DSP 根據(jù)ID號(hào)來進(jìn)行不同數(shù)據(jù)和狀態(tài)的處理,在自主搜索狀態(tài)下兩片DSP 處理過程相同,數(shù)據(jù)不同,跟蹤狀態(tài)只需一片DSP 處理,另一片DSP 處于待機(jī)狀態(tài)。下頁(yè)圖2 是一片DSP 的處理過程流程圖。
核0 通過SRIO 接口接收雷達(dá)回波經(jīng)過脈沖壓縮后的數(shù)據(jù)及控制包,將控制包和數(shù)據(jù)分別存儲(chǔ)在MSMC 空間的自定義位置,接收完成后,等每個(gè)核都準(zhǔn)備好,然后沿距離方向?qū)?shù)據(jù)分段,由核1~核7并行對(duì)各段數(shù)據(jù)進(jìn)行搜索。搜索時(shí),本文采用的是二維滑窗式的噪聲基底計(jì)算方法,然后再計(jì)算信噪比,信噪比符合要求認(rèn)為發(fā)現(xiàn)目標(biāo),對(duì)發(fā)現(xiàn)的目標(biāo)距離速度進(jìn)行解算,因?yàn)榭赡艽嬖诰嚯x速度模糊,因次還要進(jìn)行解模糊計(jì)算[3],得到目標(biāo)的真實(shí)距離和速度,所有數(shù)據(jù)處理完成后,將每個(gè)核搜索到的全部目標(biāo)數(shù)據(jù)分別存放在指定的MSMC 空間,然后核0 再對(duì)搜索到的所有目標(biāo)進(jìn)行數(shù)據(jù)融合,找出符合要求的一個(gè)或數(shù)個(gè)目標(biāo)。
兩片DSP 都處理完成后,再將兩個(gè)DSP 搜到的目標(biāo)的距離、速度、角度進(jìn)行3/5 準(zhǔn)則判斷,符合3/5準(zhǔn)則及認(rèn)為該目標(biāo)確實(shí)存在,并將兩個(gè)DSP 搜到的真實(shí)目標(biāo)即兩個(gè)波束中的目標(biāo)中重復(fù)的目標(biāo)剔除,然后就可選擇目標(biāo)進(jìn)行跟蹤。
在工程應(yīng)用中,通過對(duì)國(guó)產(chǎn)FT_M6678 芯片的多核使用,發(fā)現(xiàn)該芯片在多核應(yīng)用中,其內(nèi)存空間的配置也需要特別考慮和注意,由單核應(yīng)用改為多核應(yīng)用時(shí)(如圖4 所示),我們發(fā)現(xiàn)程序加載[4-5]空間與核0中全局變量空間發(fā)生沖突,具體情況如下。
設(shè)計(jì)調(diào)試完成后,都要將代碼固化到FLASH 中,芯片復(fù)位或重新上電后,由核0 去執(zhí)行加載程序,并負(fù)責(zé)將各個(gè)核的代碼加載到合適位置(例如:EMIF RAM 空間,DDR 空間,片內(nèi)共享存儲(chǔ),L2 SRAM 等等),運(yùn)行加載程序時(shí),還會(huì)臨時(shí)占用核0 L2 SRAM和MSMC 的部分空間。
當(dāng)前的雷達(dá)信號(hào)處理功能和需處理的數(shù)據(jù)量都比較大,因此,程序量也相應(yīng)占用較大的空間存儲(chǔ),編程所需的變量會(huì)較多,這時(shí)如果還把變量空間默認(rèn)放在L2 SRAM,可能會(huì)因?yàn)榭臻g沖突而導(dǎo)致程序加載后不成功或加載成功后程序運(yùn)行結(jié)果出錯(cuò)。因此,最好將代碼(code memory)空間定義在L2 SRAM,變量(data memory)和堆棧(stack memory)空間定義在指定的MSMC 空間XDCADDR 中,如圖3 所示。
圖5 是變量和堆??臻g設(shè)置在L2 SRAM 時(shí),目指速度為430m/s,雷達(dá)信號(hào)處理檢測(cè)到的目標(biāo)速度變化曲線,下頁(yè)圖6 是變量和堆??臻g設(shè)置在XDCADDR 時(shí)檢測(cè)到的目標(biāo)速度變化曲線,和單核處理結(jié)果基本一致,觀察圖5 和下頁(yè)圖6 前段數(shù)據(jù)可發(fā)現(xiàn),由于空間設(shè)置的不合理,會(huì)導(dǎo)致目標(biāo)檢測(cè)結(jié)果更新不連續(xù)。
多核下用JTAG 調(diào)試時(shí),和單核調(diào)試還有一個(gè)區(qū)別,對(duì)需要實(shí)施刷新的調(diào)試變量在程序中進(jìn)行cache語句處理或緩存區(qū)的開放,否則變量顯示不會(huì)進(jìn)行刷新。
這個(gè)問題只影響調(diào)試時(shí)對(duì)所需觀察變量的實(shí)時(shí)顯示,當(dāng)程序停止運(yùn)行時(shí),變量會(huì)更新為最終結(jié)果,不會(huì)影響程序的正常運(yùn)行結(jié)果。多核運(yùn)行時(shí),每個(gè)核都會(huì)占用JTAG 資源,而核0 作為主核還要負(fù)責(zé)整個(gè)芯片對(duì)外的所有接口的正常輸入輸出及控制,也需要占用大量JTAG 資源。因此,在用多核工作時(shí),盡量在核0 上不要進(jìn)行大量的運(yùn)算,在變量顯示列表中盡量顯示較少的核0 的變量,對(duì)必須在變量列表中顯示的核0 的變量,在程序中該變量更新新值的位置加cache語句進(jìn)行刷新即可。
本文基于國(guó)產(chǎn)FT_M6678 芯片進(jìn)行了雷達(dá)信號(hào)處理機(jī)的設(shè)計(jì)與實(shí)現(xiàn),并結(jié)合工程實(shí)際,對(duì)國(guó)產(chǎn)FT_M6678 芯片的多核在應(yīng)用出現(xiàn)的部分問題進(jìn)行了分析,并給出了解決這些問題的基本方法,為更好地應(yīng)用FT_M6678 多核芯片起到了一定的奠定了基礎(chǔ)