里德所罗门错误校正和误报

时间:2018-10-27 00:55:37

标签: error-correction reed-solomon forwarderrorcorrection

我有一个Reed-Solomon编码器/解码器。在处理数据并评估结果之后,我经历了以下3种情况:

  1. 解码器正确解码消息并且不会引发错误
  2. 解码器将消息解码为错误的结果,而不会抱怨-有效地产生了误报。即使操作的数据数量远远低于纠错能力(即使在更改单个位之后),该机会也应该很小,但还是会发生
  3. 如果处理的数据量超过其纠错能力所允许的范围,则解码器将失败(引发错误)。

对于适当的Reed-Solomon解码器,所有3种情况都有效吗?我对情况2尤其不确定,解码器会产生错误的结果(而不会引发错误),即使错误的数量比其校正能力所允许的少得多……?

1 个答案:

答案 0 :(得分:1)

  
      
  1. 错误校正能力以下的错误校正
  2.   

这将指示代码中的错误。如果错误少于(n-k)/2⌋个,则RS解码器将永远不会失败。

  
      
  1. 更正功能会检测出何时有更多的错误,然后才有错误更正功能
  2.   

即使存在多于⌊(nk)/2⌋个错误,RS解码器也很有可能仍会检测到不可纠正的错误,因为大多数错误模式不会导致接收到的码字在⌊( nk)/ 2或更少的有效码字错误符号,因为工作的RS解码器应仅产生有效码字或指示不可纠正的错误。对超过⌊(nk)/2⌋个错误的错误校正涉及解码器创建额外的⌊(nk)/2⌋个错误符号或更少个错误符号,从而产生有效的码字,但与原始码字的差为n-k + 1或更多符号。

可以通过为校正后的码字重新生成校正子来检测无法纠正的错误,但是通常在解决错误定位器多项式时通常会更快地发现错误(通常通过遍历所有可能的定位器值来完成),此时生成的定位器少于应有的数量复制或缺少根。

我用C语言为4位和8位字段编写了一些交互式RS演示程序,其中包括3种最常见的解码器(PGZ(矩阵),BM(差异),SY(扩展的Euclid))。请注意,在我的示例中,SY-扩展的Euclid解码器模拟了面向硬件寄存器的解决方案,两个寄存器始终向左移动,每个寄存器都包含两个多项式,其中拆分与寄存器一起向左移动。每个寄存器的右半部分反转(最低有效系数在前)。 Wiki文章示例可能更容易理解。

http://rcgldr.net/misc/eccdemo4.zip

http://rcgldr.net/misc/eccdemo8.zip