新四季網

一種基於USRP的頻譜智能感知系統及其方法與流程

2024-02-14 03:16:15


本發明涉及頻譜感知技術領域,具體涉及一種基於usrp的頻譜智能感知系統及其方法。



背景技術:

目前無線頻譜資源的規劃和使用是由政府制定,通信設備對頻譜的使用須政府授權許可,而且政府所制定的頻譜靜態分配方式會嚴重降低頻譜的利用效率。比如分配給蜂窩移動通信的系統頻帶經常會出現超負荷現象,而共用頻帶卻85%的時間處於空閒狀態。而認知無線電技術可使認知用戶「見縫插針」地借用空閒的授權頻帶,從而提高頻譜的利用機會和利用效率。

認知無線電的硬體原型通常選擇usrp軟體無線電平臺裝置,其前面板多為兩天線接口,可以分別用來接收或發射信號,中間配有ethernet接口以通過千兆乙太網連接pc,右下方的power接口作為電源接口。

如上所說,目前一臺usrp配有兩根天線,只能完成一次收發信號。如果把發射信號的天線用來發射su信號,那麼就無法用發射天線來控制pu信號的存在與否了。因此,一臺usrp無法通過檢測程序實現認知用戶su在pu信號不存在的情況下可以佔用授權用戶pu的授權頻段,在pu信號存在的情況下,可以主動避讓的功能。



技術實現要素:

為解決上述問題,本發明提供了一種基於usrp的頻譜智能感知系統及其方法,避免了現有技術中一臺usrp無法通過檢測程序實現認知用戶su在pu信號不存在的情況下可以佔用授權用戶pu的授權頻段和在pu信號存在的情況下可以主動避讓的缺陷。

為了克服現有技術中的不足,本發明提供了一種基於usrp的頻譜智能感知系統及其方法的解決方案,具體如下:

一種基於usrp的頻譜智能感知系統,包括usrp,所述usrp通過乙太網與主機計算機pc相連接;

所述主機計算機pc中包括labview軟體平臺和niusrp軟體套件,所述niusrp軟體套件在labview中增加了ni-usrp驅動程序,所述labview軟體平臺中的程序通過ni-usrp驅動程序與所述usrp進行交互;

所述labview軟體平臺中的程序包括頻譜感知程序,所述頻譜感知程序包括usrp頻譜感知模塊。

進一步地,所述usrp為niusrp,所述niusrp通過千兆乙太網與主機計算機pc相連接。

進一步地,所述主機計算機pc中還能夠引用matlabscript以此來實現labview與matlab的聯調。

進一步地,所述ni-usrp驅動程序包括八個函數,所述八個函數分別為

9.niusrp打開rx會話vi,即niusrpopenrxsessionvi;

10.niusrp配置信號vi,即niusrpconfigurevi;

11.niusrp初始化vi,即niusrpinitiatevi;

12.niusrp打開tx會話vi,即niusrpopentxsessionvi;

13.niusrp提取接收數據vi,即niusrpfetchrxdatavi;

14.niusrp發射數據vi,即niusrpwritetxdatavi);

15.終止vi,即niusrpabortvi;

16.關閉vi,即niusrpclosesessionvi;其中1-4中的vi實現配置功能,5-6中的vi實現讀寫功能,7-8中的vi實現結束功能。

進一步地,所述接收無線信號和發射無線信號模塊通過所述ni-usrp驅動程序的所述八個函數來實現接收無線信號和發射無線信號的過程。

進一步地,所述基於usrp的頻譜感知系統的方法,包括:在限定只用一臺usrp的情況下,可以用一根天線作為接收天線接收無線信號,通過頻譜感知程序中的usrp頻譜感知模塊對接收的無線信號進行頻譜感知,找到可用頻段後,通過另一根天線在此可用頻段上發射fm信號,這時終止針對接收天線的能量檢測模塊的能量檢測,利用接收天線解調發射天線所發射的fm信號,而所述usrp頻譜感知模塊包括音頻信號存儲模塊、計算判決門限模塊、能量檢測模塊、發射fm信號模塊以及解調fm信號模塊。

進一步地,所述音頻信號存儲模塊包括配置音頻輸入的函數、讀取音頻輸入的函數、寫入並打開音頻文件的函數、寫入音頻文件的函數、音頻輸入清零的函數、關閉音頻文件的函數和音頻信號存儲前面板,所述配置音頻輸入的函數用於設置音頻信號的特徵,所述音頻信號的特徵包括每通道採樣總數、採樣模式、設備id以及聲音格式,所述讀取音頻輸入的函數用於從所述主機計算機pc的音效卡中讀取正在錄製的音頻信號,所述寫入並打開音頻文件的函數用於指定音頻信號在磁碟上的存儲位置,所述寫入音頻文件的函數用於把讀取的音頻信號寫入到指定的音頻信號的存儲位置,所述音頻輸入清零的函數用於停止採集數據、清除緩存、任務返回至默認狀態以及清除與任務相關的數據,所述關閉音頻文件的函數用於停止音頻信號的存儲,這樣通過所述音頻信號存儲前面板選擇音頻文件的存儲路徑、輸入每通道採樣總數、採樣模式、設備id以及聲音格式,所述設備id是音頻操作時輸入或輸出的設備的標識,它的默認值為0,所述每通道採樣總數為指定的從樣本緩衝區中讀取樣本的速率,所述採樣模式為指定vi進行有限採樣或連續採樣,所述聲音格式為設置音頻操作的採集速率、通道數量和每個採樣的比特位數;然後點擊所示音頻信號存儲前面板的停止按鈕,把選擇的音頻文件的存儲路徑傳輸到寫入並打開音頻文件的函數,而輸入的每通道採樣總數、採樣模式、設備id以及聲音格式傳輸到配置音頻輸入的函數,然後所述讀取音頻輸入的函數按照傳輸到配置音頻輸入的函數中的所述每通道採樣總數、採樣模式、設備id以及聲音格式用於從所述主機計算機pc的音效卡中讀取正在錄製的音頻信號,接著所述寫入音頻文件的函數根據傳輸到寫入並打開音頻文件的函數中的選擇的音頻文件的存儲路徑用於把讀取的音頻信號寫入到選擇的音頻文件的存儲路徑,寫入完畢後所述音頻輸入清零的函數就停止採集數據、清除緩存、任務返回至默認狀態以及清除與任務相關的數據,而所述關閉音頻文件的函數停止音頻信號的存儲。

進一步地,所述計算判決門限模塊是根據公式(1)

來推導出門限值,q(.)是正態分布尾部概率函數,所述計算判決門限模塊包括計算門限設置信息的子vi、計算判決門限的子vi、matlab節點的程序和外圍程序,所述計算門限設置信息的子vi對同一波段的頻譜數據進行10次取樣,將這10組取樣處理結果的中位數作為輸出,所述計算門限設置信息的子vi的輸入端有三個參數,所述三個參數分別為待處理的功率密度譜的波形數據,待檢測數據的起始頻率和待檢測數據的截止頻率,而所述計算門限設置信息的子vi的輸出端是一個簇集合,包括兩個參數,該兩個參數分別是整個波形數據的數組長度的一半n/2和虛警概率pf,把該兩個參數代入公式(1)就能計算出對應於虛警概率的門限值λf,而在外圍程序中,設置了1個全局變量cishu,還有2個局部變量pnz和門限設置信息;cishu用於記錄所述計算門限設置信息的子vi運行的次數;門限設置信息為前10次取樣計算結果的中位數,如果取樣次數不到10次,門限設置信息為每次取樣後的計算結果;如果取樣次數超過10次,門限設置信息與取樣10次門限設置信息相同,另外還設置了局部變量數組形式的變量pnz,pnz負責把每次外圍程序的運行結果存儲下來,等到對頻譜數據取樣10次時,外圍程序計算pnz數組中數據的中位數,所述外圍程序的具體流程如下:

