GNURadio中运行ofdm_rx报错:gr::log :INFO: packet_headerparser_b0 - Detected an invalid packet at item ××

news/2024/11/17 4:56:27/

修改方法:减小发送端的乘数因子。

但是本着知其然还要知其所以然的学习态度,下面就解释下出现这种现象的原因:

2021.10.28 更新:

在实际的测试中发现,引起该问题的原因还有可能是接收信号解调失败,导致头信息(header_data)解析失败,进而无法知道帧长度等信息。这时就要考虑信道环境、解调算法等因素的影响了。

最近在尝试运行并修改 GNU Radio 中的 OFDM 例程,先尝试做一个文本传输的demo。

(位置 gnuradio/gr-digital/examples/ofdm)。

首先将官方例程 ofdm_tx 中的 OFDM_ReceiverUHD:USRP Sink 来替代。将 ofdm_rx 中的 OFDM_TransmitterUHD:USRP Source 来替代。并修改数据来源为一个 txt 文件。USRP一些参数设置如下:

发送端
接受端

 由于是在做水声通信的测试前准备,因此频率都为khz级别的,这时就无法使用天线进行传输,所以使用SMA线直连的方式进行测试。使用两台 X310+LFTX/LFRX 来做测试。刚开始,发射端数据发送一切正常,但是在接收端却出现了以下错误信息

gr::log :INFO: packet_headerparser_b0 - Detected an invalid packet at item 0
gr::log :INFO: header_payload_demux0 - Parser returned #f
gr::log :INFO: packet_headerparser_b0 - Detected an invalid packet at item 48
gr::log :INFO: header_payload_demux0 - Parser returned #f
gr::log :INFO: packet_headerparser_b0 - Detected an invalid packet at item 96
gr::log :INFO: header_payload_demux0 - Parser returned #f
gr::log :INFO: packet_headerparser_b0 - Detected an invalid packet at item 144
gr::log :INFO: header_payload_demux0 - Parser returned #f
gr::log :INFO: packet_headerparser_b0 - Detected an invalid packet at item 192
gr::log :INFO: header_payload_demux0 - Parser returned #f
gr::log :INFO: packet_headerparser_b0 - Detected an invalid packet at item 240
gr::log :INFO: header_payload_demux0 - Parser returned #f
......

仔细看下报错信息,应该是在 OFDM 代码中 header 数据的解析出现了问题,即以下模块:

 这问题看起来像是源代码中的断言代码输出的 log,因此查看一下 Packet Header Parser 块的源码,发现其出错地如下:

。。。。。。if (!d_header_formatter->header_parser(in, tags)) {GR_LOG_INFO(d_logger,boost::format("Detected an invalid packet at item %1%") %nitems_read(0));message_port_pub(d_port, pmt::PMT_F);} else {pmt::pmt_t dict(pmt::make_dict());for (unsigned i = 0; i < tags.size(); i++) {dict = pmt::dict_add(dict, tags[i].key, tags[i].value);}message_port_pub(d_port, dict);}
。。。。。。

代码中 d_header_formatter->header_parser(in, tags) 的作用是解析输入端口 in 中的数据并作为 tag 写入到 tags 中,解析成功就返回 ture,否则返回 false。看到这里,显然表明了上面报错是由于 header 数据的解析出现了问题。因此下面开始反思包头解析怎么就出问题了?按理说不应该呀,我直接那SMA线把两台 X310 的发送接收端口连起来接受数据的,首先就可以排除噪音太大带来的影响。那也没道理了。。排除了信道的影响,就只剩下自身的原因了。一通 google 下来(这时候就别指望baidu了。。),终于在一个回答中发现了一丝希望:

这么说的意思就是:在发送端最终数据进入 UHD:USRP Sink 前有一个 Multiply Const 模块:

