【问题标题】:Synchronizing USRP source blocks - multiple B2xx devices同步 USRP 源块 - 多个 B2xx 设备
【发布时间】:2020-11-07 05:00:54
【问题描述】:

我正在尝试在由多个 B210 USRP 设备组成的 gnu 无线电中创建一个同步的 usrp 源块。朗:C++。

根据我的发现,我需要:

  • 实例化多个 multi_usrp_sptr,因为每个 B210 都需要一个,并且多个 B210 设备无法通过使用单个 sptr 进行寻址
  • 使用外部频率和 PPS 源 - 可以从块中选择或以编程方式设置的选项
  • 同步重新/调整以实现节点之间的可重复相位偏移 - 这可以使用定时命令 API https://kb.ettus.com/Synchronizing_USRP_Events_Using_Timed_Commands_in_UHD 来实现
  • 使用 time_spec 属性 issue_stream cmd 同步示例流

问题是我应该如何在 GNU radio block 或 gr-uhd 库中插入这些定时命令并设置流的 time_spec?

我查看了接收器/源代码所在的 gr-uhd 文件夹,发现了可以更改的函数。 不幸的是,我不知道如何复制或导出这个库来进行这些修改,然后编译以将我的自定义块插入 GNU Radio,因为 gr-uhd 似乎是在安装 GR 时内置和编译的。 我尝试应对然后制作 lib,但那不是方式 - 它没有成功。我应该通过 gr_modtool 添加自己的源代码块并只插入我需要的命令吗? 与 uhd 及其功能的兼容性除了仅添加几行之外将有利于不从头开始编写源代码。

请指教

编辑
实验流程图,基于 Marcus Müller 的建议:
Experimental usrp synchronization flow

【问题讨论】:

    标签: gnuradio gnuradio-companion usrp software-defined-radio uhd


    【解决方案1】:

    问题是我应该如何在 GNU radio block 或 gr-uhd 库中插入这些定时命令并设置流的 time_spec?

    对于 USRP 接收器:将包含具有正确命令时间的字典的标签添加到流中。 GNU Radio API docs 提供有关这些词典外观的信息。 time 字段是您需要设置的适当值。

    对于 USRP 源:在 uhd_usrp_source 块上使用 set_start_time;使用上述相同的字典在协调时间发出调整、增益设置等命令。

    【讨论】:

    • 非常感谢您的建议。如果我理解正确,我需要创建对的字典:命令 - 值,然后将它们发送给 usrp。不幸的是,我没有找到任何用于创建或编辑字典的块(使用 GR 3.7),所以我必须添加自己的块或将它们打包到向量中?我试图创建一个示例性流程图,以验证它是否应该是这样的? 在主问题中添加了截图
    【解决方案2】:

    我试图找到一种通过标签同步 USRP 的正确方法。 我在这种方法中遇到了一些问题:

    1. 定时命令需要知道当前时刻,这是通过usrp.get_time_now() 完成的,尽管我会请求USRP 通过标签给出时间,但我必须以某种方式从输出中提取它。 (进行某种循环和适当的触发)(来源:https://kb.ettus.com/Synchronizing_USRP_Events_Using_Timed_Commands_in_UHD)或者可能不是以相对方式计划所有事情 - 使用绝对值而不是偏移量。我已经看到一种方法可以定期重置每个 PPS 的时间感(将其设置为 0.0),然后将命令的时间设置在 0.0-1.0 的范围内可能是可以接受的。那么读取时间并将时间插入命令的循环也是多余的。
    2. 我没有找到通过块在 GR 中创建字典以使解决方案可扩展(无需在文本框中编写几行代码)或编写 OOT 块的方法
    3. 最后,很少有信息可以说明哪种解决方案最合适(PDU、事件、标签在 GR 中是否仍然相关 ?),而且文档非常稀缺,在发送了一些邮件后,我决定添加一个简单的类,该类继承自主 top_bock.py 并在实例化 top_block 后调用一些函数来同步设备。这种方案不是最灵活的方案,父类top_block.py必须通过继承来调用,但它提供了一个简单的编程接口。

    很快我将添加一个用于继承类的代码示例,以防万一。

    如果有任何更简洁、动态或可扩展的解决方案,请告诉我或指出来源。

    【讨论】:

      猜你喜欢
      • 2021-04-23
      • 2015-07-13
      • 2018-08-29
      • 2017-02-28
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多