步驟1-1:獲取全局變量cishu的值。在所述外圍程序剛開始時,把cishu設置成1;

步驟1-2:判斷cishu是否小於11,如果小於11,執行步驟1-3;如果不小於11,執行步驟1-5;

步驟1-3:把頻譜數據段的數據送入matlab節點,利用matlab工具處理數據,把一次運算的結果依次存到局部變量數組pnz中,在matlab節點裡,程序會判斷是否程序已經執行了10次,如果執行了10次,則會把10次數據的中位數作為門限設置信息的局部變量,並將該局部變量作為程序輸出值;

步驟1-4:全局變量cishu自加1賦給全局變量cishu;

步驟1-5:獲取步驟1-3中的門限設置信息,並將其作為程序輸出值;

所述matlab節點的程序計算指定頻譜內的噪聲功率和整個波形數據的長度的一半,取10次計算結果的中位數作為輸出結果,所述matlab節點的輸入端參數及作用如下:

所述matlab節點的輸入端參數包括:

起始頻率f1和截止頻率f2,用於確定頻譜範圍;

全局變量cishu,用於記錄所述計算門限設置信息的子vi運行的次數;

局部變量pnz,用於存儲前10次的計算結果;

功率譜密度,所述功率譜密度是波形數據格式,包括三個參數f0,df,magnitude,分別表示波形的起始頻率、頻率間隔以及對應頻率點的功率密度;

所述matlab節點的輸出端的參數及其含義如下:

pn是程序運行10次得到的噪聲功率的中位數;

m是波形數據長度的一半;

局部變量pnz用於把計算結果寫入數組,以待matlab節點的程序再次運行時可以從中讀取數據;

所述matlab節點的程序的流程如下所示:

步驟2-1:根據公式(2)計算出起始頻率和截止頻率各自在數組magnitude中對應的下標n1和n2,為了確保n1和n2是整數,使用round(n)函數對公式(2)運算的結果進行四捨五入處理,其中n為n1或者n2,f為f1或者f2:

n=(f-f0)/df(2)

步驟2-2:設置當起始頻率在數組magnitude中對應的下標n1為0時,強制把該n1的值調整為1;

步驟2-3:計算n1到n2的數據點的個數n,作為指定頻率段數組的長度;計算出輸入數組magnitude的長度值的一半賦值給m作為輸出;

步驟2-4:把波形幅度信息s中下標從n1到n2的元素值,用公式(3)進行計算,並把結果賦給新數組x,其中數組x的下標從1開始,長度為n:

pn=10^(pn(db)/10)(3)

其中pn(db)表示用分貝db值表示的噪聲功率;

步驟2-5:高斯噪聲信號的能量在頻域內的表達式為公式(4)所示:

利用高斯噪聲信號的功率譜均值p(f)是一個固定值,先求特定頻段的均值p(f)df,然後以此均值p(f)df乘以頻譜圖數據的點數,求取整個頻段的噪聲功率p(t);

步驟2-6:把pn賦值給數組局部變量pnz,數組的下標設置為程序運行的次數,也就是全局變量cishu;

步驟2-7:根據全局變量cishu判斷所述matlab節點的程序是否運行了10次,如果全局變量cishu等於10,執行步驟2-8,否則執行步驟2-9;

步驟2-8:求取數組局部變量pnz的中位數,把結果賦值給數組局部變量pnz,並把pnz作為輸出,執行步驟2-9;

步驟2-9:全局變量cishu自加1,表示程序已經完成了一次計算pn,cishu是一個全局變量,在主程序初始運行時,默認值為1;

再利用公式(1)計算判決門限t,所述計算判決門限的子vi根據輸入參數計算出能量檢測的門限值,而其輸入參數包括門限設置信息和虛警概率,所述門限設置信息從計算門限設置信息的子vi中獲取,虛警概率代表把噪聲信號誤當作pu信號的概率,可以手動設置,默認情況下為0.1,所述計算判決門限的子vi的輸出結果為檢測門限值t;而所述計算判決門限的子vi包括matlab節點的數據處理程序,所述matlab節點的數據處理程序的數據處理流程如下:

步驟3-1:根據公式(1)可以計算出虛警概率pf所對應的門限值tn,也就是λf,matlab節點的數據處理程序中包括qfuncinv函數,其是matlab中的封裝函數,能夠實現q-1的功能;

步驟3-2:因為功率譜密度的數據的單位是分貝,所以還需要把tn的單位轉換成db,轉換公式為公式(5)所示,公式(5)中的t(db)表示單位為db的檢測門限值:

t(db)=10lg(tn)(5)

步驟3-3:把結果t(db)作為判決門限而輸出;

進一步地,所述能量檢測模塊是根據這段頻譜上的值是否存在大於檢測門限值來進行判決的,如果這段頻譜上的值大於檢測門限值,就存在pu信號,如果這段頻譜上的值不大於檢測門限值,就不存在pu信號,所述檢測門限值就是所述判決門限;

另外所述能量檢測模塊包括用於頻譜感知的vi,所述用於頻譜感知的vi從輸入的功率密度譜的數據中,根據門限值的大小,來判斷功率密度譜中哪些頻段存在pu信號,還可以根據檢測結果,以及fm頻偏的大小,計算fm發射信號的載波頻率,最後,根據pu信號範圍中的起始頻率和終止頻率,該用於頻譜感知的vi能夠計算出這一頻段pu信號的功率;

所述用於頻譜感知的vi中包括有用於頻譜感知的matlab節點,在所述用於頻譜感知的matlab節點的輸入端包括一個全局變量suf,所述用於頻譜感知的matlab節點的輸出端包括另一個全局變量suf和全局變量lastpower,其中suf是magnitude數組的下標,magnitude數組也就是數組s,利用公式(6),可以根據suf計算出發射頻率fw,如果是對某一載波信號進行分析,則需要在所得結果的基礎上加上載波頻率fz,如公式(7)所示:

fw=f0+df*suf(6)

fw=fz+f0+df*suf(7)

在所述用於頻譜感知的matlab節點的輸入端包括pu信號範圍的兩個參數f1和f2,f1和f2分別代表估算pu信號功率時,計算範圍的起始頻率和截止頻率;

所述用於頻譜感知的matlab節點的程序分為順序執行的三個程序部分,所述三個程序部分包括:

a.頻譜數組中找到所有可以作為su發射頻率的下標;

b.計算出su信號的發射頻率對應的下標suf;

c.計算出指定頻段pu信號的功率;

所述頻譜數組中找到所有可以作為su發射頻率的下標的程序部分可以從頻譜數組中找到所有可以作為認知用戶su的發射頻率的下標,所述頻譜數組中找到所有可以作為su發射頻率的下標的程序部分判斷頻譜數組中的下標是否可以為認知用戶su的發射頻率的下標的標準是:發射的su信號不能對pu信號造成幹擾,所述頻譜數組中找到所有可以作為su發射頻率的下標的程序部分的流程如下:

