美文网首页
反馈环路并行解调代码调试心得

反馈环路并行解调代码调试心得

作者: monokent | 来源:发表于2015-12-11 23:10 被阅读0次

最近在调试一个基于反馈环路的并行解调代码(VHDL in FPGA),主要工作是添加对16QAM的支持(之前只有QPSK)。调试过程颇有些波折,也浪费了不少时间,总结原因于本文结尾。

并行解调代码指的是采用并行多路信号处理架构,以实现信号吞吐率提升,应用于高速无线通信

下面步入正题,列举基本的调试步骤

确保星座图收敛完好

星座图收敛后汇聚于比较小的点,并且无相位偏差和抖动。例如下图所示为16QAM均衡器输出星座图(好吧我承认有点差~)

星座图Equ.jpg

如果星座图比较发散,需要寻找原因并解决。比较常用的方法是将实际采样信号送给仿真程序(例如matlab),观察仿真程序输出星座图。

好的星座图(不加噪声时)是好的误码性能的基础

确定并行处理的线序

星座图收敛完好并不能保证最终输出的数据时正确的,并行解调算法需要重点关注并行线序的一致性。任何一个模块的线序反向都会造成错误。

代码编写阶段注意约定好线序。如果没有约定,需要明确注释说明接口线序(Big Endian 还是 Little Endian,有符号还是无符号等)。否则后患无穷。

如果出现线序错误需要定位问题,可以发送特定短序列,检查解调输出是否匹配。特定短序列的选取需要能够保证时钟环路的收敛。如果只是随意选取,在16QAM模式下很难保证时钟环收敛。一种简单可行的方式是只发送16QAM外侧的4个点,例如按照4个象限顺时针发送,这样既可保证时钟环路收敛,又可简单有效分析。当然有时候需要更加复杂一点的发送图案。

消除相位模糊度

消除相位模糊度的传统方法是采用差分编码。还有一种方式是周期性插入特定字段,接收端需要查找该特定字段并确认其周期性,如果查找失败就将相位旋转90度,直到查找成功,相位模糊度消除。

本代码采用第二种方式,因为发送端采用了LDPC编码,每个编码块之前都插入了帧头,该帧头可用作消除相位模糊度的特定字段。

加噪声测试性能

以上步骤完成后,可以加噪声测试误码性能。先测试无编码情况下误码特性,与理论值进行对比。可以观察加噪后的解调星座图,是否存在相位旋转、溢出等问题。

先测试无编码情况下误码特性,与理论值进行对比

如果性能较差,可能性比较大的原因有:

  • 滤波器不合适(模拟滤波器、数字滤波器)
  • 信号运算过程有溢出
  • 星座点解映射阈值设置(QPSK无此烦恼)

检测环路收敛的健壮性

避免环路进入错误的锁定状态,是需要重点考虑的问题。即要求环路具有自我检测和重启机制。

对于时钟环和载波环,一种有效的策略是检测环路滤波器的输出是否超出阈值。对于自适应均衡环路,可以采用上面提到的周期性插入特定字段的方式来检测收敛正确性。

调试问题总结

  • 并行代码的线序不一致问题(这个下回注意可避免)
  • 缺少冷静分析(需要跳出来思考)
  • 代码调试迭代周期较长
  • 写代码时考虑不够周全,导致错误和隐藏错误
  • 低估了代码难度

好的程序员应该写代码,而不是改代码

相关文章

  • 反馈环路并行解调代码调试心得

    最近在调试一个基于反馈环路的并行解调代码(VHDL in FPGA),主要工作是添加对16QAM的支持(之前只有Q...

  • 第 34 策 环环相扣

    反馈环路(Feedback Loop) 反馈环路=正反馈环路+负反馈环路第一个特点:3 个分子的反馈环是最经典的一...

  • iOS走向大师之对象原理研究

    一.探索准备 需要下载objc源码并配置 在探索之前我们先了解调试底层基本技巧 1.下断点调试2.符号断点调试3....

  • 编译期注解学习七-如何进行调试

    1 编译期注解调试步骤 编译普通程序,只需要直接点击“app”就能够完成编译,调试更是简单,直接点击debug b...

  • gcd多线程任务与队列组合分析

    关于gcd中串行队列并行队列,以及同步任务和异步任务的花式嵌套,分析执行结果 多线程调试常用代码: gcd的任务 ...

  • NSCalendar 日历 简单实现

    今天看了看 NSCalendar , 简单的写了写, 没有什么附加功能, 这里有 Demo, 方便理解调试.LC_...

  • vscode使用指南(代码调试)

    代码调试 vscode 原生支持nodejs的调试,其他语言需要安装拓展支持调试 代码调试界面 调试界面 调试配置...

  • 《第五项修练》转移负担的模式

    要点: 一、结构 转移负担模式结构是有两个负反馈(稳定作用)环路组成。两个环路都在调整或修正同...

  • spring in action: 第一章

    Spring之旅 心得 看来学习spring的最好方式是调试书里的代码,并且看懂每一行。 ClassPathXml...

  • 前端调试

    代码调试 chrome调试 代码调试 1.debugger 可以直接在编写代码的时候,加入debugger,打开浏...

网友评论

      本文标题:反馈环路并行解调代码调试心得

      本文链接:https://www.haomeiwen.com/subject/aubyhttx.html