比特冗余

“纠错码”的应用,主要作用是牺牲有效性,换取可靠性。以1/3码率的Turbo码来说,有效位和校验位之比为1:2。

如果说纠错码的“浪费”是经数学证明所不得不添加的冗余,那么另一种“浪费”则是在物理实现上的无奈:

无论是在编码还是在组帧时,常见的操作便是“补零”。只是这里补的零在数学上来看不起任何作用,完全没有必要。

那么“补零”操作的原因是什么呢?这主要是因为在硬件实现时很多东西都是写死了的(电路线已布好)。

无论是编码器还是组帧结构,一个有效的方法便是以出现概率最大的方式来设计:

当LDPC编码器设计为(5120,4096)的结构时,对于3456bit的待编码数据就要补640个零以满足编码器输入条件。

一些特殊情况下,组帧也是按照长帧结构来设计的,发短帧时就不得不通过补零来满足帧结构设计。

上面提到“以出现概率最大的方式来设计是有效的”,其理论依据便是哈夫曼编码,其设计思想便是码长与其出现概率成反比,即出现概率大的符号用短码,出现概率小的符号用长码,最后得到的总码长的期望值则是较小的和有效的--在通信上有效是指有效率(efficient),而在医学上有效则是指有效果(effective)。

编码所造成的效率降低可通过“打孔”的方式弥补回来--为达到所需要的码率,在损失一定可靠性的前提下可对编码后的数据进行打孔。这样,在接收端译码前先对打孔处的数据以零填充。考虑到译码采用软判决,零数据就相当于是1bit置信度为0的删除信息。也就是说对于迭代译码的软判决,原本可以“帮助”译码的信息丢失了,导致纠错码性能的降低。虽然零信息帮不上忙,但也不会帮倒忙,因此合适的打孔策略是能满足我们对于性能的需求的。

尤其需要注意的是,当采用补零的方式进行编码时,自然想到可以对零数据进行打孔,只是在译码时打孔处的数据就不能是用零来填充了,而应以表示零数据的软信息的最大值来填充(比如,8位软信息,取值为-128到127,若软信息取负值时表示零符号,则被打孔处的数据就要以-128来填充)。

该部分内容可结合另一篇博文来看:https://www.cnblogs.com/achangchang/p/11396958.html

posted on 2019-08-24 11:04  阿长长  阅读(217)  评论(0编辑  收藏

导航