«上一篇
文章快速检索     高级检索
下一篇»
  应用科技  2020, Vol. 47 Issue (6): 23-29  DOI: 10.11991/yykj.202008008
0

引用本文  

张恒皞, 丛惠平, 赵旦峰. 码率兼容空间耦合LDPC码编码器与译码器设计[J]. 应用科技, 2020, 47(6): 23-29. DOI: 10.11991/yykj.202008008.
ZHANG Henghao, CONG Huiping, ZHAO Danfeng. Design of rate-compatible spatially coupled LDPC code encoder and decoder[J]. Applied Science and Technology, 2020, 47(6): 23-29. DOI: 10.11991/yykj.202008008.

通信作者

张恒皞,E-mail:zhanghenghao@hrbeu.edu.cn

作者简介

张恒皞,男,硕士研究生;
赵旦峰,男,教授,博士生导师

文章历史

收稿日期:2020-08-13
码率兼容空间耦合LDPC码编码器与译码器设计
张恒皞1, 丛惠平2, 赵旦峰1    
1. 哈尔滨工程大学 信息与通信工程学院,黑龙江 哈尔滨 150001;
2. 中国人民解放军91033部队,山东 青岛 266071
摘要:为了实现不同信道条件下的信道编码硬件实现方案,本文构造了一种码率兼容的空间耦合低密度奇偶校验(SC-LDPC)码,并进行了编码器与译码器的现场可编程门阵列(FPGA)实现。编码器采用部分校验子前项编码算法进行不同码率的快速递归编码。译码器采用最小和算法,结合分层译码结构完成译码。该设计在Xilinx xc7k325tffg900-2芯片上进行测试,实现了3种不同码率的空间耦合LDPC码的编码与译码功能,具有良好的译码性能和较低的资源占用率。
关键词空间耦合LDPC    码率兼容    编码器    部分校验子前项    译码器    最小和算法    分层译码算法    现场可编程门阵列    
Design of rate-compatible spatially coupled LDPC code encoder and decoder
ZHANG Henghao1, CONG Huiping2, ZHAO Danfeng1    
1. College of Information and Communication Engineering, Harbin Engineering University, Harbin 150001, China;
2. Unit 91033, PLA, Qingdao 266071, China
Abstract: In order to realize the hardware implementation of channel coding under different channel conditions, a rate-compatible spatially coupled low density parity check code (SC-LDPC) is constructed, and the encoder and decoder are implemented in field programmable gate array (FPGA). The encoder uses partial syndrome antecedent coding algorithm to perform fast recursive coding of different code rates. The decoder uses the minimum sum algorithm, combined with a layered decoding structure to complete the decoding. The design was tested on the Xilinx xc7k325tffg900-2 chip, and realized the encoding and decoding functions of three spatially coupled LDPC codes with different code rates, with good decoding performance and low resource occupation.
Keywords: spatially coupled LDPC codes    code rate compatible    encoder    partial syndrome former    decoder    min-sum algorithm    layered decode algorithm    FPGA    

移动通信系统具有可靠和高效的特点,对于具有时变特性的无线信道,需要能在不同信道条件下进行可靠数据传输的传输方案。低密度奇偶校验(low density parity check, LDPC)码是一种能够逼近香农信道容量极限的信道编码[1],已经被广泛应用于卫星电视通信[2]、移动无线通信[3]、无线局域网[4]等领域中。空间耦合LDPC(SC-LDPC)码是一种源于LDPC卷积码的新型信道编码[5],理论上被证明可以达到一般二元无记忆对称信道的信道容量[6]。相比于LDPC码,空间耦合LDPC码在特殊的耦合结构下具有优异的性能,在B5G/6G移动通信系统中具有广阔的应用前景。码率兼容LDPC码是指一组信息位长度相同、码率不同的LDPC码,该组LDPC码在不同的码率下都有较好的性能,并能够使用同一套编译码器实现[7]。文献[8]通过对特殊的三边型LDPC校验矩阵进行扩展和组合,实现码率兼容空间耦合LDPC码,理论上可以实现任意码率,但对校验矩阵要求较高,在给定的短耦合长度下性能并不理想。文献[9]通过修改LDPC码的校验矩阵结构,在耦合边缘处对矩阵的连接进行不同的组合来现码率兼容,可以实现递归编码。文献[10]采用打孔方式,将随机打孔的码率兼容LDPC码进行耦合,耦合长度大时译码性能较好,但由于打孔操作是随机的,具有不确定性,并且长耦合长度对资源的占用较大。文献[11]提出了一种基于重复累加扩展构造LDPC码的方案,并对其进行耦合,通过对校验矩阵的变量节点进行扩展和耦合实现码率兼容,复杂度较高。

