利用Matlab进行BCH编码、译码仿真
沈阳理工高校通信系统课程设计报告 利用Matlab进行BCH编码、译码仿真 1.课程设计目的 (1)驾驭BCH编码、译码。 (2)通过Matlab仿真,加深对BCH编码理解。 (3)熬炼运用所学学问,独立分析问题、解决问题的综合实力。 2.课程设计要求 了解BCH编码是建立在严格的代数数学基础上的,就有限域和扩域进行了介绍;就BCH码相关的基础学问(BCH码定义、码长、生成多项式等等)进行学习,了解BCH码的编码和译码过程;介绍了彼得森译码算法程序框图,了解彼得森译码的过程与原理。最终利用Matlab编程分析BFSK在加性高斯白噪声信道的误码率性能;通过Simulink建立BFSK信道编码(取BCH码)在加性高斯白噪声信道下的仿真模型,从信源BCH编码BPSK调制高斯信道BPSK解调BCH译码信宿,设置好每个模块的参数,编写好主程序实现BFSK的输入,在程序运行过程中间调用BFSK仿真模型,仿真结果出现没有经过BCH编码的误码率曲线图和经过BCH编码后的误码率曲线图,依据仿真误码率曲线走势进行分析,留意分析不同的纠错实力对误码率性能的影响,不同的纠错实力对译码困难度的影响(用译码的时间长短作为对其困难度影响的参数,时间长则说明困难度大,)通过分析后得出结论进行总结、展望。 3.相关学问 BCH码定义 BCH 码1959 年由Hocquenghem、1960 年由Bose和Chandhari分别独立提出。BCH码是能够订正多个随机错误的循环码,可以用生成多项式gx的根描述。 给定任一有限域GFq及其扩域GF, 其中q是素数或或者某一素数的幂,m为某一正整数。设GF,l是随意整数,是GF的本源元,若V是码元取自GF2上码长为n的循环码,他的生成多项式g(x)含有以下2t个根 、、、、, 则由g(x)生成的循环码称为二元BCH码,若、、、、中有一个是本原元,则g(x)生成的码称为本原BCH码。要考虑g(x)能否生成本原BCH码,将要考虑、、、、中是否有一个本源元,事实上只要考虑是本原元,g(x)生成本原BCH码,若不是本原元,则也肯定不是本原元,因而生成本原BCH码。 设阶为,i1,2,3,、、、,2t,则以、、、、为根的BCH码的码长 NLCM,,.。 若、、、、的微小多项式分别为(x),(x),,(x). 2.生成多项式g(x) 以、、、、为根的BCH码的生成多项式可以写成g(x)LCM((x),(x),(x)),由微小多项式的性质可以知道,与的平方,有相同的微小多项式,因此以、、、、为根的BCH码的生成多项式可以简化成 g(x)LCM((x),(x),(x)) 这个g(x)LCM((x),(x),(x))中多以取最小公倍,是要在(x),(x),(x)中去掉那些相同的微小多项式,既然g(x)LCM((x),(x),(x))中已经把的微小多项式相同的去掉啦,是否可以把g(x)LCM((x),(x),(x))中最小公倍符号省略,干脆写成(x),(x),(x)的形式,回答是否定的,这是因为,虽然(x),(x),(x)中已经去掉了一些相同的微小多项式,但是不肯定去掉了全部的与(x)相同的微小多项式, 5.码长n 由g(x)LCM((x),(x),(x))可以知道,以、、、、为根的BCH码的码长nLCM,,.。若的阶为,则的阶是的因子,因此码长公式可以简化为nLCM,,,. 设是GF()的本原元,,则的阶 即以、、、、为根的BCH码的码长为 n 4. 课程设计分析 4.1 BCH码的编码 BCH码是循环码的一种,满意循环码的编码方法,令给定的编码方式为(n,k)生成多项式为g(x),信息码多项式为m(x)编码的步骤如下1、用x(n-k)乘以m(x),这一运算相当于是把信息位码后附加上(n-k)个“0”.2.用g(x)除x(n-k)m(x),得到商Q(x)和余式r(x),即x(n-k)m(x)/ g(x) Q(x) r(x)/g(x)。3.编码后的输出为T(x) x(n-k)m(x) r(x)。 4.2 BCH码的译码 BCH码的译码方法可以有时域译码和频域译码两类。频移译码是把每个码组看成一个数字信号,把接受到的信号进行离散傅氏变换DFT,然后利用数字信号处理技术在“频域”内译码,最终进行傅氏反变换得到译码后的码组。时域译码则是在时域干脆利用码的代数结构进行译码。BCH的时域译码方法有许多,而且纠多个错误的BCH码译码算法非常困难。常见的时域BCH译码方法有彼得森译码、迭代译码等。事实上,BCH码是一种特别的循环码,因此它的编码器不但可以象其它循环码那样用除法器来实现,而且原则上全部适合循环码译码的方法也可以用于BCH码的译码。BCH译码的一般原理将求解错误位置转化为解线性方程组的问题,但是当设计纠错实力t比较大时,要不断对系数矩阵进行降阶处理,直到求到一个满秩的阶方阵为止,还是比较困难的运算,Berlekamp的发觉从根本上解决了BCH码译码的算法困难度,得到了广泛的应用。 5.仿真 5.1 仿真实现的思想方法 先用Simulink建立BFSK信道编码(取BCH码)在加性高斯白噪声信道下的仿真模型,设置好每个模块的参数,编写好主程序实现BFSK的输入,在程序运行过程中间调用BFSK仿真模型,将不同纠错实力的误码率曲线在一个仿真结果图里呈现;分析随着信噪比的增加,误码率曲线的走势,在不同的纠错实力t下,分析(15.7.2)(15.5.3)的误比特率随信噪比的走势,记录仿真所用的不同的时间,用时间作为译码困难度的参数。依据仿真结果分析不同的纠错实力对编码性能的影响,不同的纠错实力对译码困难度的影响。 5.2 仿真实现的功能说明 通过调用已建立的BFSK信道编码(取BCH码)在加性高斯白噪声信道(有突发干扰)下的仿真模型,利用Matlab编程分析BFSK在加性高斯白噪声信道的误码率性能;分析不同纠错实力对误码率性能的影响和不同的纠错实力对译码困难度的影响,依据仿真图的结果得出进行分析得出结论。 5.3 程序源代码与界面图 clear all; clc; SNR0.10.110; Errorratezeros1,100; Errorrate_1zeros1,100; for i1100 sim BCH; ErrorrateiErrorVec1; Errorrate_1iErrorVec_11; end semilogySNR,Errorrate,r;grid; xlabelSNR; ylabelErrorrate; hold on; semilogySNR,Errorrate_1,b; 4Simulink框图及参数设置 ①BCH信道编码仿真模型