步驟4-1:計算出數組s的長度n,和頻偏w對應的數據點數n,並定義一個和s長度相同,初值為0的數組x;

步驟4-2:依次遍歷數組s中的元素,如果元素值大於閾值t,所述閾值t也就是門限值,那麼此元素對應下標處x的元素值為1,這樣就找到了s中所有大於閾值的點,也就可以認為下標處x所對應的數組元素值為1處存在pu信號;

步驟4-3:令y等於x,其中y用於記錄所有可以作為發射頻率的數據點位置,令y等於x,就保證了在x(i)等於1處,即存在pu信號的地方,不能作為發射頻率對應的下標;

步驟4-4:遍歷x中的每一個元素,判斷在x(i)是否與x(i)之前的三個數的值是否不同,通過這種辦法,找到pu信號的邊界,所述pu信號的邊界包括pu信號上升的邊界和pu信號下降的邊界,如果判斷的結果不同,執行步驟4-5;如果判斷的結果相同,執行步驟4-10,i為整型變量;

步驟4-5:判斷i-n是否小於1,即判斷i-n是否溢出,如果溢出,令k1=1,如果i-n沒有溢出,令k1=i-n,這時k1的作用是用來作為找到可以作為發射頻率的頻段的起始邊界,同樣地,還包括一個終止邊界,定義為k2,所述k1和k2為整型變量;

步驟4-6:判斷i+n是否大於n,同樣也是判斷i+n是否溢出,如果溢出,令k2=n;如果沒有溢出,令k2=i+n;

步驟4-7:通過步驟4-5和步驟4-6,已經找到了授權用戶pu邊界處左邊和右邊n個點的位置是k1到k2,並保證了k1,k2沒有溢出,在這一步驟中,令y中k1和k2之間的下標對應的元素值為1;

步驟4-8:如果在遍歷的時候,y數組元素的下標i=1時,即在y數組的開始處,並且i+n沒有溢出,那麼令y數組的下標1到1+n處的元素值為1;

步驟4-9:如果在遍歷的時候,y數組元素的下標i=n時,即在y數組的終止處,並且i-n沒有溢出,那麼令y數組下標n-n到n處的元素值為1;

步驟4-10:結束;

所述計算出su信號的發射頻率對應的下標suf的程序部分的流程如下:

步驟5-1:對所述計算出su信號的發射頻率對應的下標suf的程序部分的重要參數初始化,令i=1和power=0,其中i代表發射頻率下標的初始值,power代表pu信號的初始能量值;

步驟5-2:以while循環的方式來逐一判斷y(i)是否為1,如果y(i)為1,i進行自加運算,否則所述計算出su信號的發射頻率對應的下標suf的程序部分跳出while循環,通過這種辦法找到y(i)中第一個其值不為1的下標i,已經知道該y(i)的值為0,表示下標i處對應的頻率可以作為發射頻率,這樣就找到了第一個可以作為su發射頻率的對應下標的值;

步驟5-3:判斷suf分別加n和減n後是否在1到n範圍內,如果在1到n內,說明suf值為上次發射頻率對應的下標,就要根據suf值計算其左邊和右邊的n個數據點的能量,把結果賦值給power,然後執行步驟5-4,如果n不在1到n內,則說明suf不是上次發射頻率對應的下標,直接執行步驟5-4;

步驟5-4:判斷i+10是否小於n,如果是,說明存在合適的發射頻率的下標,執行步驟5-5;如果不是,說明檢測到的頻率下標不能作為發射頻率的下標,執行步驟5-7;

步驟5-5:判斷是否滿足三個條件,所述三個條件為suf等於1、|suf-i|大於10和power比0.7*lastpower小,這三個條件均滿足執行步驟5-6;

步驟5-6:將i賦值給全局變量suf,表示找到了新的發射頻率的下標,執行步驟5-8;

步驟5-7:將1賦值給全局變量suf,表示沒有找到可以作為發射頻率下標的值,執行步驟5-8;

步驟5-8:將計算的power值賦給全局變量lastpower,為下一次判斷su信號是否需要避讓pu信號做準備;

步驟5-9:結束;

計算出指定頻段pu信號的功率的流程如下:

步驟6-1:把pu信號的能量初始化為0,並把設置的檢測頻率範圍的邊界f1和f2利用公式(27)轉換成對應的下標fn1和fn2;

步驟6-2:判斷fn1和fn2是否小於等於0,如果小於等於0,說明fn1或fn2不合法,就把它們的值改為1,否則,直接執行步驟6-3;

步驟6-3:判斷fn1是否小於fn2,如果是,執行步驟6-4;否則執行步驟6-5,在這裡,fn1對應起始頻率,fn2對應截止頻率;

步驟6-4;在數組s中,從下標fn1到fn2找到對應元素中大於門限值t的元素,先把這個元素通過公式(8)去掉db單位,其中ps(db)是單位為db的pu信號的功率,然後把轉換後的結果遞加到pu信號的功率ps中,這樣,可以求出f1到f2中存在的pu信號的能量ps;

ps=10^(ps(db)/10)(8)

步驟6-5:結束。

進一步地,所述發射fm信號模塊中包括用來發射fm信號的子vi和發射fm波的前面板,所述發射fm信號模塊根據得到的所述認知用戶su的發射頻率、適當的iq速率和頻偏這樣的參數,運行所述用來發射fm信號的子vi可以利用usrp的發射端發射fm信號運行,所述用來發射fm信號的子vi有三個輸入,所述三個輸入分別為載波頻率、iq速率以及fm頻偏,所述認知用戶su的發射頻率就是fm載波頻率,通過所述發射fm波的前面板輸入所述用來發射fm信號的子vi所需的載波頻率、iq速率以及fm頻偏的數值,通過所述發射fm波的前面板還能輸入所述niusrp配置信號vi,也就是niusrpconfigure函數,所需的配置參數,通過所述發射fm波的前面板輸入的配置參數用於設置usrp信號的發射,所述用來發射fm信號的子vi中包括波形重採樣函數和fm調製函數;

在所述發射fm波的前面板輸入所述用來發射fm信號的子vi所需的載波頻率、iq速率、fm頻偏的數值以及所述niusrp配置信號vi所需的配置參數後,所述用來發射fm信號的子vi把iq速率傳送到所述波形重採樣函數,所述波形重採樣函數的輸入端獲取到所述iq速率和所述音頻信號存儲模塊寫入的音頻信號的數據信息後,根據這兩個參數,所述波形重採樣函數可以控制音頻信號的每個數據點每隔時間間隔δt來形成重採樣後的波形數據發送,由此實現音頻信號的比特率與usrp信號發射的iq速率相匹配的功能;

接著所述fm調製函數實現對信號的fm調製,所述fm調製函數有兩個輸入參數,一個是重採樣後的波形數據,一個是fm信號的頻偏,採樣後的波形數據從波形重採樣函數獲得,fm信號的頻偏為常數;

最後實現對信號的fm調製後,調製後的信號就通過所述ni-usrp驅動程序在所述fm載波頻率下發射出去。

