如何使用USRP数据计算功率谱密度?

时间:2016-11-10 08:50:21

标签: python gnuradio usrp

我想在平均功率谱密度(以dbm为单位)和频率(2.4 GHZ至2.5 GHZ)之间绘制图表。

我之前用于power vs freq plot的基本过程是存储由" usrp_specteum_sense.py"生成的数据。一段时间后再取平均值。

我可以根据" usrp_spectrum_sense.py"中使用的功率来计算PSD。 有没有办法直接从usrp数据计算PSD?
是否有任何其他apporch可用于使用USRP计算所需频率范围的PSD

PS:我最近在matplotlib中发现了psd(),可以用来解决我的问题吗?

1 个答案:

答案 0 :(得分:1)

我不确定是否将此问题标记为Retrieve data from USRP N210 device的副本;但是,由于这个问题的海报非常困惑,他的问题也是如此,让我们以简洁的方式回答这个问题:

像USRP这样的SDR设备可以为您提供数字样本。这些只不过是ADC(模数转换器)从它看到的电压中得到的结果。然后,这些数字受制于进行频移,抽取和适当滤波的DSP链。换句话说,来自USRP的离散复信号包络应该与ADC观察到的电压成比例。由于物理原因,这意味着这些样本的幅度平方应与ADC看到的信号功率成正比。

因此,你得到的值是" dBFS" (相对于满量程的dB),这是相对于信号处理链可能产生的最大值的任意度量。

现在,请注意两件事:

  • 正如ADC所见非常重要。在ADC之前
    • 未知天线,a)效率未知,b)未知方向照射的未知辐射模式,
    • 连接到可能与天线阻抗完全匹配或可能不完全匹配的电缆,并且可能与USRP的RF前端阻抗完全匹配,
    • 可能是一组具有不同衰减的预选过滤器,
    • 低噪声前端放大器,取决于具有可调增益的器件/子板,在频率上具有非完全平坦的增益
    • 具有频率相关增益的混频器,
    • 基带和/或IF增益级和衰减器,可调节,
    • 基带滤波器,可以调节,
    • PCB,连接器,无源元件和有源元件的元件差异,温度相关的增益和互调,以及
    • ADC非线性,频率相关行为。
  • 比例在这里很重要,因为在采样之后,会有
    • I / Q不平衡校正,
    • DC / LO泄漏消除,
    • 之前的抗锯齿过滤
    • 抽取,
    • 和位宽和数值类型更改操作。

总而言之,USRP是校准的测量设备。它们非常好,如果为您的特定应用选择合适的一个,您可能只需要使用已知的外部电源进行一次校准,从天线直接输入您的系统到最后出现的采样率,正好是你想要观察的频率。知道"好吧,当我输入x dBm的功率时,我看到了dBFS,因此在dBFS和#34之间有这个因子(xy)dB,你现在已经为你的设备校准了一个配置由

组成
  • 使用的硬件型号和单个设备,包括天线和电缆,
  • 中心频率,
  • 增益,
  • 过滤设置,
  • 抽取/采样率

请注意,进行此类校准,尤其是在2.4 GHz ISM频段中,需要进行" RF静音"房间 - 现在很难找到没有2.4 GHz设备的办公室或实验室,这些频率免费使用的原因是微波炉会干扰;然后有这样的事实:这些频率倾向于衍射和反射在建筑结构,PC箱,带有金属部件的家具上......换句话说:进入消声室,参考发射天线和发射电源并且做整个天线系统校准舞蹈,通常会产生方向性图,而是生成相对于发射功率的数字值"测量。无论该测量是否真正代表您在实验室环境中如何使用USRP,都需要您的考虑。

这是任何微波设备的问题,不仅是USRPs - 在复杂环境中RF传播也不容易预测,接收系统的功率特性不是由单个组件决定的,但是整个系统在其预期的运营环境中。因此,校准必须要求您确切地知道您的天线,电缆,测量前端,数字化仪和DSP,并且可以进行数学计算,包括误差范围,或者您整体校准系统,然后尽可能少地改变。

所以:没有。这个世界中没有Matlab功能可以为这些数字中的数字赋予意义 - 对于绝对功率,你需要根据参考进行校准。

关于线性度的另一个词:USRP的全增益模拟硬件非常敏感 - 如此操作非常敏感同一房间内的WiFi设备就像是在耳边尖叫,消除较弱的信号,并将模拟信号链驱动为非线性。在这种情况下,不仅ADC观察到的电压与天线端口插入的电压失去线性关系,而且通常更糟糕的是放大器变成混频器,因此不需要的互调会在光谱位置引入能量。没有。因此,请确保您在充分利用信号动态范围的地方操作设备,而不会遇到非线性问题。