彭華仁,呂天志
(中電科思儀科技股份有限公司,山東青島,266555)
監(jiān)測(cè)接收機(jī)是無(wú)線電監(jiān)測(cè)、分析與定位等方面的專用設(shè)備,在整個(gè)無(wú)線電監(jiān)測(cè)系統(tǒng)中承擔(dān)著信號(hào)搜索與接收等信息收集工作,是無(wú)線電管理的重要工具。無(wú)線電監(jiān)測(cè)是要探測(cè)、搜索、截獲無(wú)線電管理區(qū)域內(nèi)的無(wú)線電信號(hào),通常工作方式為在設(shè)定的無(wú)線電頻段內(nèi)進(jìn)行快速掃描搜索,發(fā)現(xiàn)無(wú)線電信號(hào)并進(jìn)行分析。出于信息安全的角度,現(xiàn)代的各種信號(hào)發(fā)射設(shè)備普遍采用突發(fā)的方式對(duì)外發(fā)射信號(hào),這些信號(hào)大都具有突發(fā)性、瞬態(tài)性的特定,對(duì)于監(jiān)測(cè)接收機(jī)而言,這些信號(hào)的頻率、功率、出現(xiàn)時(shí)間、持續(xù)時(shí)間都是未知的,為提高這些信號(hào)的截獲概率,就要求監(jiān)測(cè)接收機(jī)必須具有寬頻段的快速掃描能力。
監(jiān)測(cè)接收機(jī)的寬頻段快速掃描能力通常以其全景掃描模式的掃描速度進(jìn)行衡量,全景掃描是接收機(jī)以最大FFT帶寬在設(shè)定的頻率范圍內(nèi)進(jìn)行連續(xù)掃描,每次掃描以最大帶寬的頻率窗口連續(xù)相接,從而橫貫整個(gè)預(yù)定義的掃描范圍。每次掃描包括參數(shù)設(shè)置、硬件采集、軟件數(shù)據(jù)處理等幾個(gè)部分,掃描花費(fèi)時(shí)間越短,掃描速度越快。本文主要從掃描流程優(yōu)化、多線程并行數(shù)據(jù)處理、軟件代碼優(yōu)化三個(gè)方面進(jìn)行重點(diǎn)設(shè)計(jì),以減小監(jiān)測(cè)接收機(jī)的數(shù)據(jù)處理時(shí)間,實(shí)現(xiàn)監(jiān)測(cè)接收機(jī)寬頻段的快速掃描。
目前,監(jiān)測(cè)接收機(jī)大多采用數(shù)字中頻體制,其架構(gòu)如圖1所示。該架構(gòu)的基本工作流程是將天線接收的無(wú)線電信號(hào)先經(jīng)過(guò)預(yù)選濾波器進(jìn)行預(yù)選濾波,再與本地振蕩器產(chǎn)生的本振信號(hào)進(jìn)行混頻,生成中頻信號(hào),再經(jīng)過(guò)中頻濾波后進(jìn)行采樣,然后利用FPGA進(jìn)行數(shù)字中頻處理,產(chǎn)生所需的頻譜數(shù)據(jù),交由嵌入式CPU進(jìn)行后續(xù)處理與顯示。根據(jù)實(shí)現(xiàn)方式,可將監(jiān)測(cè)接收機(jī)的整個(gè)掃描過(guò)程大體分為硬件參數(shù)設(shè)置、硬件采集與軟件處理等幾個(gè)部分,為提高掃描速度,需要同步減小參數(shù)設(shè)置時(shí)間、硬件采集時(shí)間以及軟件處理時(shí)間。本文主要針對(duì)與軟件有關(guān)的掃描控制流程、數(shù)據(jù)處理等進(jìn)行設(shè)計(jì),以減小軟件處理時(shí)間。
監(jiān)測(cè)接收機(jī)全景掃描模式下的掃描流程一般包括硬件參數(shù)設(shè)置、FPGA測(cè)量、中斷響應(yīng)、數(shù)據(jù)讀取與處理等幾個(gè)部分。啟動(dòng)全景掃描后,整個(gè)掃描頻段將由多次掃描拼接完成,每個(gè)掃描由CPU首先設(shè)置硬件參數(shù)、啟動(dòng)FPGA測(cè)量,然后FPGA進(jìn)行采集與數(shù)字中頻處理,產(chǎn)生頻譜數(shù)據(jù)并通過(guò)中斷通知CPU讀取數(shù)據(jù),CPU讀取頻譜數(shù)據(jù),最后顯示處理并計(jì)算下一個(gè)掃描頻點(diǎn)的硬件控制參數(shù)。CPU軟件與監(jiān)測(cè)接收機(jī)硬件之間的交互過(guò)程如圖2所示。圖中灰色虛線部分表示在整個(gè)掃描流程中需要重復(fù)執(zhí)行的過(guò)程。
圖1 數(shù)字中頻體制的監(jiān)測(cè)接收機(jī)架構(gòu)
圖2 CPU軟件與監(jiān)測(cè)接收機(jī)硬件交互過(guò)程
圖3 改進(jìn)后的CPU軟件與監(jiān)測(cè)接收機(jī)硬件交互過(guò)程
上述的掃描控制流程,由CPU軟件負(fù)責(zé)整個(gè)掃描流程的調(diào)度,每個(gè)掃描頻點(diǎn)的硬件參數(shù)設(shè)置、硬件采集、數(shù)據(jù)處理過(guò)程都是串行進(jìn)行的,F(xiàn)PGA在完成當(dāng)前掃描頻點(diǎn)的采集與數(shù)字中頻處理之后,需要等待CPU軟件處理完成當(dāng)前頻點(diǎn)的頻譜數(shù)據(jù)之后,才能啟動(dòng)下一掃描頻點(diǎn)的硬件參數(shù)設(shè)置、采集與處理。為了提高掃描速度,可對(duì)該掃描控制流程進(jìn)行優(yōu)化,將掃描流程的控制權(quán)交由FPGA完成,CPU軟件負(fù)責(zé)批量設(shè)置硬件控制參數(shù)、讀取頻譜數(shù)據(jù)、顯示處理等工作,優(yōu)化后的CPU軟件與監(jiān)測(cè)接收機(jī)硬件之間的交互過(guò)程如圖3所示。
圖4 CPU軟件掃描流程圖
改進(jìn)后的掃描流程,其工作過(guò)程大體為:CPU軟件首先根據(jù)用戶設(shè)定的掃描頻段計(jì)算所有掃描頻點(diǎn)對(duì)應(yīng)的硬件參數(shù),包括測(cè)量參數(shù)、通道控制參數(shù)和本振控制參數(shù)等,并批量發(fā)送給FPGA,后續(xù)掃描流程的控制交由FPGA負(fù)責(zé),然后啟動(dòng)測(cè)量,并主動(dòng)查詢是否有頻譜數(shù)據(jù),若無(wú)繼續(xù)查詢,若有則進(jìn)行頻譜數(shù)據(jù)的后續(xù)處理,處理完成后繼續(xù)查詢。在這一掃描流程中可實(shí)現(xiàn)硬件采集與CPU軟件數(shù)據(jù)處理的并行處理。CPU軟件的掃描流程圖如圖4所示。
由于FPGA不適合對(duì)數(shù)據(jù)進(jìn)行對(duì)數(shù)運(yùn)算等操作,F(xiàn)PGA產(chǎn)生的頻譜數(shù)據(jù)為線性數(shù)據(jù),而最終顯示到用戶界面的數(shù)據(jù)為對(duì)數(shù)數(shù)據(jù),為此需要進(jìn)行數(shù)據(jù)的轉(zhuǎn)換,同時(shí)還需要將全景掃描過(guò)程中每次掃描產(chǎn)生的頻譜數(shù)據(jù)映射到顯示屏幕的像素點(diǎn)上,頻譜數(shù)據(jù)個(gè)數(shù)與顯示像素點(diǎn)數(shù)量不一致,需要進(jìn)行插值或抽取處理。這些對(duì)數(shù)據(jù)的后續(xù)處理均在CPU軟件中完成,當(dāng)用戶選擇的分辨率帶寬較小時(shí),每次掃描產(chǎn)生的頻譜數(shù)據(jù)量會(huì)比較大,數(shù)據(jù)的處理時(shí)間就會(huì)比較長(zhǎng),因此需要采用多線程并行處理的方式進(jìn)行數(shù)據(jù)的并行處理,以加快數(shù)據(jù)處理速度。
圖5 多線程數(shù)據(jù)處理流程
根據(jù)功能實(shí)現(xiàn),將監(jiān)測(cè)接收機(jī)CPU軟件劃分為人機(jī)界面顯示線程(也是軟件的主線程)、掃描控制線程、數(shù)據(jù)處理線程。其中,數(shù)據(jù)處理線程根據(jù)頻譜數(shù)據(jù)量的大小劃分為多個(gè)數(shù)據(jù)處理子線程,將頻譜數(shù)據(jù)進(jìn)行分段并行處理。數(shù)據(jù)處理線程的處理流程如圖5所示。
其中,測(cè)量數(shù)據(jù)處理專用線程池中軟件處理子線程的個(gè)數(shù)n可根據(jù)軟件運(yùn)行平臺(tái)硬件性能進(jìn)行優(yōu)化配置。
CPU軟件采用C++語(yǔ)言進(jìn)行編碼實(shí)現(xiàn),在編碼時(shí)采用代碼優(yōu)化設(shè)計(jì),以提高程序的執(zhí)行效率,減小代碼的運(yùn)行時(shí)間。本軟件在編碼時(shí)采用了如下的優(yōu)化方法:
(1)選用合適的數(shù)據(jù)類型
由于本軟件中使用了大量的乘法運(yùn)算,為此,筆者首先在所選CPU平臺(tái)上進(jìn)行了各種數(shù)據(jù)類型的乘法運(yùn)算效率的測(cè)試,然后根據(jù)測(cè)試結(jié)果,在保證數(shù)據(jù)精度和數(shù)據(jù)范圍的前提下,選取合適的數(shù)據(jù)類型。部分測(cè)試代碼如圖6所示。
圖6 測(cè)試乘法運(yùn)算效率代碼
(2)使用內(nèi)聯(lián)函數(shù)減少函數(shù)調(diào)用
對(duì)于普通函數(shù)的調(diào)用,程序會(huì)先從主函數(shù)的調(diào)用點(diǎn)跳轉(zhuǎn)去執(zhí)行被調(diào)函數(shù),等被調(diào)函數(shù)執(zhí)行完后,再返回主函數(shù)繼續(xù)執(zhí)行,這會(huì)占用一些時(shí)間。而使用內(nèi)聯(lián)函數(shù),可以節(jié)省這部分時(shí)間。為此,編碼時(shí)對(duì)于頻繁調(diào)用的簡(jiǎn)單函數(shù)加入inline關(guān)鍵字。
(3)使用memcpy語(yǔ)句代替for循環(huán)
對(duì)于循環(huán)賦值語(yǔ)句,使用memcpy語(yǔ)句代替for循環(huán)語(yǔ)句,可減少程序執(zhí)行時(shí)間。
(4)循環(huán)展開(kāi)
循環(huán)展開(kāi)指將循環(huán)計(jì)數(shù)展開(kāi),以減少循環(huán)迭代的次數(shù)。循環(huán)展開(kāi)代碼示例如下所示。
展開(kāi)前 展開(kāi)后
for(int i=0; i<1000; i++) for(int i=0; i<1000; i+5)
{ {
a +=b; a += b;
} a += b;
a += b;
a += b;
a += b;
}
上述所示的循環(huán)展開(kāi)示例,迭代次數(shù)可由1000次減少到200次,但是代碼量會(huì)相應(yīng)的增加,同時(shí)實(shí)際代碼中的循環(huán)體也不會(huì)像示例中的這么簡(jiǎn)單,因此實(shí)際使用時(shí)需要根據(jù)實(shí)際情況進(jìn)行循環(huán)展開(kāi)。
上文所述的快速掃描設(shè)計(jì)方法已在國(guó)產(chǎn)某型手持式監(jiān)測(cè)接收機(jī)上進(jìn)行了實(shí)現(xiàn),筆者按照ITU-R SM.1839-1建議書(shū)《測(cè)量無(wú)線電監(jiān)測(cè)接收機(jī)掃描速度的測(cè)試程序》中推薦的方法對(duì)該手持式監(jiān)測(cè)接收機(jī)全景掃描模式下的掃描速度進(jìn)行了實(shí)際測(cè)試。測(cè)試過(guò)程為:設(shè)置信號(hào)源為頻率掃描,掃描起始頻率3GHz,終止頻率6GHz,輸出功率-30dBm,掃描點(diǎn)數(shù)101,每個(gè)掃描頻點(diǎn)的駐留時(shí)間為150ms,設(shè)置手持式監(jiān)測(cè)接收機(jī)掃描模式為全景掃描,起始頻率3GHz,終止頻率6GHz,顯示最大保持為開(kāi),啟動(dòng)掃描,若監(jiān)測(cè)接收機(jī)能夠全部捕獲信號(hào)源每個(gè)頻點(diǎn)的輸出信號(hào),即可根據(jù)上述設(shè)置參數(shù)計(jì)算得出監(jiān)測(cè)接收機(jī)的掃描速度,若不能全部捕獲則需要增大信號(hào)源的駐留時(shí)間,直至監(jiān)測(cè)接收機(jī)能夠捕獲到全部信號(hào)。監(jiān)測(cè)接收機(jī)的測(cè)試過(guò)程圖如圖7所示。
圖7 掃描速度測(cè)試圖
通過(guò)測(cè)試圖可以看出,當(dāng)信號(hào)源每個(gè)頻點(diǎn)的駐留時(shí)間為150ms時(shí),監(jiān)測(cè)接收機(jī)能夠全部捕獲信號(hào)源每個(gè)頻點(diǎn)的信號(hào),為此,可以通過(guò)計(jì)算得出監(jiān)測(cè)接收機(jī)的掃描速度為3GHz/150ms,即20GHz/s,使用同樣測(cè)試方法對(duì)應(yīng)用該快速掃描設(shè)計(jì)技術(shù)之前的手持式監(jiān)測(cè)接收機(jī)全景掃描速度進(jìn)行測(cè)試,當(dāng)信號(hào)源駐留時(shí)間提高到1200ms左右時(shí),接收機(jī)才能夠全部捕獲每個(gè)駐留頻點(diǎn)的輸出信號(hào),由此可見(jiàn)使用該快速掃描設(shè)計(jì)技術(shù)后,掃描速度相比之前提高了近8倍,該設(shè)計(jì)技術(shù)行之有效。
本文針對(duì)監(jiān)測(cè)接收機(jī)快速掃描的測(cè)試需求,研究了掃描流程優(yōu)化設(shè)計(jì)、軟件多線程并行處理設(shè)計(jì)以及軟件代碼優(yōu)化設(shè)計(jì)技術(shù),并將這些設(shè)計(jì)技術(shù)應(yīng)用到了國(guó)產(chǎn)某手持式監(jiān)測(cè)接收機(jī)上,實(shí)現(xiàn)了該監(jiān)測(cè)接收機(jī)的寬頻段快速掃描。同時(shí),這些設(shè)計(jì)技術(shù)還可以應(yīng)用到其他同類型的監(jiān)測(cè)接收機(jī)類產(chǎn)品中。