针对以上情况,本文设计并实现了一种码率兼容的空间耦合LDPC码方案,并基于FPGA进行验证。通过构造码率兼容的基矩阵进行耦合,实现码率兼容的空间耦合LDPC码。编码器直接使用校验矩阵进行系统编码,译码器采用分层最小和译码算法,在保证性能的同时可以减少FPGA中资源的占用。

1 码率兼容SC-LDPC码校验矩阵构造 1.1 空间耦合LDPC码的结构与编码算法

空间耦合LDPC码的矩阵结构为

${{H}} = \left[ {\begin{array}{*{20}{c}} {{{{H}}_0}(0)}&{}&{}&{}&{} \\ {{{{H}}_1}(0)}&{{{{H}}_0}(1)}&{}&{}&{} \\ \vdots &{{{{H}}_1}(1)}& \cdots &{}&{} \\ {{{{H}}_m}(0)}& \cdots & \cdots & \cdots &{} \\ {}&{{{{H}}_m}(1)}& \cdots & \cdots &{{{{H}}_0}(t)} \\ {}&{}& \cdots & \cdots &{{{{H}}_1}(t)} \\ {}&{}&{}& \cdots & \vdots \\ {}&{}&{}&{}&{{{{H}}_m}(t)} \end{array}} \right]$

式中:空白部分为全零矩阵; ${{{H}}_0},{{{H}}_1}, \cdots ,{{{H}}_m}$ 为组成空间耦合LDPC码的各个子LDPC码矩阵,子矩阵的列数为空间耦合LDPC码的耦合链长度; $m$ 为空间耦合LDPC码的约束长度[12]

由于空间耦合LDPC码校验矩阵具有耦合关系,对应于 $t$ 处的子码字序列可以根据 $t - 1$ 处的耦合关系进行递归编码,编码方案分为校验子前项编码与部分校验子前项编码[13]。其中,部分校验子前项编码相比于校验子前项编码,所需寄存器较少并且结构相对简单,是主要的编码方案,具体描述如下:

由于空间耦合LDPC的码字 ${{v}}_{[0,t]} = [ {{{v}}_0}\;\;{{{v}}_1}\;\; \cdots \;\;{{{v}}_t} ]$ 与校验矩阵H符合校验关系 ${{{v}}_{[0,t]}}{{{H}}^{\rm{T}}} = {\bf{0}}$ ,将校验关系分解为每个子LDPC码字的形式表示:

${{{v}}_t}{{H}}_0^{\rm{T}}(t) + {{{v}}_{t - 1}}{{H}}_1^{\rm{T}}(t) + \cdots + {{{v}}_{t - m}}{{H}}_m^{\rm{T}}(t) = {\bf{0}}$ (1)

式(1)可以变换为

${{{v}}_{[0,t - 1]}}{{H}}_{[0,t - 1]}^{\rm{T}} = [{{\bf{0}}_{[0,t - 1]}}|{{{p}}_t}]$ (2)

式中: ${{{v}}_{[0,t]}}$ 表示前 $t$ 个码字符号; ${{H}}_{[0,t - 1]}^{\rm{T}}$ 表示对应码字符号的部分校验矩阵; ${{{p}}_t} = \left[ {{{{p}}_{t,1}}}\;\;{{{{p}}_{t,2}}}\;\; \cdots \;\;{{{{p}}_{t,m}}} \right]$ 表示部分校验子,可以通过校验关系得出:

