文献标识码:A
文章编号: 0258-7998(2010)11-0066-03
RS码是一种纠错能力很强的多进制BCH码,同时具有纠正随机和突发两种差错的能力,因此被广泛应用于通信系统中,以提高数据传输的可靠性。在光通信系统中,常把RS码作为其前向纠错码。近几年,RS码常用于一些高速通信系统中作为信道编码,例如,802.3av协议规定RS(255,223)作为10 G EPON的前向纠错码,这些高速系统对前向纠错的处理速率提出了更高的要求。已有文献[1],[2],[4]中关于RS(255,223)译码器的设计,都难以在速度和面积上兼顾考虑,特别是译码速率太慢,无法满足高速通信系统的要求。为了保证高速处理,同时尽可能减少硬件资源的占用,提出一种合理的译码器结构,从而能高效、快速地译码。
RS译码算法主要分为两种:时域译码算法和频域译码算法。若采用硬件实现频域译码算法,则电路结构非常复杂,耗费的硬件资源非常大。而时域译码算法具有速度快、硬件资源耗费少、控制电路少等优点。因此,采用时域译码算法来实现RS(255,223)译码器。RS(255,223)的时域译码步骤如下:
(1)由接收码字计算RS(255,223)的伴随多项式S(x);
(2)采用RiBM算法通过伴随多项式求解关键方程,从而求解出错误位置多项式?滓(x)和错误值多项式?棕(x);
(3)利用钱氏搜索法求解出错误位置多项式的根,得到错误位置;错误位置多项式的根的倒数即是错误位置;
(4)利用Forney算法由错误值多项式求解出各个错误位置对应的错误幅值;
(5)FIFO控制器所存储的接收码字与错误幅值相减得到正确的传输码字。
2 RS(255,223)译码器设计
为了提高译码器的处理速度,采用三级流水线结构来实现RS(255,223)译码器,其结构如图1所示。译码过程中的计算都是基于有限域的,其基本计算单元是有限域乘法器和加法器。RS(255,223)译码器包括:伴随式计算模块、关键方程求解模块、钱氏搜索模块、Forney算法模块以及FIFO模块5个部分。
qj称为第j步的部分和,并且有q-1=0和si=q254。由递归公式(2)可知,32个伴随式是独立并行计算的,且各自是递归运算,其结构非常规则,易于硬件实现。为了提高译码速度,设计采用32个并行的计算模块,分别计算所需要的32个伴随式。伴随式计算模块的电路结构如图2所示,feedback信号用于控制寄存器的反馈,当一个码字分组的第一个符号r254进入译码器时,必须使其处于低电平,使得所有寄存器的反馈值为0,即q-1=0,以确保当前码字分组的伴随式计算不会受到前一个码字分组的影响。电路工作过程如下:码元符号从r254到r0顺序发送,当码元符号r255-j-1到达后,寄存器中存储的部分和qj与αi相乘,然后与r255-j-1相加得到新的部分和qj+1并存入寄存器中,当r0到达后,伴随式计算完成。
2.2 关键方程求解模块的电路设计
关键方程求解的常见方法主要有欧几里得算法、BM算法及它们的改进形式,这些算法都属于快速迭代算法;其中BM 算法的译码时延比欧几里得算法小,实现电路较简单,所以在工程中较为常用。文章中关键方程求解模块采用RiBM算法,与BM算法相比,RiBM算法去掉了复杂的求逆过程,可以采用规则的脉动阵列实现,控制信号少、速度快、硬件实现更方便。采用RiBM算法,单个时钟周期内的运算量减少,可以提高译码器的工作频率,因此采用RiBM算法可以显著地提高译码速度。RiBM算法的主要思路是并行实现,其硬件结构采用规则的脉动阵列实现,RiBM算法的硬件结构主要包括两部分:一部分是49个功能相同的PE计算单元的串接组合实现多项式的脉动计算;另一部分是控制电路,实现差值更新[3]。其硬件实现结构如图3所示。
3 实现结果的验证与分析
译码器的功能验证是在Modelsim SE 6.2b和QuartusⅡ7.1环境下完成的。验证所采用的芯片是CycloneⅡ系列芯片EP2C8T144C8。经过编译后,占用芯片的4 327个逻辑单元,占用逻辑单元比文献[4]的方案少4 855个。为了验证该译码器能否纠正16个错误,在编码后的码字中加入16个错误,作为译码器datain端的输入,如图6所示,correctcode为编码器编码后的正确码字,用来作为参照;errorflag为错误标志。译码输出结果如图7所示,outflag为高电平时,译码器输出端dataout开始输出译码结果。仿真结果显示,该译码器的伴随式计算模块耗时约为255个时钟周期,关键方程求解模块耗时约为32个时钟周期,钱氏搜索模块和Forney算法模块独立并行地工作,其总耗时约为255个时钟周期。与ME算法相比,关键方程求解采用RiBM算法,可以大大提高译码速度。系统时钟频率设为100 MHz,经过548个时钟周期(5.84 μs)后得到译码结果,与软件译码方式相比,其耗时非常少。对图6和图7进行比较,可以看出,译码器成功地纠正了16个错误,证明该译码器能很好地实现译码功能。
文章完整地阐述了基于RiBM算法的RS(255,223)高速译码器的设计以及FPGA实现,仿真和编译结果表明该译码器与ME算法实现的译码器硬件复杂度相近,译码时延大大减小,极大地提高了数据吞吐率,其装置可以应用于诸如光通信系统等需要高速译码的通信系统中。
参考文献
[1] 严来金,李明,王梦.RS(255,223)译码器的设计与FPGA实现[J].微计算机信息,2005,21(1):148-149.
[2] 张玲,张立,何伟.截短Reed-Solomon码译码器的FPGA实现[J].电子技术应用,2009,35(7):65-67.
[3] 陈曦,谢军,邱琪.基于RiBM算法的RS译码器设计实现[J].光通信技术,2008(11):48-50.
[4] 向征,刘兴钊.RS(255,223)编译码器的设计与FPGA实现[J].电视技术,2006(11):17-19.