15.7循环码解析 下载本文

内容发布更新时间 : 2024/7/2 21:28:38星期一 下面是文章的全部内容请认真阅读。

(2) 纠正个错误,要求码的最小距离d(3) 纠正个错误同时检测

?2t?1;

个错误,则要求

d?t?e?1;

循环码的译码分检错译码与纠错译码两类。在无记忆信道上,对码字c,差错图案e和接收向量r的多项式描述为

r(x)?c(x)?e(x)

定义r(x)的伴随多项式为s(x)

s(x)?r(x)(modg(x))

?s0?s1x?s2x2???sr?1xr?1

由于c(x)?a(x)g(x)?0(modg(x)),所以 s(x)由此可见,s(x)?e(x)(modg(x))

?0则一定有差错产生,或说满足e(x)(modg(x))?0的差错图样e(x)产生,它满足e(x)(modg(x))?0。

循环码的检错译码即是计算s(x)并判断是否为0

1.6 循环码的纠错译码原理

纠错码的译码是该编码能否得到实际应用的关键所在。译码器往往比编码较难实现,对于纠错能力强的纠错码更复杂。根据不同的纠错或检错目的,循环码译码器可分为用于纠错目的和用于检错目的的循环码译码器。

通常,将接收到的循环码组进行除法运算,如果除尽,则说明正确传输;如果未除尽,则在寄存器中的内容就是错误图样,根据错误图样可以确定一种逻辑,来确定差错的位置,从而达到纠错的目的。用于纠错目的的循环码的译码算法比较复杂。

当码字c通过噪声信道传送时,会受到干扰而产生错误。如果信道产生的错误图样是e,译码器收到的n重接受矢量是y,则表示为:

10

y?c?e (2—15) 上式也可以写成多项式形式:

y(x)?c(x)?e(x) (2—16) 译码器的任务就是从y(x)中得到e(x),然后求的估值码字

^c(x)?y(x)?e(x) (2—17)

并从中得到信息组m(x)。

?^^循环码的译码过程:

第一步:由接收到的y(x)计算伴随式s(x);

第二步:根据伴随式s(x)找出对应的估值错误图样e(x);

^^??第三步:计算c(x)?y(x)?e(x),得到估计码字c(x)。若c(x)?c(x),则译码正确,否则,若c(x)?c(x),则译码错误。

由于g(x) 的次数为n - k 次,g(x) 除E(x) 后得余式(即伴随式)的最高次数为n-k-1次,故S(x) 共有2n-k 个可能的表达式,每一个表达式对应一个错误格式。可以知道(15,7)循环码的S(x) 共有2(15-7) = 256个可能的表达式。

本课程设计中采用(15,7)循环码由生成矩阵可得其最小码距dmin为5 由最小码距可得其纠检错能力可知其最多可检4位错,可纠2位错。 其伴随式如表1所示。

11

^^

表1 (15,7)循环码错误图样错误图样 伴随式 纠错 无错 第一位错 第二位错 第三位错 第四位错 第五位错 第六位错 第七位错 第八位错 第九位错 第十位错 第十一位错 第十二位错 第十三位错 第十四位错 第十五位错 e=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] s=[0 0 0 0 0 0 0 0] e=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] s=[1 0 0 0 0 0 0 0] e=[0 0 0 0 0 0 0 0 0 0 0 0 0 1 0] s=[0,1,0,0,0,0,0,0] e=[0 0 0 0 0 0 0 0 0 0 0 0 1 0 0] s=[0,0,1,0,0,0,0,0] e=[0 0 0 0 0 0 0 0 0 0 0 1 0 0 0] s=[0,0,0,1,0,0,0,0] e=[0 0 0 0 0 0 0 0 0 0 1 0 0 0 0] s=[1,0,0,0,1,0,0,0] e=[0 0 0 0 0 0 0 0 0 1 0 0 0 0 0] s=[0,1,0,0,0,1,0,0] e=[0 0 0 0 0 0 0 0 1 0 0 0 0 0 0] s=[1,0,1,0,0,0,1,0] e=[0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] s=[1,1,0,1,0,0,0,1] e=[0 0 0 0 0 0 1 0 0 0 0 0 0 0 0] s=[0,1,1,0,1,0,0,0] e=[0 0 0 0 0 1 0 0 0 0 0 0 0 0 0] s=[0,0,1,1,0,1,0,0] e=[0 0 0 0 1 0 0 0 0 0 0 0 0 0 0] s=[0,0,0,1,1,0,1,0] e=[0 0 0 1 0 0 0 0 0 0 0 0 0 0 0] s=[0,0,0,0,1,1,0,1] e=[0 0 1 0 0 0 0 0 0 0 0 0 0 0 0] s=[0,0,0,0,0,1,1,0] e=[0 1 0 0 0 0 0 0 0 0 0 0 0 0 0] s=[0,0,0,0,0,0,1,1] e=[1 0 0 0 0 0 0 0 0 0 0 0 0 0 0] s=[0,0,0,0,0,0,0,1]

上式指出了系统循环码的译码方法:将收到的码字R(x) 用g(x) 去除,如果除尽则无错;否则有错。如果有错,可由余式S(x) 一一找出对应图样,然后将错误图样E(x) 与R(x) 模2 和,即为所求码字C(x) ,从而实现纠错目的。

12

二、(15,7)循环码程序设计

本设计分为三大模块: (15,7)循环码仿真模块、(15,7)循环码译码仿真模块、(15,7)循环码误码性能分析模块

2.1(15,7)循环码仿真模块

按照循环码的编码原理设计流程图如下

开始 输入消息m(x)如[1 1 1 0 0 0 0]

结束 输出码字C(x) 确定c(x): c(x)?m(x)xn?k?r(x) 确定余式r(x): r(x)?m(x)xn?kg(x)

图2-1 (15,7)循环码编码程序流程图

13