通过调整该乘数因子的大小就可以控制发送信号的幅值大小,而我这种情况可能就是乘数因子太大的缘故,导致输出信号被限幅了(LFRX/LFTX子板信号限幅[-1, 1]v),这样就导致了发送信号的严重失真,接收端自然就解析不出来了。于是我直接减小乘数因子为 0.008(8m),之后在进行测试,问题完美解决!顺利与 usrp 世界进行了 hello world,哈哈哈哈哈哈哈


http://www.ppmy.cn/news/724834.html

相关文章

CAD中字体相关解析 \fsimhei|b0|i0|c134

CAD中字体相关解析 \fsimhei|b0|i0|c134 之前在前人的文章上看过&#xff0c;我把用到的信息提取出来了&#xff0c;以供后面好查询&#xff0c;用到的老铁反手甩个赞吧。 在多行文字 MTEXT 中 TTF字体解析的编码 \fsimhei|b0|i0|c134|p? \字体名|粗体|斜体|代码页&#…

关于verilog不同!rst_n、~rst_n、rst_n == 1‘b0编译比较

先给结论&#xff0c;不同写法在相同编译工具RTL结果完全一致。对于很多编码规范都会加以区别对待&#xff0c;笔者认为可能是古老的编译工具存在的问题&#xff0c;新版本工具已经优化了此类算法。有兴趣可以用早期版本尝试一下。 module rst_test(input rst_n,input mclk,in…

c++高性能264/265实时h5流媒体服务器前后端整体解决方案

c高性能264/265实时h5流媒体服务器前后端整体解决方案 1.效果展示 下图展示了前端播放效果。 播放1路264视频流&#xff0c;4路265视频流 CPU占用率10%(测试机器上运行着c服务端和其他工具程序) GPU0占用率17% 1.1 作者测试机器配置 处理器 11th Gen Intel Core™ i7-118…

EfficientNet B0-B7 网络参数

EfficientNet B0-B7 网络参数&#xff1a; EfficientNet-B0 网络参数 STEM_W 32 STRIDES [1, 2, 2, 2, 1, 2, 1] DEPTHS [1, 2, 2, 3, 3, 4, 1] WIDTHS [16, 24, 40, 80, 112, 192, 320] EXP_RATIOS [1, 6, 6, 6, 6, 6, 6] KERNELS [3, 3, 5, 3, 5, 5, 3] HEAD_W 1280E…

求N个数的最大公约数和最小公倍数,.已知a0,a1,b0,b1,设某未知正整数x满足: (1)x和a0的最大公约数为a1; (2)x和b0的最小公倍数为b1; 求出满足该规则x的个数

一.题目分析 题目要求&#xff1a; 1.求N个数的最大公约数和最小公倍数 2.已知a0,a1,b0,b1,设某未知正整数x满足&#xff1a; (1)x和a0的最大公约数为a1&#xff1b; (2)x和b0的最小公倍数为b1&#xff1b; 求出满足该规则x的个数 题目思路&#xff1a; (1)求N个数的最大公约数…

BAT面试必问:a-b0与ab什么区别?overflow-conscious代码什么玩意?

BAT面试必问&#xff1a;a-b<0与a<b什么区别&#xff1f;overflow-conscious代码什么玩意&#xff1f; 读过JDK源码的同学&#xff0c;尤其是读过Collection框架的同学&#xff0c;肯定遇到过下面这种代码&#xff1a; 第一次读到这样的代码&#xff0c;你可能跟我一样感…

bne %B0的理解

查了一下书&#xff0c;0~99应该称为局部标号。 详见 ARM体系结构与编程 第147页 昨天在看arm汇编&#xff0c;其中有这样的一段语句 0 ldr r3, [r0], #4 str r3, [r1], #4 cmp r2, r0 bne %B0 bne&#xff1a;不等于则调转 但%B…

【FPGA】关于FPGA的 {width{1‘b0}} 是什么意思?

创作时间&#xff1a;2021-07-20 问题&#xff1a; {DW{1b0}}是什么意思&#xff1f;解答: 若DW8; {DW{1b0}} 就是 {8{1b0}} 也就是8b0 这下明白了吧。THE END~