Page 1

第1卷 第1期 Vol.1 No.1

信息工程期刊 Scientific Journal of Information Engineering(SJIE)

2011 年 12 月 Dec. 2011

LDPC 码与 RS 码的分析和 MATLAB 仿真 罗春玲 武汉理工大学 信息工程学院,湖北 武汉 430070

要:LDPC 码与 RS 码是目前研究比较多的纠错码,在二维条码的应用中,纠错码占有很重要的地位。为了能够准确

的识别二维条码,纠错码的性能有待提高。通过简单的介绍基于 BP 的 LDPC 译码算法和 RS 的译码算法,在不同的迭代次 数以及相同的码长和码率的情况下对 LDPC 码和 RS 码进行 MATLAB 仿真。仿真结果表明,迭代次数越大,LDPC 译码性 能越好,能够纠正的错误越多;基于相同的码长和码率的情况下,在码长小于 512 时,LDPC 码的译码性能明显的优于 RS 码。由此可知,LDPC 码比 RS 码能更好的识别二维条码,清楚的再现我们想要的信息。

关键字:二维条码;LDPC 码;RS 码;BP 算法

The Analysis of LDPC between RS Code and MATLAB Simulation Chunling Luo Wuhan University of Technology and Information Engineering, Wuhan Hubei, 430070

Abstract: LDPC code and RS code are error-correcting codes which are researched much more at present, and in the two-dimensional bar code’s applications the error correction code plays an important role. In order to accurately identify the two-dimensional bar code, error-correcting code’s performance should be further enhanced. There is a simple introduction of the LDPC decoder based on BP algorithm and decoding algorithm for RS, and it gives MATLAB simulations in different iterations while in the same code length and code rate for LDPC code and RS code. Simulation results show that the greater the number of iterations the better the LDPC decoding performance, and the more errors can be rectified; based on the same code length and rate of the cases and less than 512 yards long, LDPC decoding performance is significantly higher than the RS code. It can be seen that LDPC code can do better than the RS codes on identifying two-dimensional bar code, and the information which we want can be reproduced clearly.

Keywords : two-dimensional bar code; LDPC code; RS code; BP algorithm

引言 我们生活在信息高速发展的时代,人类社会无论是从日常的工作、学习活动还是政治、经济、军事、科技活 动都离不开信息的可靠传输,而纠错码技术是提高信息可靠性的一种重要技术。它的目的是为了降低平均差错率, 基本思想是在信息序列中加入一些冗余码元,即校验码元,组成一个相关的码元序列——码字,译码时通过利用 码元之间的相关性质检测和纠正错误。纠错码不仅可以应用在通信中还可以应用在条码上。现阶段二维条码广泛 的应用在火车票、飞机票、发票和商品等方面,由于二维条码记录的信息在经过外界环境的干扰(例如污损)下 会产生很多错误,为了能够完整的提取二维条码上的信息,这就需要利用纠错码来进行纠错,还原出原来的信息。 现阶段研究比较多的纠错码有 LDPC 码和 RS 码,LDPC 码的运算复杂度低,且与码长是成线性关系,对硬件的 要求不高,而 RS 码运算复杂度与码长成指数关系,且最高纠错能力只有 30%。文中主要基于 LDPC 码和 RS 码 的译码算法,通过 MATLAB 对 LDPC 码和 RS 码进行实验仿真,并对仿真结果进行分析,以期望得到较好的纠 错码,为二维条码的识别提供一个很好的技术支持。 www.sjie.org PP.42-48 © 2011 American V-King Scientific Publishing, LTD - 42 -


LDPC 码与 RS 码的分析和 MATLAB 仿真

1 LDPC 码的简介 1.1 LDPC 码的构造 1962 年,Gallager[1-2]提出了 LDPC 码,并证明它是一种性能很好的线性分组码,在长码的情况下仍然可以有 效的进行译码。只是由于当时的认识水平和技术水平有限,人们并没有重视它。直到 1993 年,Berror 等人发现 了 Turbo 码后,人们又开始注意和研究它。LDPC 码是一种线性分组码,但是它不是用生成矩阵来表示的而是用 校验矩阵 H 来表示的,H 的维数是 m*n,每一行对应一个校验方程,每一列对应码字的一位。校验矩阵和码字 满足的关系为 H  c  0 。 作为一种特殊的奇偶校验码,它的 H 矩阵具有非常稀疏的特点,只有很少一部分为 1,其余的都是 0,所以 称之为低密度奇偶校验码。正是由于这种特性才构造出具有低复杂度、高性能的 LDPC 码,而且当码长越长时它 T

的纠错码所不能比拟的特性。如果校验矩阵 H 是满秩的,则 m  n  k ,码率为

r

n  m

 1 m 。 n

