usrp_spectrum_sense 的工作流程简介

转自:meteor, http://gnuradio.cc/read.php?tid-270.html

 

很多研究认知的朋友都将usrp_spectrum_sense 作为频谱感知的原型程序,以前我也粗略的看了一下,这两天看到一些这方面的问题,所以我详细的阅读了该程序。下面我将的理解和大家分享,有不对的地方还希望大家提出指正。
首先需要描述的是该程序的执行过程,我用一个简单的框图表示一下

有些细节,以及参数设置,可以看源程序,这里只是写出了主要功能的模块
工作流程大致为 usrp 按照步进调谐中心频率,而调谐过程是由数据统计模块来控制的,然后加窗完成FFT,将FFT变换后的值输入到数据统计模块,用于处理频域数据,同时将处理的结果封装到msg 里面以供使用。

这里面最核心的模块应该是数据统计模块
stats = gr.bin_statistics_f(self.fft_size, self.msgq,self._tune_callback, tune_delay,dwell_delay)
里面的几个参数的意思为:
self.fft_size FFT 变换的长度
self.msgq   消息模块,其实就是一个链表了
self._tune_callback, 是USRP调谐频率过程的一个程序句柄,有了它,stats就可以调用调谐子程序了
tune_delay 可以理解为调谐命令到子板的时间+实际调谐时间+调谐后的第一帧数据的到达时间
dwell_delay 在一个频率点上的停留时间

gr.bin_statistics_f的工作过程可以参照
gr_bin_statistics_f.cc
其主要工作过程其实是一个状态机
首先初始化,然后就进入一个调谐,驻留的循环过程当中,中间将需要的统计数据封装到消息队列msg中,消息队列包括,中心频率fft长度,以及最后计算出来的信息


需要解释的就是这个数据的统计过程是如何实现的,以一个示意的例子来说明吧
比如此时中心频率在f 上,fft 为4点的
f1=f-3/2df, f2=f-1/2df, f3=f1+1/2df, f4=f+3/2df
在一个驻留时间的信号幅度用矩阵表示如下,假设驻留时间是三组信号

A11  A12  A13   A14
A21  A22  A23   A24
A31  A32  A33   A34
处理后的结果是
Max(A11,A21,A31)  Max(A12,A22,A32)  Max(A13,A23,A33)  Max(A14,A24,A34)

转载于:https://www.cnblogs.com/pamge/p/3585787.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值