張躍為,于宗光,陸皆晟
1.江南大學(xué)物聯(lián)網(wǎng)工程學(xué)院,江蘇無錫,214122;2.中科芯集成電路有限公司,江蘇無錫,214035
頻譜實(shí)時(shí)檢測在頻譜管理的實(shí)施中扮演著至關(guān)重要的角色,尤其在電磁頻譜管理、非法信號(hào)突變排查中顯得尤為關(guān)鍵[1]。該設(shè)計(jì)致力于研究一種基于快速傅里葉變換(FFT)的實(shí)時(shí)頻譜檢測系統(tǒng),該系統(tǒng)能夠在連續(xù)的分析時(shí)間段內(nèi)獲得信號(hào)的頻率和幅度信息。相對(duì)于傳統(tǒng)系統(tǒng),該系統(tǒng)對(duì)于檢測時(shí)段內(nèi)的突發(fā)瞬態(tài)信號(hào)具有出色的實(shí)時(shí)檢測效果。此外,該系統(tǒng)還可用于對(duì)其他信號(hào)源識(shí)別系統(tǒng)設(shè)計(jì)的缺陷進(jìn)行診斷和性能測試,呈現(xiàn)其獨(dú)特的優(yōu)勢[2]。
該設(shè)計(jì)獲取頻譜的方式為快速傅里葉變換。在這種方式下,待測信號(hào)經(jīng)由AD9361數(shù)模轉(zhuǎn)換后在FPGA上完成數(shù)據(jù)緩存,緩存的數(shù)據(jù)流進(jìn)入頻譜處理模塊進(jìn)行計(jì)算,計(jì)算完成后將數(shù)據(jù)通過DMA寫模塊寫入U(xiǎn)ART打印到上位機(jī)顯示頻譜。此方案能夠完美利用FPGA上豐富的硬件邏輯資源去編寫相應(yīng)的模塊工作時(shí)序完成系統(tǒng)的連接和信號(hào)傳輸,這樣不僅能夠確保整個(gè)系統(tǒng)的實(shí)時(shí)性,同時(shí)也可以減少整個(gè)系統(tǒng)對(duì)濾波電路等其他外部電路的依賴性,從而進(jìn)一步降低整個(gè)系統(tǒng)設(shè)計(jì)的成本,整個(gè)系統(tǒng)的總體設(shè)計(jì)方案硬件結(jié)構(gòu)如圖1所示。
圖1 總體設(shè)計(jì)方案硬件結(jié)構(gòu)框圖
由于通過AD9361接收到的無線信號(hào)經(jīng)過ADC模數(shù)轉(zhuǎn)換后,數(shù)據(jù)會(huì)從連續(xù)信號(hào)變成離散的信號(hào),因此,對(duì)離散輸入信號(hào)需要進(jìn)行DFT(離散傅里葉變換),表達(dá)式為:
對(duì)于DFT運(yùn)算來說,對(duì)于任意k都需要N-1次的加法操作以及N(N-1)次乘法操作。當(dāng)進(jìn)行加法和乘法操作時(shí),F(xiàn)PGA不僅會(huì)調(diào)用大量的內(nèi)部資源乘法器以及加法器進(jìn)行處理,而且因?yàn)槌朔ㄟ\(yùn)算復(fù)雜度為,加法運(yùn)算復(fù)雜度為,所以,運(yùn)算速度也相對(duì)較緩慢,無法滿足實(shí)時(shí)性的需求,因此,DFT對(duì)于FPGA而言不宜作算法首選[3]。
首先輸入序列可以分為兩部分,一部分只含有原序列中奇數(shù)位的序列,另一部分只含有原序列中偶數(shù)位的序列,這兩部分分別為和,此時(shí)=0,1,2,,公式(1)可進(jìn)行化簡:
最后得到:
圖2 奇偶兩項(xiàng)拆分累加圖
也即:
通過公式(6)可知,輸入序列為N的DFT運(yùn)算結(jié)果可以拆分成序列為N/2的奇偶兩式計(jì)算得到,被拆分后的奇偶兩式的旋轉(zhuǎn)因子依舊滿足周期性、對(duì)稱性和縮放性等特性,因此,可以對(duì)其進(jìn)一步推算,從而將乘法運(yùn)算復(fù)雜度和加法運(yùn)算復(fù)雜度壓縮為和,從而大大減小了計(jì)算量,極大地提升了FPGA的運(yùn)算資源的利用率,縮短了運(yùn)算的時(shí)間周期,從而提升了頻譜運(yùn)算的實(shí)時(shí)性[4]。
根據(jù)國際標(biāo)準(zhǔn)IEEE 1057規(guī)定的數(shù)字化和頻譜計(jì)算的要求[5],頻譜處理模塊采用以下方案進(jìn)行設(shè)計(jì),如圖3所示。
圖3 頻譜處理模塊數(shù)據(jù)流
由圖3可知,首先通過AD9361采集射頻接收信號(hào),并通過數(shù)字基帶接口對(duì)數(shù)據(jù)進(jìn)行差分轉(zhuǎn)換與采集,采集的數(shù)據(jù)進(jìn)入FFT快速傅里葉變換處理,處理完后的頻譜實(shí)部與虛部的數(shù)據(jù)序列通過平方求和等計(jì)算完成功率譜計(jì)算,計(jì)算后的數(shù)據(jù)進(jìn)入DMA中進(jìn)行緩存,DMA模塊輸入一個(gè)結(jié)束地址,當(dāng)數(shù)據(jù)量到達(dá)此地址時(shí),拉高一個(gè)標(biāo)志一定時(shí)間,并把這個(gè)標(biāo)志接入ZYNQ的中斷接口,PS端接收到中斷之后執(zhí)行中斷函數(shù),并且把FFT數(shù)據(jù)通過DMA中的異步FIFO完成跨時(shí)鐘域高速數(shù)據(jù)傳輸,將數(shù)據(jù)通過UART打印到上位機(jī)中進(jìn)行實(shí)時(shí)監(jiān)測顯示。
該設(shè)計(jì)主要分析的頻譜范圍為0~8MHz,根據(jù)奈奎斯特采樣定律可知,單通道時(shí)的采樣率最少需要設(shè)置為16MHz,由此,對(duì)其進(jìn)行IP核配置,如圖4為FFT IP核配置圖。
圖4 FFT IP 核配置圖
由圖4可知,該設(shè)計(jì)對(duì)IP核的配置為采樣率16MHz,頻譜序列為8192個(gè)數(shù)據(jù),采用基-2時(shí)域抽取算法架構(gòu),在數(shù)據(jù)形式設(shè)置中,采用定點(diǎn)數(shù)并使用塊浮點(diǎn)的方式完成數(shù)據(jù)的縮放截位,該方式不僅可以減小計(jì)算復(fù)雜度、有效減小存儲(chǔ)的空間,還可以提高計(jì)算的速度滿足實(shí)時(shí)性的需求[6]。
在整個(gè)頻譜處理過程中,通過各種計(jì)數(shù)器以及標(biāo)志位的觸發(fā)可以完成相關(guān)的硬件邏輯模塊的工作時(shí)序編寫,如圖5是FFT IP核與接收數(shù)據(jù)端以及觸發(fā)模塊的信號(hào)連接圖。
圖5 FFT IP 核與接收數(shù)據(jù)端以及觸發(fā)模塊的信號(hào)連接圖
由圖5可知,Cap Data模塊連接到了FFT IP核的數(shù)據(jù)和控制信號(hào)輸入端,根據(jù)ZYNQ中發(fā)出的GPIO脈沖信號(hào)可以截取從AD9361基帶接口中采集的8192個(gè)采樣點(diǎn)。最后,根據(jù)輸出的實(shí)部與虛部求得功率譜,也就是實(shí)部平方加虛部平方運(yùn)算,硬件模塊信號(hào)連接如圖6所示。
圖6 功率譜運(yùn)算硬件模塊信號(hào)連接圖
該設(shè)計(jì)的驗(yàn)證系統(tǒng)主要是通過ILA(在線邏輯分析儀)時(shí)序檢測、上位機(jī)軟件驗(yàn)證頻譜以及MATLAB仿真對(duì)比進(jìn)行驗(yàn)證。分析的對(duì)象主要為AD9361數(shù)字基帶接口收發(fā)數(shù)據(jù)、FFT IP核輸出值以及UART數(shù)據(jù)上傳上位機(jī)打印頻譜。為了證明該設(shè)計(jì)中的射頻發(fā)射與接收端功能是否正確,對(duì)AD9361數(shù)字基帶接口進(jìn)行了DDS正弦波自發(fā)自收測試,圖7為經(jīng)AD9361數(shù)字基帶接口發(fā)射并接收回來的ILA信號(hào)波形觀測圖。
圖7 AD9361 數(shù)字基帶接口收發(fā)數(shù)據(jù)波形圖
驗(yàn)證完射頻收發(fā)的功能后,需要進(jìn)一步驗(yàn)證FFT IP核模塊的輸出以及功率譜計(jì)算模塊輸出是否正確,這里設(shè)置射頻發(fā)送端中心頻率為100MHz,射頻接收端頻率為98MHz,頻譜點(diǎn)數(shù)為8192個(gè),且采樣頻率為16MHz,因此,當(dāng)接收到8192點(diǎn)數(shù)據(jù)后產(chǎn)生一次數(shù)據(jù)抓取傳輸,此時(shí)可以查看ILA,若設(shè)置成功,則ILA中的FFT輸出的頻點(diǎn)會(huì)在1024附近處有一個(gè)頻點(diǎn)響應(yīng),如圖8所示。
圖8 FFT 頻點(diǎn)輸出數(shù)據(jù)時(shí)序圖
由圖8可以看出,頻率的估計(jì)值和實(shí)際波形中的頻點(diǎn)由于頻偏為1015,很接近1024,符合要求。由于該設(shè)計(jì)的采樣頻率為16MHz,且FFT計(jì)算長度為8192,數(shù)據(jù)位寬為16位,F(xiàn)IFO的寫入時(shí)鐘為32MHz,并且DMA傳輸采用AXI協(xié)議的256字節(jié)突發(fā)模式,這將大大提高數(shù)據(jù)的傳輸速率,因此,每從DMA中輸出一次完整的8192個(gè)頻點(diǎn)的16位頻譜數(shù)據(jù)所需的時(shí)間為25.6ms,而在MATLAB仿真中所需的平均運(yùn)算時(shí)間約為160ms,MATLAB仿真圖如圖9所示。為了驗(yàn)證上傳給上位機(jī)8192點(diǎn)的頻譜數(shù)據(jù)是否正確,設(shè)置了接收的數(shù)據(jù)格式,先接收4字節(jié)命令頭,接著接收占4字節(jié)的FFT的長度FFT length,然后接收4字節(jié)FFT數(shù)據(jù)倍數(shù)因子;接收到前面12個(gè)字節(jié)后,上位機(jī)開始接收FFT數(shù)據(jù),每個(gè)數(shù)據(jù)占用2字節(jié),并且高字節(jié)在前,F(xiàn)FT數(shù)據(jù)數(shù)量和FFT length對(duì)應(yīng),如圖10所示可看到上位機(jī)接收到的對(duì)應(yīng)數(shù)據(jù)。
圖9 MATLAB 頻譜運(yùn)算時(shí)間檢測仿真圖
圖10 上位機(jī)接收串口頻譜輸出數(shù)據(jù)圖
最后,將獲得的數(shù)據(jù)包通過頻譜顯示軟件,成功生成頻譜實(shí)時(shí)監(jiān)測,如圖11所示。
圖11 上位機(jī)頻譜瀑布監(jiān)測圖
針對(duì)各種不同的工業(yè)通信領(lǐng)域?qū)π盘?hào)頻譜監(jiān)測的需求,本文設(shè)計(jì)了一種基于FPGA的頻譜實(shí)時(shí)監(jiān)測系統(tǒng),對(duì)FFT等關(guān)鍵技術(shù)進(jìn)行了分析,利用FPGA中的可配置的FFT IP核提高了整個(gè)系統(tǒng)的運(yùn)算效率,并通過ILA時(shí)序檢測、上位機(jī)軟件驗(yàn)證頻譜,以驗(yàn)證該設(shè)計(jì)對(duì)大數(shù)據(jù)量的FFT頻譜檢測功能的正確性與穩(wěn)定性,最后與MATLAB產(chǎn)生的實(shí)時(shí)計(jì)算時(shí)間做比較,表明該設(shè)計(jì)滿足了較高的實(shí)時(shí)性,對(duì)后續(xù)頻譜監(jiān)測系統(tǒng)的研究具有實(shí)際的應(yīng)用參考價(jià)值。