n

有时矩阵 H 的行不是线性无关的,此时 H 的秩小于 m,即 m  n  k ,码率 r  1  m 。

n

1.2 LDPC 码的译码算法 LDPC 码译码的复杂度很低,运算量不会因为码长增加而急剧增加,对严格的理论分析具有可检验性。通常 的线性分组码的译码复杂度与码长是成指数增长的,但是 LDPC 由于其奇偶校验矩阵的稀疏性,译码复杂度与码 长成线性关系,这样就克服了在码字较长时的译码复杂度问题。LDPC 码采用了迭代译码算法,可以实现并行操 作,具有高速的译码能力。它的吞吐量大,可以有效的改善系统的传输效率。最常见的 LDPC 码译码算法是置信 传播译码算法(简称为 BP(Belief Propagation)算法) ,也称为和-积(SP,Sum-Product)算法或消息传递(MP, Message Passing)算法。 BPSK 调制后每一个码字 c  (c1 , c2 , , cn ) 映射为传输序列 x  ( x1 , x2 , , xn ) ,然后 x 通过信道,接收到 

的序列为 y  ( y1 , y2 , , yn ) 。根据 y 得到译码序列为 c ,这里简单的介绍一下 BP 算法。 引理 1: 二进 制序 列 1 2

1

m

 (1  2 p 2

k

a  (a1 , a2 , , am ) , 其 中 P(ak  1)  pk , 则 a 中 包 含 偶 数 个 1 的 概 率 是

) ;a 中包含奇数个 1 的概率是

k 1

由此可知 rji (0) 

1 2

1

 (1  2 P 2

`

i R j \ i `

i j

1 2

) , rji (1) 

1

m

 (1  2 p 2

k

)。

k 1

1 2

1

 (1  2P

2 i R \ i `

`

i j

) 。BP 译码步骤如下[6]:

j

1.初始化 计算信道传递给变量节点的初始概率 Pi (1) , Pi (0)  1  Pi (1), i  1, 2, , n 。然后对每一个变量节点 i 和与其 相邻的校验节点 j  C(i) ,设定变量节点传向校验节点的初始信息

qij(0) (0)  Pi (0)

(1.1)

qij( 0) (1)  Pi (1)

(1.2)

2.迭代处理 步骤 1:校验节点处理 www.sjie.org PP.42-48 © 2011 American V-King Scientific Publishing, LTD - 43 -


LDPC 码与 RS 码的分析和 MATLAB 仿真

对所有的校验节点 j 和与其相邻的变量节点 i  R( j ) ,第 1 次迭代时,计算变量节点传向校验节点的消息 1 1  rji( l ) (0)    (1  2qi( lj1) (1))  2 2 i R \ i    r ( l ) (1)  1  r (0)  1  1  (1  2q ( l 1) (1)) ji ji i j  2 2 i R \ i 

(1.3)

`

`

j

(1.4)

`

`

j

步骤 2:变量节点处理 对所有的校验节点 i 和与其相邻的变量节点 i  C( j ) ,计算校验节点传向变量节点的消息

qij( l ) (0)  K ij Pi (0)  rj(il ) (0)  j C \ j  (l ) (l )  qij (1)  K ij Pi (1)  rj i (1) j C \ j 

(1.5)

`

`

i

`

(1.6)

`

i

其中 K ij 是校正因子,使 qij (0)  qij (1)  1 。 (l )

(l )

步骤 3:译码判决。 对所有变量节点计算硬判决消息

qi( l ) (0)  K i Pi (0) rji( l ) (0) jC   (l ) (l )  qi (1)  K i Pi (1) rji (1) jC 

(1.7)

i

(1.8)

i

其中 Ki 是校正因子,使得 qi(l ) (0)  qi( l ) (1)  1 。若 qi(l ) (1)  qi(l ) (0) ,则 ci  1 ,否则 ci  0 。 3.停止

T

若 H c  0 或者达到最大迭代次数,则结束运算,否则从步骤 1 继续迭代。

2 RS 码的介绍 1960 年,Bose、Ray-Chaudhuri 和 Hocquenghem 发现了 BCH 码,随后里德(Reed)和所罗蒙(Solomon) 在应用 MS 多项式时构造出 RS [7]码。RS 码是一种既能纠正一般的随机差错,也能够纠正突发性错误的码。设接 收字多项式为 R( x) ,差错图样多项式为 E( x) ,纠错码的码多项式为 C( x) ,伴随式多项式为 S ( x) ,差错定位 

多项式为  ( x) 。译码器的主要任务就是如何从 R( x) 中得到正确的估计错误图样 E ( x )  E ( x) ,然后得到 C( x) , 由此得到信息 m( x) 。 一般的取 q  2 。所以,RS 码的码元符号取自有限域 GF (2 ) ,码字长度为 n  2 1 。一个能纠正 t 位 m