${{{p}}_{t,i}} = \left\{ \begin{array}{l} {{{{p}}_{t - 1,i + 1}} + {{{v}}_{t - 1}}{{H}}_i^{\rm{T}}(t + i - 1),}\quad{i = 1,2, \cdots ,m - 1} \\ {{{{v}}_{t - 1}}{{H}}_m^{\rm{T}}(t + m - 1),}\quad{i = m} \end{array} \right.$ (3)

在编码第 $t$ 个码字符号时,根据式(2),可以得到 $\left[ {{{v}}_t^{(0)}}\;\;{{{v}}_t^{(1)}} \right]{{H}}_0^{\rm{T}}(t) = {{{p}}_{t,1}}$ ,其中 ${{v}}_t^{(0)}$ ${{v}}_t^{(1)}$ 表示码字符号中的信息位与校验位,将 ${{{H}}_0}(t)$ 表示为

${{{H}}_0}(t) = [\begin{array}{*{20}{c}} {{{H}}_0^{(0)}(t)}&{{{H}}_0^{(1)}(t)} \end{array}]$ (4)

前一部分 ${{H}}_0^{(0)}(t)$ 对应信息位,后一部分 ${{H}}_0^{(1)}(t)$ 对应校验位,有

${{v}}_t^{(0)}{[{{H}}_0^{(0)}(t)]^{\rm{T}}} + {{v}}_t^{(1)}{[{{H}}_0^{(1)}(t)]^{\rm{T}}} = {{{p}}_{t,1}}$

${{H}}_0^{(1)}(t)$ 为单位阵,校验部分可以由式(5)计算:

${{v}}_t^{(1)} = {{v}}_t^{(0)}{[{{H}}_0^{(0)}(t)]^{\rm{T}}} + {{{p}}_{t,1}}$ (5)

至此,信息位 ${{v}}_t^{(0)}$ 和校验位 ${{v}}_t^{(1)}$ 组成完整的第 $t$ 个码字块,结合递推公式(3)依次完成整个编码过程。

1.2 类Raptor型LDPC码校验矩阵构造

5G标准中增强移动宽带(enhanced mobile broadband,eMBB)场景下使用的LDPC码,采用类Raptor的扩展型码率兼容矩阵结构,在可以使用校验矩阵进行系统编码的同时实现码率兼容[14],类Raptor型LDPC码校验矩阵结构如图1所示。

Download:
图 1 类Raptor型LDPC码矩阵结构

图中,子矩阵A与子矩阵E是由循环移位矩阵组成的矩阵阵列,子矩阵O为全零矩阵,子矩阵I为单位矩阵。矩阵A对应信息位;矩阵D对应校验位,具有双对角线结构,用于递归编码;核矩阵 $[{{A}}\;\;{{D}} ]$ 对应高码率部分;矩阵 $[{{E}}\;\;{{I}} ]$ 对应扩展型码率兼容的扩展位;单位阵I对应度为1的校验位。通过高码率码与单校验码串行级联,实现从高码率到低码率的码率兼容。由于子矩阵D与子矩阵I分别为双对角线和单对角线结构,可以利用校验矩阵进行递归编码,无需生成矩阵,编码过程描述如下:

令编码的码字矢量 ${{c}} = [ {{u}}\;\;{{v}} ]$ ,其中 ${{u}}$ 为信息比特矢量; ${{v}}$ 为校验比特矢量。矢量 ${{{\lambda}} _0}$ ${{{\lambda}} _1}$ ${{{\lambda}} _2}$ ${{{\lambda}} _3}$ 是子矩阵A与信息比特矢量转置 ${{{u}}^{\rm{T}}}$ 的乘积,矢量 ${{{v}}_0}$ ${{{v}}_1}$ ${{{v}}_2}$ ${{{v}}_3}$ 为子矩阵D对应的校验比特矢量,因为码字矢量c与校验矩阵符合正交关系,可以表示为

$\left\{ {\begin{array}{*{20}{l}} {{{{\lambda}} _{_0}} + {{{v}}_0} + {{{v}}_1} = {\bf{0}}} \\ {{{{\lambda}} _1} + {{{v}}_1} + {{{v}}_2} = {\bf{0}}} \\ {{{{\lambda}} _2} + {{v}}_0^1 + {{{v}}_2} + {{{v}}_3} = {\bf{0}}} \\ {{{{\lambda}} _3} + {{{v}}_0} + {{{v}}_3} = {\bf{0}}} \end{array}} \right. \Leftrightarrow \left\{ {\begin{array}{*{20}{l}} {{{{\lambda}} _0} = {{{v}}_0} + {{{v}}_1}} \\ {{{{\lambda}} _1} = {{{v}}_1} + {{{v}}_2}} \\ {{{{\lambda}} _2} = {{v}}_0^1 + {{{v}}_2} + {{{v}}_3}} \\ {{{{\lambda}} _3} = {{{v}}_0} + {{{v}}_3}} \end{array}} \right.$ (6)

式中上标代表矩阵的循环移位系数,无上标表示矩阵的循环移位系数为0。由于二元LDPC码的加法为模二加,将式(6)右侧方程等号两边相加,有

${{v}}_0^1 = {{{\lambda}} _0} + {{{\lambda}} _1} + {{{\lambda}} _2} + {{{\lambda}} _3}$ (7)

通过式(7)可以求出 ${{{v}}_0}$ ,将其代入式(6),即可求出 ${{{v}}_1}$ ${{{v}}_2}$ ${{{v}}_3}$ 。由于子矩阵I是单对角线矩阵,利用信息位u和计算出的v,计算其余校验比特为

${{{v}}_i} = [{{u}},{{{v}}_0},{{{v}}_1},{{{v}}_1},{{{v}}_3}] \times {{E}}_i^{\rm{T}}$

式中 ${{E}}_i^{\rm{T}}$ 为子矩阵E $i$ 行对应矩阵的转置。

1.3 码率兼容SC-LDPC码校验矩阵构造

在部分校验子前项编码算法中,式(4)说明了如何利用耦合基矩阵 ${{{H}}_0}$ 计算部分校验子前项,因此,耦合基矩阵的设计对空间耦合LDPC码的部分校验子编码算法实现快速递归编码具有重要意义。基矩阵 ${{{H}}_0}$ 若能利用信息位对应部分和校验位对应部分进行递归编码,则可快速计算出部分校验子前项,实现SC-LDPC码的递归编码。因此,本设计参考类Raptor校验矩阵结构,构造可递归编码的码率兼容SC-LDPC码的基矩阵 ${{{H}}_0}$ ,如图2所示。

Download:
图 2 码率兼容基矩阵结构

基矩阵 ${{{H}}_0}$ 结构图中,每一个正方形代表大小为32 bit×32 bit的循环移位单位矩阵,信息位长为192 bit。图中竖线阴影部分对应类Raptor矩阵中子矩阵A的信息位;斜线阴影部分对应子矩阵D的校验位;黑色阴影部分对应子矩阵E;灰色阴影部分对应子矩阵I的校验位;空白部分对应全零矩阵。图中小矩形部分代表高码率矩阵,大小为128 bit×320 bit,码率为3/5;通过对此高码率矩阵扩展到大矩形部分,构成大小为192 bit×384 bit、码率为1/2的矩阵;再继续扩展,形成最终大小为256 bit×448 bit、码率为3/7的矩阵,至此整个基矩阵 ${{{H}}_0}$ 构造完毕。基矩阵能够使用校验矩阵进行系统编码,适用于SC-LDPC码的部分校验子编码方案;同时无需生成矩阵,有效减少了硬件资源占用。在本设计中,为了使校验矩阵更加稀疏,SC-LDPC码校验矩阵的耦合长度设为最小,即约束长度 $m = 1$ ,校验矩阵结构如下:

${{H}} = \left[ {\begin{array}{*{20}{c}} {{{{H}}_0}}&{}&{}&{}&{} \\ {{{{H}}_1}}&{{{{H}}_0}}&{}&{}&{} \\ {}&{{{{H}}_1}}& \cdots &{}&{} \\ {}&{}& \cdots & \cdots &{} \\ {}&{}&{}& \cdots &{{{{H}}_0}} \\ {}&{}&{}&{}&{{{{H}}_1}} \end{array}} \right]$

式中 ${{{H}}_1}$ 为耦合约束关系矩阵,大小与基矩阵 ${{{H}}_0}$ 相同,通过 ${{{H}}_0}$ ${{{H}}_1}$ 进行耦合,构造出SC-LDPC码的校验矩阵。

利用5G标准中的参数构造对应码率的类Raptor结构校验矩阵,使用BP译码算法与本文设计的SC-LDPC码校验矩阵进行性能仿真对比,在相同信息位长、最大译码迭代次数为20次、不同码率的情况下,误码率性能如图3所示。图中Eb/N0代表归一化信噪比,BER(bit error rate)代表误码率。可以看出本文所构造的码率兼容SC-LDPC码校验矩阵具有更好的译码性能,并且在BER=10−6时没有出现明显的错误平层。

Download:
图 3 误码率性能比较
2 码率兼容SC-LDPC码编码器设计 2.1 编码器设计

根据部分校验子前项编码算法,编码器主要由控制模块、部分校验子前项存储模块、码字计算模块、输出码字存储模块组成。编码器结构如图4所示。

Download:
图 4 码率兼容空间耦合LDPC码编码器结构

当需要编码的码字信息位输入到编码器时,编码器将输入的信息位存储至寄存器中。当信息位接收完毕,编码器开始进行编码。编码器的核心模块为控制模块和码字计算模块。

控制模块对编码过程进行控制。当码字信息位和码率指示信号输入时,控制模块负责对这些信息进行接收;当信息接收完毕后,控制模块根据码率指示信号,对不同的码率情况进行编码运算。校验矩阵为准循环移位矩阵,输入的信息位与校验矩阵相乘等价于对信息位进行循环移位,因此编码器根据输入的码率控制信号来确定不同循环移位单元的计算使能,实现SC-LDPC码在不同码率下的编码。

码字计算模块的计算过程中主要为2个步骤,分别对应式(5)与式(3)。校验位的计算对应式(5)中校验位 ${{v}}_t^{(1)}$ 部分的计算,利用接收到的信息位 ${{v}}_t^{(0)}$ 与其对应的校验矩阵部分转置 ${[{{H}}_0^{(0)}(t)]^{\rm{T}}}$ 相乘,得出信息位校验和 ${{v}}_t^{(0)}{[{{H}}_0^{(0)}(t)]^{\rm{T}}}$ ,之后与上一块码字的部分校验子前项相加,计算出校验位 ${{v}}_t^{(1)}$ ,得到当前块编码码字 ${{{v}}_t}$ 。计算码字校验和,根据得到的码字来计算式(3)中的码字校验和部分 ${{{v}}_{t - 1}}{{H}}_i^{\rm{T}}(t + i - 1)$ ,计算完毕后保存结果,与上一个码块的部分校验子前项 ${{{p}}_{t - 1}}$ 相加,最终得到当前码块的部分校验子前项 ${{{p}}_t}$ ,用于下一个码块的继续编码,直到最后一个码块编码结束。编码器的码字计算模块时序仿真图如图5所示。

Download:
图 5 编码器码字计算模块时序仿真
2.2 编码器结果分析

将编码器通过Verilog硬件描述语言实现,使用Modelsim 10.7软件进行时序仿真,如图6所示。在Xilinx xc7k325tff900-2芯片上进行实现,编码器资源占用如表1所示。

Download:
图 6 编码器输出结果时序仿真
表 1 编码器资源占用表

由于编码器主要采用循环移位和异或运算进行编码计算,计算产生的中间数据存储在循环移位寄存器中,只有部分校验子前项需要在运算前进行读取、在编码完毕后需要进行存储,因此需要少量的RAM资源来存储部分校验子前项,编码器整体资源占用较低。

3 码率兼容SC-LDPC码译码器设计 3.1 分层译码算法

由于本文构造的SC-LDPC码校验矩阵属于准循环校验矩阵,从硬件实现的角度考虑,分层译码算法是一种十分适用于准循环结构校验矩阵的译码算法。一方面,分层译码将整个校验矩阵分成多个层,优化了层间的消息传递,使迭代译码收敛速度更快;另一方面,分层译码只需要存储校验节点信息,无需存储变量节点信息,减少了资源占用[15]。假设校验矩阵的大小为M×N,将校验矩阵的M个校验方程分为T组,每组包括M/T行,分层译码算法的具体步骤描述如下:

1)初始化。

$L(Q_{i,1}^{(0)}) = L({c_i}) = {y_i},L(\sigma _{ji,1}^{(0)}) = 0,l = 1,m = 1$

式中: $L(Q_{i,m}^{(l)})$ 表示第 $l$ 次迭代、第 $m$ 层的变量节点 ${c_i}$ 的后验对数似然比(log-likelihood ratio,LLR); $L(q_{ij,m}^{(l)})$ 表示第 $l$ 次迭代、第 $m$ 层的最小和译码完成后由变量节点 ${c_i}$ 传递给校验节点 ${s_j}$ 的LLR; $L(\sigma _{ji,m}^{(l)})$ 表示第 $l$ 次迭代、第 $m$ 层的最小和译码完成后由校验节点 ${s_j}$ 传递给变量节点 ${c_i}$ 的LLR。

2)校验行分组更新。

①对于校验矩阵中第m层的每个变量节点,先验信息更新如下:

$L(q_{ij,m}^{(l)}) = L(Q_{i,m}^{(l - 1)}) - L(\sigma _{ji,m}^{(l - 1)})$

②基于最小和算法,更新第m层的校验节点消息:

$L(\sigma _{ji,m}^{(l)}) = \left( {\prod\limits_{i' \in {N_c}(j)\backslash \{ i\} } {{\rm{sign}}\left( {L(q_{i'j,m}^{(l)})} \right)} } \right) \cdot \mathop {\min }\limits_{i'} \left( {\left| {L(q_{i'j,m}^{(l)})} \right|} \right)$

