位置:51电子网 » 技术资料 » 通信网络

用汇编语言实现BCH解码校验算法

发布时间:2008/5/29 0:00:00 访问次数:403

摘要:介绍数据传输中bch解码校验用汇编语言实现的算法。算法包含bch码的差错检验、差错位查找和差错纠正,同时列出相关主要子程序清单并予说明。

关键词:bch解码 校验算法 汇编语言

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

笔者近几年在工业测控和无线通信系统开发,摸索了bch解码检纠在实时的、动态的、单片机级的通信中的算法,并取得十分突出的效果。以下以bch(31:21)码为例进行探讨。

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……x20x21……x30x31
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位模二加

摘要:介绍数据传输中bch解码校验用汇编语言实现的算法。算法包含bch码的差错检验、差错位查找和差错纠正,同时列出相关主要子程序清单并予说明。

关键词:bch解码 校验算法 汇编语言

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

笔者近几年在工业测控和无线通信系统开发,摸索了bch解码检纠在实时的、动态的、单片机级的通信中的算法,并取得十分突出的效果。以下以bch(31:21)码为例进行探讨。

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……x20x21……x30x31
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位模二加

相关IC型号
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!