m

m

符号错误的 RS 码的生成多项式是:

g ( x)  ( x  a)( x  a 2 )( x  a 3 )  ( x  a 2t )

(2.1)

C ( x)  c0  c1 x  c2 x 2    cn 1 x n 1

(2.2)

设发送的码字为:

在传输中发生 t 个错误。错误位置在 i1

 i2    it ,相应错误值为 e1 , e2 , , et ,于是错误多项式为:

www.sjie.org PP.42-48 © 2011 American V-King Scientific Publishing, LTD - 44 -


LDPC 码与 RS 码的分析和 MATLAB 仿真

E ( x)  e1 xi1  e2 xi2    et x it

(2.3)

R( x)  C( x)  E( x)

(2.4)

接受多项式为:

RS 码的译码步骤如下: (1)计算伴随多项式 j

t

伴随式 S

 ( s1 , s2 , , s2t ) 为: S j  R(a )   ek (a ) ,其中 1  j  2t 。 ik

j

k 1

(2)计算差错多项式 构造以 a

 i1

, a i2 , , a it 为根的多项式  ( x) :  ( x)  (1  a i x)(1  a i x)  (1  a i x) 1

t

2

 1   1 x   2 x     t x 2

(2.5)

t

由于  ( x) 根的负指数表示错误位置,所以  ( x) 被称为错误位置多项式。 (3)求出差错位置 0

1

求差错位置通常使用搜索算法,依次将 a , a , 是方程  ( x)  0 的根,则可以判断 a

n i

, a n1 代入到  ( x) 方程中,由于 a n  1, a i  a ni ,所以若 a  i

是差错位置数。

(4)计算差错值 在得到错误位置后,设  k   (k  1, 2,

, t ) 为错误位置,相应的错误值为 ek (k  1, 2,

k

, t ) ,通过求解线

性方程组前 t 个方程: t

ki ek  sk  k 1

(i  1 t )

(2.6)

就可以求出错误值。

3 仿真结果与分析 由于 LDPC 码在长码的时候性能很好,所以在仿真过程中选择短码来进行比较,我们以码长 512 为界限。在 MATLAB 实验平台上,我们选择信噪比和比特误码率[8-10]这一对参数来进行对比分析,当比特误码率较小的时候 我们可以判断它的纠错性能较好。 首先我们在 BPSK 调制系统中对信噪比和比特误码率这一对参数进行仿真实验,也就是从理论上来分析它们 之间的关系。其中 BER 表示比特误码率, Eb / No 表示信噪比。 从图 1 我们可以看出随着信噪比的增加比特误码率在逐步的减小,减小的幅度比较的缓慢。它们之间的关系 成反比例。当信噪比为 4db 时,比特误码率正好是 10-2,当信噪比为 6 时,比特误码率还差 1/3 的间隔才到达 10-3, 由此可以说明下降的曲线是非常的缓慢。 其次在有纠错码和没有纠错码的情况下再做一组仿真实验,通过实验来观察纠错码对信噪比和比特误码率之 间曲线关系的影响。 www.sjie.org PP.42-48 © 2011 American V-King Scientific Publishing, LTD - 45 -


LDPC 码与 RS 码的分析和 MATLAB 仿真

从图 2 中可以得出在同样的信噪比前提下,有纠错码的比没有纠错码的比特误码率低。此时在有纠错码的情 况下,只需要信噪比为 3db 时,比特误码率就到达 10-2,而且信噪比为 6db 时基本上比特误码率就到达了 10-3。 这就说明了加入纠错码后可以提高信息的准确率,确保我们可以获得更完整的信息。

BPSK modulation system

-1

10

BER

theoretical BER-EbNo curve

-2

10

-3

10

0

1

2

3 Eb/No

4

5

6

图 1 理论上的信噪比和误码率之间的关系 Bit Error Rate

-1

10

BER

BER-Eb/No with coding BER-Eb/No without coding

-2

10

-3

10

0

1

2

3 Eb/No

4

5

6

图 2 有纠错码和无纠错码的信噪比和比特误码率之间的关系

最后再来对纠错码 LDPC 和 RS 来进行对比实验。 通过改变迭代次数以及在相同码长和码率的条件下对 LDPC 码的译码算法以及 RS 码的译码算法进行计算机仿真。当迭代次数分别为 1、10、50 时对 LDPC 码进行 MATLAB 仿真,把仿真结果显示在一幅图上,然后再相同码长和码率的条件下对 RS 码进行 MATLAB 仿真,这样就可以 通过图形对比分析。我们所选的信道是 AWGN 信道,考虑到 MATLAB 的容量问题,我们选择的是较小的奇偶 校验矩阵。仿真结果如图 3 所示。 www.sjie.org PP.42-48 © 2011 American V-King Scientific Publishing, LTD - 46 -