③校验节点消息更新。在第l次译码迭代过程中,当第m层的校验节点消息更新后,立即计算与之相连的变量节点消息,后验概率消息更新方程为

$L(Q_{i,m}^{(l)}) = L(q_{ij,m}^{(l)}) + L(\sigma _{ji,m}^{(l)})$

④译码判决。若 $L(Q_{i,m}^{(l)}) \geqslant 0$ ,则 ${\hat c_i} = 0$ ;否则 ${\hat c_i} = 1$

3)若伴随式 $\hat {{c}}{{{H}}^{\rm{T}}} = 0$ ,则停止迭代,进行译码输出;否则 $m = m + 1$ ,然后转至步骤4)。

4)若 $m > T$ ,则 $l = l{\rm{ + 1}}$ $m = m + 1$ 。如果l小于最大迭代次数,则调至步骤2)继续进行迭代译码;否则终止迭代。

在SC-LDPC码的其他译码方案中,文献[16]提出了一种针对SC-LDPC码的特殊结构——修改优化变量节点信息传递规则的译码方式,充分利用变量节点信息进行更新运算;文献[17]提出了一种利用译码后验概率信息进行节点更新的译码方式,增加了可靠性。在信息位长192 bit,码率为1/2,译码迭代次数为20次的情况下,文献[16]、[17]以及本文提出的分层译码与BP译码算法性能如图7所示。