進一步地,對usrp接收到的信號進行處理,是以while循環的方式實現usrp能連續的接收信號的條件下通過所述解調fm信號模塊對接收到的數據進行fm處理,該fm處理只需要對niusrpfetchrxdate驅動程序的輸出結果進行處理,所述解調fm信號模塊中包括用來播放音頻信號的simplesound子vi、fm解調音頻信號的前面板和處理信號的函數,所述simplesound子vi根據變量action值選擇條件語句中的分支,若變量action值為「open」,就用soundoutputconfigure函數來配置音效卡為播放音頻做準備;若變量action值為「write」,先用一個normalizewaveform函數對波形數據進行歸一化,再把處理後的數據用soundoutputwrite函數送入計算機的音效卡進行播放;若變量action值為「close」,就用soundoutputclear函數清除送給音效卡的緩存數據,結束音頻的播放,所述fm解調音頻信號的前面板的左側部分為用來錄入niusrp函數的配置參數的部分,其中numberofsamples配置參數代表每次從數據接收信道中接收到的樣本數,numberofsamples和iq速率iqrate有以下關係:

fetchtime為時域中完成一次數據採集的時間,resolutionbandwidth為頻域中的頻率解析度,即每個相鄰數據間的頻率間隔;所述fm解調音頻信號的前面板的右側部分為用於顯示解調後的波形信號圖和功率頻譜圖的波形顯示部分,具體處理方式如下;

所述處理信號的函數對usrp接收到的連續信號在whileloop中進行處理,如果在數據信號接收正常的條件下按照fm解調音頻信號的前面板中錄入的niusrp函數的配置參數來持續接收數據,把接收的數據轉換為極坐標的形式,把極坐標中的相位信號展開,展開後對數據進行微分,微分後分別把usrp採樣率與音效卡信息的採樣率匹配、把數據實數部分和虛數部分分開和求信號的功率密度值,然後把數據實數部分和虛數部分分開和求信號的功率密度值後的數據分別進行顯示然後結束該處理信號的函數的運行,而把usrp採樣率與音效卡信息的採樣率匹配後的數據送到音效卡在把用來播放音頻信號的simplesound子vi中的action值變為「write」的條件下播放,播放完成後結束該處理信號的函數的運行,所述把極坐標中的相位展開是通過unwrap函數實現的。

本發明的技術效果為:在限定只用一臺usrp的情況下,可以用一根天線作為接收天線接收無線信號,通過頻譜感知程序中的usrp頻譜感知模塊對接收的無線信號進行頻譜感知,找到可用頻段後,通過另一根天線在此可用頻段上發射fm信號。

附圖說明

圖1為本發明的usrp頻譜感知模塊的組成示意圖。

圖2為本發明的音頻信號存儲前面板的示意圖。

圖3為本發明的外圍程序的流程圖。

圖4為本發明的matlab節點的程序流程圖。

圖5為本發明的所述用於頻譜感知的matlab節點的程序的一個部分的流程圖。

圖6為本發明的所述用於頻譜感知的matlab節點的程序的另一個部分的流程圖。

圖7為本發明的所述用於頻譜感知的matlab節點的程序的剩餘一個部分的流程圖。

圖8為本發明的所述發射fm波的前面板的示意圖。

圖9為本發明的所述fm解調音頻信號的while循環部分的流程圖。

圖10為本發明的fm解調音頻信號的前面板的示意圖。

圖11為本發明的實施例進行檢測的基於usrp的頻譜感知程序運行前面板示意圖。

圖12是對圖11中能量密度譜的檢測結果圖。

圖13是具體實施方式中的解調結果圖。

具體實施方式

下面將結合實施例對本發明做進一步地說明。

如圖1-圖10所示,本實施例的基於usrp的頻譜感知系統,包括usrp,所述usrp通過乙太網與主機計算機pc相連接;這樣在接收信號時,usrp負責把空間的無線信號轉換成數位訊號傳輸給主機計算機pc,然後主機計算機pc負責處理這些數位訊號,處理這些數位訊號的方式可以為解調或者解碼;在發送信號時,主機計算機pc先對數位訊號進行處理,處理這些數位訊號的方式可以為編碼或調製,然後把處理好的數位訊號傳輸給usrp,usrp再把這些數位訊號轉換成模擬信號,通過天線發送到空間中。

所述主機計算機pc中包括labview軟體平臺和niusrp軟體套件,所述niusrp軟體套件在labview中增加了ni-usrp驅動程序,所述labview軟體平臺中的程序通過ni-usrp驅動程序與所述usrp進行交互;

所述labview軟體平臺中的程序包括頻譜感知程序,所述頻譜感知程序包括usrp頻譜感知模塊。

所述usrp為niusrp,所述niusrp通過千兆乙太網與主機計算機pc相連接。

所述主機計算機pc中還能夠引用matlabscript以此來實現labview與matlab的聯調。在labview程序設計中如果數據比較複雜,可以把它交給matlab來處理。

所述ni-usrp驅動程序包括八個函數,所述八個函數分別為

17.niusrp打開rx會話vi,即niusrpopenrxsessionvi;

18.niusrp配置信號vi,即niusrpconfigurevi;

19.niusrp初始化vi,即niusrpinitiatevi;

20.niusrp打開tx會話vi,即niusrpopentxsessionvi;

21.niusrp提取接收數據vi,即niusrpfetchrxdatavi;

22.niusrp發射數據vi,即niusrpwritetxdatavi);

23.終止vi,即niusrpabortvi;

24.關閉vi,即niusrpclosesessionvi;其中1-4中的vi實現配置功能,5-6中的vi實現讀寫功能,7-8中的vi實現結束功能。

所述niusrpopenrxsessionvi用來啟動接收射頻信號。

所述niusrpconfigurevi用來與接收會話rx或發送會話tx一起使用。通過這個vi,可以手動設置發送或接收數據的iq率,載頻,增益這樣的信息。但是,並不是所有手動設置的iq率、頻率以及增益都是有效的。如果輸入的參數值並非有效,函數會把輸入值強制轉化成一個有效值。

所述niusrpinitiatevi用來在niusrp配置vi之後使用,它可以告訴usrp參數配置已經完成,可以接收數據了。

所述niusrpopentxsessionvi用來啟動usrp發射射頻信號。

所述niusrpfetchrxdatavi用於提取usrp接收的數據。其可以把提取的數據進行解調或解碼這樣的數位化處理。

所述niusrpwritetxdatavi用來控制usrp發送iq數據。

所述niusrpabortvi給usrp傳遞停止命令。usrp接收停止命令後,不再接收或者發送數據。

所述niusrpclosesessionvi用來關閉正在運行的rx或者tx部分,並釋放它們所用的內存。niusrpclosesessionvi和niusrpabortvi不同之處在於:如果調用了前者,如要重新使用usrp,需要重新運行程序;如果調用了後者,可以在不重新運行程序的情況下,重新使用usrp。

所述接收無線信號和發射無線信號模塊通過所述ni-usrp驅動程序的所述八個函數來實現接收無線信號和發射無線信號的過程。

所述基於usrp的頻譜感知系統的方法,包括:在限定只用一臺usrp的情況下,可以用一根天線作為接收天線接收無線信號,通過頻譜感知程序中的usrp頻譜感知模塊對接收的無線信號進行頻譜感知,找到可用頻段後,通過另一根天線在此可用頻段上發射fm信號,這時終止針對接收天線的能量檢測模塊的能量檢測,利用接收天線解調發射天線所發射的fm信號,而所述usrp頻譜感知模塊包括音頻信號存儲模塊、計算判決門限模塊、能量檢測模塊、發射fm信號模塊以及解調fm信號模塊。所述usrp頻譜感知模塊的組成如圖1所示。

