基于PLC的RS编解码器设计与实现

2019-05-16 01:39张志宇邓建晖
智能计算机与应用 2019年2期
关键词:解码器码字解码

曾 鹏,张志宇,邓建晖

(1深圳大学,广东深圳518000;2深圳市力合微电子股份有限公司,广东深圳518000)

0 引 言

电力线通信(Power Line Communication,PLC)技术是以电力线为传输媒介,通过载波方式将数字或模拟信号进行数据的传输。为保证数据传输的稳定可靠,欧洲的PRIME联盟在窄带G3-PLC协议和宽带 PLC 协议中增加了 RS(255,239)全码[1]。 本文研究了RS(255,239)的编解码原理,用Verilog语言研发设计,利用Modelsim10.1进行仿真并给出功能仿真结果,结果表明该编解码器符合预期功能。

1 RS编码器

1.1 RS 编码算法

RS码是具有很强纠错能力的多进制BCH码,能够纠正多个随机错误[2]。RS码用生成多项式g(x)的根描述,参与编码的全部元素都在伽罗华域GF(28) 上。

RS(255,239)的本原多项式P(x)=x8+x4+x3+x2+1,生成多项式:g(x)=x16+118x15+52x14+103x13+31x12+104x11+126x10+187x9+232x8+17x7+56x6+183x5+49x4+100x3+81x2+44x+79。

RS(255,239)编码算法分 3 步,具体如下:

(1) 将消息多项式u(X) 乘X16得m(x)=m238x254+m237x253+…+m0x16。

(2)用m(x)除以g(x)得到余式r(x)=r15x15+r14x14+…+r1x1+r0。

(3)生成码字C(x)=m(x)+r(x)=c254x254+c253x253+…+c1x1+c0。

1.2 RS编码器仿真结果

图1中,clk表示时钟,data拉高表示信息有效,enable拉高表示编码有效,x表示参与编码的信息,y表示编码后的信息,参与编码的数据为 1,2,..238,239,编码后信息位保持不变,校验位为 37,133,..79,148。

图1 RS(255,239)编码器仿真结果Fig.1 Simulation result of RS(255,239) encoder

2 RS解码器

2.1 RS 解码算法

RS解码器系统结构如图2所示,可以分为5步,具体如下:

(1)由接收到的数据计算伴随式S(x)。

(2)由伴随式S(x)计算错误位置多项式σ(x)和错误求值多项式ω(x)。

(3)由错误位置多项式找出错误位置xi。

(4)由错误位置多项式σ(x)和错误求值多项式ω(x)计算各个错误位置xi的错误值Yi。

(5)得到错误位置xi和该位置的错误值Yi后,与接收的数据进行异或得到正确的数据信息,将校验码去除后发送到下级模块。

图2 RS解码器系统结构图Fig.2 System architecture of RS decoder

2.2 求解伴随式 S(x)

伴随式S(x) 的系数si计算公式为[3]:

由式(1)可知计算每个伴随式系数si只需要一个域乘法器、一个域加法器和一个寄存器,关键路径延时由一个域乘法器和一个域加法器组成。

2.3 Berlekamp Massey 算法求解 σ(s)和 ω(x)

求解错误位置多项式σ(x)和错误求值多项式ω(x)采用Berlekamp Massey算法,算法流程详见如下[4]。

(1)初始化:

(2)下面的步骤依次进行循环迭代,直到k=16。研究可得对应的数学公式表述如下:

2.4 钱搜索求解错误位置xi

设接收码字R(x)=rn-1xn-1+rn-2xn-2+…+r1x+r0,要判断rn-l是否有错,只要检验σ1αl+σ2(αl)2+…+σv(αl)v=-1(v≤8) 是否成立即可,结果为-1 说明rn-l有错,否则无错[5]。

2.5 Forney算法求解错误值Y

错误值Yi的计算公式为[6]:

其中,为错误位置多项式σ(x)的根,σodd()为错误位置多项式奇数项之和,因此该项可以在钱搜索求解错误位置的同时一并得出。

3 RS解码器仿真结果

3.1 求解伴随式仿真结果

图3是求解伴随式仿真结果,编码完成后,在接收的第 1、2、3、10、11、12、13、14 个信息处添加噪声noise,信息添加噪声信号后,解码器收到的码字为11、22、29、4、5、…、9、99、79、148,y0~y15存储s1~s16的值,最终在enable信号拉低的时候计算出了伴随式 105、19、4、..、100、98、129。

图3 求解伴随式仿真结果Fig.3 Simulation result of calculate syndrome

3.2 Berlekamp Massey算法仿真结果

Berlekamp Massey算法仿真结果如图4所示。将伴随式s1、s2、…、s15、s16输入 Berlekamp Massey 算法模块,开始迭代时count为0,每次phase0产生一个脉冲,进行一次数据更新,最终在count为15且phase0为1的时候计算出了错误位置多项式σ(x)和错误求值多项式ω(x),可将其分别写作如下数学形式:

此外,算法最后还给出了σ(x)的最高次幂exp_max,为检错做准备。

图4 Berlekamp Massey算法仿真结果Fig.4 Simulation result of Berlekamp Massey algorithm

3.3 钱搜索仿真结果

利用钱搜索对错误位置多项式σ(x)进行验根,结果见图5。chien_search拉高表示开始验根,拉低表示结束验根,当求解出σ(x)的根时,拉高val_err,可以观察到钱搜索成功地确定了错误值的位置为 1、2、3、10、11、12、13、14,在钱搜索的同时计算出了式(6)的分母σodd()并确定了错误个数cnt_val,将cnt_val的值和Berlekamp Massey的输出值exp_max做比较,若两者相等就说明错误数在纠错能力范围内,则解码器进行纠错;若两者不相等,则错误数超过纠错能力范围,不进行纠错并给出提示。

图5 钱搜索仿真结果Fig.5 Simulation result of Chien search

3.4 求解错误值和纠错仿真结果

当chien_search信号拉高,也就是开始钱搜索时,激活码字缓存器的读使能信号rdreq,将码字q从缓存器中读出,同时将错误值err与其做异或运算,得到解码后的输出rs_out,其仿真结果如图6所示。可以观察到,经过解码后,被噪声干扰的数据已经恢复,当解码结束后,即产生chien_end脉冲。

图6 求解错误值和纠错仿真结果Fig.6 Simulation result of error value solution and error correction

4 结束语

本文阐述了RS(255,239)编解码器的算法原理并用Verilog运行实现,利用Modelsim10.1进行编解码器的功能仿真,结果表明该编解码器设计正确,最大纠错能力为8。

猜你喜欢
解码器码字解码
较大码重最优冲突回避码的具体构造
科学解码器(一)
科学解码器(二)
科学解码器(三)
岁末感怀
文化解码
解码eUCP2.0
文化 解码
文明 解码
放 下