使用GNU Radio和USRP进行GFSK调制/解调

时间:2016-02-17 00:13:41

标签: gnuradio

我目前正在创建一个卫星地面站,用于在未来几个月内控制我们的立方体。使用的调制方案是GFSK,波特率是9600.在尝试通过直接连接流程图中的tx和rx块来尝试与卫星通信之前,我尝试使用USRP板进行一些测试。我能够使用此流程图发送和接收png文件。

然而,当我将tx和rx输出连接到我的USRP B210 TX / RX(传输接收器)和RX2(接收源)时,如下所示,即使两个源和接收器已连接到,我也不接收数据通过带衰减器的射频电缆小心彼此。

GNU Radio Flowgraph

以下是我在制作第二个流程图时考虑的假设。请告诉我我是否走在正确的道路上。

  1. 发送方:数据包解码器和GFSK模块每个符号使用20个样本。波特率为9600,采样率为20 *波特率= 192K。由于卫星的预期符号率是baud_rate = 9600,因此我包括一个有理的重采样器并将UHD符号率设置为baud_rate。我的逻辑是否正确?

  2. GFSK mod和demod:对于这两个块,我计算灵敏度为S = Pi * Modulation_index / Samples_Per_Symbol。使用默认的BT值0.5。我的计算听起来不错?是否有链接可以找到GFSK块的文档?我的推导基于GFSK python源代码,它不是文档的替代品。

  3. 数据包编码器/解码器:即使GFSK解调模块提供某种无意义的输出,数据包解码器的输出也为空。这是正常的吗?阈值变量的含义是什么?为什么它的值为-1?

  4. 我是GNU Radio的新手,也是GFSK的新手。所以请给我任何进一步的参考资料。

    提前致谢。

    摩西。

2 个答案:

答案 0 :(得分:3)

我终于能够解决问题了。我所做的就是在GRC中重新实施GFSK demod。如果你进入gfsk.py的源代码,你会发现使用的块是Quadrature Demod - > M& M时钟恢复 - >二进制切片机,可以直接在GRC中轻松连接。正如Marcus在我的另一个帖子GFSK demodulation with Xlating filter in GNU Radio中所建议的那样,我用PFB块替换了M& M时钟恢复块。我的流程图如下所示。 enter image description here

答案 1 :(得分:2)

即使我无法回答你的所有问题,我也会在下面提出一些想法:

  1. 使用硬件设备时,必须从流程图中删除Throttle 必须。硬件设备现在负责速率限制。混合硬件设备和Throttle块可能会破坏设备所需的流图的实时边界。在这种情况下,UHD驱动程序应生成下溢或溢出消息。

  2. 您确定USRP能否支持所要求的采样率?如果请求的采样率不是时钟的整数抽取,您可能还需要更改设备的master_clock_rate。如果不可能,请考虑进行某种重新采样。

  3. 编辑:B200无法使用默认时钟提供192e3采样率。您可以在master_clock_rate设置19.2e6。然后硬件将应用适当的抽取。 master_clock_rate可以通过设备特定参数或最后GNU Radio版本中出现的Clock Rate块的UHD Sink/Source字段进行更改。