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