博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
usrp_spectrum_sense 的工作流程简介
阅读量:6542 次
发布时间:2019-06-24

本文共 1060 字,大约阅读时间需要 3 分钟。

转自:meteor, 

 

很多研究认知的朋友都将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

你可能感兴趣的文章
Bzoj1758: [Wc2010]重建计划
查看>>
redis集群部署及踩过的坑
查看>>
j2EE监听器-listener
查看>>
使用pip命令报You are using pip version 9.0.3, however version 18.0 is available pip版本过期.解决方案...
查看>>
(转)LINQ之路
查看>>
Django REST框架--关系和超链接api
查看>>
双击防止网页放大缩小HTML5
查看>>
C#的一些学习方法
查看>>
U3D Invoke() IsInvoking CancelInvoke方法的调用
查看>>
Javascript 如何生成Less和Js的Source map
查看>>
中间有文字的分割线效果
查看>>
<悟道一位IT高管20年的职场心经>笔记
查看>>
volatile和synchronized的区别
查看>>
10.30T2 二分+前缀和(后缀和)
查看>>
vuex视频教程
查看>>
Java 线程 — ThreadLocal
查看>>
安居客爬虫(selenium实现)
查看>>
-----二叉树的遍历-------
查看>>
ACM北大暑期课培训第一天
查看>>
F. Multicolored Markers(数学思维)
查看>>