所述usrp頻譜感知模塊的基礎是用來對fm調製音頻信號進行發射與接收,所以音頻信號存儲模塊首先要解決的問題就是音頻信號的來源問題。labview中有關於處理音頻信號的函數,下面介紹音頻信號的存儲。需要注意,labview進行音頻信號處理時,只能識別.wav格式的文件。

所述音頻信號存儲模塊包括配置音頻輸入的函數、讀取音頻輸入的函數、寫入並打開音頻文件的函數、寫入音頻文件的函數、音頻輸入清零的函數、關閉音頻文件的函數和如圖4所示的音頻信號存儲前面板,所述配置音頻輸入的函數用於設置音頻信號的特徵,一般在usrp頻譜感知模塊開頭用到,所述音頻信號的特徵包括每通道採樣總數、採樣模式、設備id以及聲音格式,所述讀取音頻輸入的函數用於從所述主機計算機pc的音效卡中讀取正在錄製的音頻信號,所述寫入並打開音頻文件的函數用於指定音頻信號在磁碟上的存儲位置,所述寫入音頻文件的函數用於把讀取的音頻信號寫入到指定的音頻信號的存儲位置,所述音頻輸入清零的函數用於停止採集數據、清除緩存、任務返回至默認狀態以及清除與任務相關的數據,所述關閉音頻文件的函數用於停止音頻信號的存儲,表明音頻信號存儲完成;這樣通過所述音頻信號存儲前面板選擇音頻文件的存儲路徑(在圖2中的示例中,選擇的音頻文件的存儲路徑為e:\test.wav)、輸入每通道採樣總數、採樣模式、設備id以及聲音格式,所述設備id是音頻操作時輸入或輸出的設備的標識,它的默認值為0,一般不需要更改,所述每通道採樣總數為指定的從樣本緩衝區中讀取樣本的速率,所述採樣模式為指定vi進行有限採樣或連續採樣,所述聲音格式為設置音頻操作的採集速率、通道數量和每個採樣的比特位數;然後點擊所示音頻信號存儲前面板的停止按鈕,這樣就結束了錄入並把選擇的音頻文件的存儲路徑傳輸到寫入並打開音頻文件的函數,而輸入的每通道採樣總數、採樣模式、設備id以及聲音格式傳輸到配置音頻輸入的函數,然後所述讀取音頻輸入的函數按照傳輸到配置音頻輸入的函數中的所述每通道採樣總數、採樣模式、設備id以及聲音格式用於從所述主機計算機pc的音效卡中讀取正在錄製的音頻信號,接著所述寫入音頻文件的函數根據傳輸到寫入並打開音頻文件的函數中的選擇的音頻文件的存儲路徑用於把讀取的音頻信號寫入到選擇的音頻文件的存儲路徑(也就是指定的音頻信號的存儲位置),寫入完畢後所述音頻輸入清零的函數就停止採集數據、清除緩存、任務返回至默認狀態以及清除與任務相關的數據,而所述關閉音頻文件的函數停止音頻信號的存儲。

所述計算判決門限模塊是在運行能量檢測模塊進行能量檢測之前,根據公式(1)

來推導出門限值需要有一段信號的長度、信噪比以及噪聲功率。這些信息可以從參考頻譜上獲取,下面分析如何從一段參考頻譜上得到這些計算判決門限的必要信息,q(.)是正態分布尾部概率函數,所述計算判決門限模塊包括計算門限設置信息的子vi、計算判決門限的子vi、matlab節點的程序和外圍程序,為了保證計算結果的可靠性,所述計算門限設置信息的子vi對同一波段的頻譜數據進行10次取樣,將這10組取樣處理結果的中位數作為輸出,所述計算門限設置信息的子vi的輸入端有三個參數,所述三個參數分別為待處理的功率密度譜的波形數據,待檢測數據的起始頻率和待檢測數據的截止頻率,而所述計算門限設置信息的子vi的輸出端是一個簇集合,包括兩個參數,該兩個參數分別是整個波形數據的數組長度的一半n/2和虛警概率pf,把該兩個參數代入公式(1)就能計算出對應於虛警概率的門限值λf,而在外圍程序中,設置了1個全局變量cishu,還有2個局部變量pnz和門限設置信息;cishu用於記錄所述計算門限設置信息的子vi運行的次數;門限設置信息為前10次取樣計算結果的中位數,如果取樣次數不到10次,門限設置信息為每次取樣後的計算結果;如果取樣次數超過10次,門限設置信息與取樣10次門限設置信息相同,另外還設置了局部變量數組形式的變量pnz,pnz負責把每次外圍程序的運行結果存儲下來,等到對頻譜數據取樣10次時,外圍程序計算pnz數組中數據的中位數,如圖3所示,所述外圍程序的具體流程如下:

步驟1-1:獲取全局變量cishu的值。在所述外圍程序剛開始時,把cishu設置成1;

步驟1-2:判斷cishu是否小於11,如果小於11,執行步驟1-3;如果不小於11,執行步驟1-5;

步驟1-3:把頻譜數據段的數據送入matlab節點,利用matlab工具處理數據,把一次運算的結果依次存到局部變量數組pnz中,在matlab節點裡,程序會判斷是否程序已經執行了10次,如果執行了10次,則會把10次數據的中位數作為門限設置信息的局部變量,並將該局部變量作為程序輸出值;

步驟1-4:全局變量cishu自加1賦給全局變量cishu;

步驟1-5:獲取步驟1-3中的門限設置信息,並將其作為程序輸出值;

所述matlab節點的程序計算指定頻譜內的噪聲功率和整個波形數據的長度的一半,取10次計算結果的中位數作為輸出結果,所述matlab節點的輸入端參數及作用如下:

所述matlab節點的輸入端參數包括:

起始頻率f1和截止頻率f2,用於確定頻譜範圍;

全局變量cishu,用於記錄所述計算門限設置信息的子vi運行的次數;

局部變量pnz,用於存儲前10次的計算結果;

功率譜密度,所述功率譜密度是波形數據格式,包括三個參數f0,df,magnitude,分別表示波形的起始頻率、頻率間隔以及對應頻率點的功率密度;

所述matlab節點的輸出端的參數及其含義如下:

pn是程序運行10次得到的噪聲功率的中位數;

m是波形數據長度的一半;

局部變量pnz用於把計算結果寫入數組,以待matlab節點的程序再次運行時可以從中讀取數據;

如圖4所示,所述matlab節點的程序的流程如下所示:

步驟2-1:根據公式(2)計算出起始頻率和截止頻率各自在數組magnitude中對應的下標n1和n2,為了確保n1和n2是整數,使用round(n)函數對公式(2)運算的結果進行四捨五入處理,其中n為n1或者n2,f為f1或者f2:

n=(f-f0)/df(2)

步驟2-2:為了防止起始頻率在數組magnitude中對應的下標n1為0時,程序出錯,設置當起始頻率在數組magnitude中對應的下標n1為0時,強制把該n1的值調整為1;

步驟2-3:計算n1到n2的數據點的個數n,作為指定頻率段數組的長度;計算出輸入數組magnitude的長度值的一半賦值給m作為輸出;

步驟2-4:把波形幅度信息s中下標從n1到n2的元素值,用公式(3)進行計算,並把結果賦給新數組x,其中數組x的下標從1開始,長度為n:

