1頻譜檢測方法介紹
?
1.1認知無線電頻譜感知原理
目前,在認知無線電領(lǐng)域用于檢測某頻段內(nèi)是否有信號存在、有哪些信號存在的方法有多種。以檢測類型劃分,可分為信號存在性檢測和信號覆蓋范圍檢測兩類;以檢測節(jié)點個數(shù)劃分,可分為單節(jié)點檢測和多節(jié)點聯(lián)合檢測;以檢測方法劃分,主要分為匹配濾波、能量檢測、周期特性檢測三類[23]??偨Y(jié)歸納各種方法如圖所示:
?
?
信號存在檢測,是指在經(jīng)過對某特定頻段內(nèi)信號的進行觀測之后,做出該頻段上是否有信號存在的判斷,這種探測原理的基本模型可以用下面的公式表示:
?
其中,x(t)是認知無線電接收到的信號,s(t)是第一用戶傳輸?shù)男盘枺籲(t)是加性白高斯噪聲;h 是信道的增益;Ho 是未被占用的假設(shè),表明了目前在這一確定頻段上沒有第一用戶;H1 是另一種假設(shè),表明目前存在第一用戶。
?
下面將對單節(jié)點檢測的幾種方法進行介紹、分析:
(1)匹配濾波器探測
當認知無線電獲悉了第一用戶的信號后,靜態(tài)高斯噪聲理想探測器就是匹配濾波器,原因在于它能使接收到的信號的信噪比(SNR)最大化。匹配濾波器的主要優(yōu)點是它只需很短的時間就可以獲得高處理增益。然而,它必須有效地對第一用戶的信號進行解調(diào),這就意味著它需要第一用戶的先驗知識,比如解調(diào)方式和階數(shù)、數(shù)據(jù)包格式等。
上述信息可以預存在認知無線電的內(nèi)存中,然而,對解調(diào)來講,認知無線電必須通過時間和載頻同步甚至信道同步來獲得第一用戶的相關(guān)性。如果這些信息是不準確的,那么,匹配濾波器的性能就會變得很差。匹配濾波器探測的一個明顯缺點在于,認知無線電對每一類型的第一用戶都要有一個專門的接收器。
(2)能量探測
如果接收機不能夠收集到第一用戶信號的足夠的信息,此時的最佳探測器就是能量探測器。為了測量接收信號的能量,需要對帶寬為 W 的帶通濾波器的輸出信號進行平方運算并在觀測時間段 T 內(nèi)進行積分,并將積分器的輸出 Y 與門限值進行比較,從而判定合法用戶是否出現(xiàn)。檢測過程示意圖如下所示:
?
?
能量探測器的門限很容易受到噪聲功率的變化的影響。為了解決這個問題,已經(jīng)有文獻提出通過第一用戶發(fā)射機的導頻音(Pilot Tone)來提高認知無線電能量探測器的準確性。另外,即使能夠適應(yīng)性的設(shè)定門限值,帶內(nèi)干擾的出現(xiàn)也會擾亂能量探測器。能量探測器的另外一個缺點是它只能探測到有用信號出現(xiàn),而不能夠區(qū)分信號的類型,即它不能區(qū)分已調(diào)制信號 、噪聲及干擾。因此,能量探測器容易被不明信號誤導而產(chǎn)生誤判決。
(3)靜態(tài)循環(huán)特征探測
調(diào)制信號一般都經(jīng)過了載波、脈沖序列、重復性擴展、跳頻及循環(huán)前綴等耦合處理,使已調(diào)信號具有了內(nèi)在的周期性。雖然數(shù)據(jù)是靜態(tài)隨機的,但是這些調(diào)制后的信號的均值和自相關(guān)函數(shù)都具有周期性,因而稱其具有循環(huán)性。通過分析頻譜自相關(guān)函數(shù)可以探測出這些特征。頻譜自相關(guān)函數(shù)的最主要的優(yōu)點是它能夠把噪聲能量和已調(diào)信號的能量區(qū)分開來,這是因為噪聲是一個寬帶的、靜態(tài)的、沒有相關(guān)性的信號,而已調(diào)信號具有頻譜相關(guān)性和周期性。靜態(tài)循環(huán)特征探測器具有更強的抵抗噪聲功率中不確定性的能力,因而能夠比能量探測器更好地分辨出噪聲信號。不過,它就比能量探測器更加復雜并且需要更長的觀測時間。
4.1.2 感知任務(wù)
綜合比較上述三種檢測方法的優(yōu)缺點,我們可以得到下面的對比:
?
?
在本認知無線電實驗平臺中,我們選擇能量檢測的方式做頻譜感知。因為匹配濾波需要授權(quán)用戶的信號模型,只能針對某種信號進行檢測,而能量檢測的方法對任意信號都適用。而且匹配濾波需要重構(gòu)到某種調(diào)制解調(diào)方式,解碼成型需要花費大量的計算時間。而周期特性檢測復雜度太高,時間也較長,作為初步實驗并不需要如此復雜的檢測技術(shù)。
本次實驗采用能量檢測的方法。感知任務(wù)如下:
在選取子板所能接收的頻率范圍內(nèi),可以對任意的頻段進行能量檢測,比如針對RFX400 子板,它的接收范圍是 400M-500MHz,可以在 400M-500M 內(nèi)選定任意范圍進行檢測,對所檢測頻段使用情況,能在可控制的時間內(nèi)記錄到文件中,并可通過圖形顯示出來。
?
4.2 能量檢測 FFT 方法
FFT是離散傅立葉變換的快速算法,可以將一個信號變換到頻域。有些信號在時域上是很難看出什么特征的,但是如果變換到頻域之后,就很容易看出特征了。這就是很多信號分析采用 FFT 變換的原因。另外,F(xiàn)FT 可以將一個信號的頻譜提取出來,這在頻譜分析方面也是經(jīng)常用的。得到了信號的頻域變換后,就可以對其進行模值運算得出某頻率值下的幅度特性。
一個模擬信號,經(jīng)過 ADC 采樣之后,就變成了數(shù)字信號。采樣得到的數(shù)字信號,就可以做 FFT 變換了。N 個采樣點,經(jīng)過 FFT 之后,就可以得到 N 個點的 FFT 結(jié)果。為了方便進行 FFT 運算,通常 N 取 2 的整數(shù)次方。假設(shè)采樣頻率為 Fs,信號頻率 F,采樣點數(shù)為 N。那么 FFT 之后結(jié)果就是一個為 N 點的復數(shù)。每一個點就對應(yīng)著一個頻率點。這個點的模值,就是該頻率值下的幅度特性。具體跟原始信號的幅度有什么關(guān)系呢?假設(shè)原始信號的峰值為 A,那么 FFT 的結(jié)果的每個點(除了第一個點直流分量之外)的模值就是 A 的 N/2 倍。而第一個點就是直流分量,它的模值就是直流分量的 N 倍。而每個點的相位,就是在該頻率下的信號的相位。第一個點表示直流分量(即 0Hz),而最后一個點 N 的再下一個點(實際上這個點是不存在的,這里是假設(shè)的第 N+1 個點,也可以看做是將第一個點分做兩半分,另一半移到最后)則表示采樣頻率 Fs,這中間被N-1 個點平均分成 N 等份,每個點的頻率依次增加。例如某點 n 所表示的頻率為:Fn=(n-1)*Fs/N。由上面的公式可以看出,F(xiàn)n 所能分辨到頻率為為 Fs/N,如果采樣頻率Fs 為 1024Hz,采樣點數(shù)為 1024 點,則可以分辨到 1Hz。1024Hz 的采樣率采樣 1024 點,剛好是 1 秒,也就是說,采樣 1 秒時間的信號并做 FFT,則結(jié)果可以分析到 1Hz,如果采樣 2 秒時間的信號并做 FFT,則結(jié)果可以分析到 0.5Hz。如果要提高頻率分辨力,則必須增加采樣點數(shù),也即采樣時間。頻率分辨率和采樣時間是倒數(shù)關(guān)系。
假設(shè) FFT 之后某點 n 用復數(shù) a+bi 表示,那么這個復數(shù)的模就是
,相位就是 Pn=atan2(b,a)。根據(jù)以上的結(jié)果,就可以計算出 n 點(n≠1,且 n<=N/2)對應(yīng)的信號的表達式為:An/(N/2)*cos(2*pi*Fn+Pn),即 2*An/N*cos(2*pi*Fn+Pn)。對于 n=1 點的信號,是直流分量,幅度即為 A1/N。
由于 FFT 結(jié)果的對稱性,通常我們只使用前半部分的結(jié)果,即小于采樣頻率一半的結(jié)果,即可以是前向 FFT 也可以是后向 FFT,前向、后向各一半結(jié)果。
由此可知:假設(shè)采樣頻率為 Fs,采樣點數(shù)為 N,做FFT 之后,某一點 n(n 從 1 開始)表示的頻率為:Fn=(n-1)*Fs/N;該點的模值除以 N/2 就是對應(yīng)該頻率下的信號的幅度(對于直流信號是除以 N);該點的相位即是對應(yīng)該頻率下的信號的相位。相位的計算可用函數(shù) atan2(b,a)計算。atan2(b,a)是求坐標為(a,b)點的角度值,范圍從-pi 到 pi。要精確到 xHz,則需要采樣長度為 1/x 秒的信號,并做 FFT。要提高頻率分辨率,就需要增加采樣點數(shù),這在一些實際的應(yīng)用中是不現(xiàn)實的,需要在較短的時間內(nèi)完成分析。解決這個問題的方法有頻率細分法,比較簡單的方法是采樣比較短時間的信號,然后在后面補充一定數(shù)量的 0,使其長度達到需要的點數(shù),再做 FFT,這在一定程度上能夠提高頻率分辨力。
?
4.3 能量檢測實現(xiàn)
4.3.1GNU Radio的USRP初始化設(shè)置
需要搭建基于GNU Radio的FFT頻譜檢測器,我們就需要正確的初始化配置USRP,建立流圖,搭建起 FFT 運算的軟件無線電結(jié)構(gòu)。
初始化配置 USRP,需要使用 GNU Radio 中的 usrp.py 模塊,這個模塊包含輸入輸出初始化設(shè)置、ADC 采樣速率、功率、增益、載頻等?;旧纤嘘P(guān)于配置 USRP 的子函數(shù)都需要重載 usrp.py 來配置。具體見下表:
?
usrp.py函數(shù)是所有 GNU Radio 控制 USRP 的程序都要用到的初始化函數(shù),它們控制 usb 接口、fpga 程序、ADC、DAC、子板,跟硬件打交道的程序都可以從這個函數(shù)的子函數(shù)找到控制方法。
source_x()和 sink_x()則是 usrp.py 中最基本的子函數(shù),它們是流圖的開始或者結(jié)束,由它們我們可以初始化 USRP 為接受器或者發(fā)射器,而且一個 USRP 通過時分復用可以復用為雙工收發(fā)器。
按照表的函數(shù)應(yīng)用舉例,我們設(shè)置 USRP 為接收狀態(tài),nchan=2 這樣我們可以同時獲得兩個子板的信息,同時對 400M 和 2.4G 頻段進行掃頻。其余設(shè)置均為默認狀態(tài),由此可得知:
adc_rate= 64 MS/s
usrp_decim= 64
usrp_rate= adc_rate / usrp_decim = 1 MS/s
4.3.2 FFT 能量檢測流圖
由上一小節(jié) FFT 的原理,我們可以得出 FFT 計算結(jié)果的意義,可對其進一步處理達到我們的需求。GNU Radio 自帶庫有 FFT 模塊,在設(shè)置好 USRP 并正確的建立流圖,然后將得到的結(jié)果通過計算途徑處理,最終得到我們需要的功能——大范圍的能量檢測。
因為 USRP 帶寬的限制,一個時間內(nèi)前端只能檢測到 8MHz 的射頻信號如果要檢測大于 8MHz 帶寬的信號我們需要通過不斷的 RF 前端步進調(diào)頻以達到檢測大范圍頻譜的目的,雖然檢測到的頻譜并不是實時的。USRP(或者程序)每個時刻對一段范圍的頻率進行檢測,然后步進調(diào)頻到下一段頻率,這樣就能掃頻掃過大段的頻率。
要是頻率調(diào)頻已經(jīng)完成步進調(diào)頻,我們需要在每一個步進時刻結(jié)束時——即已獲得這段頻率的數(shù)值時,發(fā)送一個調(diào)頻指令到 USRP。調(diào)頻控制由 gr.bin_statistics_f sink 程序?qū)崿F(xiàn),bin_statistics 在以下的函數(shù)解釋中有詳細解釋。
當我們命令 USRP 的 RF 子板改變中心頻率時,我們必須等待 ADC 的采樣到達 FFT處理器并判斷完是否屬于需要的中心頻率。在這個過程中需要經(jīng)過很多重的延時比如從FPGA,USB,計算延時。這樣我們必須在調(diào)節(jié)到下一步進頻率時進行延時,以保證上一步進頻率的采樣能正確的被 FFT 處理器處理。
程序主要驅(qū)動部分由 bin_statistics sink 函數(shù)組成。整個流程如圖 4-3
?
bin_statistics主要控制 USRP 的調(diào)頻控制,并根據(jù)步進頻率帶寬的大小決定延時時間即 FFT 處理器忽略掉 N 個向量(向量長度由計算決定)這里也可以詳細解釋,當進行完 FFT 處理后,bin_statistics 將處理后的信息組合成 message,并將此 message 插入message queue。message 的每個內(nèi)容由 FFT 后的每個最大頻率的向量組成。
每一步進的延時需要計算得出,延時包括調(diào)頻延時和計算延時,其中調(diào)頻延時是最主要的延時。
調(diào)頻延時由 RF 前端的 PLL 到主板的時間再加上管道中排隊的時間,我們所用的RFX 系列延時差不多是 1ms。
調(diào)頻延時轉(zhuǎn)化為 FFT 計算時忽略的向量個數(shù)的計算公式是
tune_delay_passed_to_bin_statistics=
int(round(required_tune_delay_in_sec*usrp_rate/fft_size))
其中:
required_tune_delay_in_sec= 10e-3 ;usrp_rate = 1M (decimation =64);
fft_size= 256
可得出tune_delay_passed_to_bin_stats = 4 (FFT Frames)
這表示,我們延時 1ms 我們將跳過 4 個輸入的 FFT 向量個數(shù),來獲得真實的向量數(shù)據(jù)。延時時間還包括計算延時,我們需要收集處理 N 個 FFT 采樣,如果 DR=8 那將用時 128us,還應(yīng)該加上計算機處理這 N 個采樣的時間,這個需要根據(jù)實際計算機的處理能力通過實驗測得。
本實驗平臺設(shè)置步進頻率為 3MHz,設(shè)置 3M 是為了能盡可能精確的對小范圍的頻率進行能量測算,而我們通信時占用的頻寬也大概是 2M 多,加上半衰保護,差不多即是 3M。而且步進頻率 3M 可節(jié)省每一步進的運算時間,是個均衡的選擇。這樣 USRP及相關(guān)程序的初始化就完成了。
以下是完成 FFT 運算的流圖,其搭建一個完整的軟件無線電結(jié)構(gòu),數(shù)據(jù)最終寫入message。流圖如下圖:
?
?
4.3.3 實現(xiàn)結(jié)果
總結(jié)如下,受制于 USB 總線的約束,USRP 不能檢測超過 8MHz 的帶寬(USRP 的USB2.0 最大數(shù)據(jù)傳輸速率為 32M Bytes/S,每個實采樣點占用 2 個 Bytes,以一路復數(shù)采樣進行單收或單發(fā),則最高可達到 32/4=8M 復采樣每秒,即最高發(fā)送或接收 8MHz帶寬的信號)。因此,要對一段 RF 頻段進行檢測,必須以合適地步進值調(diào)節(jié) RF 前端,這樣就能檢查很寬的頻譜。在此設(shè)計過程中,為更好地表示指定頻段內(nèi)的頻譜感知情況,通過設(shè)置 GNU Radio 的相關(guān)函數(shù),我們選取 3MHz 這樣的掃頻間距。
頻段掃描過程如下:
(1) 設(shè)置所要感知頻段的最小、最大頻率以及掃描次數(shù) M;
(2) 對所選頻譜范圍進行間隔化,每一間隔值為 3MHz;
(3) 在第一個 3MHz 頻段范圍內(nèi)對信號進行 AD 采樣,得到 N 個點(本次設(shè)計 N 取256);
(4) 進行 N 點 FFT,對得到的 N 個復數(shù)分別進行平方和運算,得出模值 ,再累加,求得平均值作為此 3MHz 間隔的模值,并由此求得功率大小,記錄到文件中;
(5) 移頻到下一個 3MHz 間隔,重復上面的步驟,直到掃描完頻段內(nèi)所有的每一個間隔;
我們對特定頻段做多幾次掃頻,獲得平均功率數(shù)據(jù),使用 gnuplot 將數(shù)據(jù)畫圖。其中 Y 軸為平均功率,單位為 dBm;X 軸為頻率,單位為 MHz。因為 400M 和 2.4G 頻段上的功率量值不同,所以起始功率不同。見圖 4-5 和圖 4-6
?
?
從上兩圖中的檢測結(jié)果可以非常直觀的得到以下結(jié)論:
(1)2.4G 非授權(quán)頻段非常擁擠,這段頻率已經(jīng)被大量的 wifi 設(shè)備使用殆盡,而且還有大量“不速之客”加進來干擾,比如藍牙和微波爐開啟產(chǎn)生的污染(圖中 2430MHz處即是微波爐開啟產(chǎn)生的信號輻射)。
(2)在 400M 授權(quán)頻段上,除了某些頻率一直有信號在占用,大部分頻段大部分時間都是空閑的。這些授權(quán)頻段無論從時間上還是從功率上分析,都非常適合認知無線電非授權(quán)用戶的使用。
由美國頻譜規(guī)劃文件中如圖 4-7 可知,400M-480M 范圍內(nèi),國際通行的規(guī)劃大部分都是劃給移動通信,而在我國,大部分頻段在民用范圍內(nèi)大部分時間都是靜默的,只是450M 小靈通通信占用了一點,如上圖可清晰的發(fā)現(xiàn) 450M 處被占用情況。
所以我們選擇 400M 頻段作為認知無線電動態(tài)接入的頻段,可減少對授權(quán)用戶的干擾,從時間和頻譜空間這兩個角度來說也比較容易找到空閑頻段。
4.4 頻譜能量記錄與選擇
獲得了設(shè)置好的每一步進頻段內(nèi)的平均能量,并將其根據(jù)頻段的中心頻率排序存入鏈表,選定做 N 次掃頻,求 N 次掃頻后每個頻段的數(shù)學平均。這個 N 值取的次數(shù)需要根據(jù) sensing 的時間和傳輸時間大小的比值,以及動態(tài)接入的策略來確定的。這里我們?nèi)?N=3,既可以過濾掉較大的隨機誤差,又可以節(jié)省 sensing 的時間。這樣我們就獲得了每個步進頻率的多次掃頻的平均功率,即可確定我們要接入的頻率和功率最小最大頻率。
當我們獲得了最小值與當前使用頻率的能量值,我們對其做比較,如無大差距,返回標志及數(shù)據(jù),為接下來的動態(tài)接入提供策略支撐是使用原頻率,還是使用新的最小頻率。
?
?
4.5本章小結(jié)
本章介紹了頻譜檢測的方法和原理,設(shè)計了使用 GNU Radio 和 USRP 實現(xiàn)的 FFT能量檢測方法實現(xiàn)大范圍的頻譜檢測,并能將頻譜記錄和選擇接入頻率的策略。
評論
查看更多