基于长除法的BCH(15,7)译码算法*

2018-09-03 09:53江宝安
通信技术 2018年8期
关键词:项数产学图样

江宝安

(重庆邮电大学移通学院,重庆 401520)

0 引 言

BCH码是一种重要的能纠多个随机错误的循环码,编码方便,实现电路简单,在现代数字通信领域中有及极广泛的应用[1-3]。BCH译码已有多种算法,实际工程应用中主要用的是错误图样查表法。该方法需要预先存储错误图样,对码长较长、纠错能力较强的BCH码,错误图样较多,查找、匹配较费时,译码延时严重[4-5]。

BCH(15,7)码是码距d=5的循环码,能纠正2位随机错误。本文主要讨论一种基于长除法的BCH(15,7)码译码算法,实现快速译码,且简单高效。

1 BCH(15,7)编码

BCH(15,7)的生成多项式为:

信息多项式为:

信息序列为m=(m6m5m4m3m2m1m0),其中mi(i=0,1,…,6)为伽罗瓦域GF(2)中的0或1,则BCH(15,7)码多项式为:

例 1:m=(0100101),m(x)=x5+x2+1,则:

2 基于长除法的BCH(15,7)译码算法

此译码算法分为以下2步:

(1)由接收到的含有错误的r(x)=c(x)+e(x)长除g(x)得余式,即错误多项式(余式项数必须小于等于2);

(2)错误多项式模2相加r(x)得原码。

证明:

由于g(x)=x8+x7+x6+x4+1能纠正循环距离为8位的2位错误位,故只要r(x)mod(g(x))余式项数小于等于2必为错误多项式。

证毕。

例2:由于例1发送码是式(1),假定接收码r(x)=x13+x12+x11+x10+x7+x6+x5+x4+1有2位错误e(x)=x6+x2,当然接收端是不知道有这2位错误的。由长除法得错误多项式如图1所示,得错误多项式e(x)=x17+x21。由于BCH(15,7)是循环码,x15=1,故e(x)=x17+x21=x6+x2,即c(x)=r(x)+e(x)=x13+x12+x11+x10+x7+x5+x4+x2+1纠错得原码。

图1 长除法得错误多项式

3 MATLAB仿真

仿真程序如下:

%BCH(15,7)decode

msg=gf(randint(1,7),1); %information code

c=bchenc(msg,15,7); %encode

e=gf([1 0 0 0 0 0 0 0 0 0 0 1 0 0 0],1);%2 bit errors

r1=c+e;% receive code

r=r1;

g=gf([1 1 1 0 1 0 0 0 1],1);%generator polynomial

m=3;n=0;k=0;

k=k+1;

if r(1)==1

for j=1∶9

r(j)=r(j)+g(j);

end

end

m=sum(r==1);

可以看出,在大学阶段产学合作的很多模式在我国也已经广为探索和开展。但是,高中阶段的产学模式和中国的情况有所不同。20世纪90年代中期,职业教育达到发展高峰,中等职业教育的学生占高中在校生的比例为56%,20世纪90年代末,则进入了低谷期,高等职业教育开始迎来发展高潮。

while r(1)==0 & m>2 & k<30 %left shift

n=n+1;

for i=1∶14

r(i)=r(i+1);

end

r(15)=0;

end

end

s=mod(n,15);

for k=1∶s %cyclic right shift

t=r(15);

for i=0∶13

r(15-i)=r(14-i);

end

r(1)=t;

end

e1=r;

m1=sum(e1==1);

if m1<3

disp('OK e(x)=r(x) mod(g(x))');

end

该MATLAB仿真程序,可验证本算法的正确性。任意改变信息多项式msg和小于等于2位错误多项式e,均能纠错得到正确的原码。

4 结 语

利用长除法可得到BCH(15,7)接收码的错误多项式,译码算法具有简单、快速等优点,具有极广泛的应用价值。此外,本算法也适用于纠1位错误的汉明码译码,对纠多个错误的BCH码具有参考价值。

猜你喜欢
项数产学图样
戎子酒庄 搭起产学平台
巧用“三招”,求数列不等式中项数n的最值
基于产学协同的融媒体人才培养模式探究
山东工艺美术学院学生作品赏析12
计算机类人才培养的“产学”融合教育模式探究
加强实习实训基地“产学”结合模式探讨
求 和
基于DWG DirectX的电子产品图样结构关系轻量化构建方法研究
创新思维对有效整合数学知识网络的意义
寒冬必备!最IN喵套装