基于ADSP 21160的Hammerhead-PCI在聲誘餌仿真系統(tǒng)中的應(yīng)用
關(guān)鍵詞: 聲誘餌仿真;數(shù)字信號處理器;SHARC; Hammerhead-PCI
2002年5月B版
引言
聲誘餌仿真系統(tǒng)是為評估某型聲誘餌的性能(主要是聲學(xué)性能)而建立的一個(gè)DIS(Distributed Interactive Simulation,分布式交互仿真)系統(tǒng)。它包括導(dǎo)演臺(tái)、魚雷模擬器、海洋信道模擬器、潛艇/聲誘餌模擬器和終端演示等模塊,通過以太網(wǎng)相連而成,圖1是系統(tǒng)框圖。
它通過模擬潛戰(zhàn)中潛艇投放的聲誘餌與來襲魚雷進(jìn)行水聲對抗的過程,來評估聲誘餌對抗魚雷自導(dǎo)的有效性。由于系統(tǒng)側(cè)重于聲信息及其處理過程的模擬,因此信號處理在其中就占有相當(dāng)重要的位置。眾所周知的是,在水聲信號處理過程中,不僅需要處理的信號信息量很大,而且實(shí)時(shí)性要求也很高。因此,在仿真系統(tǒng)中,欲盡可能真實(shí)地再現(xiàn)潛戰(zhàn)的過程,單純利用軟件進(jìn)行信號處理顯然難以滿足實(shí)時(shí)性的要求。為了解決這個(gè)問題,從兩個(gè)方面考慮。一方面為提高傳輸實(shí)時(shí)性,系統(tǒng)中選用3Com公司的3C17702千兆以太網(wǎng)交換機(jī)構(gòu)建了系統(tǒng)的通信模塊硬件結(jié)構(gòu);另一方面采用Bittware公司的Hammerhead PCI信號處理板(它以ADI的ADSP21160信號處理芯片作為CPU),以提高系統(tǒng)中聲信息的處理速度。
圖1 聲誘餌仿真系統(tǒng)框圖
圖2 Hammerhead-PCI及其軟件
圖3 魚雷主動(dòng)自導(dǎo)信號處理流程
圖4 基于FFT的信號卷積過程
圖5 基于FFT的信號相關(guān)過程
Hammerhead PCI及相關(guān)軟件簡介
Hammerhead-PCI是一種PCI接口的數(shù)字信號處理板卡。它由四塊ADSP-21160 SHARC處理器組成,其PCI接口速度可達(dá)66MHz。板卡可支持512MB的SDRAM,一個(gè)緩沖區(qū)以及兩個(gè)PMC槽,可用于處理器擴(kuò)展。
ADSP-21160 DSP工作在100MHz,它有2400MFLOPs的處理能力,與ADSP-2106x SHARC DSP兼容。它通過一50MHz,64位的總線訪問板子上的SDRAM,PCI總線接口,以及其他的SHARC DSP。2MB的FLASH RAM存有引導(dǎo)程序,ADSP-21160可以對其進(jìn)行讀、寫。而512MB的SDRAM作為ADSP-21160的擴(kuò)展存儲(chǔ)器。
Hammerhead PCI的程序開發(fā)相關(guān)軟件主要包括集成開發(fā)和調(diào)試工具VisualDSP及BittWare主機(jī)接口支持工具DSP21K-SF工具箱。圖2是它們之間的關(guān)系圖。
Hammerhead PCI在系統(tǒng)中的應(yīng)用
如“引言”中所述,系統(tǒng)選取Hammerhead PCI的目的是為了提高信號處理的速度,以滿足系統(tǒng)實(shí)時(shí)性的要求。由此并結(jié)合圖1所描述的系統(tǒng)結(jié)構(gòu),為魚雷模擬器、海洋信道模擬器和潛艇/聲誘餌模擬器三個(gè)涉及到聲信息處理的節(jié)點(diǎn)配置了Hammerhead PCI信號處理板。下面以魚雷模擬器為例介紹Hammerhead PCI在系統(tǒng)中的應(yīng)用。
魚雷模擬器中主動(dòng)信號處理流程
魚雷模擬器模擬了潛戰(zhàn)中魚雷攻擊敵潛艇的機(jī)動(dòng)邏輯和魚雷自導(dǎo)尋的邏輯。其中魚雷自導(dǎo)尋的過程其實(shí)就是通過信號處理發(fā)現(xiàn)并控制魚雷跟蹤目標(biāo)的過程。信號處理包括被動(dòng)信號處理和主動(dòng)信號處理兩個(gè)過程:被動(dòng)處理是指魚雷工作在被動(dòng)自導(dǎo)階段時(shí)的處理過程,它主要是針對接收到的目標(biāo)輻射噪聲等信息通過能量積分的方法來得到目標(biāo)的方位、距離等參數(shù);主動(dòng)處理則是指魚雷工作在主動(dòng)自導(dǎo)階段時(shí)的處理過程,主要是通過對接收到的目標(biāo)(對魚雷尋的信號的)回波信號經(jīng)一定的處理后和已知的先驗(yàn)相關(guān)樣本信號進(jìn)行互相關(guān)運(yùn)算,由此得到有關(guān)目標(biāo)的具體信息。相比較而言,主動(dòng)處理過程中要滿足實(shí)時(shí)性的要求就很有必要加入信號處理板,實(shí)際中即是這樣做的。圖3給出了主動(dòng)信號處理的流程圖。
應(yīng)用分析
由上小節(jié)可見,需要運(yùn)用DSP信號處理板進(jìn)行數(shù)據(jù)處理的過程包括混頻、帶通濾波、低采樣和互相關(guān)等(生成相關(guān)樣本可以放在程序初始化過程中),由于這些過程循環(huán)往復(fù),并且頻率較高。
在每一個(gè)大的階段中,又都可以分為幾個(gè)小步驟。其中帶通濾波和互相關(guān)兩個(gè)過程包含了基于FFT的卷積和相關(guān)處理,而這兩個(gè)處理階段顯然占用最多的時(shí)間。具體應(yīng)用中,將一些基礎(chǔ)的運(yùn)算過程集中起來,作為運(yùn)算的基礎(chǔ),放在一個(gè)名為“functions.h”的C頭文件中,而將反復(fù)調(diào)用的主過程作為生成DSP可執(zhí)行文件的C文件。
根據(jù)需求分析的結(jié)果,寫出算法的C程序并在PC機(jī)平臺(tái)上調(diào)試通過。然后將程序移植到DSP程序編輯環(huán)境,經(jīng)過和DSP的聯(lián)調(diào)正常后生成DSP可執(zhí)行文件。
在此過程中,一個(gè)需要特別注意的問題是DSP中地址分配必須清晰、合理。表1列出了魚雷自導(dǎo)模塊中有關(guān)DSP程序的變量地址分配。
其中SignalLen,SamplingRate,ResultLength,done等4個(gè)參數(shù)在聲明時(shí)都作為一維數(shù)組,是為了與后面的CorrelationData和data的聲明保持一致。
PC機(jī)和DSP的通信由HIL(Host Interface Library,主機(jī)接口庫)來完成。在這里,用到的HIL函數(shù)主要有DSP的打開、關(guān)閉、配置、程序下載、(待處理的)數(shù)據(jù)下載、數(shù)據(jù)(處理結(jié)果)上傳等。下面為Visual C++程序中有關(guān)HIL的一段:
void CTorpedoDoc::ActiveProcess(float* data, int SignalLen, float SamplingRate, float*
result, int ResultLength)
{
...
PDSP21K dsp = dsp21k_open_by_id(0, 1);//打開DSP
dsp21k_reset_bd(dsp);//復(fù)位DSP
dsp21k_cfg_proc(dsp);//配置DSP
dsp21k_dl_exe(dsp, "ActiveProcess.dxe");//將可執(zhí)行文件下載到DSP上
... ... ... ... ... ... ... ... ... ... ... ... ... ...//此處為回波接收線程
dsp21k_dl_int(dsp, 0x800020, SignalLen);//將信號長度數(shù)據(jù)下載到DSP上
dsp21k_dl_int(dsp, 0x800021, SamplingRate);//將采樣率數(shù)據(jù)下載到DSP上
dsp21k_dl_flts(dsp, 0x800100, 256,CorrelationData);//將相關(guān)樣本信號數(shù)據(jù)下載到DSP上
dsp21k_dl_flts(dsp, 0x801000, SignalLen, data);//將回波信號數(shù)據(jù)下載到DSP上
dsp21k_start(dsp);//啟動(dòng)ActiveProcess.dxe
while(dsp21k_ul_int(dsp, 0x800023) != 1);//等待ActiveProcess.dxe執(zhí)行完畢
//ActiveProcess.dxe執(zhí)行完繼續(xù)
ResultLength = dsp21k_ul_int(dsp, 0x800022);//上傳處理結(jié)果數(shù)據(jù)長度
dsp21k_ul_flts(dsp, 0x801000, ResultLength, result);//上傳處理結(jié)果給result指針
... ... ... ... ... ... ... ... ... ... ... ... ... ...//轉(zhuǎn)去相關(guān)處理
}
Hammerhead PCI在系統(tǒng)中的應(yīng)用效果
在整個(gè)信號處理的程序中,用到最多的而且也是最占用處理時(shí)間的過程有信號的卷積和信號的互相關(guān)。其中在海洋聲信道的處理過程中,大量用到了卷積積分運(yùn)算;在魚雷自導(dǎo)的信號處理過程中,則更多地使用相關(guān)運(yùn)算。兩者都采用了基于FFT(Fast Fourier Transform,快速Fourier變換)的算法,即利用FFT的性質(zhì),進(jìn)行時(shí)域 - 頻域 - 時(shí)域的變換,以減小運(yùn)算中乘法次數(shù)。運(yùn)算過程分別如圖4、5:
圖4中,f(k)為輸入海洋聲信道的采樣信號序列,h(k)為海洋聲信道的沖激響應(yīng)函數(shù)的采樣序列。
圖5中,f(k)為回波信號的采樣序列,即3.3小節(jié)程序中data指針;g(k)為相關(guān)樣本序列,即其中的CorrelationData指針。G*(ejω)為FFT(g(k))的共扼。R(f(k), g(k))表示f(k)和g(k)的互相關(guān)。
為測試DSP信號處理的效果,另外編制了程序“Sharc.dsw”。程序針對同樣的信號相關(guān)處理過程,分別在單獨(dú)利用Visual C++編程和通過DSP處理的條件下記錄重復(fù)執(zhí)行100次所耗時(shí)間,共測試8次,結(jié)果如表2。其中DSP處理時(shí)間不包括可執(zhí)行程序下載及前面的DSP初始化工作。
由上表可見,使用DSP處理的平均時(shí)間僅為不使用時(shí)的10%弱,大大提高了信號處理的速度。信號卷積的結(jié)果與此類似。需要指出的是,上表中的時(shí)間并不是全部用來進(jìn)行數(shù)值計(jì)算的,還包括循環(huán)所占用的時(shí)間。因此,實(shí)際的處理時(shí)間還要更短些。
結(jié)語
綜上所述,由于采用了基于ADSP21160的數(shù)字信號處理板Hammerhead-PCI,使得信號處理速度得到提高,從而系統(tǒng)的運(yùn)行效率也相應(yīng)得到了很大提高;加上所選高效通信硬件,系統(tǒng)基本實(shí)現(xiàn)了實(shí)時(shí)仿真的目的。本文所描述的系統(tǒng)目前已經(jīng)完成,運(yùn)行良好?!?
參考文獻(xiàn)
1 魯欣. 數(shù)字電路設(shè)計(jì)方案的比較與選擇,電子技術(shù)應(yīng)用,2002,28(1):6-8
2 趙俊渭. 聲納合成環(huán)境模擬與仿真,作戰(zhàn)模擬與仿真技術(shù)學(xué)術(shù)研討會(huì)論文集,2000,青島
3 邵國華. 水面艦艇水聲對抗系統(tǒng)仿真配置研究,艦船科學(xué)技術(shù),1999,167(3):21-24
評論