pn=10^(pn(db)/10)(3)

其中pn(db)表示用分貝db值表示的噪聲功率;在計算檢測門限的程序中,要用到噪聲功率pn的實際值,可用公式(3)把分貝值轉換為實際值。

步驟2-5:高斯噪聲信號的能量在頻域內的表達式為公式(4)所示:

由於在某個頻段存在pu信號,不可能對整個頻段的功率值疊加來求噪聲功率。利用高斯噪聲信號的功率譜均值p(f)是一個固定值,可以先求特定頻段的均值p(f)df,然後以此均值p(f)df乘以頻譜圖數據的點數,求取整個頻段的噪聲功率p(t);

進行到步驟2-5,程序已經完成了對所需參數m,pn的計算,但是為了數據的準確性,下面的步驟考慮從多組數據中計算中位數作為輸出。

步驟2-6:把pn賦值給數組局部變量pnz,數組的下標設置為程序運行的次數,也就是全局變量cishu;

步驟2-7:根據全局變量cishu判斷所述matlab節點的程序是否運行了10次,如果全局變量cishu等於10,執行步驟2-8,否則執行步驟2-9;

步驟2-8:求取數組局部變量pnz的中位數,把結果賦值給數組局部變量pnz,並把pnz作為輸出,執行步驟2-9;

步驟2-9:全局變量cishu自加1,表示程序已經完成了一次計算pn,cishu是一個全局變量,在主程序初始運行時,默認值為1;這樣保證了程序的輸出參考了多組值,可以減小突然的脈衝對結果的幹擾。

也就是通過門限參數設置子vi可以得到公式(1)中等號右邊的兩個未知參數(pu信號的噪聲功率pn和波形數據長度值的一半m),下面再利用公式(1)計算判決門限t,所述計算判決門限的子vi可以根據輸入參數計算出能量檢測的門限值,而其輸入參數包括門限設置信息和虛警概率,所述門限設置信息可以從計算門限設置信息的子vi中獲取,虛警概率代表把噪聲信號誤當作pu信號的概率,可以手動設置,默認情況下為0.1,所述計算判決門限的子vi的輸出結果為檢測門限值t;具體實現主要通過matlab節點來進行數據處理,下面分析matlab節點的數據處理程序。而所述計算判決門限的子vi包括matlab節點的數據處理程序,所述matlab節點的數據處理程序的數據處理流程如下:

步驟3-1:根據公式(1)可以計算出虛警概率pf所對應的門限值tn,也就是λf,matlab節點的數據處理程序中包括qfuncinv函數,其是matlab中的封裝函數,能夠實現q-1的功能;

步驟3-2:因為功率譜密度的數據的單位是分貝,所以還需要把tn的單位轉換成db,轉換公式為公式(5)所示,公式(5)中的t(db)表示單位為db的檢測門限值:

t(db)=10lg(tn)(5)

步驟3-3:把結果t(db)作為判決門限而輸出;

這樣就完成了計算判決門限的設計。

進一步地,所述能量檢測模塊是根據這段頻譜上的值是否存在大於檢測門限值來進行判決的,如果這段頻譜上的值大於檢測門限值,就存在pu信號,如果這段頻譜上的值不大於檢測門限值,就不存在pu信號,所述檢測門限值就是所述判決門限;因而說,找到一個合適的檢測門限,對檢測結果有很大的作用。如果門限值太低,就會使虛警概率pf太大,把噪聲信號誤認為是pu信號;如果門限值太高,就會使檢測概率pd變小,這樣即使頻譜上存在pu信號,也不一定能判決出來,出現漏檢現象。因此,需要找到一個合適能量檢測門限值λ(在程序中以t或者tn表示門限值λ),以使檢測概率與虛警概率折中。

另外所述能量檢測模塊包括用於頻譜感知的vi,所述用於頻譜感知的vi可以從輸入的功率密度譜的數據中,根據門限值的大小,來判斷功率密度譜中哪些頻段存在pu信號,還可以根據檢測結果,以及fm頻偏的大小,計算fm發射信號的載波頻率,最後,根據pu信號範圍中的起始頻率和終止頻率,該用於頻譜感知的vi能夠計算出這一頻段pu信號的功率;

所述用於頻譜感知的vi中包括有用於頻譜感知的matlab節點,在所述用於頻譜感知的matlab節點的輸入端包括一個全局變量suf,所述用於頻譜感知的matlab節點的輸出端包括另一個全局變量suf和全局變量lastpower,其中suf是magnitude數組的下標,magnitude數組也就是數組s,利用公式(6),可以根據suf計算出發射頻率fw(換一個角度,也可以把suf理解為發射頻率fw在magnitude數組中所對應的下標),如果是對某一載波信號進行分析,則需要在所得結果的基礎上加上載波頻率fz,如公式(7)所示:

fw=f0+df*suf(6)

fw=fz+f0+df*suf(7)

在所述用於頻譜感知的matlab節點的輸入端包括pu信號範圍的兩個參數f1和f2,f1和f2分別代表估算pu信號功率時,計算範圍的起始頻率和截止頻率;

所述用於頻譜感知的matlab節點的程序分為順序執行的三個程序部分,所述三個程序部分包括:

a.頻譜數組中找到所有可以作為su發射頻率的下標;

b.計算出su信號的發射頻率對應的下標suf;

c.計算出指定頻段pu信號的功率;

所述頻譜數組中找到所有可以作為su發射頻率的下標的程序部分可以從頻譜數組中找到所有可以作為認知用戶su的發射頻率的下標,所述頻譜數組中找到所有可以作為su發射頻率的下標的程序部分判斷頻譜數組中的下標是否可以為認知用戶su的發射頻率的下標的標準是:發射的su信號不能對pu信號造成幹擾,所述頻譜數組中找到所有可以作為su發射頻率的下標的程序部分的流程如下:

步驟4-1:計算出數組s的長度n,和頻偏w對應的數據點數n,並定義一個和s長度相同,初值為0的數組x;

步驟4-2:依次遍歷數組s中的元素,如果元素值大於閾值t,所述閾值t也就是門限值,那麼此元素對應下標處x的元素值為1,這樣就找到了s中所有大於閾值的點,也就可以認為下標處x所對應的數組元素值為1處存在pu信號;

步驟4-3:令y等於x,其中y用於記錄所有可以作為發射頻率的數據點位置,令y等於x,就保證了在x(i)等於1處,即存在pu信號的地方,不能作為發射頻率對應的下標,這樣,就只要考慮在pu邊界左右n各點處和數組y的邊界附近不可以作為發射頻率對應的下標的情況了;

步驟4-4:遍歷x中的每一個元素,判斷在x(i)是否與x(i)之前的三個數的值是否不同,通過這種辦法,找到pu信號的邊界,所述pu信號的邊界包括pu信號上升的邊界和pu信號下降的邊界,如果判斷的結果不同,執行步驟4-5;如果判斷的結果相同,執行步驟4-10,i為整型變量;

步驟4-5:判斷i-n是否小於1,即判斷i-n是否溢出,如果溢出,令k1=1,如果i-n沒有溢出,令k1=i-n,這時k1的作用是用來作為找到可以作為發射頻率的頻段的起始邊界,同樣地,還包括一個終止邊界,定義為k2,所述k1和k2為整型變量,k2在後面的步驟會出現;

