[发明专利]一种基于USRP的频谱智能感知系统及其方法有效
申请号: | 201710602195.0 | 申请日: | 2017-07-21 |
公开(公告)号: | CN107294628B | 公开(公告)日: | 2021-06-01 |
发明(设计)人: | 崔翠梅;杨德智;金石;吴澄;汪一鸣;王旭旭 | 申请(专利权)人: | 常州工学院 |
主分类号: | H04B17/382 | 分类号: | H04B17/382;H04B17/327;H04B17/336;H04B17/345 |
代理公司: | 南京钟山专利代理有限公司 32252 | 代理人: | 李小静 |
地址: | 213000 江苏省常州市新*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 usrp 频谱 智能 感知 系统 及其 方法 | ||
1.一种基于USRP的频谱智能感知系统,其特征在于,包括USRP,所述USRP通过以太网与主机计算机PC相连接;
所述主机计算机PC中包括LabVIEW软件平台和NI USRP软件套件,所述NI USRP软件套件在LabVIEW中增加了NI-USRP驱动程序,所述LabVIEW软件平台中的程序通过NI-USRP驱动程序与所述USRP进行交互;
所述LabVIEW软件平台中的程序包括频谱感知程序,所述频谱感知程序包括USRP频谱感知模块;
所述USRP为NI USRP,所述NI USRP通过千兆以太网与主机计算机PC相连接;所述主机计算机PC中还能够引用MATLAB script以此来实现LabVIEW与MATLAB的联调;所述NI-USRP驱动程序包括八个函数,所述八个函数分别为:
1.niUSRP打开Rx会话VI,即niUSRP Open Rx Session VI;
2.niUSRP配置信号VI,即niUSRP Configure VI;
3.niUSRP初始化VI,即niUSRP Initiate VI;
4.niUSRP打开Tx会话VI,即niUSRP Open Tx Session VI;
5.niUSRP提取接收数据VI,即niUSRP Fetch Rx Data VI;
6.niUSRP发射数据VI,即niUSRP Write Tx Data VI;
7.终止VI,即niUSRP Abort VI;
8.关闭VI,即niUSRP Close Session VI;其中1-4中的VI实现配置功能,5-6中的VI实现读写功能,7-8中的VI实现结束功能;
接收无线信号和发射无线信号模块通过所述NI-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,也就是niUSRP Configure函数,所需的配置参数,通过所述发射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处理只需要对niUSRPFetch RX Date驱动程序的输出结果进行处理,所述解调FM信号模块中包括用来播放音频信号的Simple Sound子VI、FM解调音频信号的前面板和处理信号的函数,所述SimpleSound子VI根据变量Action值选择条件语句中的分支,若变量Action值为“Open”,就用Sound Output Configure函数来配置声卡为播放音频做准备;若变量Action值为“Write”,先用一个Normalize Waveform函数对波形数据进行归一化,再把处理后的数据用SoundOutput Write函数送入计算机的声卡进行播放;若变量Action值为“Close”,就用SoundOutput Clear函数清除送给声卡的缓存数据,结束音频的播放,所述FM解调音频信号的前面板的左侧部分为用来录入niUSRP函数的配置参数的部分,其中number of samples配置参数代表每次从数据接收信道中接收到的样本数,number of samples和IQ速率IQ rate有以下关系:
fetch time为时域中完成一次数据采集的时间,resolution bandwidth为频域中的频率分辨率,即每个相邻数据间的频率间隔;所述FM解调音频信号的前面板的右侧部分为用于显示解调后的波形信号图和功率频谱图的波形显示部分,具体处理方式如下;
所述处理信号的函数对USRP接收到的连续信号在While Loop中进行处理,如果在数据信号接收正常的条件下按照FM解调音频信号的前面板中录入的niUSRP函数的配置参数来持续接收数据,把接收的数据转换为极坐标的形式,把极坐标中的相位信号展开,展开后对数据进行微分,微分后分别把USRP采样率与声卡信息的采样率匹配、把数据实数部分和虚数部分分开和求信号的功率密度值,然后把数据实数部分和虚数部分分开和求信号的功率密度值后的数据分别进行显示然后结束该处理信号的函数的运行,而把USRP采样率与声卡信息的采样率匹配后的数据送到声卡在把用来播放音频信号的Simple Sound子VI中的Action值变为“Write”的条件下播放,播放完成后结束该处理信号的函数的运行,所述把极坐标中的相位展开是通过unwrap函数实现的。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于常州工学院,未经常州工学院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710602195.0/1.html,转载请声明来源钻瓜专利网。