维普资讯 http://www.cqvip.com
第7卷第9期2007年5月 1671--1819(2007)09--1886-04 科学技术与工程 VoL 7 No.9 May 2007 Science Technology and Engineering @2007 SOi.Tech.Engng. 基于ME算法的RS译码器的原理 和FPGA实现. 曾德才魏延存 (西北工业大学软件与微电子学院,西安710065;航空微电子中心 ,西安710072) 摘要RS(Reed—Solomon)码是具有很强纠错能力的线性分组码,广泛应用于各种通信和存储系统中。文中设计的译码器采 用修正的欧几里德算法(MEA),并在实现中采用公共项提取算法有效地优化了乘法器,以迭代、复用等方法降低了Rs码译 码硬件实现的复杂度。并用Veirlog-HDL语言实现了RS(255,239)码的译码器各个模块的功能。 关键词Reed—Solomon译码ME算法FPGA Verilog—HDL 中图法分类号TN919.3; 文献标识码 提高信息传输的可靠性和有效性,始终是通信 系统设计所追求的目标。为改善误码率,人们提出 了多种信道纠错编码方案,如奇偶校验码、BCH码、 1 RS码译码原理及实现 卷积码、Turbo码等。Reed.Solomon(RS)码是一种 多元BCH码,属于线性分组循环码。Rs码编解码 Rs译码算法主要分为时域译码和频域译码_l , 结构相对简单,具有同时纠突发错误和随机错误的 频域译码由于其结构特点,对于某些码长的RS码 能力,因而广泛应用于数据通信和数据存储系统的 会获得更快的译码速度,但由于增加了时域与频域 差错控制中,作为提高数据传输速率和存储可靠性 的变换和反变换以及相应的存储延时模块,需要消 的重要手段,它是当今最有效、应用最广的差错控制 耗更多的资源,因此本文仍采用时域译码方案,译码 编码方式之一_J 。 的关键步骤为错误位置及错误值多项式的求解,主 Rs码采用伽罗华域GF(2 )中的元素,并在 要算法为修正的欧几里德算法MEA(Modified Eu- 伽罗华域进行运算。在GF(2 )上,纠错能力为t clidean Algorithm) 和伯利坎普一梅西BM(Berle— 的RS码的参数可表示为:码长n=2 一1,信息位 kamp—Massey)算法 ]。BM算法需要大量存储器 长度为k,满足2 t=n—k,最小距离d mi :2 t+1。 和复杂的逻辑控制,更适于软件实现,而ME算法数 可知,RS码在相同的校验位数时,具有最大的距 据存储量少且硬件实现便于控制。因此,本文在硬 —l 离n]。码元多项式c( )=∑Ci ,生成多项式 件实现中采用ME算法。 i。一=0 Rs纠错译码步骤为 ]:1)计算伴随式(syn- 2t g(x)=H(dromes);2)解关键方程(key equation);3)钱搜索 f=l —Ot )。本文用Verilog HDL语言实现 (Chien search);4)计算错误值(error values);5)修 了RS(255,239)码的译码器,m=8,n=255,k= 正接收码字,如图1所示。 2006年l2月4日收到 第一作者简介:曾德才,男,西北工业大学硕士研究生,研究方向: V1.SI设计、差错控制编码。 通信作者简介:魏廷存,男,西北工业大学教授,研究方向:数模 混合信号V1.SI设计技术以及平板显示驱动芯片技术。 图1 RS译码器结构 维普资讯 http://www.cqvip.com
9期 曾德才,等:基于ME算法的Rs译码器的原理和FPGA实现 1.1计算伴随式 。li-ll[ 一1a 一1Q 一1( )+ i一1bi一1Ri一1( )] Qi( )= i一1Q 一1( )+ i一1R 一1( ) L ( )=[ 一1bi一1L 一1( )+ i一1a 一1 Ui一1( )]一 ”H‘[ ¨a¨Ui一1( )+ b L ( )] ( )= 一1U 一1( )+ 一1L 一1( ) 其中,zH=degR ( )一degQ ( ),当zH≥0 时, 一1=1;当ZH<0时, 一1=0。 3)如果degR ( )<t,迭代结束,得到∞( ) =Ri( ), ( )=L ( )。 图2伴随式计算电路 在硬件实现中,采用迭代结构,使用4组寄存器 分别存储 ( ),Q( ), ( )和 ( )的系数 设接收码字为r( )=∑ ,伴随式S( ) (Ri( ),Q ( )的计算结构和Li( ),U ( )相同, =U 一1 下面只讲前者),设置寄存器存储 ( )和Q( )的 =s1+s2 +…+s2l ,其中sj=∑r最高位系数,即公式中的a和b,每次迭代完成后根 i=o i 0c ,化简 得S =((rn-1 +r ) +…+r1) +r0,从而可 据deg R和deg Q进行更新 。设置标志位sw,当 用图2所示串行迭代结构实现。 deg Q>deg R时,令sw取1,在代入公式进行计算 1.2 ME算法求错误位置多项式 ( )和错误值多 前,将存储 和Q,L和 寄存器内的值互换,否则 项式OJ( ) 不互换,这样算法公式简化为: 得到伴随式的值之后,采用ME算法,基于多项 R ( )=bi_lRi一1( )一 ai_lQ 一1( ),Q ( ) =式分解原理求两个多项式最大公因式的迭代过程, Q ( ) 对关键方程s( ) ( );∞( )(mod )求解,得 Li( ) =6£一1L 一1( )一 ¨ a 一1U 一1( ), ( ) 到错误位置多项式 ( )和错误值多项式∞( ),其 =Ui一1( ) 算法描述如下: 为了提高速度,将寄存器组分成对应的高阶系 1)初始化:设Rs码的纠错能力为t,伴随式计 数( …R ,Q。...Q )和低阶系数( … ,, 算模块得到的结果为s( ),则令R。( )= , Q …Q ,)两组并行计算(结构相同),这样一次迭 Q。( )=s( ),L。( )=0,Uo( )=1; 代计算可以在9个时钟周期内完成,大大提高了计 2)设Ri( )的阶数为degR ( ),最高阶的系数 算速度,相应的代价是增加一个运算单元CU。R和 为ai,Qi( )的阶数为deg Qi( ),最高阶的系数为 Q,L和 寄存器内的值互换采用可交叉传输的双 bi,则第 步的迭代计算可以表示为: 入双出开关盒实现,图4显示了ME算法 ( ), Ri( )=[ i一1bi一1Ri一1( )+ 一1a 一1Qi一1( )]一 Q ( )的低阶系数实现结构。 SW=I ——————■ …+ SW--O CU 图3 ME算法R ( ),Qi( )的低阶系数实现结构 维普资讯 http://www.cqvip.com
1888 科学技术与工程 7卷 1.3钱搜索、计算错误值和纠错输出 得到 ( )和 ( )后,方程 ( )=0的根对 2有限域乘法器结构优化 RS译码器中的乘法运算占用了大量的硬件资 源和功耗,因此乘法器性能的好坏对整个译码器的 性能都起着重要作用。本文采用提取公共项预运算 应错误位置在GF域的值,由于用硬件直接解方程 比较复杂,因此用钱搜索算法搜索解空问所有可能 发生错误的位置来求根,即检查是否 ( )=0(0 ≤i≤255)来寻找差错位置i。为方便计算,根据有 限域性质,当 ( )=0时差错位置为( —i),在第 i个周期时电路算得 ( ‘)的值,再通过零检测电 的方法对乘法器结构进行优化,使电路的面积有较 路即可知是否为根。找到错误位置后用福尼(For- ney)算法求出差错值,对错误码宇纠错后输出正确 / i、 码字。福尼算法可表示如下:e 一 = = J / i、 i , 。酣( )表示 ( )的奇次项之和。在实 0dd 现钱搜索,计算 ( )的同时得到 ( )。 ( ‘) 的计算电路和 ( )完全相同,为节省面积可复用 钱搜索电路计算 ( )和 ( ‘),为使错误值输出 和整体速度一致,必须使模块时钟两倍于系统时钟 和两倍的寄存器,在偶数时钟计算 ( ‘),在奇数 时钟计算 ( ‘)。e 求解中的除法运算采用对除数 进行查表求逆,再乘以被除数的方法。在求出错误 位置和相应位置的错误值后,将其与FIFO中存储 的r( )进行异或,得到纠错后的码字。如图4、图5 所示。 L f 图4钱搜索 图5福尼算法纠错输出 大改善。 设 是GF(2 )上的本原元则GF(2 )域上的任 意两个元素A和 及其乘积c可以表示为A( ) 7 7 7 =∑ Z,‘=o ( )=∑bL=o i Z,c( )=∑cL=U z则GF (2 )上的乘法定义为C(x)=A( )×B( )modP(x), 这里P(x)为本原多项式,P(x)= + + + +1, 通过推导可以分两步实现乘法,先将A(x)和B(x)两 个多项式按常规方法相乘得到一个次数不大于14的 14 多项式 ( )=∑m ,再将 ( )对本原多项式 P( )求模所得到的次数不大于7的多项式就是乘积 c,经计算得 mo+m8+m12+m13+m14 m1+m9+m13+,n14 m2+m8+,n1O+m12+m13 m3+m8+m9+nil+m12 C= m4+m8+m9+mlo+,n14 m5+m9+mlo+nil m6+mlo+nil+m12 m7+nil+,n12+m13 mo+m14+((m8+m12)+m13) m1+(m9+m14)+m13 m2+m1o+((m8+m12)+m13) m3+(m8+m12)+(m9+ml1) m4+m8+m1o+(m9+m14) m5+m1o+(m9+ml1) m6+m10+(ml1+m12) m7+(ml1+m12)+m13 可以看出上式左边逻辑运算还可以通过公共项 提取进一步优化例如m8+m12,m12+m13,m11+m12 都先后出现了3次,因而它们均可以作为公共项提 维普资讯 http://www.cqvip.com
9期 曾德才,等:基于ME算法的Rs译码器的原理和FPGA实现 1889 取并预先计算,这样可以进一步减少异或门的数量, 合设计要求。 优化电路结构 j。优化后如上式右边,式中的括号 项为提取的公共项,共有5个,优化后需要的异或门 数由28个减至22个,也使得乘法器的异或门数从 77个减少为最终的71个。变量乘法器和常量乘法 器都可用提取公共项的方法进行优化,优化后面积 减少了15%左右。 4结论 本文对RS(255,239)译码器的关键模块进行了 结构优化,设计中采用公共项提取算法有效地减少 了乘法器中异或门的数量,在计算伴随式、ME算法 解关键方程、钱搜索的电路中都应用了迭代算法,并 3硬件实现和测试 该设计在ISE6.3i环境下完成,使用综合工具 Synplify pro 7.6,仿真工具Modelsim SE 6.0,设计语 言使用Verilog HDL。使用Xilinx的FPGA芯片Vir— tex H xc2v40—4cs144进行测试。译码器使用1671 个Slice Fli PFlops,3508个4输入LUTs,整个的等 效门数是102865 f-j,占芯片总资源的35%,最高工 作时钟超过100MHz;并对伴随式、ME算法、钱搜 索、求错误值4个模块分别综合,等效门数分别为 10364、35940、13655、22691,能达到的时钟频率分别 为141.6 MHz、102.5 MHz、116.1 MHz、122.0 MHz。 对钱搜索模块进行复用,减少了芯片面积,降低了复 杂度,提高了芯片速度。 参考文献 1王新梅,肖国镇.纠错码一原理与方法.西安:西安电子科技大 学出版社,2003 2 Hanho Lee.High Speed VLSI Architecture for Parallel Reed Solomon Decoder.IEEE Trans on VLSI System,2003,ll(2):288—294 3 Shao Howard M.Reed Irving S.On the VLSI Design of a Pipeline Reed Solomon DecodeT Using Systolic Arrays.IEEE Trans on Comput— ers,1998,37(1O):1273—1280 4 Paar C.Optimized Arihmettic for Reed—Solomon Encoders.Proc IEEE Int Sym Information Theory.1997,250 5 Kwon S.ShinH.An area—efficientVLSI architcteure of aReed—Solo— mon decoder/encoder for digital VCRs.IEEE Trans Consumer Elec— 由此可见,ME算法模块的速度是译码器译码速度 的瓶颈所在,我们可以对该模块继续优化,比如分成 更多组并行计算。将编码得到的码字人为加入8位 错误,启动仿真,解码输出8位错误均得到纠正,符 Ironies,1997,43(4):1019—1027 Principles and FPGA Implementation of RS Decoder Based on ME Algorithm ZENG De—cai,WEI Ting—cun (College of Software and Microelcteronics,Northwestern Polytechnical Univ,XiIm 710065,P.R.China; Aviation Microelectronics Center,Northwestern Polytechnical Univ ,XiIm 710072,P.R.China) [Astract] RS(Reed—Solomon)code is a linear block code having very strong capabihty of correcting random and burst errors,which is widely used in various communication nd amemory systems.In this paper,the decoder is designed using modiifed Euclidean algorihm(MEA),tthe public extraction algorihm its used to optimize he tmulti— plier,and the complexity and the power consumption of RS decoder re areduced by using he itteration nd mulatiple methods.The all blocks of RS(255,239)decoder are realized by Verilog—HDL. [Key words] Reed—Solomon decoder ME lagoirhtm FPGA Verilog・HDL