3.2 循环码编译码实现过程
循环码的编码和解码设备都不太复杂,检、纠错能力强,而且性能好。它不但可以检测随机的错误,还可以检测突发的错误。(n,k)循环码可以检测长为n-k或更短的任何突发错误,包括首尾相接突发错误。
循环码最大的特点就是码字的循环特性,所谓循环特性是指:循环码中任一许用码组经过循环移位后,所得到的码组仍然是许用码组,也就是说,不论是左移还是右移,也不论移多少位,仍然是许用的循环码组。
首先根据给定的(n,k)值以及给定的生成多项式g(x),求出生成矩阵以及监督矩阵。利用MATLAB软件编写循环码的编码器以及译码器,根据要求输入消息序列,从仿真图形中观察分析编译码是否正确,讨论循环码的纠检错能力及高斯信道下的误码性能。
(1)循环码编码实现流程如图3-2所示
图3-2循环码编码流程图
开 始 输入消息m(x)如[1 1 1 0 0 0 1] 确定余式r(x): r(x)?m(x)xn?kg(x) 确定c(x): c(x)?m(x)xn?k?r(x) 输出码字C(x) 结 束 (2)循环码译码实现流程如图3-3所示:
8
纠错开 始 由接收信号r确定伴随式s:s=r*h 是 S是否为0 否 由S确定错误图样e c?e?r 输出码字c 结 束 图3-3循环码译码流程图
(3)循环码误码性能实现框图如图3-4所示:
图3-4循环码误码性能实现框图图
信号源 (15,7)循环码编码 加入不 同 信 噪比 的 高斯 白 噪声 误码分析 (15,7)循环码译码
9
四 系统设计
4.1生成矩阵和监督矩阵
已知(15,7)循环码的生成多项式为g(x)=x+x+x+x+1,由其生成多项式求出其生成矩阵G(X)为:
8
7
6
4
?1?0??0?G??0?0??0?0?11000001110000011100010111000101110001011100010111000101010001000100010001000000010000000100?0??0??0? ?0?0?1??由于h(x)·g(x)=x
n
+1,求出的h(x)=x7+x6+x4+1,进而得到监督矩阵H(X)为:
0010110000010110100010110100010100100010000100010000100000000100000000100?0??0??0? 0??0?0??1???1?0??0?0?H=?0??0?0??0?110000000110000010110000010110004.2循环码的编码
encode函数 功能:编码函数
语法:code=encode(msg,N,K,method,opt)
说明:用method指定的方法完成纠错编码。其中msg代表信息码元,是一个K列矩阵,N是编码后的码字长度;K是信息位的长度;opt是有些编码方式需要的参数。
运行编码程序,在工作窗口内按照文字提示输入消息序列,本次设计中需要输入的消息
10
序列是一串长为7为的二进制码字。运行结果如图4-1所示:
图4-1循环码的编码
从图中可以看出,当输入消息序列为:1110001时,编码结果为:01110111111000。输入信号经过编码,增加了校验位,使信号变得复杂,提高了通信的可靠性。
4.3循环码的的译码
decode函数 功能:译码函数
语法:msg=decode(code,N,K,method,opt1,opt2,opt3,opt4);
说明:这个函数对接收到的码字进行译码,恢复出原始的信息,译码参数和方式必须和编码时采用的严格相同。它对接收到的码字,按method指定的方式进行译码;opt1,…,opt4是可选项的参数。
(1)使用编出的码字去执行译码程序,译码结果如图4-2所示:
11
图4-2 循环码的译码
由上图可以看出,用编出的码字去执行译码程序,译出的码字为:1110001,与输入的码字完全一致,没有发现错误。验证了译码程序的正确性。
(2)将4-1中编出的码字改变一位作为译码程序的输入,译码程序输出中如图4-3所示:
图4-3循环码的检纠错
12