步驟4-6:判斷i+n是否大於n,同樣也是判斷i+n是否溢出,如果溢出,令k2=n;如果沒有溢出,令k2=i+n;

步驟4-7:通過步驟4-5和步驟4-6,已經找到了授權用戶pu邊界處左邊和右邊n個點的位置是k1到k2,並保證了k1,k2沒有溢出,在這一步驟中,令y中k1和k2之間的下標對應的元素值為1;保證邊界左右n個點的下標不能作為發射頻率的下標。

步驟4-8:如果在遍歷的時候,y數組元素的下標i=1時,即在y數組的開始處,並且i+n沒有溢出,那麼令y數組的下標1到1+n處的元素值為1;

步驟4-9:如果在遍歷的時候,y數組元素的下標i=n時,即在y數組的終止處,並且i-n沒有溢出,那麼令y數組下標n-n到n處的元素值為1;這樣也就保證了在數組y的端點處不能作為發射頻率的下標。經過對y的處理後,剩餘的y(i)=0的下標,可以作為發射頻率的下標。

步驟4-10:結束;

在通過所述頻譜數組中找到所有可以作為su發射頻率的下標的程序部分找到了所有認知用戶su的發射頻率的下標後,就需要從中選擇一個認知用戶su的發射頻率的下標。這時,有兩點需要考慮:一點是認知用戶su的發射頻率的改變不能太頻繁,如果pu信號只是在邊界處頻繁抖動,不需要改變認知用戶su的發射頻率對應的下標;另一點是,假設已經找到了認知用戶su的發射頻率對應的下標,並且認知用戶su已經在根據這個下標轉換後的頻率處發射信號,除非在認知用戶su的發射頻率的頻段內出現pu信號,否則也不能改變su發射頻率對應的下標。

所述計算出su信號的發射頻率對應的下標suf的程序部分的流程如下:

步驟5-1:對所述計算出su信號的發射頻率對應的下標suf的程序部分的重要參數初始化,令i=1和power=0,為下面計算發射頻率對應的下標以及pu信號的能量做準備,其中i代表發射頻率下標的初始值,power代表pu信號的初始能量值;

步驟5-2:以while循環的方式來逐一判斷y(i)是否為1,如果y(i)為1,i進行自加運算,否則所述計算出su信號的發射頻率對應的下標suf的程序部分跳出while循環,通過這種辦法找到y(i)中第一個其值不為1的下標i,已經知道該y(i)的值為0,表示下標i處對應的頻率可以作為發射頻率,這樣就找到了第一個可以作為su發射頻率的對應下標的值;

步驟5-3:通過步驟5-2,雖然找到了su發射頻率的對應下標值,但這個值不一定要轉換成發射頻率。在這一步驟,判斷suf分別加n和減n後是否在1到n範圍內,如果在1到n內,說明suf值為上次發射頻率對應的下標,就要根據suf值計算其左邊和右邊的n個數據點的能量,把結果賦值給power,然後執行步驟5-4,如果n不在1到n內,則說明suf不是上次發射頻率對應的下標,直接執行步驟5-4;

步驟5-4:判斷i+10是否小於n,如果是,說明存在合適的發射頻率的下標,執行步驟5-5;如果不是,說明檢測到的頻率下標不能作為發射頻率的下標,執行步驟5-7;

步驟5-5:判斷是否滿足三個條件,所述三個條件為suf等於1、|suf-i|大於10和power比0.7*lastpower小,這三個條件均滿足執行步驟5-6;其中,第一個條件suf等於1的意義是上一次沒有找到合適的發射頻率或者是上次沒有發射信號;第二個條件|suf-i|大於10的意義是i值的變化相比suf而言,超過了10單位,這樣是為了給檢測信號10個單位的抖動空間,如果上次信號的邊界下標變化不超過10個單位就不需要變化;第三個條件power比0.7*lastpower的意義是,當一個su信號已經發射,如果此時在su信號的頻帶上pu發射信號,su信號就需要避讓,實際上是根據su信號所在頻段內的信號能量是否突增來判斷授權用戶是否開始佔用此頻段。

步驟5-6:將i賦值給全局變量suf,表示找到了新的發射頻率的下標,執行步驟5-8;

步驟5-7:將1賦值給全局變量suf,表示沒有找到可以作為發射頻率下標的值,執行步驟5-8;

步驟5-8:將計算的power值賦給全局變量lastpower,為下一次判斷su信號是否需要避讓pu信號做準備;

步驟5-9:結束;

至此,計算出su信號的發射頻率對應的下標suf的程序部分找到了發射頻率對應的下標。

計算出指定頻段pu信號的功率的流程如下:

步驟6-1:把pu信號的能量初始化為0,並把設置的檢測頻率範圍的邊界f1和f2利用公式(27)轉換成對應的下標fn1和fn2;

步驟6-2:判斷fn1和fn2是否小於等於0,如果小於等於0,說明fn1或fn2不合法,就把它們的值改為1,否則,直接執行步驟6-3;

步驟6-3:判斷fn1是否小於fn2,如果是,執行步驟6-4;否則執行步驟6-5,在這裡,fn1對應起始頻率,fn2對應截止頻率,必須fn1大於fn2才有意義;

步驟6-4;在數組s中,從下標fn1到fn2找到對應元素中大於門限值t的元素,先把這個元素通過公式(8)去掉db單位,其中ps(db)是單位為db的pu信號的功率,然後把轉換後的結果遞加到pu信號的功率ps中,這樣,可以求出f1到f2中存在的pu信號的能量ps;

ps=10^(ps(db)/10)(8)

步驟6-5:結束。

到這裡,程序完成了對pu信號功率的估算,結合前面對噪聲功率pn的估算,利用公式(9)可以計算出pu信號的信噪比snr。

snr=10lg(ps/pn)(9)

所述發射fm信號模塊中包括用來發射fm信號的子vi和發射fm波的前面板,所述發射fm信號模塊根據得到的所述認知用戶su的發射頻率、適當的iq速率和頻偏這樣的參數,運行所述用來發射fm信號的子vi可以利用usrp的發射端發射fm信號運行,所述用來發射fm信號的子vi有三個輸入,所述三個輸入分別為載波頻率、iq速率以及fm頻偏,所述認知用戶su的發射頻率就是fm載波頻率,通過所述發射fm波的前面板輸入所述用來發射fm信號的子vi所需的載波頻率、iq速率以及fm頻偏的數值,通過所述發射fm波的前面板還能輸入所述niusrp配置信號vi,也就是niusrpconfigure函數,所需的配置參數,通過所述發射fm波的前面板輸入的配置參數用於設置usrp信號的發射,所述用來發射fm信號的子vi中包括波形重採樣函數和fm調製函數;

在所述發射fm波的前面板輸入所述用來發射fm信號的子vi所需的載波頻率、iq速率、fm頻偏的數值以及所述niusrp配置信號vi所需的配置參數後,所述用來發射fm信號的子vi把iq速率傳送到所述波形重採樣函數,所述波形重採樣函數的輸入端獲取到所述iq速率和所述音頻信號存儲模塊寫入的音頻信號的數據信息後,根據這兩個參數,所述波形重採樣函數可以控制音頻信號的每個數據點每隔時間間隔δt來形成重採樣後的波形數據發送,由此實現音頻信號的比特率與usrp信號發射的iq速率相匹配的功能;

