发明名称 低密度奇偶校验码迭代排序统计译码方法
摘要 低密度奇偶校验码迭代排序统计译码方法适用于低密度奇偶校验(LDPC)码的软判决译码。在低密度奇偶校验码的迭代译码过程中,根据所有变量节点历次迭代输出的似然比累积值的幅度大小,采用排序统计译码方法辅助迭代译码,即各个变量节点将历次迭代的节点似然比输出累加,累积似然比绝对值定义为当前迭代的节点可靠度,并根据可靠度大小对节点和校验矩阵的列做升序排序,对列排序后的矩阵做高斯消去;结合高斯消去得到的系统生成矩阵,将前面两次排序后的可靠节点信息序列进行编码,得到一组候选码字;如果迭代译码没有得到最终的输出,就从前面得到各组候选码字中选取和接收序列欧氏距最小的作为译码输出。较大的增强了LDPC码的纠错性能。
申请公布号 CN100539440C 申请公布日期 2009.09.09
申请号 CN200610085331.5 申请日期 2006.06.09
申请人 东南大学 发明人 赵春明;姜明;许恩扬;高圣
分类号 H03M13/11(2006.01)I;H03M13/19(2006.01)I 主分类号 H03M13/11(2006.01)I
代理机构 南京经纬专利商标代理有限公司 代理人 叶连生
主权项 1.一种低密度奇偶校验码迭代排序统计译码方法,其特征在于:在低密度奇偶校验码的迭代译码过程中,根据所有变量节点历次迭代输出的似然比累积值的幅度大小,采用排序统计译码方法辅助迭代译码,即各个变量节点将历次迭代的节点似然比输出累加,累积似然比绝对值定义为当前迭代的节点可靠度,并根据可靠度大小对节点和校验矩阵的列做升序排序,对列排序后的矩阵做高斯消去;由于消去过程中矩阵的列之间会出现线性相关,必须将这些线性相关的列以及对应的节点再做一次升序排序调整;结合高斯消去得到的系统生成矩阵,将前面两次排序后的可靠节点信息序列进行编码,得到一组候选码字;如果迭代译码没有得到最终的输出,就从前面得到各组候选码字中选取和接收序列欧氏距最小的作为译码输出;低密度奇偶校验码的迭代译码表述为按照如下顺序执行的步骤:定义低密度奇偶校验码的生成矩阵G和校验矩阵H<sub>M×N</sub>=[h<sub>m,n</sub>],对应的二分图变量节点和校验节点集合为V={v<sub>n</sub>,n∈[1,N]},S={s<sub>m</sub>,m∈[1,M]};定义变量节点v<sub>n</sub>参与的校验节点集合A(n)={j,h<sub>j,n</sub>=1},包含于校验节点s<sub>m</sub>的变量节点集合B(m)={i,h<sub>m,i</sub>=1};定义校验节点集合A(n)中去除校验节点s<sub>m</sub>的节点集合A(n)/m,定义变量节点集合B(m)中去除变量节点v<sub>n</sub>的节点集合B(m)/n,编码序列C={c<sub>n</sub>,n∈[1,N]};步骤(1)初始化:BPSK调制信号x<sub>n</sub>=1-2c<sub>n</sub>,n∈[1,N]经过零均值方差σ<sup>2</sup>的高斯白噪声信道,得到接收信号序列Y={y<sub>n</sub>|y<sub>n</sub>=x<sub>n</sub>+w<sub>n</sub>,n∈[1,N]},其中w<sub>n</sub>为零均值方差σ<sup>2</sup>的高斯白噪声信号,初始的变量节点v<sub>n</sub>,n∈[1,N]向校验节点s<sub>m</sub>,∈A(n)输出信息<maths num="0001"><![CDATA[<math><mrow><msubsup><mi>L</mi><mi>nm</mi><mn>0</mn></msubsup><mo>=</mo><mn>2</mn><msub><mi>y</mi><mi>n</mi></msub><mo>/</mo><msup><mi>&sigma;</mi><mn>2</mn></msup><mo>,</mo></mrow></math>]]></maths>并根据Y中信号的符号硬判得到序列C<sup>0</sup>,同时初始各个变量节点的累积似然比数据<maths num="0002"><![CDATA[<math><mrow><msubsup><mi>L</mi><mi>n</mi><mi>sum</mi></msubsup><mo>=</mo><mn>0</mn><mo>,</mo></mrow></math>]]></maths>以及迭代次数k=1,开始迭代译码;步骤(2)校验节点和变量节点的信息输出更新:各校验节点s<sub>m</sub>将第k-1次迭代的变量节点输出信息<img file="C200610085331C00031.GIF" wi="92" he="55" />按照下式计算第k次迭代节点s<sub>m</sub>向变量节点v<sub>n</sub>输出的信息,<maths num="0003"><![CDATA[<math><mrow><msubsup><mi>L</mi><mi>mn</mi><mi>k</mi></msubsup><mo>=</mo><mn>2</mn><mi>a</mi><mi>tanh</mi><munder><mi>&Pi;</mi><mrow><mi>n</mi><mo>&prime;</mo><mo>&Element;</mo><mi>B</mi><mrow><mo>(</mo><mi>m</mi><mo>)</mo></mrow><mo>/</mo><mi>n</mi></mrow></munder><mi>tanh</mi><mrow><mo>(</mo><msubsup><mi>L</mi><mrow><mi>n</mi><mo>&prime;</mo><mi>m</mi></mrow><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow></msubsup><mo>/</mo><mn>2</mn><mo>)</mo></mrow><mo>;</mo></mrow></math>]]></maths>各变量节点v<sub>n</sub>将参与的校验式输出信息<img file="C200610085331C00033.GIF" wi="66" he="54" />相加,作为变量节点v<sub>n</sub>到校验节点s<sub>m</sub>的输出,<maths num="0004"><![CDATA[<math><mrow><msubsup><mi>L</mi><mi>nm</mi><mi>k</mi></msubsup><mo>=</mo><munder><mi>&Sigma;</mi><mrow><mi>m</mi><mo>&prime;</mo><mo>&Element;</mo><mi>A</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>/</mo><mi>m</mi></mrow></munder><msubsup><mi>L</mi><mrow><mi>m</mi><mo>&prime;</mo><mi>n</mi></mrow><mi>k</mi></msubsup><mo>;</mo></mrow></math>]]></maths>步骤(3)第k次迭代的输出:各个变量节点v<sub>n</sub>将所有参与的校验节点s<sub>m</sub>,∈A(n)的输出<img file="C200610085331C00035.GIF" wi="59" he="55" />相加,作为当前迭代的变量节点总输出<img file="C200610085331C00036.GIF" wi="62" he="56" />同时按照下式累加各个节点到目前为止的累积似然比输出,其中参数α<sup>k</sup>,0≤α<sup>k</sup>≤1为加权系数,<maths num="0005"><![CDATA[<math><mrow><msubsup><mi>L</mi><mi>m</mi><mi>sum</mi></msubsup><mo>=</mo><msup><mi>&alpha;</mi><mi>k</mi></msup><mo>&CenterDot;</mo><msubsup><mi>L</mi><mi>n</mi><mi>sum</mi></msubsup><mo>+</mo><msubsup><mi>L</mi><mi>n</mi><mi>k</mi></msubsup><mo>;</mo></mrow></math>]]></maths>随着参数α<sup>k</sup>的不同选取方案,有如下几种不同的实现形式;首先α<sup>k</sup>如果不随迭代次数k变化而变化,则似然比累积的过程类似于对各个迭代输出似然比做一个一阶的IIR滤波处理;其次若参数α<sup>k</sup>始终为1或0,累积过程等效于将各次输出完全的相加或只选取当前的似然比输出为可靠度排序依据;最后若α<sup>k</sup>只在某些固定间隔的迭代次数是为零,其余时候满足α<sup>k</sup>∈(0,1],则该累积的过程等效于在这些迭代间隔之间对输出的似然比做固定阶数的FIR滤波处理;步骤(4)根据当前迭代各个变量节点的输出信息<img file="C200610085331C00038.GIF" wi="61" he="56" />按照下式作符号硬判得到输出序列<img file="C200610085331C00039.GIF" wi="84" he="55" /><maths num="0006"><![CDATA[<math><mrow><mrow><mfenced open='{' close=''><mtable><mtr><mtd><msubsup><mi>c</mi><mrow><mi>IT</mi><mo>,</mo><mi>n</mi></mrow><mi>k</mi></msubsup><mo>=</mo><mn>0</mn><mo>,</mo></mtd><mtd><mi>if</mi></mtd><mtd><msubsup><mi>L</mi><mi>n</mi><mi>k</mi></msubsup><mo>></mo><mn>0</mn></mtd></mtr><mtr><mtd><msubsup><mi>c</mi><mrow><mi>IT</mi><mo>,</mo><mi>n</mi></mrow><mi>k</mi></msubsup><mo>=</mo><mn>1</mn><mo>,</mo></mtd><mtd><mi>if</mi></mtd><mtd><msubsup><mi>L</mi><mi>n</mi><mi>k</mi></msubsup><mo>&le;</mo><mn>0</mn></mtd></mtr></mtable></mfenced></mrow><mo>;</mo></mrow></math>]]></maths>如果该序列满足所有校验方程,则迭代译码结果将作为最终的译码输出<img file="C200610085331C00041.GIF" wi="167" he="57" />同时终止该帧的译码,否则如果当前迭代次数k未达到最大迭代次数,且满足mod(k,I)=0,其中参数I为排序统计译码的迭代间隔,则启动排序统计译码处理,同时继续迭代译码,k++,并跳转至步骤(2);步骤(5)低密度奇偶校验码的排序统计译码方法是和迭代译码方法相结合,利用迭代译码中各次迭代累积的似然比输出作为各个比特的可靠度信息,作为排序统计译码的排序依据,排序统计译码方法表述为按照如下顺序执行的步骤:按照各个节点上的累积似然比绝对值<img file="C200610085331C00042.GIF" wi="91" he="74" />从大到小的顺序,对节点和对应的校验矩阵列作出一个排序π<sub>k1</sub>,得到新的节点序列π<sub>k1</sub>(V)和校验矩阵π<sub>k1</sub>(H);对新的校验矩阵作高斯消去,由于校验矩阵列之间的相关特性,需要对列作出第二次重排π<sub>k2</sub>,最后得到新的生成矩阵G<sub>k</sub>以及与之相对应的校验矩阵π<sub>k2</sub>(π<sub>k1</sub>(H))和节点序列π<sub>k2</sub>(π<sub>k1</sub>(V));将节点序列π<sub>k2</sub>(π<sub>k1</sub>(V))中前N-M个节点根据<img file="C200610085331C00043.GIF" wi="68" he="48" />的符号作出硬判得到信息序列,定义为零阶排序统计译码order-0,另外将前N-M个信息比特符号遍历翻转i位符号的排序统计译码处理过程定义为order-i;对部份可靠度较低的节点进行高阶翻转处理,做混合阶排序统计译码处理H_order(e<sub>1</sub>,e<sub>2</sub>...e<sub>r</sub>),其中e<sub>i</sub>为做order-i处理的节点数目,不同处理方案得到的信息比特通过对应的生成矩阵G<sub>k</sub>编码得到码字<img file="C200610085331C00044.GIF" wi="109" he="60" />再做两次重排得到码字<maths num="0007"><![CDATA[<math><mrow><msubsup><mi>C</mi><mi>OSD</mi><mi>k</mi></msubsup><mo>=</mo><msubsup><mi>&pi;</mi><mn>1</mn><mrow><mo>-</mo><mn>1</mn></mrow></msubsup><mrow><mo>(</mo><msubsup><mi>&pi;</mi><mn>2</mn><mrow><mo>-</mo><mn>1</mn></mrow></msubsup><mrow><mo>(</mo><msubsup><mover><mi>C</mi><mo>~</mo></mover><mi>OSD</mi><mi>k</mi></msubsup><mo>)</mo></mrow><mo>)</mo></mrow><mo>;</mo></mrow></math>]]></maths>利用初始的接收序列Y和排序统计译码得到的码字<img file="C200610085331C00046.GIF" wi="84" he="56" />按照下式比较欧氏距,保留欧氏距最小的码字作为排序统计译码的输出<maths num="0008"><![CDATA[<math><mrow><msub><mi>C</mi><mi>OSD</mi></msub><mo>=</mo><munder><mrow><mi>arg</mi><mi>max</mi></mrow><msubsup><mi>C</mi><mi>OSD</mi><mi>k</mi></msubsup></munder><munder><mi>&Sigma;</mi><mrow><mi>n</mi><mo>,</mo><msubsup><mi>c</mi><mrow><mi>OSD</mi><mo>,</mo><mi>n</mi></mrow><mi>k</mi></msubsup><mo>&NotEqual;</mo><msubsup><mi>c</mi><mi>n</mi><mn>0</mn></msubsup></mrow></munder><mrow><mo>|</mo><msub><mi>y</mi><mi>n</mi></msub><mo>|</mo></mrow><mo>;</mo></mrow></math>]]></maths>如果迭代译码不能满足所有校验方程且迭代次数k等于最大迭代次数,则迭代译码失败,终止译码,迭代译码不能得到正确的输出,排序统计译码的输出结果C<sub>OSD</sub>将作为系统的最终输出<img file="C200610085331C00048.GIF" wi="199" he="59" />
地址 210096江苏省南京市四牌楼2号