查表法实现RS(255,247)码的编码和解码的Verilog源代码-FPGA CPLD资料源码分享论坛-FPGA CPLD-ChipDebug

查表法实现RS(255,247)码的编码和解码的Verilog源代码

该帖子部分内容已隐藏
付费阅读
10积分
此内容为付费阅读,请付费后查看

作者声明

本设计提供RS(255,247)码的编码和解码的Verilog源代码。
作者已验证0~4个错误的编码与解码功能。对于大于4个错误的码字,没有做验证。

本原多项式为 p(x) = x^8 + x^4 + x^3 + x^2 + 1
生成多项式为 g(x) = (x+a)(x+a^2)(x+a^3)(x+a^4)(x+a^5)(x+a^6)(x+a^7)(x+a^8)

解码器电路可能包含一些延时较大的路径,存在求逆与乘法(或两个乘法)级联的组合电路,主要在euclid.v中。
由于时间关系,本人并没在代码中加入注释,也没有对电路时序加以优化。
代码中的一些关键变量加以下说明:
ev: 表示错误数值。
el: 表示错误位置。
evp: 表示错误估值函数中各项的系数,如evp2表示x^2项的系数。
elp: 表示错误位置多项式中各项的系数。如elp0表示常数项的系数。

解码过程简要说明如下(关于解码算法的更多详细说明,可以查看林舒写的《差错控制编码》书籍)。
1,由输入码字,计算出校正子。在syndrome.v中实现。
2,基于步骤1得出的校正子,采用euclid算法计算出错误位置多项式、错误估值函数、错误个数。在euclid.v中实现。
3,基于步骤2得出的错误位置多项式,采用chien算法计算出错误位置。在chien.v中实现。
4,基于步骤2和3得出的数据,采用forney算法计算出错误数值。在forney.v中实现。
5,解码完成。(解码器最终输出为错误个数、错误位置、错误数值)

本设计可供个人学习与研究所用。
在未取得作者同意情况下,严禁任何组织或个人将本设计用于任何商业用途。

如有疑问可与作者本人联系:gonwendon@163.com (Mr 龚)

78400d7eef193412

请登录后发表评论

    没有回复内容