LDPC 码与 RS 码的分析和 MATLAB 仿真 Bit Error Rate

0

10

-1

10

-2

BER

10

-3

10

BER1,迭 代 次 数 =1 BER2,迭 代 次 数 =10 BER3,迭 代 次 数 =50 BER4 with RS1 BER5 with RS2

-4

10

-5

10

0

0.5

图3

1

1.5

2 Eb/No(db)

2.5

3

3.5

4

信噪比与比特误码率之间的仿真实验

从仿真结果可以看出,当迭代次数越大时,LDPC 码的译码性能越好,但是迭代次数不能无限的大,这样会 增加计算的复杂度。与此同时我们发现信噪比越大 LDPC 译码性能越好,在信噪比为 1.5dB 时出现了一个陡降过 程,这对于 RS 译码也是一样的。当基于 BP 译码算法的短 LDPC 码和 RS 码在相同码率和码长时,从图形分析 2

误码率为 10 时短的 LDPC 码和 RS 码有近 2.5dB 的增益, 而且短的 LDPC 码的译码增益随着码长的增加而提高, 不过译码性能提高的速度会随着码长的增加而减慢。在信噪比为 2dB 时,LDPC 码的译码性能急剧提高,而 RS 码译码性能则变化很缓慢。从图中对比分析,LDPC 译码的性能优于 RS 译码,RS 码在信噪比较低的时候性能改 变量很少,而 LDPC 码则是快速的降低比特误码率,这样就能纠正更多的错误,提出正确的信息。

4 结论 本文通过对 LDPC 的 BP 译码算法和 RS 的译码算法进行简单的阐述,利用 MATLAB 进行一系列的仿真实 验。实验结果证明,对信息加入纠错码后,信息的提取会更加完整。对于 LDPC 码,随着迭代次数的增加,LDPC 码的纠错能力提高,在相同码长和码率的情况下,LDPC 码明显的比 RS 码能纠正更多的错误。也就是说在码长 低于 512 的情况下,LDPC 码的性能优于 RS 码,同时 LDPC 码译码的时延很短,对硬件没什么大的要求,运算 复杂度低,性能优越。因此把 LDPC 码应用到二维条码上可以很准确的得到自己想要的信息,提高了二维条码的 识别效果,便于今后扩宽它的应用范围。 参考文献 [1] 袁东风等.LDPC 码理论与应用[M].北京:人民邮电出版社,2008. [2] 贺鹤云.LDPC 码基础与应用[M].北京:人民邮电出版社,2009. [3] 卞银兵.RS 码软判决译码的研究[D].南京:南京邮电大学,2009. [4] 韩壮等.短 LDPC 码和 RS 码基于 BP 算法的性能比较[J].重庆邮电大学学报,2009, 21(1):61-65. [5] 陈旭灿等.改进的 LDPC 译码算法研究[J].电子科技大学学报,2010, 39(2):219-222. [6] 吴湛击等.LDPC 码的高效译码算法研究[J].系统工程与电子技术, 2010, 32(3):603-608. [7] 陶涛.RS 编译码算法的研究与实现[D].上海:华东师范大学,2005.

www.sjie.org PP.42-48 © 2011 American V-King Scientific Publishing, LTD - 47 -


LDPC 码与 RS 码的分析和 MATLAB 仿真 [8] C.Kelley,and D.Sridhara.”Pseudocodewords of Tanner graphs,”_IEEE Trans.nform.Theory, 2007, 53(11):40l3-4038. [9] Chen Xin.Construction of LDPC codes over GF(q) with modified progressive edge growth. www.sciencedirect.com/science/journal /10058885. 2009, 16(5): 103-106. [10] G.Li and G.Feng, ”Improved parallel weighted bit-flipping decoding algorithm for LDPC codes,” IET Communications, 2009,3(1): 91-99.

【作者简介】 罗春玲(1987-),女,汉族,硕士研究生。研究方向:图像处理与智能识别。本科/硕士研究生就读于武汉理工 大学。Email:luochunling@whut.eud.cn 。 肖攸安(1973-),男,汉族,博士后/博士,教授。研究方向:信息安全、计算机网络应用与通信、先进制造、 智能控制与嵌入式系统。Email:youan@21cn.com。

www.sjie.org PP.42-48 © 2011 American V-King Scientific Publishing, LTD - 48 -

The Analysis of LDPC between RS Code and MATLAB Simulation  

LDPC code and RS code are error-correcting codes which are researched much more at present, and in the two-dimensional bar code’s applicatio...