《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 设计应用 > 基于FPGA的高速RS译码器设计
基于FPGA的高速RS译码器设计
来源:电子技术应用2010年第11期
殷爱菡,刘方仁,陈燕燕
华东交通大学 信息工程学院,江西 南昌330013
摘要: 提出了一种基于RiBM算法的RS(255,223)高速译码器设计方案,并采用FPGA和Verilog HDL实现了该译码器。译码器采用三级流水线结构实现,其中关键方程求解模块采用RiBM算法,具有译码速度快、占用硬件资源少等优点。仿真结果验证了该译码器设计方案的有效性和可行性。
中图分类号: TN919
文献标识码: A
文章编号: 0258-7998(2010)11-0066-03
Design of the high speed RS decoder based on FPGA
YIN Ai Han,LIU Fang Ren,CHEN Yan Yan
School of Information Engineering, East China Jiaotong University,Nanchang 330013,China
Abstract: The design proposal of the RS(255,223) high speed decoder based on RiBM algorithm is put forward, and the decoder is implemented with FPGA and Verilog HDL. The decoder has advantages of high decoding speed and occupancy less hardware resources, which is realized with three-level pipeline structure and the module of key equation solution is implemented with RiBM algorithm. The simulation result validates the validity and feasibility of the design proposal of the decoder.
Key words : RS(255,223);FPGA;RiBM algorithm

    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.

此内容为AET网站原创,未经授权禁止转载。