可以看出,本文采用的分层译码方式与文献[16]及[17]提出的译码算法相比,在短信息位长时译码性能较好,没有明显的错误平层,并且与BP译码算法的性能接近;在硬件实现中,可以将变量节点更新单元和校验节点更新单元合并,不需要存储变量节点更新信息,节省硬件存储资源占用。因此,选择分层译码算法作为本文设计的SC-LDPC码的译码算法方案。

Download:
图 7 本文译码方法与其他文献译码方法性能仿真对比
3.2 译码器设计

根据分层最小和译码算法方案,结合SC-LDPC校验矩阵,采用分层译码方式,译码器输入数据采用6 bit量化,最高位为符号位,中间3位是整数位,最后2位为小数位。译码器结构如图8所示。

Download:
图 8 码率兼容空间耦合LDPC码译码器结构

译码器主要由矩阵参数控制模块、码字似然比初始化模块、译码迭代控制模块、节点更新计算模块、校验节点概率信息存储模块、后验概率信息存储模块组成。其中,码字似然比初始化模块、校验节点概率信息存储模块与节点后验概率信息存储模块是译码器中的信息存储模块,主要由RAM组成,用于数据的写入和读取;矩阵参数控制模块由存储着矩阵信息的ROM组成,存储着矩阵的行列地址索引以及循环移位系数等参数。

