低密度校验码(LDPC)
2.3.4 准循环 LDPC 码的多码长设计
|2.4 QC-LDPC码的译码结构|
文献[31] 给出了LDPC译码器中的总体架构, 如图2-26至图2-28所示。核心处理单元是校验节点单元(CNU) 和变量节点单元(VNU) 。其中, CNU主要进行校验节点的更新, 主要的译码算法, 比如前面介绍过的Min-Sum算法都是通过CNU的逻辑电路实现。VNU主要进行变量节点的更新, VNU可以通过更新存储在Memory中的软信息来实现其功能, 所以在一些译码器的架构图中, VNU也并不以具体的模块形式出现。在译码的过程中, 软信息(Soft Information) 在CNU和VNU之间以并行度为P的水平传播。
LDPC 译 码 的 调 度 方 式 大 体 有 两 种: 泛 滥 式(Flooding) 和 分 层 式 (Layered)。泛滥式的特点是在每一次译码迭代,先计算从变量节点到校验节 点的所有软信息,然后计算从校验节点到变量节点的所有软信息。泛滥式的调 度比较适合下面介绍的全并行结构,通常用于计算机模拟仿真。 分层式的特点是在计算每层的软信息时,会更新此次迭代中的相关的节点 信息,用于下一层的软信息计算。分层式的调度适合下面介绍的行并行和块并 行结构,可以降低所需的迭代次数。相比泛滥式一般能节省一半的迭代次数。
2.4.1 全并行译码(Full-parallel)
LDPC 译码器中的每个基础执行单元负责完成 LDPC 码中的校验方程基本 运行的各个过程,包括数据读取、变量更新、校验更新、数据写入。LDPC 译 码中的 BP 算法本质上是并行的。这也是 LDPC 在高码率、大码块长度时相对 Turbo 码的优势。它能够利用并行运算的特点,提高链路的数据吞吐。BP 算 法十分适合大带宽、高信噪比的传输环境。因此,如果译码器的硬件复杂度不 是瓶颈,即基础执行单元的数量没有严格的限制,那么则可采用全并行译码器 结构。图 2-29 是全并行 LDPC 译码器的 Tannar 图中信息更新流动示意图, 该图的上面部分说明所有变量节点同时更新并提供给所有校验节点,该图的下 面部分说明所有校验节点同时更新并提供给所有变量节点。图 2-26 画出了全 并行译码结构的硬件结构。可以看出,其所需的硬件资源非常多。
全并行译码,意味着 LDPC 码中的所有奇偶校验方程(基础执行单元)同时运行,如基础校验矩阵的母码为 1/3 码率,基础矩阵是 mb = 16 行,nb = 24 列, 提升值 z = 500,则一共有 16×500 = 8000 个校验方程,即在全并行译码中有 8000 个基础执行单元同时运行,运行完算 1 次迭代。设最大迭代次数为 ITER, 则译码器总共需要时钟数目为 Clk = a×ITER。其中,a 为一次迭代所需要的时钟 数目,那么吞吐量计算可以表示为式(2-52)。
其中,f 是工作频率,K 是编码块大小,K = 4000。设 f = 200 MHz,最 大迭代次数为 20 次,基础执行单元需要时钟数为 8,则吞吐量等于 5 Gbit/s。 但是,在全并行译码情况下,需要 8000 个基础执行单元同时运行,那么需要 的硬件资源是非常高的。因此全并行的 LDPC 译码结构在工程实际中很少应用。
以上所述的全并行译码结构都是基于必须为所有校验节点提供硬件资源, 这样不仅仅带来硬件资源的大量浪费,而且特别是在支持任意码长和码率的 LDPC 译码时该情况更为严重。其实可以采用部分并行(类似下面所介绍的分 层译码结构,将所有奇偶校验方程分为多个分组分别进行更新)执行方式实现, 其中各个校验节点更新可以采用相同的校验节点单元以及流水线(Pipeline)方 式实现,可以大大节省资源,并提高吞吐量,由于其还是全并行译码思想,所 以迭代次数并不能降低。
2.4.2 行并行译码(Row-parallel)
行并行译码经常与分层式的译码调度结合,它和全并行译码的区别在于在 迭代中,将校验节点分成若干组,在每轮迭代中首先更新校验矩阵中的一组校 验节点信息,接着更新所有和该组校验节点相邻的变量节点,然后再更新下一 组校验节点信息和与这组校验节点相邻的变量节点信息,直至最后一组。如图 2-30 和图 2-31 所示,在译码过程中,前面已经更新的变量节点信息能应用到 本轮迭代后面校验节点信息的更新过程中,使迭代收敛速度加快,一般情况下, 行并行译码和比全并行译码收敛更快,可以节约迭代次数以提高吞吐量,在较 好的情况下可以节约一半左右的迭代次数。
行并行译码器的结构如图 2-32 所示,其中包括存储器(Memory)、路 由网络(Route Network)、移位网络(Shifting Network)、校验节点单元 (CNU)、控制器(Controller)等。校验节点单元的输入管脚数等于基础校验 矩阵最大的行重,存储分片(Memory Slice)的数目近似等于基础矩阵的核矩 阵的列数。对于 5G-NR eMBB 的 LDPC 矩阵,其存储分片的数目等于基础矩 阵—Kernel 矩阵的列数加一。
以 Scale Min-Sum 译码算法为例,校验节点单元包含比较(Comparison)、 选择(Selection)、加(Addition)、缩放(Scaling)等基本单元,适合行并行 译码的校验节点的内部结构如图 2-33 所示。其中,校验节点单元的输入管脚 数目至少要等于基础校验矩阵最大的行重。从图中可以看出,其复杂度与校验 节点单元的输入管脚数目关系很大。校验节点单元的输入管脚数越多,复杂度 就越高。
如图 2-34 所示,路由网络的功能是将存储分片中经过循环移位后的数据 输入到校验节点单元的管脚,校验节点单元通过读取不同组的管脚上的数据来 实现分层译码的功能。这种连接的目的是实现基础矩阵中变量节点和校验节点之间的连接。采用路由网络的优点是可以减少校验节点单元的输入管脚的数量, 但是当基础矩阵比较大时,路由网络的复杂度也会急剧增加,尤其单个译码器 要支持多个基础矩阵,其路由网络十分复杂。
图 2-34 中的路由网络支持两个基础矩阵 Kb 分别为 32 和 10。
如果基础矩阵比较小,则路由网络的复杂度可以大大降低,甚至可以将每 个存储分片和校验节点单元的管脚数进行一一对应的连接,如图 2-35 所示。 这里的基础校验矩阵的 Kb 为 16。
移位网络在前面已经提及,常用 Banyan 网络,主要作用是针对不同的提 升值,支持并行处理,复杂度也与基础矩阵的大小有关,当基础矩阵的系统列 数目越大,需要的移位网络的数量就越多。
存储器包括对数似然比(LLR)的存储和校验节点的存储,存储器的容量等 于最大的编码后的长度。其复杂度还与存储分片的数量有关。当信息块长度越大, 码率越小时,所需的存储器容量也越大。在相同的信息长度下,存储分片的数量 越多,复杂度越高。
2.4.3 块并行译码(Block-parallel)
基础矩阵每一行或者层内还可以分为多个循环(块)的执行,如图 2-36 所示,包含存储器(Memory)、移位网络(Shift Network),校验节点单元 (CNU)、控制器(Controller)以及之间的连线。块并行译码的并行度小于行 并行。其吞吐量逊于行并行。由于基础矩阵中的每 个基础执行单元的存储是不冲突的,所以每个基础 执行单元可以采用并行方式进行。
相比行并行,块并行中的移位网络的数目要少 得多,一般只要两个移位网络就可以了,一个负责 从 LLR 存储器中读取,另一个负责向 LLR 存储器 写入。因此,移位网络的复杂度与存储器的数目和 基础矩阵的行重基本无关。但是需要指出的是,如 果需要让块并行译码与行并行译码的吞吐量相近, 则块并行的最大并行度会成倍增加,这会增加移位 网络的总体复杂度。
为了提高块并行的处理速度,也可以采用多个块同时处理,这时增加路由 网络和更多的移位网络,只不过当同时处理的块的数量比较少时,路由网络和 移位网络相比于行并行时可以简单一些。两个块同时处理的路由网络和移位网络如图 2-37 所示。
块并行的校验节点单元的内部结构如图 2-38 所示,包括 3 个 2 选 1 的运算 线路和 2 个比较的运算线路。相比行并行,块并行的校验节点存储器的复杂度较 低,对存储器分片的读写过程更类似串行处理。此时校验节点存储器的复杂度与 存储器条的个数或者基础矩阵的行重没有关系,只与 CNU 最大支持的并行度有关。
当两个块同时处理时,校验节点单元变为如图 2-39 所示的形式。
与行并行的情形相同,块并行的存储器的容量取决于最大的编码块的长度。