Bose Chaudhuri Hocquenghem (BCH) vs Reed Solomon (RS) 纠错码和声音传输通道建模

信息处理 数字通信 声音 信道编码 里德所罗门
2022-02-09 04:55:30

我已经使用 2 kHz 的带宽和 18.5 和 20.5 kHz 之间的频带实现了一个基于声学的信息传输系统。我正在尝试为它找到最好的纠错代码,因为我可以在添加最低冗余的情况下获得相同的纠错能力(我希望获得尽可能快的速度)。我已经能够以低速率(400 bps)和短距离(5-10 厘米)在 2 部智能手机之间传输数据。目前,我设计了一个在对等方之间发送的包,并且在那里使用了 4 个 BCH(63,39,4) 块。我还添加了一些奇偶校验位(仅用于错误检测),以防 BCH 以错误的方式修复传入的包(如果在我的 4 个 BCH 块中的任何一个中发生超过 4 个错误,则可能发生)。我在调制 BCH 编码位之前对它们进行交错,试图在 4 个 BCH 块之间平均分配错误突发。现在我能够实现 RS 和 BCH 编码方案,但我想知道是否有一些标准我可以提前遵循来选择哪个可能表现更好,是否值得花时间实现 RS。我读该文档说,对于在 Matlab 中模拟的瑞利衰落信道,BCH在特定的 N、K、T 选择方面优于二进制RS。但他们提到这具有很强的渠道模型依赖性。我的问题是:

  1. 哪种通道模型最适合空中数据传输,我想扬声器产生的失真也应该考虑在内,特别是在我工作的频率下?
  2. 是否有一般研究比较不同渠道中的 BCH 与 RS?
  3. 对于相同的码率 n/k,RS 在理论上是否优于 BCH。可以考虑非二进制 RS,我只是对具有最大比特率的相同纠错能力感兴趣?

非常欢迎对这些问题中的任何一个问题进行独立回答

注意:在这种低比特率下,CPU 不是瓶颈。无论如何,我的系统最耗时的任务是基于 FFT 的匹配滤波器解调(特别是如果我使用高阶调制),而不是具有如此短代码长度的 BCH 错误解码。

3个回答

哪种通道模型最适合空中数据传输,我想扬声器产生的失真也应该考虑在内?

免责声明:我真的不是音频人。这里有很多音频 DSP 工程师,他们可能对声道上发生的事情有更好的了解。但:

  1. 频率选择性将非常重要。您的手机扬声器不太可能低于 40 Hz,或远高于 12 kHz。
  2. 音频通常可能会遇到多路径的不良情况
  3. 如果您的通信伙伴、重要的反射器或介质正在移动,请为相对稳定的多普勒做好准备

是否有一般研究比较不同渠道中的 BCH 与 RS?

可能,数百。但是:这确实是需要在特定通道模型下进行比较的事情,并且由于两者都有免费可用的实现,一旦您为您的特定用例建立了一个真实的通道模型,模拟应该为您提供更多特定于应用程序比任何研究都可能给你的结果。

在你的情况下,我真的会选择频道探测;发送一个合适带宽的已知信号,记录原始接收,尝试从中提取传递函数(假设 LTI,并验证该假设)。改变环境/渠道,然后再做一次。这样做十次(并写一篇论文),并提出一个随机通道模型(例如,“我们有理想单通道的一般幅度响应,我们有 x~(PDF) 多径分量,它们的延迟和权重如下XYZ 分布”,并写一篇论文)。

然后编写一个频道模拟器(在这一点上,我可能再次推荐 GNU Radio,其中存在多个频道探测器和频道模拟器,但主要用于 RF 频道 - 但这不是其设计所固有的,仅适用于它的大多数用户群;显然,写一篇论文),并在上面测试一些代码(并写一篇论文:))!

补充马库斯回答的一些想法:

找到通道脉冲响应的近似值相对容易:发送由一个被零包围的正样本组成的音频,并记录结果。如果通道响应不平坦,您可以在窄频带上缓慢传输(使通道看起来平坦),或者在接收器中实施均衡器。

RS 码的主要优势在于纠正错误突发。大多数代码假定错误是独立的。当无法保证这一点时(例如,由于持续多个符号的深度淡入淡出),RS 可能很有用。

我怀疑(但不确定)手机的 CPU 和电池将成为您的瓶颈,而不是代码的校正能力。大型 BCH 和 RS 码的解码计算成本很高。

“最佳频道代码”真的很模糊。

我们可以在功率、带宽、编码器或解码器计算复杂度标准下比较信道代码。我们可以比较最小汉明距离、校正能力、编码增益、频谱效率、错误概率……

也可以在不同的上下文中分析最优性。RS 码实现了单例界,因此属于最大距离可分 (MDS) 码。也就是说,RS 和 BCH 码都属于循环码的类别,RS 码是 BCH 码的子集,其中解码器字母表与信道字母表相同。

正如马库斯所指出的,这个领域有数百篇论文和几十本书。对于非常严格的高效率要求,仅仅依靠FEC(例如单独的BCH或RS码)是不够的,并且使用了诸如混合ARQ(H-ARQ)等更先进的技术。例如,IEEE 802.15.6 标准(这是一个低功耗应用示例)使用具有 II 类增量冗余 H-ARQ 的 BCH(126, 63)。

如果有更具体的设计要求,我可以添加更多设计提示。