译码迭代控制模块采用状态机实现,共有6个状态,状态转移图如图9所示。CLEAR状态负责将节点信息RAM进行初始化;DECODE状态读取矩阵相关参数,初始化译码器的控制信号;UPDATE状态进行节点的信息更新;SAVE状态对更新后的节点信息进行保存;OVER状态将译码结果输出,输出完毕后返回IDLE状态。

Download:
图 9 译码器状态转移

节点更新计算模块的主要功能是进行变量节点的更新和校验节点的信息更新。此模块主要步骤分为有符号加减法运算、符号整理运算、取绝对值最小值运算和乘法运算。首先,读取层存储模块中的上一层校验节点信息以及上一次迭代产生的变量节点后验概率信息,进行相减后得到更新的变量节点信息。之后,进行校验节点信息的更新,主要分为符号位相乘(异或)、求绝对值的最小值和次小值、比较并取补码值3个状态。符号相乘和取模运算是同时进行的,输入数据的最高位为符号位,将其进行异或运算,即符号相乘。求绝对值时,当数据符号为正,截掉符号位,保留其他位;当符号为负,将其他位取反后加一。因为校验矩阵的最大行重为8,所以求最小值和次小值运算需要花费3个时钟,首先将8个输入数据两两比较,分为绝对值大的一组和小的一组;再将绝对值小的一组中的4个数据两两比较,分为绝对值大的一组和绝对值小的一组;绝对值小的一组中比较出最小值,剩下的数据比较出次小值,然后将比较得出的值取补码,校验节点信息更新完毕。最后将更新后的变量节点信息与校验节点信息相加,得到更新后的变量节点后验概率信息,分层译码中的一层译码结束,继续进行下一层译码。节点更新计算模块时序仿真如图10所示,结构图如图11所示。

