LDPC码简介

LDPC码(低密度检验码)是1962年Gallager提出的一种通信编码方式,也是当前最接近香农极限的编码,在信息传输速率高速增长的今天,LDPC码有着广阔的应用前景。目前5G通信领域中,LDPC和Polar码平分秋色,是当前研究的热点,有取代Turbo编码的可能性。
LDPC码在译码算法上有着显著的优势,LDPC基于稀疏校验矩阵,该矩阵中多数元素为0,仅有少数元素为1,这使得在译码过程中可以减少大量的计算量,提高译码效率;同时,稀疏矩阵使连续突发的错误对译码影响差距不大;在FPGA上,该算法有很好的并行性,硬件实现复杂度低。目前,LDPC的硬解码算法有log-BP算法和min-sum算法

LDPC译码流程

LDPC译码一般包括五部分

  • 初始化
  • 校验节点更新
  • 变量节点更新
  • 判决
  • 结束

Created with Raphaël 2.2.0 接收信道数据 初始化 校验节点更新 判决,校验节点信息 满足校验方程? 结束(译码成功) 最大迭代次数? 结束(译码失败) 比特节点更新 yes no yes no


首先,译码器接收信道数据,并进行初始化,更新校验节点,随后进行判决,校验节点信息,如果满足校验方程,则完成译码,如果不满足,而且未达到最大迭代次数时,更新比特节点,进行纠错,同时开始下一步迭代。当达到做大迭代次数后仍为满足校验方程,则译码失败。

BP算法

BP算法又称为和积算法,常被用于软判决,但也可以用硬判决来实现。BP算法中消息的传递形式为对数似然比(LLR),迭代译码过程就是校验及诶单与信息节点之间的数据传递与更新。
log-BP算法的译码过程:
输入数据:初始概率rknn 硬解码 python_rknn 硬解码 pythonrknn 硬解码 python_点更新_02
输出数据:硬判决结果rknn 硬解码 python_迭代_03
初始化:对接收到的rknn 硬解码 python_迭代_04个信息,计算初始信道信息:rknn 硬解码 python_ldpc_05其中,rknn 硬解码 python_迭代_06为收到的混有噪声的信息,rknn 硬解码 python_rknn 硬解码 python_07为噪声平均功率。
迭代过程:

  1. 校验节点计算
    设有rknn 硬解码 python_ldpc_08式中,rknn 硬解码 python_初始化_09 则:rknn 硬解码 python_初始化_10
    式中,rknn 硬解码 python_迭代_11
  2. 信息节点计算
    rknn 硬解码 python_ldpc_12对每个变量节点i在完成信息节点计算后,对rknn 硬解码 python_rknn 硬解码 python_13进行更新,它表示从信息节点rknn 硬解码 python_初始化_14传递到校验节点rknn 硬解码 python_rknn 硬解码 python_15的伪后验似然概率rknn 硬解码 python_迭代_16
  3. 判决
    rknn 硬解码 python_初始化_17进行判决,如果rknn 硬解码 python_初始化_18,则rknn 硬解码 python_初始化_19否则为0;如果rknn 硬解码 python_rknn 硬解码 python_20成立,则译码结束,否则跳到第一步直至满足校验等式或超过最大迭代次数为止。

log-BP算法充分利用了信息节点和校验节点的性质以及接受序列的所有信息,从而可以得到比进行香农极限的译码性能;该算法在二分图没有环的条件下可等效为最大似然译码算法。在迭代过程中,如果校验等式成立,译码结束,而不是进行固定次数的迭代,所以收敛很快,同时,并行的迭代算法有很好的硬件友好性,使复杂度和延时都很低。但在实际实现时,会不断用到函数rknn 硬解码 python_rknn 硬解码 python_21,只能通过查找表来实现函数求值,最小和算法可以避免大量查表。

最小和算法

最小和算法(Min-sum)在性能上略有损失,但复杂度上有大幅度的下降。最小和算法中避免使用了rknn 硬解码 python_rknn 硬解码 python_21函数,该函数在x>0时随着x的增大而减小,则在迭代过程中步骤1中公式求和的部分受最小的rknn 硬解码 python_初始化_23影响大,于是有:rknn 硬解码 python_ldpc_24

  1. 校验节点计算
    rknn 硬解码 python_ldpc_25
    最小和算法不需要查表,虽然降低了部分精度,但运算简洁,大大减少了运算复杂度。