王輝輝 袁子喬 徐 偉
(西安電子工程研究所 西安 710100)
雷達(dá)數(shù)字脈沖壓縮主要有時域和頻域兩種方法,時域脈壓處理方式更直接,處理效率要高于頻域脈壓,同時處理速度也快,頻域脈壓處理時間隨著處理長度的增加成對數(shù)增加,而時域脈壓處理時間只與濾波器階數(shù)有關(guān),與輸入數(shù)據(jù)長度無關(guān)[1]。特別是當(dāng)距離單元較大時,采用頻域?qū)崿F(xiàn)運(yùn)算過程復(fù)雜,延遲大[2]。FPGA在數(shù)字信號處理的硬件實現(xiàn)中扮演著重要角色[3],使用FPGA設(shè)計出特定的結(jié)構(gòu)來實現(xiàn)具體的信號處理算法,能提高系統(tǒng)的算法實現(xiàn)性能和執(zhí)行效率[4],因此對于實時性要求高的雷達(dá)系統(tǒng),一般利用具有在線動態(tài)重構(gòu)能力的FPGA平臺來實現(xiàn)時域脈壓。軟件化雷達(dá)通過開放式架構(gòu)和軟件化設(shè)計能靈活地實現(xiàn)系統(tǒng)擴(kuò)展、更新和升級[5],極大地增加了雷達(dá)靈活性。軟件化雷達(dá)存在功能可重構(gòu)要求,需要重構(gòu)多種可變波形,如果針對不同波形分別獨(dú)立設(shè)計時域脈壓,這將大大增加了FPGA的乘法器和存儲器資源。因此為滿足軟件對波形的可重構(gòu)性,本文提出了一種基于資源復(fù)用的時域脈壓方法。該方法通過復(fù)用FPGA的乘法器和存儲器資源,重構(gòu)濾波器系數(shù)和參數(shù),能實現(xiàn)對多波形多波束多數(shù)據(jù)率的脈壓處理。
系統(tǒng)輸入端信號為
x(t)=s(t)+n(t)
(1)
其中,s(t)為目標(biāo)回波信號,n(t)為系統(tǒng)噪聲。s(t)的頻譜為
(2)
由匹配濾波理論可知,如果時域脈壓濾波器的頻率響應(yīng)為:H(f)=S*(f)e-j2πft0,則濾波器輸出端的信噪比最大,響應(yīng)的脈沖響應(yīng)為
(3)
其中t0是濾波器的時延,因此時域脈沖濾波器的脈沖響應(yīng)為收入信號的鏡像共軛。在忽略噪聲情況下,脈沖壓縮輸出為
y(t)=x(t)*h(t)
(4)
軟件可重構(gòu)的脈壓面臨不同波形、不同數(shù)據(jù)速率、不同波束個數(shù)分時工作的可能,因此進(jìn)入脈壓模塊的數(shù)據(jù)速率是不同的,波束個數(shù)也不同,但對于數(shù)據(jù)速率確定、波形樣式確定的工作模式,時域脈壓的匹配濾波器系數(shù)就是固定的,該數(shù)據(jù)速率該波形條件下的一個波束數(shù)據(jù)的時域脈壓實現(xiàn)所需的資源是固定的。時域脈壓采用濾波器進(jìn)行處理,濾波器的階數(shù)和波形及采樣率是相關(guān)的。基于資源復(fù)用的時域脈壓處理流程圖如圖1所示,將輸入的數(shù)據(jù)進(jìn)行復(fù)制分割得到多個數(shù)據(jù)段,每個段和對應(yīng)的系數(shù)進(jìn)行乘累加操作,最后將多段的結(jié)果合成輸出。通過系統(tǒng)控制重構(gòu)系數(shù),即可實現(xiàn)不同波形的脈壓處理。
圖1 資源復(fù)用時域脈壓處理流程圖
基于Xilinx公司7系列FPGA的資源復(fù)用的時域脈壓詳細(xì)設(shè)計圖如圖2所示,首先對輸入數(shù)據(jù)進(jìn)行緩存,計算并行處理通道個數(shù),并初始化所有處理通道,然后將輸入數(shù)據(jù)寫入多個雙口RAM;其次進(jìn)行數(shù)據(jù)讀處理,根據(jù)讀時間片產(chǎn)生讀地址和讀控制信號,控制數(shù)據(jù)從雙口RAM兩個口正序和反序?qū)ΨQ讀出,并對讀出的數(shù)據(jù)進(jìn)行結(jié)構(gòu)調(diào)整處理,使得多余的數(shù)據(jù)不參與計算,根據(jù)系統(tǒng)選擇重構(gòu)濾波器系數(shù)和控制參數(shù);一般來說,雷達(dá)系統(tǒng)為了節(jié)省系統(tǒng)資源,采用的波形一般都是奇對稱或偶對稱的,最后根據(jù)重構(gòu)系數(shù)的對稱特性,對處理后的數(shù)據(jù)進(jìn)行相應(yīng)的預(yù)加處理,并將預(yù)加后的數(shù)據(jù)和對應(yīng)的濾波器系數(shù)進(jìn)行乘累加操作得到脈壓輸出,通過重構(gòu)濾波器系數(shù)和控制參數(shù)可實現(xiàn)不同波形對相同乘法器的復(fù)用。
圖2 資源復(fù)用時域脈壓詳細(xì)設(shè)計
根據(jù)輸入數(shù)據(jù)速率、系統(tǒng)工作時鐘頻率以及時域脈壓濾波器階數(shù)這三個參數(shù)來計算需要并行處理的通道個數(shù),一個通道對應(yīng)一個雙口RAM。不失一般性,假定當(dāng)前波形的脈沖寬度為L(μs),系統(tǒng)時域脈壓模塊的工作時鐘頻率為X(MHz),脈壓模塊輸入的數(shù)據(jù)率為Y(MHz),M=X/Y,M為大于等于1的正整數(shù)。根據(jù)波形的對稱特性,與當(dāng)前波形相匹配的脈壓匹配濾波器的階數(shù)為:H=ceil(L×X/2),需要同時處理的通道個數(shù)為:N=ceil(H/M),ceil為向上取整。FPGA中存儲數(shù)據(jù)的雙口RAM的深度K應(yīng)當(dāng)大于L×X,并且K為2的整冪次方。由于存儲數(shù)據(jù)的雙口RAM不具備數(shù)據(jù)清零操作,為了不同的脈沖重復(fù)間隔(PRI)之間數(shù)據(jù)進(jìn)行脈壓處理時互不影響,需要在一個新的PRI到來時,對雙口RAM進(jìn)行清零操作,也就是將雙口RAM中的最后面的深度為L×X的緩存區(qū)置零。當(dāng)PRI到來時,產(chǎn)生一個初始化脈沖,該脈沖的周期個數(shù)為H。為了減少清零時間,對N個雙口RAM的兩個輸入口A和B同時進(jìn)行寫操作,A口寫地址從K-H開始寫,B口地址從K-2×H開始寫,這樣大大減少了清零的時間。當(dāng)置零結(jié)束后,寫控制模塊控制數(shù)據(jù)按照X(MHz)的速率從緩存區(qū)讀出,數(shù)據(jù)的有效信號如圖3中的Nd信號所示,當(dāng)有效信號為高電平時,將A口地址進(jìn)行累加操作,增量為1,同時在寫時間片內(nèi)將數(shù)據(jù)同時寫入N個雙口RAM的A口中去,完成數(shù)據(jù)的寫操作。在寫時間片內(nèi),B口不進(jìn)行寫操作。數(shù)據(jù)寫緩存的操作時序見圖3所示。
圖3 數(shù)據(jù)緩存時序圖
數(shù)據(jù)讀處理控制時序如圖4所示,當(dāng)?shù)谝粋€輸入數(shù)據(jù)寫入N個雙口RAM中后,由讀控制模塊產(chǎn)生一個開始脈壓處理的標(biāo)志信號start_flag,該信號在PRI脈沖到來時進(jìn)行復(fù)位操作,也即將start_flag置為低電平。當(dāng)?shù)谝粋€輸入數(shù)據(jù)的Nd到來后,將該信號置為高電平,高電平一直保持到下個PRI脈沖到來。在start_flag為高電平期間進(jìn)行讀操作,每輸入一個新的數(shù)據(jù)也就是一個新的Nd到來時,需要對雙口RAM的A口和B口的讀地址賦初值。當(dāng)?shù)谝粋€Nd到來時,第一個雙口RAM的A口和B口的初始化讀地址為:K-L×X+1和0;第二個雙口RAM的A口和B口的初始化讀地址為:K-L×X+1+(M-1)和K-(M-1);…… 依此類推,第N個雙口RAM的A口和B口的初始化讀地址為:K-L×X+1+(M-1)×(N-1),K-(M-1)×(N-1)。在Nd信號不為高且start_flag信號為高電平的讀時間片內(nèi),所有通道的雙口RAM的A口的讀地址進(jìn)行累加操作,增量為1。所有通道的雙口RAM的B口的讀地址進(jìn)行遞減操作,遞減量為1,如圖4所示。從第二個Nd信號到來開始,每當(dāng)一個新的Nd信號到來時,所有雙口RAM的A口的讀地址在當(dāng)前的基礎(chǔ)上減去一個固定值,該值為(M-2)。所有雙口RAM的B口的讀地址在當(dāng)前的基礎(chǔ)上加上一個固定值,該值為M。然后將當(dāng)前值作為A口和B口下一個讀時間片的初始值,當(dāng)讀時間片到來時,所有RAM的A口的讀地址進(jìn)行累加操作,增量為1,B口的讀地址進(jìn)行遞減操作,遞減量為1。按照上述過程重復(fù)進(jìn)行,由于在FPGA中地址是定點數(shù),雙口RAM的A口和B口的地址循環(huán)范圍為0~(K-1),因此當(dāng)?shù)刂窞镵-1時,如果地址進(jìn)行自加1操作,則下一個地址變?yōu)?;當(dāng)前地址為0,如果地址進(jìn)行遞減1操作,則下一個地址變?yōu)镵-1;因此通過循環(huán)地址的讀操作就可實現(xiàn)數(shù)據(jù)的正序列和反序列對稱輸出。在數(shù)據(jù)讀出后需要對數(shù)據(jù)進(jìn)行整理,只對最后一個通道進(jìn)行處理,其他通道數(shù)據(jù)保持不變。在所有的讀時間片內(nèi),都將最后一個通道的RAM的B口輸出數(shù)據(jù)的前H-(M-1)×(N-1)個數(shù)據(jù)保留,而該通道B口輸出的其他數(shù)據(jù)強(qiáng)制置零。這樣不管對于奇對稱還是偶對稱能保證一個完整的數(shù)據(jù)長度L×X被讀出來進(jìn)行脈壓。數(shù)據(jù)整理模塊輸出數(shù)據(jù)時,讀控制模塊同時控制濾波器系數(shù)讀出,并將系數(shù)和數(shù)據(jù)同時送入乘累加模塊進(jìn)行處理。
圖4 數(shù)據(jù)讀時序圖
本文中的乘累加模塊使用FPGA自帶乘累加的IP核,該IP核可以對輸入口A和D的兩路數(shù)據(jù)進(jìn)行預(yù)加處理,然后將預(yù)加的結(jié)果和B口輸入數(shù)據(jù)相乘,相乘結(jié)果可以從C口輸入和下一個乘的結(jié)果進(jìn)行累加操作并輸出,該IP核的原理圖如圖5所示。
圖5 乘累加器IP核原理圖
將同一個通道的A口和B口整理后的數(shù)據(jù)送入FPGA自帶的乘累加IP核的A口和D口,先進(jìn)行預(yù)加處理,也就是將A口和B口對應(yīng)的數(shù)據(jù)先進(jìn)行加法計算。同時將系數(shù)從系數(shù)RAM中讀出,送入乘累加IP核的B口,預(yù)加的結(jié)果和C口對應(yīng)的系數(shù)相乘得到第一個數(shù)據(jù)的乘結(jié)果,并在一個讀時間片內(nèi)將相乘的結(jié)果反饋到乘累加IP核的C口,實現(xiàn)當(dāng)前讀時間片內(nèi)所有乘結(jié)果的累加,從而得到當(dāng)前讀時間片內(nèi)的當(dāng)前通道的乘累加輸出結(jié)果,最后把N個通道當(dāng)前讀時間片內(nèi)的結(jié)果對應(yīng)相加就得到了該讀時間片內(nèi)最終的乘累加結(jié)果,也就是一個脈壓輸出值。數(shù)據(jù)和系數(shù)都為復(fù)數(shù),因此一個通道需要四個乘累加器。
濾波器系數(shù)可通過軟件進(jìn)行重構(gòu),由于劃分了N個通道,因此濾波器的系數(shù)存儲需要做特別的處理,濾波器系數(shù)矩陣按照M-1 行N列進(jìn)行存儲,第一列存儲濾波器系數(shù)的1~M-1第二列存儲濾波器系數(shù)的M~2×(M-1),依此類推,第N列存儲濾波器系數(shù)的(N-1)×(M-1)+1~H,第N列未填滿的共(M-1)-(H-(N-1)×(M-1))-1 個數(shù)據(jù)進(jìn)行補(bǔ)零處理,在重構(gòu)不同濾波器系數(shù)時,只需要按照次規(guī)則生成對應(yīng)系數(shù)矩陣,并將矩陣寫入FPGA的內(nèi)部存儲器RAM中即可。
讀控制模塊在每個讀時間片內(nèi)對該RAM進(jìn)行讀取,按照當(dāng)前波形對應(yīng)的脈壓濾波器系數(shù)存放的地址依次讀出濾波器系數(shù)。濾波處理是個線性卷積的過程,為直觀可見,本文僅以一個長度為L×X的完整輸入數(shù)據(jù)的乘累加過程示例,乘累加數(shù)據(jù)控制流程實現(xiàn)如圖6所示。在每個讀時間片內(nèi),將第一列系數(shù)和第一個通道的預(yù)加后的數(shù)據(jù)依次相乘并進(jìn)行乘累加,第二列系數(shù)和第二個通道讀時間片內(nèi)的預(yù)加后的數(shù)據(jù)依次相乘并進(jìn)行乘累加,依此類推,第N列系數(shù)和第N個通道讀時間片內(nèi)的預(yù)加后的數(shù)據(jù)依次相乘并進(jìn)行乘累加。重構(gòu)系數(shù)讀取如圖7所示,每個讀時間片內(nèi)都按照行地址進(jìn)行遞增,一次讀出一行的數(shù)據(jù),并把該行的N個數(shù)據(jù)分別對應(yīng)的送到N個通道,依次循環(huán)往復(fù),直到所有輸入數(shù)據(jù)全部處理完畢。
圖6 乘累加處理流程圖
圖7 系數(shù)矩陣讀取示意圖
利用本文的設(shè)計,對某相控陣?yán)走_(dá)的三種波形進(jìn)行仿真驗證。波形1脈沖寬度為1.5μs,波形2脈沖寬度為31μs,波形3脈沖寬度為40μs。三種波形對應(yīng)的帶寬也不同,所形成的波束個數(shù)也不一樣。使用乘法器資源最多的為40μs對應(yīng)的波形。因此該系統(tǒng)設(shè)計只需要滿足40μs所需資源即可,其余消耗資源少的波形都可以通過參數(shù)重構(gòu)來實現(xiàn),不局限于本文仿真的三種波形,只需要按照本文設(shè)計進(jìn)行計算,所需資源少于最大資源,都可以進(jìn)行重構(gòu)脈壓處理。
波形1的脈壓仿真結(jié)果如圖8所示,波形2的脈壓仿真結(jié)果如圖9所示,波形2的脈壓仿真結(jié)果如圖10所示。通過重構(gòu)不同的濾波器系數(shù)和配置參數(shù),在相同資源的條件下實現(xiàn)了三種波形的脈壓結(jié)果,驗證了本文方法的正確性。
圖8 波形1對應(yīng)脈壓仿真結(jié)果
圖9 波形2對應(yīng)脈壓仿真結(jié)果
圖10 波形3對應(yīng)脈壓仿真結(jié)果
以軟件為核心的軟件化雷達(dá)是未來雷達(dá)的重要發(fā)展方向,通過靈活的軟件化重構(gòu)即可實現(xiàn)系統(tǒng)的擴(kuò)展、更新和升級。因此軟件化雷達(dá)存在不同波形不同波束不同數(shù)據(jù)速率的脈壓需求,如果對多個波形的脈壓進(jìn)行分別設(shè)計,則大大增加了FPGA內(nèi)的資源消耗,并且不利用系統(tǒng)重構(gòu)。因此本文設(shè)計了一種基于資源復(fù)用的時域脈壓方法,根據(jù)系統(tǒng)波形和FPGA 資源,計算得到最大化的可用資源,只要脈壓資源小于所使用的最大資源,通過重構(gòu)濾波器系數(shù)和配置參數(shù),在不改變系統(tǒng)設(shè)計的條件下即可實現(xiàn)多波形的脈壓,能滿足對多波形多波束多數(shù)據(jù)率的重構(gòu)需求。本文所提方法在一定程度上推動了軟件化雷達(dá)發(fā)展。