Download:
图 10 节点更新计算模块时序仿真
Download:
图 11 节点更新计算模块结构
3.3 译码器结果分析

将译码器通过Verilog 硬件描述语言实现,使用Modelsim 10.7软件进行时序仿真,时序波形如图12所示。在Xilinx xc7k325tff900-2芯片上进行实现,译码器资源占用如表2所示。

Download:
图 12 译码器输出波形时序
表 2 译码器资源占用表

可以看出,译码器中的节点更新计算单元主要消耗LUT资源,而后验概率信息与校验节点信息存储模块消耗了一部分RAM资源来进行信息的存储,译码器整体资源占用较低。对译码器进行性能仿真,并与软件仿真结果进行对比,结果如图13所示。可以看出FPGA中的结果与软件仿真的结果具有0.5 dB左右的差异,一方面是由于输入的信噪比经过量化输入到译码器中,存在量化误差;另一方面是由于最小和译码在迭代更新计算过程中并没有进行和积运算,而是用取最小值作为近似导致的。本文所设计的3种码率在归一化信噪比为3.5 dB时FPGA仿真的误比特率都可以达到10−5量级,具有较好的译码性能。

Download:
图 13 BP译码仿真与FPGA测试性能对比
4 结论

1)针对无线信道的时变特性,本文设计了一种码率兼容的空间耦合LDPC码,通过对高码率的校验矩阵进行扩展,能够实现3种不同码率的码率兼容,可以适应不同信道条件下的需求。

2)本文基于FPGA完成了码率兼容空间耦合LDPC码的编码器和译码器的设计。编码器和译码器根据特殊的校验矩阵结构实现码率兼容,在保证编译码性能的同时,具有较低的资源占用和较好的性能,在实际工程应用中具有一定参考价值,可以为B5G/6G移动通信系统提供可借鉴的传输编码方案。

