查艳芳, 殷奎喜, 赵 华, 刘学军
(南京师范大学a.物理科学与技术学院; b.地理科学学院,江苏 南京210097)
BCH码是1959年由霍昆格姆(Hocquenghem)[1]提出的一类可以纠正多个随机错误的循环码,它具有很强的纠错能力[2]。随着信息技术的广泛应用和人们生活水平的不断提高,越来越多的图片、视频等K量级的信息需要在各个终端之间进行传输。本文介绍了一种K量级群变换BCH码纠错方法,它不仅能够实现终端之间K量级信息的传递,同时它将K量级的信息作为一个数据包,在接收端进行整体的包解码和包纠错。
对于图像与视频等信息,由于它们的数据量比较大,如果每次端点之间用8位或16位的方式进行传输,则对于拥有上M的数据量的图片或者视频信息来说,则需要经过上千上万甚至更多次编解码才能传完,这就使得传输过程变得十分的繁复。为了避免以上的弊端,我们提出了利用群变换的BCH码纠错方法来完成K量级信息的传输。
根据BCH码的相关特性,我们可以构造码长为1023,信息位长度在1k以上的BCH码。在发送端,我们将1023个数据作为整体进行传输。在接收端,也是对 1023个数据的数据包进行整体的解码与纠错,即包解码和包纠错。
这里,我们构造码长 n=1023,信息位长度 k=1003,它的码率它可以纠正2个错误。根据BCH码的定义,构造(1023,1003)的BCH码,它的生成多项式g(x)[3]:
利用群变换编码方法,可以很容易的实现K量级数据的解码与纠错。与其他BCH码解码方法相比,群变换纠错方法简单易懂,步骤简便,算法简便,计算过程简单,计算时间较短。而且将K量级数据包作为整体进行处理,处理的速度快,数据量大,很好的符合了现代通信与数据传输的要求。
在(n,k)的 BCH码中,码长n,信息位长度k,生成多项式g(x)的阶数r=n-k。由于g(x)的阶数等于发送矩阵的监督位长度,即监督位长度为r。
在群变换的BCH码编码方法中,首先根据BCH码的生成多项式 g (x),运用群变换方法,产生对应的生成矩阵,它是一个k×n的矩阵[4]。
由于信道中存在噪声等干扰,所以数据在传输过程中可能发生错误,此时接收端接收到的矩阵B=C+E,其中C是发送的矩阵,E是错误矩阵。根据生成矩阵与校验矩阵之间的关系[5]:
如果发送矩阵 C在传输的过程中仅存在一个错误错误,那么伴随子向量RS与监督矩阵行向量一一对应。我们可以通过查找表的方法,查找伴随子向量RS在监督矩阵中的位置,来确定接收矩阵B中发生错误的位置,并予以改正。例如,解码过程中,通过查找得到的伴随子向量 SR等于监督矩阵 中的第i行向量,这就表示接收矩阵B中第i位数据出错,只要将接收矩阵B中第i位予以改正,那么在接收端就可以得到正确的数据矩阵。(见图1)。
图1 单个错误时的对应关系
图2 多个错误时的对应关系
对于K量级的数据,根据群变换BCH码解码时,伴随子向量RS与监督矩阵行向量之间的对应关系。我们可以很容易的对K量级的数据包进行整体的解码和纠错。以能纠正2个错误的K量级的BCH码为例,首先对1003个信息位整体进行编码,编码后得到既有信息位又有监督位,数据量为1023 bit的数据包,并进行发送。
在解码时,接收端将有 1023 bit的数据包作为一个整体,把它与监督矩阵相乘,得到伴随子向量RS,再根据的情况,判断传输过程中是否发生错误,如果发生了错误,再通过查表的方式,找出伴随子向量 SR在查找表中的位置,即判断 SR与监督矩阵 中的行向量的之间的关系,从而确定接收到的数据包中的错误情况,并予以纠正,最后得到正确的信息。
假设在随机信道中发送“0”的错误概率和发送“1”的错误概率相等为P,且 1P≪ ,在码长为n的码组中恰好发生t个错码的概率为[6]:
它的码长n=1023,最多可以纠正2个错误,
通过以上的分析可以看出,在信噪比相同的情况下,采用K量级BCH码纠错方法,可以使误码率改善到的数量级,即误码率改善了20 dB以上。这说明,将K量级的BCH码作为一个数据包进行传输,不仅使解码过程简单快捷,也使误码率也得到了很好的改善。
由于群变换的BCH码纠错方法简单,步骤简便,所以可以在硬件上比较容易的实现它。
本文用Verilog HDL语言,在Quartus II 7.2平台上对K量级的BCH码编解码进行硬件仿真,并采用Altera公司生产的Cyclone III EP3C25F324C8NES芯片来予以实现[7]。
K量级BCH码纠错方法的硬件实现可以分为两大模块,即编码模块和解码模块。在编码模块中,首先通过串并转换将输入的K量级的串行数据转换为并行数据,经过编码后,得到既有信息位又有监督位的,数据量为1023 bit的K量级数据包,然后通过并串转换后进行发送。由于要进行数据间的并串转换,所以要对时钟进行分频,使得整个编码模块的时序得到统一。
解码模块首先将接收到的K量级的数据包进行串并转换,在解码时,根据伴随子向量与监督矩阵的对应关系,通过判断伴随子向量在监督矩阵中的位置关系,来对接收到的数据包进行检错和纠错,然后再通过并串转换,输出正确信息。在判断伴随子向量RS在监督矩阵∧H中位置时,通过查找表的方式,即先将∧H的行向量以及所有行向量的组合存储在RAM中,然后在RAM中进行查找,当查找到与RS相同的行向量,或者相应的行向量的组合时,相应的行数即为接收矩阵中数据发生错误的位置,从而完成解码与纠错。
对K量级群变换BCH码进行编码仿真(如图5)。由于信息位(1003位)和编码过后的数据位(1023位)太长,只能显示部分的信息位(m)和编码过后的数据(dout),cout为监督位(10 位)。从图 5中可以看出编码后的数据高20位(第1022~1003位)为监督位,之后的1003位为信息位。
图3 K量级BCH码编码模块
图4 K量级BCH码解码模块
图5 编码波形仿真
利用群变换 BCH码纠错方法对数据进行解码和纠错时,其伴随子向量与监督矩阵行向量之间存在对应关系。正是这种对应关系,使得BCH码的解码和纠错过程变得简单快捷。所以我们将这种方法应用于K量级信息的编解码,从而实现端点之间的大数据量的传输。对一个通信模型而言,K量级信息在传输过程中的误码率能改善20 dB以上。由于K量级群变换BCH码纠错方法算法简便,实现容易,因而它可以在实际中得到很好的应用。
[1] Hocquenghem J.Codes Correcteurs d’erreurs[J].Chiffres,1959(02):147-156.
[2] 王兰勋,白金凤.基于Logistic混沌序列和BCH码交织编码的语音保密通信方法[J].通信技术,2008,41(04):67-69.
[3] 横山光雄.スペクトル 扩散通信システム [M].日本:日本技术出版社,1999:529.
[4] Kui X Y,Kishi M.The High Capacity and High Speed DiffCDMA with the BCH Double Error Correction and Continuous Phase Primary Modulation[C]//IEEE PIMRC’99.Osaka, Japan: IEEE 1999:1556-1560.
[5] 王新梅,马文平,武传坤.纠错密码理论[M].北京:人民邮电出版社,2001:58.
[6] 樊昌信,张甫翊,徐炳祥,等.通信原理[M].第5版.北京:国防工业出版社,2005:284.
[7] 宁楠,鲍慧,宋文妙.一种基于FPGA的纠错编译码器的设计与实现[J].通信技术,2008,41(08):95-97.