- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
BCH种译码算法之比较
BCH三种译码算法之比较
龙进凯 崔小欣
北京大学信息科学技术学院微电子学研究院
摘要
本文从BCH译码中错位多项式的求解这一关键步骤入手,详细分析了彼得森算法(Peterson)、伯利坎普算法(Berlekamp)和欧几里得算法(Euclidean)这三种译码算法的数学原理,并给出了三种算法相应的硬件实现。文章的最后还给出了三种算法的实现比较,希望能够对BCH译码工作起到一定的参考价值。
关键词:错位多项式,彼得森算法,伯利坎普算法,欧几里得算法
1 引言
二进制BCH译码一般来说分为四个步骤,如图1所示。首先根据接收到的码字R(x)来计算伴随多项式S(x),然后通过伴随多项式S(x)的系数S1,S2,…,S2t(t为最多可纠正的错误个数)来计算错误位置多项式σ(x),最后再根据错误位置多项式σ(x)的系数σ1,σ2,…,σt利用Chien搜索算法来求出错误位置并对接收码字进行纠错译码。
图1 译码器结构框图
在上述的四个步骤中,决定BCH译码器的复杂性和速度的关键在于错位多项式σ(x)系数的计算。因此,本文着重对错位多项式σ(x)的各种计算方法以及相应的硬件实现展开讨论。
2 算法描述
2.1 彼得森(Peterson)译码算法
定义错误图案为,则有
(2.11)
若传输过程中有个错误,则对于,有
(2.12)
令,则有
(2.13)
称为错误位置。
定义错误位置多项式
(2.14)
的根的倒数为。因此需要求出错误位置多项式的系数。的系数可以通过解下面的方程组得出:
(2.15)
这种通过直接解方程组来得到错位多项式系数的方法称为彼得森(Peterson)译码算法。假设某种码的纠错能力t=2,则方程(2.1-5)变为
(2.16)
从而解得
,
2.2 伯利坎普(Berlekamp)译码算法
令
(2.21)
且满足
称式2.2-1为Berlekamp关键方程。满足方程2.2-1的解不唯一,而由最小距离译码原理,求得的应该是对应发生错误码元最少的错误图案,即是次数最低的解,记作。求一个,使得
(2.22)
满足
解关键方程的迭代步骤如下:
1) 设;
2) 若,则
若,则
其中,且有最大值;
3) 如果,则迭代结束,否则执行4);
4) 令,计算
回到2)。
2.3 欧几里得(Euclidean)译码算法
定义错误值多项式
(2.31)
且满足
式2.3-1的等价表达为
(2.32)
其中,是除以的商,是余数。
可由下面两式开始迭代计算得到:
具体迭代步骤如下:
1) 初始化,迭代次数;
,;,;
2) 如果 ,则停止迭代;否则就进行以下运算:
a) ,;
b) ,;
,;
c) 如果 ,;
否则,;
d) ;
3) 迭代次数,返回2)。
当进行完2t次迭代计算后,的个系数中的高个为错误位置多项式的个系数。
3 硬件实现
下面我们以(15,7)二元BCH码(最多可以纠正2个随机错误)为例,将以上的三种译码算法分别用硬件描述语言加以实现,以供比较。
1) 对于彼得森(Peterson)算法,如果输入的伴随多项式的系数S1=S2=S3=S4=0,则表示接收到的码字没有错误,那么相应的错位多项式的系数σ1=σ2=0;有一个或者两个错误时的情况如下:
2) 对于改进的伯利坎普(Berlekamp)算法,有一个或者两个错误时的情况如下:
3) 对于欧几里得(Euclidean)算法,有一个或者两个错误时的情况如下:
4 分析比较
从以上的仿真结果可以看出,对于三种算法,同样的一组伴随多项式的系数得到了相同的错位多项式的系数;但是三种算法所花费的计算时间是不一样的。Peterson算法对于三种情况(接收码字没有错误、有一个错误、有两个错误)来说计算时间都是相等的,都只要经过2拍就能得到结果;Berlekamp算法对于接收码字没有错误或者只有一个错误时,也只需要2拍就能得到结果,但是对于两个错误,该算法则需要(t+e+2=6)拍;而Euclidean算法对于接收码字有一个或两个错误的情况则分别需要(2t+4=8)拍和(4t+7=15)拍来得到结果。
对三种算法的硬件描述进行FPGA综合,结果如下(所选器件为Xilinx Virtex2 : XC2V40 : CS144 : -6):
1)三种算法在该器件上可以达到的最高频率如下表所示:
算法
Requested Frequency
Estimated Frequency
彼得森(Peterson)算法
250.0 MHz
259.5 MHz
伯利坎普(Berlekamp)算
文档评论(0)