首页 BCH解码校验算法的实现

BCH解码校验算法的实现

举报
开通vip

BCH解码校验算法的实现BCH解码校验算法的实现 数据传输通信中,常常因传输差错造成误码错码,尤其在无线通信中,空中的突发或随机干 扰噪声会造成编码差错。为了提高传输的正确率,往往采用一些校验方法,以检验纠正传输 差错。通信中校验的方法很多,其中的BCH编码有其独特的优点:不仅可以检纠突发差错, 还能检纠随机差错,被广泛地采用在微机级的通信中。但对更低层的单片机级的数据传输通 信纠错,往往采用奇偶校验等简单的校验方法。BCH校验因其算法复杂,尤其是动态实时的 无线通信中,单片机的通信往往无法采用BCH解码检纠。 1 BCH码结构 B...

BCH解码校验算法的实现
BCH解码校验算法的实现 数据传输通信中,常常因传输差错造成误码错码,尤其在无线通信中,空中的突发或随机干 扰噪声会造成编码差错。为了提高传输的正确率,往往采用一些校验方法,以检验纠正传输 差错。通信中校验的方法很多,其中的BCH编码有其独特的优点:不仅可以检纠突发差错, 还能检纠随机差错,被广泛地采用在微机级的通信中。但对更低层的单片机级的数据传输通 信纠错,往往采用奇偶校验等简单的校验方法。BCH校验因其算法复杂,尤其是动态实时的 无线通信中,单片机的通信往往无法采用BCH解码检纠。 1 BCH码结构 BCH码是一种检纠能力较强的循环码。它由信息多项式M(X)和校验多项式J(X)组成,如以T(X)表示整个BCH(31:21)码字的31位码组多项式,则: T(X)=M(X)+J(X) (1) 在31位BCH码的后面再加上1位,以保证整个码字32位中“1”的个数为偶数。该位称偶校验位。这样就形成BCH(31:21)加1位偶校验位的标准码字,其结构为: 其中校验多项式J(X)由公式(2)计算: X0X1„„X20 X21„„X30 X31 T(X) J(X) 偶校验位 J(X)=M(X)/S(X) (2) 式中S(X)是BCH(31:21)码的生成多项式,见式(3): 生成多项式S(X)的值在BCH(31:21)码的值是固定的。 BCH码是一种循环码,循环码是利用除法来纠错的。由于任一码组多项式T(X)都能被生成多项式S(X)整除,所以在接收端可以将接收码组R(X)用S(X)去除。若在传输中未发生错误,接收码与发送码相同,即R(X)=T(X),故接收码组R(X)必定能被生成多项式S (X)整除;若码组在传输中发生错误,即R(X)?T(X),R(X)被S(X)除时,可能除不尽而有余项Y(X),因此,可根据余项是否为零来判断码中有无错误(检错),如有余项,通 过一定的运算就可以确定错误位置,从而加以纠正(纠错)。 这里R(X)被S(X)除,是32位被11除,这在非实时静态的微机级实现非常简单;但在实 时的、动态的、单片机级的通信中实现要快速巧妙的算法才能实现,否则,现有的码未检错 及纠错完毕,下一个码已经到了。因为动态中位和位的时距t往往只有几十μs,以9.6b/s的短信为例,t=104μs。在这104μs中要完成检错、定位和纠错三个算法程序,才是一个完 整的解码检纠过程。 2 检错 根据上述原理,检错过程也就是求算R(X)被S(X)除的余项Y(X)的过程,如余项Y(X) =0,则R(X)=T(X),传输无差错;如余项Y(X)?0,则R(X)?T(X),检出传输差错。 在算法语言中,所有的运算总归于二种运算:加和减。这是电子计算机的二进制基本电路特 性所决定的,也是汇编语言唯一的算术运算方法。为此,这里把除法用模二加法再加右移位 实现。 已知:S(X)=11101101001 R(X)=r3r4r5r6 (ri为8位寄存器) 调用下面的模二加法右移子程序,得到R(X)/S(X)的余项Y(X)=r3r4。 ;32位/16位模二加法右移子程序 m2add:mov r7,#00 m2ddgx:mov a,r3 xrl a,#0edh ;S(x)的高位=oed(h) mov r3a mov a,r4 cpl acc.5 ;S(x)的低3位=001(b) mov r4,a mov a,r3 acc7e10:jb acc.7m2addgx ;R(x)的最高位为“0”,则R(x)右移 mov a,r6 rlc a mov r6,a mov a,r5 rlc a mov r5,a mov a,r4 rlc a mov r4,a mov a,r3 rlc a mov r3,a mov r7 cjne r7,#10h,acc7e10 ;右移总次数为16次 ret 余项Y(X)的高8位在r3寄存器中,低3位在r4的高3位。 3 定位 如果Y(X)=r3r4?0,表示接收到的码组R(X)有差错,下一步则由Y(X)的值推算差错 在R(X)中的位置。 理论上要找出R(X)中差错的位置,必须计算出差错校验子C(X)。在实践中,校验子C(X) 的计算不仅费时间,而且多位检纠还需多个校验子C(X)。为此,经过几年的实践,把Y(X) (即r3r4)直接作为综合校验子,通过快速查表找到差错位置。查找程序的大小和检纠差错 位数有关,这里以检纠4位差错为例,说明定位纠错的方法。 ;4位差错位址查找子程序 bitposi:mov b,0 ;对R(X)高位至低位的移动计数 mov r2,#1fh ;设表格长度 bto a: mov a,b inc b acall tabsub ;调用表格子程序,读入表格值 clr c subb a,r3 ;Y(X)中的r3 和表格值比较 jnz binc1 :不相等,转出 mov a,b ;相等,继续 acall tabsub clr subb a,r4 ;Y(X)中的r4和表格值比较 jnz r2decl:不相等,转出 setb f0 ;相等,置标志位返回 ret bincl:inc b r2decl:djnz r2,btoa ret ;表格查毕,没有相等的值,不置标志位返回 从查找子程序返回的B寄存器的值,即为差错在R(X)中从高位到低位的位数值。 ;4位差错表格子程序 tabsub:inc a movc a,@a+pc;将相对位置的表格送入a寄存器 ret db 0ebh ;表格开始,长度为查找子程序中 db 00 ;r2寄存器的预置值 db 76h . . . 4 纠错 找到了差错在R(X)位置,就可以纠错了。 纠错的原理比较简单,因为单片机处理的是二进制数,而二进制数只有二个状态,即不是“0”就是“1”。也就是说,R(X)中差错位是“0”,则改为“1”;差错位是“1”,则改为“0”。所以纠错要对所在位求反就行了. 至此,整个检错、定位、纠错的BCH码校验检纠过程结束。BCH码校验算法,经过实践的检 验,不失为单片机级的数据传输校验好算法。这种方法可以对多位随机差错和多位突发差错 进行检验和纠错,具体位数的多少仅受单片机工作频率的限制,而不受方法的限制。
本文档为【BCH解码校验算法的实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_589748
暂无简介~
格式:doc
大小:17KB
软件:Word
页数:6
分类:互联网
上传时间:2017-11-11
浏览量:44