GFSK modulation/demodulation 与 GNU Radio 和 USRP

GFSK modulation/demodulation with GNU Radio and USRP

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

但是,当我将 tx 和 rx 输出连接到我的 USRP B210 TX/RX(传输接收器)和 RX2(接收源)时,如下所示,即使这两个源和接收器,我也没有收到任何数据已经通过带有衰减器的射频电缆小心地相互连接。

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

  1. 发射端:数据包解码器和 GFSK mod 块每个符号使用 20 个样本。波特率为 9600,采样率为 20*波特率 = 192K。由于卫星的预期符号率是 baud_rate = 9600,我加入了一个合理的重采样器并将 UHD 符号率设置为 baud_rate。我的逻辑对吗?

  2. GFSK mod 和 demod :对于这两个块,我将灵敏度计算为 S = Pi * Modulation_index/Samples_Per_Symbol。使用默认 BT 值 0.5。我的计算合理吗?是否有 link 用于查找 GFSK 块的文档?我的推导基于 GFSK python 源代码,它不能很好地替代文档。

  3. Packet Encoder/Decoder :即使 GFSK demod 块给出某种相当无意义的输出,数据包解码器的输出为空。这是正常的吗?阈值变量是什么意思,为什么它的值为-1?

我是 GNU Radio 和 GFSK 的新手。所以请给我任何进一步的参考。

提前致谢。

摩西。

即使我不能回答你所有的问题,我也提供以下一些想法:

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

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

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

我终于能够解决问题了。我所做的只是在 GRC 中重新实现 GFSK 解调器。如果你进入 gfsk.py 的源代码,你会发现使用的块是正交解调 --> M&M 时钟恢复 --> 二进制切片器,可以很容易地直接连接到 GRC 中。正如 Marcus 在我的另一个线程 中建议的那样,我用 PFB 块替换了 M&M 时钟恢复块。我的流程图如下所示。