发明名称 一种基于FPGA的高速RS编译码器实现方法
摘要 本发明公开了一种基于FPGA的高速RS编译码器实现方法,包括高速RS(244,212)编码器的FPGA实现与高速RS(244,212)译码器的FPGA实现,高速RS编码器基于多项式除法的电路,高速RS译码器基于三级流水线结构,采用双时钟驱动,时钟i_clk与反向时钟i_clk180,同时,在普通GF域乘法器的基础上,提出三种基本运算单元,常系数GF域乘加器,常系数GF域乘法器以及两时钟周期控制的GF域乘法器,不仅大大提高了运算速度,还降低了硬件复杂度,本发明支持吞吐率高,纠正突发错误能力强,可满足多方面的应用。
申请公布号 CN102122964A 申请公布日期 2011.07.13
申请号 CN201110081379.X 申请日期 2011.03.31
申请人 西安电子科技大学 发明人 宫丰奎;彭克蓉;葛建华
分类号 H03M13/15(2006.01)I;H04L1/00(2006.01)I 主分类号 H03M13/15(2006.01)I
代理机构 代理人
主权项 1.一种基于FPGA的高速RS编译码器实现方法,该方法包括高速RS(244,212)编码器的FPGA实现与高速RS(244,212)译码器的FPGA实现,其特征在于:所述的高速RS(244,212)编码器的FPGA实现方法,对每组串行输入的212个信息码元{m<sub>1</sub>,m<sub>2</sub>,L,m<sub>212</sub>}编码得到32个校验码元{p<sub>1</sub>,p<sub>2</sub>,L,p<sub>32</sub>},具体步骤是:(1)开关K1接a口,闭合开关K2,在时钟i_clk的驱动下,输入的第k个信息码元m<sub>k</sub>在使能信号的控制下输入编码器,与寄存器D0进行GF域相加运算得S<sub>md</sub>,k表示码元序号,初始为1,同时,编码器将输入信息码元m<sub>k</sub>直接输出;(2)在时钟i_clk180的驱动下,S<sub>md</sub>与寄存器D1进行常系数GF域乘加运算,结果存储至寄存器D0;(3)在时钟i_clk的驱动下,S<sub>md</sub>同时与寄存器D2~D31进行常系数GF域乘加运算,结果分别存储至寄存器D1~D30,并将S<sub>md</sub>存储于寄存器D31中;(4)判断信息码元是否输入完毕,如果是,执行步骤(5),否则,输入第k+1个信息码元m<sub>k+1</sub>到编码器,返回步骤(1);(5)所有信息码元计算完成后,断开开关K2,K1接b口,在时钟i_clk的驱动下,串行输出寄存器D0~D31的值作为检验码元,则该组信息码元编码完毕;所述的高速RS(244,212)译码器的FPGA实现方法,采用双时钟驱动及三级流水线结构,包括伴随式计算模块、求解关键方程模块、错误值获取模块、信息存储FIFO、错误值存储FIFO以及纠正错误电路,译码后的数据由所述纠正错误电路输出;所述的双时钟驱动,对硬件实现比较复杂的部分模块采用反向时钟驱动,使其达到高速实现目的;所述的三级流水线结构,其中第一级为伴随计算模块,第二级为求解关键方程模块,第三级为错误值获取模块以及纠正错误电路;所述伴随式计算模块,通过每组244个数据码元{c<sub>1</sub>,c<sub>2</sub>,L,c<sub>244</sub>}的串行输入,计算出伴随多项式的系数{S<sub>1</sub>,S<sub>2</sub>,L,S<sub>32</sub>},总共分为32个子模块,分别对应32个伴随多项式的系数,其结果并行输入求解关键方程模块,用于求解错误位置多项式和错误值多项式的系数。所述的求解关键方程模块,根据所输入的伴随多项式系数{S<sub>1</sub>,S<sub>2</sub>,L,S<sub>32</sub>}和RiBM算法来进行迭代运算,将得到的求错误位置多项式的系数{σ<sub>1</sub>,σ<sub>2</sub>,L,σ<sub>32</sub>}和错误值多项式的系数{ω<sub>1</sub>,ω<sub>2</sub>,L,ω<sub>32</sub>},以及错码数目,并行输入错误值获取模块,用于判断是否译码正确和计算错误位置以及错误值。所述的错误值获取模块,包括钱搜索模块:将钱搜索法得到错误位置多项式的根x<sub>i</sub>,以及错误值计算中该根相对应的错误值多项式的值<img file="FSA00000464562700021.GIF" wi="131" he="58" />的计算,综合于一个模块之中,同时得到错误位置多项式的根x<sub>i</sub>、错误值多项式的值<img file="FSA00000464562700022.GIF" wi="434" he="57" />以及常数项因子<img file="FSA00000464562700023.GIF" wi="164" he="58" />其中i表示错误位置多项式的根的序号,初始为1;错误值计算模块:得采用钱搜索模块得到的相应值计算出错误值。同时错误值获取模块将计算出的错误值,输出给错误值存储FIFO中存储起来。另外,钱搜索模块还输出判断使能信息,用于控制纠正错误电路。所述的信息存储FIFO,用于把输入的数据码元按先后顺序存储到FPGA芯片的FIFO单元,待错误值获取模块计算完成后,根据错误情况将数据依次输出到纠正错误电路中;所述的错误值存储FIFO,用于把错误值获取模块的输出数据,按先后顺序存储到FPGA芯片的FIFO单元中,待获取错误值模块计算完成后,根据错误情况将所计算的错误值依次输出到纠正错误电路中;所述的纠正错误电路,是采用错误值获取模块输出的判断使能信息,控制信息存储FIFO和错误值存储FIFO,当判断译码器已正确译码时,则将两者存储的信息顺序输出,进行GF域相加运算,将结果作为已译码字输出,否则,直接将信息存储FIFO的信息作为输出。
地址 710071 陕西省西安市太白南路2号