参考文献
[1] GALLAGER R. Low-density parity-check codes[J]. IRE transactions on information theory, 1962, 8(1): 21-28. DOI:10.1109/TIT.1962.1057683 (0)
[2] ETSI. ETSI EN 302 307 V1.3.1 (2013-03), Digital Video Broadcasting (DVB); second generation framing structure, channel coding and modulation systems for broadcasting, interactive services, news gathering and other broadband satellite applications (DVB-S2)[S]. [S.l.] ETSI, 2013. (0)
[3] 3GPP. Draft_Minutes_report_RAN1#86b_v100[EB/OL]. (2016–11–10)[2020–8–13]. https://www.3gpp.org/ftp/tsg_ ran/WG1_RL1/TSGR1_86b/Report. (0)
[4] IEEE. IEEE Std 802.11-2007, IEEE standard for information technology-telecommunications and information exchange between systems-local and metropolitan area networks-specific requirements-Part 11: Wireless LAN medium access control (MAC) and physical layer (PHY) specifications[S]. Washington: IEEE, 2007: 1-1076. (0)
[5] FELSTROM A J, ZIGANGIROV K S. Time-varying periodic convolutional codes with low-density parity-check matrix[J]. IEEE transactions on information theory, 1999, 45(6): 2181-2191. DOI:10.1109/18.782171 (0)
[6] LENTMAIER M, SRIDHARAN A, COSTELLO D J, et al. Iterative decoding threshold analysis for LDPC convolutional codes[J]. IEEE transactions on information theory, 2010, 56(10): 5274-5289. DOI:10.1109/TIT.2010.2059490 (0)
[7] 白宝明, 孙韶辉, 王加庆. 5G移动通信中的信道编码[M]. 北京: 电子工业出版社, 2020: 133-134. (0)
[8] SI Zhongwei, THOBABEN R, SKOGLUND M. Rate-compatible LDPC convolutional codes achieving the capacity of the BEC[J]. IEEE transactions on information theory, 2012, 58(6): 4021-4029. DOI:10.1109/TIT.2012.2188990 (0)
[9] MA Junyang, SI Zhongwei, HE Zhiqiang, et al. Recursive encoding of spatially coupled LDPC codes with arbitrary rates[C]//Proceedings of 2015 IEEE 26th Annual International Symposium on Personal, Indoor, and Mobile Radio Communications (PIMRC). Hong Kong, China, 2015: 127-131. (0)
[10] MITCHELL D M, LENTMAIER M, PUSANE A E, et al. Randomly punctured LDPC codes[J]. IEEE journal on selected areas in communications, 2016, 34(2): 408-421. DOI:10.1109/JSAC.2015.2507758 (0)
[11] HOU Wei, LU Shan, CHENG Jun. Rate-compatible spatially coupled LDPC code ensembles based on repeat-accumulate extensions[J]. IET communications, 2016, 10(17): 2422-2426. DOI:10.1049/iet-com.2015.1031 (0)
[12] PUSANE A E, FELTSTROM A J, SRIDHARAN A, et al. Implementation aspects of LDPC convolutional codes[J]. IEEE transactions on communications, 2008, 56(7): 1060-1069. DOI:10.1109/TCOMM.2008.050519 (0)
[13] 王思杰. 空间耦合LDPC编码构造的研究与应用[D]. 北京: 北京邮电大学, 2017. (0)
[14] LI Huaan, BAI Baoming, MU Xijin, et al. Algebra-assisted construction of quasi-cyclic LDPC codes for 5G new radio[J]. IEEE access, 2018, 6: 50229-50244. DOI:10.1109/ACCESS.2018.2868963 (0)
[15] ZHANG Kai, HUANG Xinming, WANG Zhongfeng. High-throughput layered decoder implementation for quasi-cyclic LDPC codes[J]. IEEE journal on selected areas in communications, 2009, 27(6): 985-994. DOI:10.1109/JSAC.2009.090816 (0)
[16] ALI I, KIM J H, KIM S H, et al. Improving windowed decoding of SC LDPC codes by effective decoding termination, message reuse, and amplification[J]. IEEE access, 2017, 6: 9336-9346. (0)
[17] UL HASSAN N, PUSANE A E, LENTMAIER M, et al. Non-uniform window decoding schedules for spatially coupled LDPC codes[J]. IEEE transactions on communications, 2017, 65(2): 501-510. DOI:10.1109/TCOMM.2016.2633466 (0)