You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GNU Radio 3.8中适配3.7版本的benchmark_rx.py与benchmark_tx.py

GNU Radio 3.8适配3.7 gr-digital窄带示例解决方案

1. 修复message_source属性缺失问题

GNU Radio 3.8对blocks模块的消息源做了类型化拆分,原3.7中的blocks.message_source被替换为带类型后缀的专用模块:

  • 将pkt.py中第81行的代码:
    self._pkt_input = blocks.message_source(gr.sizeof_char, msgq_limit)
    
    替换为:
    self._pkt_input = blocks.message_source_b(msgq_limit)
    
    (_b后缀对应char类型,若涉及其他数据类型,需用对应后缀模块,如float类型用message_source_f)

2. 替换已移除的digital.mod_pkts模块

3.7中的digital.mod_pkts是整合了包成帧、加扰、调制的组合块,3.8中该模块被移除,需手动搭建等效链路:

原代码(transmit_path.py):

self.mod = digital.mod_pkts(modulator, options.pkt_len,
                            options.pkt_pad, options.pkt_enc,
                            pad_for_usrp=True)

替换为等效链路:

# 1. 加扰模块(对应原pkt_enc参数)
self.scrambler = digital.additive_scrambler_bb(
    0x8A, 0x7F, 7, count=0, bits_per_byte=1, reset_tag_key="")

# 2. 生成默认包头部
self.header_gen = digital.packet_header_default_bb(
    options.pkt_len, 0x1234, length_tag_name="packet_len")

# 3. 组装头部与负载
self.packet_assembler = digital.packet_assembler_b(
    options.pkt_len, length_tag_name="packet_len")

# 4. 初始化调制器(与原modulator参数对应,如GMSK调制)
self.mod = modulator()

# 按逻辑连接链路:消息源 → 解包 → 加扰 → 头部生成 → 组装 → 调制
# 需根据原代码的数据流顺序调整连接关系,确保功能与原mod_pkts一致

3. 接收端benchmark_rx.py对应调整

原3.7的digital.demod_pkts同样被移除,需替换为:

  • 对应解调模块(如digital.gmsk_demod_cb)
  • 头部解析模块(digital.packet_header_parser_bb)
  • 负载解复用模块(digital.packet_payload_demux_b)
  • 解扰模块(digital.additive_descrambler_bb)
    按接收数据流顺序连接各模块,对齐原功能。

4. 其他注意事项

  • 确保所有Python2到Python3的语法转换完成(如print加括号、异常处理语法调整)
  • 验证各模块的参数与原3.7示例一致,尤其是标签名(如packet_len)、同步字、加扰系数等
  • 分步测试单个模块初始化,排除模块导入错误后再整合整个拓扑

内容的提问来源于stack exchange,提问作者Trevor Gordon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 19:55:22