接著所述fm調製函數是labview軟體裡rfcommunications軟體包裡ip封裝的一個函數,可以實現對信號的fm調製,所述fm調製函數有兩個輸入參數,一個是重採樣後的波形數據,一個是fm信號的頻偏,採樣後的波形數據從波形重採樣函數獲得,fm信號的頻偏為常數;

最後實現對信號的fm調製後,調製後的信號就通過所述ni-usrp驅動程序在所述fm載波頻率下發射出去。

如果要考慮對連續的fm信號解調,必須保證usrp能連續地接收信號,這個問題可以通過while循環來解決。對usrp接收到的信號進行處理,是以while循環的方式實現usrp能連續的接收信號的條件下通過所述解調fm信號模塊對接收到的數據進行fm處理,該fm處理只需要對niusrpfetchrxdate驅動程序的輸出結果進行處理,所述解調fm信號模塊中包括用來播放音頻信號的simplesound子vi、fm解調音頻信號的前面板和處理信號的函數,所述simplesound子vi根據變量action值選擇條件語句中的分支,若變量action值為「open」,就用soundoutputconfigure函數來配置音效卡為播放音頻做準備;若變量action值為「write」,先用一個normalizewaveform函數對波形數據進行歸一化,再把處理後的數據用soundoutputwrite函數送入計算機的音效卡進行播放;若變量action值為「close」,就用soundoutputclear函數清除送給音效卡的緩存數據,結束音頻的播放,所述fm解調音頻信號的前面板的左側部分為用來錄入niusrp函數的配置參數的部分,其中numberofsamples配置參數代表每次從數據接收信道中接收到的樣本數,numberofsamples和iq速率iqrate有以下關係:

fetchtime為時域中完成一次數據採集的時間,resolutionbandwidth為頻域中的頻率解析度,即每個相鄰數據間的頻率間隔;所述fm解調音頻信號的前面板的右側部分為用於顯示解調後的波形信號圖和功率頻譜圖的波形顯示部分,具體處理方式如下;

所述處理信號的函數對usrp接收到的連續信號在whileloop中進行處理,如果在數據信號接收正常的條件下按照fm解調音頻信號的前面板中錄入的niusrp函數的配置參數來持續接收數據,把接收的數據轉換為極坐標的形式,把極坐標中的相位信號展開,展開後對數據進行微分,微分後分別把usrp採樣率與音效卡信息的採樣率匹配、把數據實數部分和虛數部分分開和求信號的功率密度值,然後把數據實數部分和虛數部分分開和求信號的功率密度值後的數據分別進行顯示然後結束該處理信號的函數的運行,而把usrp採樣率與音效卡信息的採樣率匹配後的數據送到音效卡在把用來播放音頻信號的simplesound子vi中的action值變為「write」的條件下播放,播放完成後結束該處理信號的函數的運行,所述把極坐標中的相位展開是通過unwrap函數實現的,所述unwrap函數可以把不連續的相位信號轉換成連續的相位信號,避免相位的突變。

接下來分析該方法和系統接收到的無線信號的效果,先對所述各前面板的參數進行設置,為後面分析程序運行效果做準備。然後根據程序運行結果來驗證獲取的門限值的合理性,以及得出pu信號受噪聲幹擾較小的特點。之後,程序分析了能量檢測的結果,得到程序能夠從頻譜中較好地找出pu信號的結論。最後,對從usrp接收天線接收的信號進行解調,根據解調效果來驗證su信號發射頻率的設置是否得當,具體過程如下:

在使用usrp之前,需要把主機計算機pc的ip地址設置成192.168.10.1。在默認情況下,usrp的ip為192.168.10.2,這個地址只能與192.168.10.1配對。如果把主機計算機pc的ip地址設置成其它的地址,即使usrp與主機計算機pc之間通過網線連接,usrp也無法實現與主機計算機pc的通信。如圖11所示是基於usrp對無線信號進行頻譜感知的程序前面板。設定iqrate為4m,carrierfrequency為91m。在能量檢測譜中,橫坐標的範圍是-2m到2m,代表檢測頻譜帶寬為4m。在橫坐標值為0處,代表載波頻率91mhz的能量。可以認為檢測頻譜的範圍是89mhz~93mhz。在前面板左下方的參數設置區中,可以根據usrp接收信號的「能量密度圖」手動設置噪聲檢測頻率範圍,和pu信號檢測頻率範圍。程序可以通過這兩個範圍值估算出接收信號的噪聲功率和pu功率。在圖11所示的例子中,設置的檢測噪聲信號的頻率範圍是-1.9mhz~-1.6mhz(沒有考慮載波頻率是91mhz,實際上的檢測頻率範圍是(91-1.9=89.1)mhz~(91-1.6=89.4)mhz),估算得到的噪聲功率為3.43×10-11。將此噪聲功率以及檢測數據點的個數(在程序中通過length函數求得)帶入公式(3-11),就可以求出檢測門限值為-104.562db。通過觀察,可以看出此門限值能好地區分出「能量密度譜」中pu信號和噪聲信號。所以,程序得到的門限值比較合理。

設置pu信號的檢測頻率範圍為-1.2mhz~-0.5mhz。在此範圍內,如果檢測到的信號能量值大於門限值視為pu信號的功率值,把功率值的平均數作為輸出結果「pu信號功率」。圖11中得到的pu信號功率為1.968×10-7。然後根據噪聲功率,和pu信號功率,利用對應公式,可以求出接收信號的信噪比為37.58db。這個信噪比的值比較大,說明usrp接收到的pu信號受噪聲的影響較小。根據計算得到的門限值,可以對頻譜進行能量檢測,圖12是對圖11中能量密度譜的檢測結果。在圖12中,幅度值為1表示在該頻率處為pu信號,幅度值為0表示在該頻率處為噪聲信號。圖12顯示在89.5mhz,90mhz,91mhz處存在pu信號。在圖11的能量密度譜的在這3個頻率處附近,信號的功率明顯比其它頻率處的功率大,可以認為這3個頻率附近的信號為pu信號。所以,程序較為準確地完成了頻譜感知,找到了給定頻譜中pu信號的位置。

另外根據檢測結果,程序計算的「發射頻率」為89mhz。點擊圖11中的「是否發射信號」按鍵,程序以89mhz為載波頻率,發射一個fm波。然後設置接收fm信號的程序的載波頻率為89mhz,對su信號進行接收,可以得到圖13的解調結果。fm解調程序可以對載波頻率處的fm信號進行解調,解調後的音頻信號頻譜圖在圖13中右下方。解調程序可以播放解調後的音頻信號,播放音頻的時候雖然有一些噪聲,但還是能夠粗略地恢復未調製的音頻信號。這說明,發射後的su信號與感知頻譜上的pu信號沒有共佔某一段頻譜。所以,程序找到了合適的su發射頻率,並且其頻譜也沒有與pu信號的頻譜產生混疊。

本技術方案的技術效果為:在限定只用一臺usrp的情況下,可以用一根天線作為接收天線接收無線信號,通過頻譜感知程序中的usrp頻譜感知模塊對接收的無線信號進行頻譜感知,找到可用頻段後,通過另一根天線在此可用頻段上發射fm信號。

以上以實施例的方式對本發明作了描述,本領域的技術人員應當理解,本公開不限於以上描述的實施例,在不偏離本發明的範圍的情況下,可以做出各種變化、改變和替換。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