5G LDPC码译码器实现
2021-04-25胡东伟
胡东伟
(中国电子科技集团公司第五十四研究所 石家庄 050080)
1 引言
2017年12月,第5代移动通信新无线(5G New Radio, 5G NR)标准[1]的发表,标志着第5代移动通信(5G)的正式诞生。相比于第4代移动通信标准--长期演进(Long Term Evolution, LTE)而言,5G采纳了很多的新技术。调制和编码是无线通信的两大支柱性技术。相比于LTE,5G的编码技术亦有着很多的看点。
5G的编码采用LDPC码和Polar码[2]。LDPC码具有较长的编码块长度,主要用于数据的传输;Polar码具有较短的编码块长度,主要用于信令的传输。Polar码作为一种全新的编码方式,受到了较大的关注。然而,5G的LDPC码具有更大的灵活性--它的最短信息比特块长度只有20 bit,最长可达8448 bit。如果将5G LDPC码应用在其他场合,则它不但可用于长码块的数据传输,亦可用于短码块的信令传输。
其次,5G LDPC码最低码率可低至1/5。这是目前进入实际使用的、最低码率的编码,具有非常接近香农极限的性能。这在深空通信、卫星通信中,具有重要意义。在深空通信中,性能的提高意味着更远的传输距离,或无需昂贵的低温射频前端[3,4]。
再次,5G LDPC码具有速率自适应的特点[5]。这是LDPC编码史上一次巨大的进步。传统上,由于LDPC码为分组编码,被视为难以实现速率自适应[6]。这是LDPC码相对于卷积码、Turbo码的一大劣势。5G LDPC码以其独特的编码方式,实现了速率自适应。这给了该码使用上的极大便利性和灵活性。
由于5G NR标准颁布的时间还不长,直接针对5G NR标准的LDPC译码器研究尚不多。文献[7]主要在译码的调度算法上进行了改进;文献[8]是一个采用归一化最小和(Normalized Minimum Sum,NMS)算法和分层调度的译码器完整ASIC实现方案;文献[9]给出了块并行架构和行并行架构的实现细节。与这些文献相比,本文所提架构具有以下特点:第一,基于SoC架构,采用基于处理器的调度方案,可实现更灵活的调度;第二,支持多种译码算法,特别地,本文硬件实现了log-bp译码算法;第三,在移位器的实现方法上,本文别具一格。
本文首先介绍5G LDPC码的编码器结构,然后比较该码在各种译码算法下的性能,并进一步分析各种译码算法的校验子通道实现结构和复杂度。在此基础上,提出了5G LDPC码译码器的整体实现结构,并给出了FPGA实现结果。
2 5G LDPC码的结构
5G LDPC码在一个基本编码器基础上,通过速率自适应打孔得来。
2.1 基本编码器结构
5G的基本编码器结构分为两种,分别由两个基本图(Base Graph, BG)来定义。两种基本编码器都是准循环编码。准循换子码块大小 Zc如表1所示。表1中 Z 即为可选择的准循换子码块长度Zc。在编码过程中,需要用到循环右移单位矩阵。 n阶循环右移单位矩阵为将Zc×Zc的单位矩阵的每一行,循环右移 n 位所得。如图1给出了Zc=4时,1阶和2阶的循环右移单位矩阵的取值。
当采用基本图1时,信息码块长度为 2 2Zc,编码字长度为 66Zc,编码码率为1/3;当采用基本图2时,信息码块长度为1 0Zc, 编码字长度为5 0Zc,编码码率为1/5。 Zc为表1中,使得2 2Zc或 1 0Zc大于待编码信息码块长度的最小值。当信息码块的长度不是刚好为2 2Zc或 1 0Zc时,在信息码块后补填充位0,并在编码完成后去除。填充后的信息码块记为c。
表1 准循换子码块长度取值
2.2 速率自适应打孔
5G的自适应打孔,可根据物理层帧结构可承载的比特数目,自适应截取编码后码字的发送比特数目,并可根据混合差错重传(HARQ)要求,截取编码后码字的不同段。记基本编码器完成后的码字长度为 N ,下层帧结构可承载的比特数目为NE,版本号为r vid∈{0,1,2,3}。将编码后码字放入一个长度为Nc的 循环缓冲区内。如图3所示。Nc的长度由上层信令指定, Nc≤N 。当Nc<N时,只截取编码块的前 Nc个比特放入循环缓冲区。最后速率自适应打孔的输出,就是从该循环缓冲区内,从第Ns比特开始,取出NE个比特。Ns由版本号r vid指定。 Nc和Ns具体取值请参阅5G NR标准[1]。由这种速率自适应打孔方式可见,我们可实现任意速率的最 终编码。这给我们的应用提供了极大的灵活性。
图1 n阶循环右移单位矩阵示意图
图2 基本图1和基本图2的图形显示
3 5G LDPC码的译码算法和性能分析
图3 速率自适应打孔示意图
表2 译码算法
基本译码方式为,首先对打孔后的接收信号进行解打孔,然后利用标准的LDPC译码方式进行译码。表2的伪代码给出了译码过程[10-13]。其中 yi为接收数据, L(qi)为 变量节点对数似然比,L(rji)为校验节点j 向变量节点i传递的外信息,σ2为信道噪声方差。
上述计算过程的核心在于变量节点对校验节点的更新算法A lg orithm(·)。不同的更新算法有不同的性能[14]。表3给出了4种不同的更新方式。表中Vji表 示与校验节点j 相连的所有的、除去变量节点i以 外的所有变量节点。α 和 β 为常数,s gn(·)为符号函数。 tanh(x)=(ex-e-x)/(ex+e-x) , tanh-1(·)为t anh(·)的逆函数。
图4给出了5G LDPC码在两种基本图下,在这4种译码算法下的性能。由图4可见,在所有码率下,log-bp(BP)译码算法的性能非常好,且较MSA, Offset MSA(OMSA), Normalized MSA(NMSA)的性能要好得多。MSA算法的性能最差,较log-bp算法有接近2 dB的差别。OMSA和NMSA算法性能介于BP算法和MSA算法性能之间。低码率时,OMSA算法性能较NMSA好;高码率时,NMSA算法性能较OMSA好。1/5码率时,log-bp算法译码门限可以达到Eb/N0≈0 dB(SNR ≈-4 dB)。低码率时,OMSA算法性能较log-bp算法要差0.5 dB左右。这在深空通信、卫星通信等极限通 信条件下,是不可忽略的。
4 校验子通道结构和复杂度
典型的准循换LDPC码译码器为很多并行通道,每个通道执行一个校验子的计算,即表3中的计算。本节主要分析以上4种算法的通道结构和复杂度。
MSA, Offset MSA和Normalized MSA算法只涉及到取绝对值和大小比较操作,较简单。根据以上HBG1和HBG2的定义,5G LDPC码的每个校验子,最多与19个变量节点相连。因此,可设计这3种算法的校验子计算通道结构如图5所示。图5中,校验子通道连接在处理器的数据总线上。当计算某校验子时,处理器依次写入与该校验子相连的各个变量节点值。当写入第1个(地址为0)变量节点时,通道复位。在写入的过程中,通道内部依次比较得出绝对值最小变量节点、绝对值次小变量节点以及他们的地址;并且,通道内计算所有节点的符号乘积,保存每个变量节点的符号。由于最多只有19个变量节点,符号位使用19个寄存器保存即可。当输入完毕后,处理器开始读出计算结果,即每个变量节点的外信息。读出时,根据地址选择符号位,选择绝对值最小或次小值,相乘合并为输出外信息值。与MSA算法相比,Offset MSA和Normalized MSA只是在输出时,做一点特别计算。通道结构可设计成可配置实现这3种算法,且α 和 β 值可配置。
表3 变量节点对校验节点更新方式
图4 不同算法的性能
图5 MSA, Offset MSA和Normalized MSA算法的校验子计算通道结构
根据表3中的公式,log-bp算法计算较复杂。但是,仔细分析该计算公式可发现,log-bp算法的计算,具有迭代的性质。也就是,假如定义两个输入节点的log-bp计算为B P(l1,l2),即[15]
则有
于是,如果以B P(l1,l2)为基本计算节点,则可构造如图6所示的计算过程。图中每个圆圈代表一个BP(l1,l2)计算节点。计算分为前向迭代计算(记结果为)和反向迭代计算(记结果为)。最后校验节点对变量节点产生的外信息输出为前向、反向计算相遇处的计算结果,即
根据 t anh(·)函 数的定义,式(1)中B P(l1,l2)的计算可进一步简化为
其中,
结合式(4)和式(5),即得到基本计算节点BP(l1,l2)的计算。式(5)中的后两项对数部分,可通过查表实现。由于函数 ln(1+exp(-x))下降较快,仿真发现,这两个表格只需8个条目大小就足够。因此,这两个查找表可直接用组合逻辑实现。式(5)的实现复杂度不高。
然而,在式(3)的计算过程中,需要存储输入对数似然比值和前向迭代的计算结果。根据5G NR标准,每个校验子最多与19个变量节点相连,因此至少需要38个8位(假设每个变量位宽为8位)存储器来保存输入数据和前向计算结果。这造成了log-bp的实现复杂度较高。图7给出了log-bp算法的通道实现结构。图中Mem即为存储输入对数似然比和前向迭代计算结果的存储器。为方便处理器读取计算结果,输出采用一个存储器进行缓冲。表4给出了log-bp算法与MSA, Offset MSA和Normalized MSA算法的通道实现复杂度。表中的数值为在Altera Stratix IV EP4SGX290HF35C2 FPGA上的实现结果。
5 5G LDPC码译码器的整体架构设计和实现
5.1 架构设计的考量依据及设计方案
(1) 从图4的仿真性能来观察,在低信噪比时,MSA, Offset MSA和Normalized MSA算法性能较log-bp算法性能相差较大,因此log-bp算法的实现不可缺少,主要用于信噪比极低的极限情况下。
(2) Log-bp算法的前向、反向迭代过程计算较慢,因此,log-bp算法译码的吞吐率较低;相比较而言,采用MSA, Offset MSA和Normalized MSA算法的译码器,计算过程较快。所幸的是,从应用的角度来说,log-bp算法主要处理极限通信的情况,对吞吐率要求不高;而采用MSA, Offset MSA和Normalized MSA算法的译码器对吞吐率要求较高,但他们的通道结构简单,可采用更多的并行通道。
(3) 倘若一个变量节点被打孔,它的Lin(qi′j)为零,根据表3中的计算公式,则该行校验子对所有变量节点产生的外信息均为零,因此该校验子的计算不用执行。由于5G LDPC可通过打孔实现任意速率的编码,因此译码时,需要有灵活地控制调度方案,适应不同码率下的译码。
根据以上设计考量依据,本文提出图8所示的译码器总体架构。图中虚线框内即为LDPC译码器,他们连接到一个处理器(DSP)的总线上。译码器内分为3大部分,log-bp译码加速器、高速译码加速器和数据存储器。其中log-bp译码加速器与其他两部分相互独立。Log-bp译码加速器为24个图7所示的并行通道。设置24个通道是因为,总线宽度为64位,每个通道输入输出数据位宽为8位。24个通道分为3组,每组8个通道。根据图7所示架构及延时,3组交错执行,刚好能保证数据不间断地写入,不间断地读出。
图6 Log-bp算法的计算过程
图7 Log-bp算法通道实现结构
表4 通道实现复杂度
高速译码加速器可执行MSA, Offset MSA和Normalized MSA算法的译码,主要包括移位器和384个图5所示的并行通道[16,17]。图9给出了高速译码器的详细结构。在处理器调用高速译码之前,处理器首先(或通过外部DMA)将待译码数据放在数据存储器内,然后配置高速译码器循环块大小 Zc。Zc的配置将使得高速译码器内只有Zc个通道开启工作。然后,处理器向高速译码器写入一个控制命令,启动一个循环块的校验子计算。该控制命令包含的信息为数据存储器地址和移位器偏移量。高速译码器收到该命令后,按照控制命令的地址,一个时钟从数据存储器内读出Zc个通道的输入数据对数似然比和外信息,进行循环移位、计算、反移位,然后将外信息结果写回该地址。整个过程耗费12+2d 个时钟。d 为校验子上连接的变量节点个数。写回完成后,处理器可控制进行下一块Zc个校验子的译码。如此完成一次译码和多次译码迭代。在上述过程中,处理器很容易判断哪些数据已被打孔,从而直接忽略。数据存储器分为输入数据存储器和外信息存储器两组,每组的位宽均为3072 bit,可以保证一个时钟同时读取(或写入)384个通道的输入数据和(或)外信息。
图8 译码器总体架构
图9 高速译码加速器架构
图9中,384个通道的加速器只有 Zc个通道开启。移位器必须实现Zc个通道数据的循环移位。根据表1, Zc可以有多达51个取值,最大取值384。要实现51种情形下的任意循环移位,且循环移位范围可达到384,移位器的实现较复杂。本文推荐以下图10(a)所示的移位器实现方案。图10(a)中,假设Zc<384, 输入数据din的 下部Zc个数据有效,上部384-Zc个数据无效。输入数据首先同时输入子循环移位器和一个延迟器。子循环移位器向上移位384-Zc个数据,将din的有效数据抵到最顶端。然后,在第2级,移位后的 din和 延迟后的din联动,进行指定的 n阶循环移位。这里的循环,是将图10中上部子循环移位器移出的数据,移入下部的子循环移位器的输入。最后,整个移位器的输出为下部子循环移位器的输出,其最低Zc个数据有效。图10(b)给出了子循环移位器的实现。由于子循环移位器最大需要移位384位,这需要通过3级流水的多路器实现,每一级中间通过寄存器隔开(图中未示出寄存器)。3级流水多路器分别为6选1、8选1和8选1多路器。多路器的选择参数 n0, n1和 n2通 过n 变换得来。n=64n0+8n1+n2。图10所示的移位器,在控制器的控制下,既执行读出数据的正向移位,也执行写 回数据的反向移位。
5.2 FPGA实现结果
图10 移位器架构
表5 译码器的FPGA实现结果
表6 译码器吞吐率(Mbps)
表5给出了图8所示架构在FPGA上的实现结果,不包括DSP。从这些数据可以看到,高速译码加速器(含数据存储器)耗费的资源非常多,达到了EP4SGX290HF35C2 FPGA资源的74%。高速译码加速器耗费的资源是log-bp译码加速器的大约15倍。二者可达到的时钟速率均较高,可达到100 MHz左右。
5.3 吞吐率分析
表6给出了不同码率下,采用基本图2,译码器时钟为100 MHz,译码器平均迭代15次时的吞吐率。如果将译码器做成ASIC芯片,时钟速率可以成倍提高,相应地吞吐率也成倍提高。例如,当码率为9/10时,100 MHz时钟已经可以达到1 Gbps吞吐率。假若采用1 GHz时钟,则吞吐率将达到10 Gbps。这个吞吐率很高,甚至可以在光纤通信系统中使用[18]。
6 结束语
5G LDPC码具有低码率、高性能和速率自适应的特点,具有非常大的灵活性。除了用在地面移动通信系统中外,亦可以用在深空通信、卫星通信甚至光纤通信中。本文分析了5G LDPC码的构造和性能之后,提出其译码器的总体架构:将译码器分为高速译码器和低信噪比译码器,并进行了设计实践,给出了译码器的FPGA综合结果和吞吐率分析结果。本文的工作将对从事5G研发,或更广泛地,从事通信系统研发的人员,有一定的参考意义。