1、RA码概述
1998年,D.Divsalar等人提的重复累积码(Repeat-Accumulate Codes,RA码)是一种简单的类Turbo码(TLC,Turbo-Like Codes)。它可以理解为一种由重复码和码率为1的卷积码组成的串行级联码;也可以理解为一类特殊的LDPC码。当看作一个级联码时,它由一个码率1/q的重复码和一个称作累加器的码率为1的1/(1+D)卷积码以及它们之间的交织器组成;当看作LDPC码时,累加器对应为其校验矩阵中一部分重量为2的列,交织器则决定着校验矩阵中其它列的结构,这些列的重量则由重复码决定。因此,RA码可以像Turbo码一样通过级联两个组成码进行编码,同时如LDPC码一样利用和积译码算法在码的Tanner图上进行译码。因此它同时具有Turbo码的低编码复杂度和LDPC码译码的并行性和译码能力,这是RA码相对于Turbo码或LDPC码的优势。
IRA码(不规则重复累积码)与不规则LDPC码的结构相对应,指变量节点的度数或检验节点的度数不相等的RA码,一般情况下指信息节点的度数不相等,而校验节点的度数相等。同规则码相比,码长增加,不规则码的性能提高更快,更接近香农限。 2、IRA码的基本原理
IRA码是由重复器、交织器、组合器和累加器组成的(图1)。假设编码输入为符号长度为N的m序列。首先第i位信息符号序列mi分别在重复qi次后通过交织器?进行交织。然后按顺序进入组合器,每a个符号在二元域上合并为一个符号,最后进行累加器输出序列p。由于采用系统码,故最后码字为y?[k,p]。
kN位输入序列m重复器[q1,q2,?,qN]交织器组合器a累加器(1/(1+D))py=[k,p]图1 IRA码的编码器
作为一类特殊的LDPC码,IRA码也可以用二分图和校验矩阵来表示,其对应的二分图如图2所示,其参数为(f1,f2,...fi,...,fJ;a),其中fi?0,?ifi?1,a为正整数,一般情况f1?0,fi表示度数为i的信息节点的比例,j为信息节点的最大度数,a为校验节点连接信息节点的边数。图2中上方的N个变量节点为信息节点,中间为r个校验节点,下方为r个奇偶节点。每个信息节点与若干个校验
节点相连,信息节点连接i个校验节点的比例为fi。每个校验节点连接a个信息节点,r?a条边通过交织器将信息节点和检验节点连接起来,每个校验节点连接两个奇偶节点(第一个校验节点除外),校验节点通过Z字型的简单连接方式连接到奇偶节点上。
f2.........交织器fj.........a条边U信息节点............校验节点C奇偶节点Y
2 IRA码的二分图
IRA码对应的校验矩阵包含两部分H?[H1,H2],为一个r?(N?r)维矩阵,如式1所示。
1000000????1100000???0110000???0011000???随0000000???0000000机? H????构?????0000000?造??0000000????0000100???0000110???0000011???3、IRA码的编译码复杂度分析
设码长N为1024,度分布f = ( f2= 0.054485, f3= 0.104315, f6= 0.126755, f10=
0.229816, f11= 0.016484, f27= 0.450302, f28= 0.017842), a =4,码率为1/3的IRA码的编译码复杂度。由?i(表示与度数为i的信息节点相连的信息节点和校验节点
之间的边的比例)与fi之间的关系?i?i?fi 和重复后的总边数有ra条边,用di表示
?jj?fj度为i的信息节点的个数,且有di?ra??i,则上例中有度2节点d2=224个,度3节点d3=284个,度6节点d6=174个,度10节点d10=188个,度11节点d11=12个,度27节点d27=136个,度28节点d28=6个,经过重复器后码长为l=8196,经过组合累加后的码长为r=2049。
码长N,码率R,组合器a,校验位长度r?N(1?R),则经过重复器后码长l?r?a的RIRA码。
1、编码复杂度:l位序列输入组合器需要进行的加法数为
lr?a?(a?1)??(a?1)?r(a?1) aar位序列输入累加器需要进行的加法数为
r?1
则编码总需要进行的加法数
t1?r(a?1)?r?1?ra?1?a(1?R)N?1 R可见,在a与R都是固定值的情况下,编码复杂度与码长成正比。在上例中,需要进行8191次加法运算。
2、译码复杂度(一次迭代):
(1)校验节点:除了第一个校验节点的度数为a+1,其它校验节点的度数都为a+2,将第一个校验节点的度数忽略为a+2。在校验节点向某个固定的变量节点更新中,需要对其它
ex?1变量节点向校验节点的消息计算似然比(logx)和取绝对值运算,将似然比运算设为
e?1一固定值ts,取绝对值运算近似为加法运算。则对于一个校验节点到变量节点的更新中需要进行的似然比次数为
ts(c?v)(1?R)(a2?3a?2)?r?(a?2)?(a?1)?N
R可见,进行的似然对运算与码长N成正比。 进行的加法运算次数为
tadd(c?v)(1?R)(a2?3a?2)?r?(a?2)?(a?1)?N
R在上例中,需要进行的似然比次数和加法运算为ts(c?v)?tadd(c?v)?61470
(2)除了最后一个奇偶节点度数为1,其它奇偶节点度数都为2,忽略最后一
个奇偶节点,将所有奇偶节点度数设为2。奇偶节点仅向校验节点传输信息,只
有加法运算,则对于所有奇偶节点到校验节点所需进行的加法次数为
2(1?R)ty?c?2?r?N
R在上例中,ty?c?4098
(3)一个度数为di的信息节点在一次信息传递过程中需要进行i?1次加法及i
次减法,则对于所有的信息节点需要进行的加减法次数为
tu?c??di(i?1)??dii??di(2i?1)iii???i?ra(2i?1)ii?fN??i?ra(2i?1)rai??i?fi(2i?1)Ni
在上例中,tu?c?15368次加减法。 在译码算法中,总需要的加减法次数为
t?tadd(c?v)?ty?c?tu?c (1?R)(a2?3a?2)2(1?R)?N?N??i?fi(2i?1)NRRi可见,总需要的加减法次数与N成正比。上例中,一次迭代需要的加减法次数t?80936,需要进行的似然比次数为ts(c?v)?61470,若设迭代值为100,则100次迭
代需要的加减法次数t?8093600,需要进行的似然比次数为ts(c?v)?6147000

