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