LDPC译码器

2024-07-14

LDPC译码器(精选八篇)

LDPC译码器 篇1

LDPC码译码器的实现一直是研究LDPC码的一个重要方向。传统的短码长LDPC码译码器大多采用LLR BP译码算法进行实现,但是由于有指数和对数运算,相应的译码器资源消耗较高。本文改进了LLR BP译码算法的实现过程,对-ln tanh(|x|/2)函数采用分段拟合的方法,降低了资源消耗,并对码长为40、码率为0.5的规则LDPC码译码器进行仿真实现,给出了时序仿真图以及资源消耗结果。

1 LDPC码的译码算法

对于短码长的LDPC码,典型的译码算法有BP译码算法和LLR BP译码算法[7]。由于BP译码算法比较复杂,采用很多相乘运算,硬件实现的复杂度较高,所以本文采用LLR BP译码算法。LLR BP译码算法流程如下:

1) 初始化。将变量节点传向校验节点的信息初始化为

L(0)(qij)=2y/σ2 (1)

式中:y为接收到的信号;σ2为噪声方差。

2) 校验节点更新。在第l次迭代时,更新与校验节点j相邻的变量节点i∈R(j)传给校验节点的信息

undefined

式(2)可以写成

undefined

式中:Rj/i为除了变量节点i外所有与校验节点j相邻的变量节点的集合。

3) 变量节点更新。在第l次迭代时,更新与变量节点i相邻的校验节点j∈C(i)传给变量节点的信息

undefined

式中:Ci/j为除了校验节点j外所有与变量节点i相邻的校验节点的集合。

4) 译码判决。

undefined

undefined

5) 结束。增加迭代次数,把译码结果代入undefined进行校验,H为校验矩阵,undefined为码长长度。若校验方程成立或者达到最大迭代次数,则译码结束,否则继续迭代。

2 译码器结构设计

2.1 译码器总体结构

本文设计的LDPC码译码器总体结构如图1所示。

该译码器主要由变量节点处理模块、校验节点处理模块、交织模块以及码字校验模块组成。选择的码字是码长为40、码率为0.5的规则LDPC码。

2.2 译码器主要模块分析

2.2.1 变量节点处理模块

变量节点处理模块主要完成变量节点更新以及译码判决输出。接收的数据一方面来自初始信道似然信息,另一方面是校验节点传递给变量节点的迭代信息。本文中变量节点处理模块由40个变量节点处理单元构成。

由变量节点更新式(4)可知,每个变量节点更新输出是所有与之对应的校验节点传递来的迭代信息与初始信道似然信息的总和,再减去自身的内信息。另外,取所有信息之后的最高位作为译码判决输出。

变量节点更新运算基本是相同的,不同之处为度不同造成相加的个数不同。图2是度为4的变量节点处理单元的结构,其中din0是初始信道似然信息,din1~din4是校验节点传递给变量节点的迭代信息,dout1~dout4是变量节点更新输出,Check-Value为译码判决输出。

2.2.2 校验节点处理模块

校验节点处理模块的主要作用是更新校验节点到变量节点的迭代信息。本文设计的校验节点处理模块是由20个校验节点处理单元组成的。图3是度为6的校验节点处理单元的结构。

由更新式(3)可知,其主要过程分为两部分。第1部分计算符号,第2部分计算undefined。对于第1部分,对输入信息取最高位再进行异或即可完成符号部分的计算。对于第2部分,最重要的是实现-ln tanh(|x|/2)。由于计算-ln tanh(|x|/2)需要用到指数运算和对数运算,硬件实现的复杂度较高。本文采用一种用分段函数对-lntanh(|x|/2)进行拟合,然后对于分段函数进行6 bit均匀量化,写入MIF文件作为查找表的方法来简化硬件实现。

图4表示的是-ln tanh(|x|/2)与分段函数f(|x|)的对比图。由图4可见,拟合函数与-ln tanh(|x|/2)十分接近。

图5表示的是两种算法对于码长所选择的码字,在迭代次数为11时的误码率性能。由图5可见,这种用拟合函数代替-ln tanh(|x|/2)的方法与原LLR BP译码算法的误码性能相当。

3 译码器的仿真实现结果

本设计基于Quartus II 9.0进行仿真,使用Verilog语言[8],采用的芯片是Cyclone II系列的EP2C35F484C8。

3.1 译码器时序仿真

译码器的仿真实现包括数据的输入和接收。如图6所示为译码器译码的时序仿真结果。从图6中可以看出,收到的编码序列(result)在经过11次迭代译码后与译码输出结果(decode_out)一致,可证明仿真结果正确。

3.2 译码器资源使用概况

用Quartus II 9.0仿真得到的译码器的逻辑资源与存储资源利用情况如表1所示。

译码器的最大时钟频率是67.40 MHz,译码器一次迭代需要12个时钟周期,最大迭代次数为11,码长为40,所以11次迭代需要12×11+10=172个时钟周期,译码吞吐率可达到40×67.40/172=15.68Mbit/s,该译码吞吐率对于码长仅为40的译码器来说是很快的,并且由表1可知,译码器的资源仍有较大的余地。

4 小结

本文针对码长40、码率0.5的规则LDPC码,给出了译码算法流程以及FPGA实现方案,详细分析了译码器主要模块的设计,用分段函数拟合-ln tanh(|x|/2)的方法简化了硬件实现。仿真结果表明,译码器的吞吐率达到15.67 Mbit/s的同时,译码器的资源消耗适中,符合预期设计和实现的目标。

摘要:由于传统的LLR BP译码算法不易于FPGA实现,为了降低实现复杂度,采用一种改进的LLR BP译码实现方法,设计了一种码长为40、码率为0.5的规则LDPC码译码器,并完成了FPGA仿真实现。仿真和综合的结果表明,所设计的译码器吞吐量达到15.68 Mbit/s,且译码器的资源消耗适中。

关键词:LDPC码,LLR BP,译码器,FPGA

参考文献

[1]GALLAGER R G.Low density parity check codes[J].IRE Trans.In-formation Theory,1962,8(1):21-28.

[2]SIPSER M,SPIELMAN D A.Expander codes[J].IEEE Trans.Infor-mation Theory,1996,42(6):1710-1722.

[3]DAVEY M C,MACKAY D J C.Low density parity check codes over GF(q)[J].IEEE Communication Letters,1998,2(6):165-167.

[4]ETSI EN 302 307 v1.2.1,Digital video broadcasting(DVB)second gen-eration[S].2009.

[5]康亮,杨波,沈萌.符合CMMB标准的LDPC解码器设计[J].电视技术,2009,33(5):40-42.

[6]李刚,黑勇,刘志国,等.WiMAX中多码率LDPC解码器的设计与实现[J].电视技术,2008,32(2):59-61.

[7]贺鹤云.LDPC码基础与应用[M].北京:人民邮电出版社,2009.

LDPC译码器 篇2

关键词:OFDM;信号传输;LDPC

中图分类号:TN911.2 文献标识码:A 文章编号:1674-7712 (2012) 14-0033-01

正交频分复用(OFDM)是一种具有高效频谱利用率的信号传输方案,很适用于宽带数字通信。随着现代数字信号处理技术的进步,OFDM变得更加容易实现,其作为一种有效的调制方案,能广泛地应用于铁路信号传输处理中。

OFDM的一个主要优点是能够把频率选择性衰落信道有效地转变为一组并行的平坦衰落信道。如果在符号间插入一小段时间间隔(也称为保护间隔),则可彻底消除符号间干扰(ISI)和载波间干扰(ICI)。保护间隔的长度应不小于信道的时延扩展。如果符号的信号波形循环扩展到保护间隔(循环前缀),则载波在整个符号周期内都是正交的,这样可以消除ICI。由于保护间隔的存在,使得连续的符号不重叠,从而也消除了ISI。因此在接收机无需进行信道均衡,接收机的复杂性也随之降低。基于LDPS译码算法(低密度奇偶校验)的时空编码OFDM系统在铁路信号传输处理能良好地实现消除ISI和ICI。

一、系统模型

由于基于现今发展水平的低密度奇偶校验(LDPS)码的STC已经被证明是一种可满足这些设计原理的良好候选方案,考虑STC-OFDM系统,此系统包括Q个子载波,N个发送天线和M个接收天线,且通过频率和时间选择性衰落信道进行信号传送。每个STC码字张成P个毗邻的OFDM码字,而且每个OFDM码字由(NQ)个STC符号组成,并在一个时隙内同时发送。每个STC符号沿着某个特定的OFDM子载波和特定的发射机天线发送出去。假设衰减过程在每个OFDM码字(一个时隙)内保持不变,但码字与码字之间的衰落过程是变化的,而且不同发射-接收天线对之间的衰落过程是不相关的。

二、LDPS

LDPS码是一种可接近AWGN信道容量的,非常有前景的编码技术。例如,一个精心构造的1/2速率、具有长分组长度的不规则LDPS码在误比特率10-6时,与AWGN信道的香农容量只差0.04dB。

四、基于LDPC的STC-OFDM系统

由于无线信道的分集衰落特性和只有接收机已知CSI的假设条件,系统编码设计没有多大帮助;相反,为了稳健地利用这个系统中丰富的分集资源,在选择STC码时,应满足两条基本原理,即大的有效长度和理想的交织。

LDPC译码器的每次迭代的译码计算复杂度低,其次二进制LDPC码的最小距离随分组长度以接近1的概率而线性增加。设计一个具有任何分组长度和码率的有竞争力的LDPC码,是的基于LDPC的STC很容易适应不同的系统要求是很容易的。LDPC码并不会明显出现差错平台,很适合于短帧情况。由于奇偶校验矩阵是随机产生的,码比特被有效交织,因此不需要额外的交织器。

五、小结

由于二进制LDPC码的最小距离随分组长度线性增加,因此有可能通过增加分组长度进一步改善性能。虽然基于LDPC的STC不是最优的,但由于其低的译码复杂度,灵活的扩展性和较高的性能,所以是具有频率和时间选择性衰落的多天线OFDM系统中实现可靠告诉童心的很有前景的编码技术,能广泛地运用于铁路信号处理中。

参考文献:

[1]雷菁.基于联合判决消息传递机制的LDPC码译码算法研究[J].信号处理,2009,12.

[2]郭丽.高速通信系统中两种Turbo迭代译码算法的比较[J].现代电子技术,2005,21.

[3]许渤.一种LDPC码在光纤通信系统中的性能分析[J].光通信研究,2007,5.

LDPC译码器 篇3

LDPC码(Low Density Parity Check code)是由Gallagher在1962年于其博士论文所发表,只不过当时由于VLSI技术尚未成熟,所以逐渐被人们所遗忘,但在90年代后由于VLSI技术的快速发展LDPC code又逐渐的被人们所广为讨论。

LDPC码的译码算法,是一种基于稀疏矩阵的并行迭代译码算法,运算量要低于Turbo译码算法,并且由于结构并行的特点,在硬件实现上比较容易。因此在大容量通信应用中,LDPC码更具有优势。通过仿真发现,专门设计的LDPC码在中场度码长时,具有优越的纠错性能,是距离香农限最近的码字之一,而且有较低的无码平层(error fl oor)。因此对LDPC码译码器的硬件实现,已经成为一个很有价值的研究方向。

本文拟在介绍译码和积算法(Sum Product Algorithm,简称SPA)的基础上,分别对译码器变量节点处理单元和校验节点进行分析,并分别进行串行以及并行的硬件实现,最后根据综合结果对串行以及并行实现方式进行资源比较。

2 LDPC码的软迭代译码

和积算法译码的步骤如下:

3 变量节点运算单元的实现

变量节点运算单元的主要作用是计算某个变量节点(BN)传递给与他相邻的校验节点(CN)的LLR值。计算过程如公式(3)所示。假设某个变量节点的度为ω,也就是有ω个校验节点与其相邻,则该变量节点应分别对这ω个校验节点返回ω个值,即完成ω次公式(3)的运算,显然存在着很多次的重复加法,假如直接采用这种实现方案的话,将占用很多的资源。观察公式(3)以及公式(4),显然有下面的关系:

由公式(6),很自然的想到,先计算出总和,继而在进行判决的同时,减去相应的Lrmn,依次得到ω个返回值,一举实现变量节点消息更新与判决两个功能,而且节省资源。

计算LQn的过程,又可以分为全并行与全串行实现,因此整个变量节点运算单元又分为并行和串行两种实现方式,见图1和图2所示。

变量节点运算单元并行实现时,需要一个同时计算ω个加数的加法器,与此同时,将这ω个加数进行寄存,在计算出和LQn后,并行ω路加法,实现ω值的返回。这样做的好处是,可以实现非常高的吞吐速率,代价是多使用了很多的加法器(二进制的减法可以使用加法器来实现,本文中加法器和减法器统称加法器)。

与变量节点的并行实现不同,串行实现时,充分利用了已有的硬件资源。除去sum寄存器以及FIFO寄存器外,只使用了两个加法器,而且这两个加法器都只有两个输入端口,直接调用FPGA芯片厂商提供的IP核即可实现,综合后,亦有很高的运算速度。基于图2,返回的ω个值,将以串行方式依次输出;串行实现的另一个好处是,当ω变化时,本模块仍然可不做任何改动的调用,这一点是并行实现所无法比拟的。

4 校验节点运算单元的实现

校验节点运算单元的主要作用是计算某个校验节点(CN)传递给与他相邻的变量节点(BN)的LLR值。计算过程如公式(2)所示。与变量节点的实现方式类似,我们仍然设计了先计算出总的“和”,继而“减去”相应的,得到多个返回值。其中“加法”和“减法”运算的规则如下:

我们定义这样的“加法”运算为广义加法,相应的“减法”运算为广义减法。

类似的,根据求“和”的实现方式不同,校验节点运算单元的实现也有全并行和全串行两种实现方式。见图3和图4所示。从图3与图4的比较,很显然看出校验节点运算单元的全并行实现与全串行实现的区别,几乎与变量节点实现时并行与串行的区别相同,即并行实现时,占用了较多的硬件资源,但是可以实现很高的时钟频率,进而实现很高的数据吞吐量,或者在要求的数据吞吐速率下,以较低的时钟频率实现设计,简而言之即“面积换速度”;串行实现时,充分利用了已有的资源,因此占用资源较少,但要求很高的吞吐速率时,需要提高时钟速率,这是串行实现的瓶颈,由于提高时钟频率主要靠优化代码以及更换FPGA芯片来实现,因此要求很高吞吐量时,应尽量采用并行实现。

5 资源占用比较

综合以上部分对变量节点,校验节点的并行实现以及串行实现的描述,我们发现,在不对吞吐量有过高要求的情况下,应尽量选用串行来实现变量节点过程和校验节点过程。这样选择的好处是,这样的单个模块占用的资源极少,因此可以在整体译码器的实现时,设计为多路并行的变量节点过程和多路并行的校验节点过程,这样通过模块复制的方法在一定程度上也提高了吞吐速率。对吞吐率有较高要求时,选用并行处理方式,当行重量或者列重量为变化值时,需要对模块进行一定的修改,这也在很大程度上限制了并行处理方式模块的可移植性。

6 结束语

本文对LDPC码和积算法进行了介绍,并对迭代过程进行了分析,在此基础上根据分析分别设计了校验节点处理过程和变量节点处理过程的硬件实现结构图,这其中又各有并行实现和串行实现两种不同实现方案,最后对串行与并行这两种方式在速度,资源和吞吐量上进行了分析比较,得出了在不同情况下时,分别推荐选取的方案。

摘要:在介绍LDPC(Low Density Parity Code)低密度校验码的基本迭代译码原理的基础上,针对FPGA技术,专门设计了译码器中通用的变量节点以及校验节点处理单元,其中分别包括全并行与全串行的实现方式。编译结果表明,这些模块可以实现高速的处理速度,以及占用合理的硬件资源。

关键词:低密度校验码,FPGA,串行并行

参考文献

[1]H.Xiao and A.M.Banihashemi,GraphBased Message-Passing Schedules for Decoding LDPC Codes",IEEE Transactions on Communications,vol.52,no.12,pp.2098-2105,December 2004.

[2]CCSDS 131.1-O-2,Low Density Parity Check Codes for Use in Near-Earth and Deep Space Applications,Orange Book,Issue 2,Washington D.C,USA,Sept,2007.

[3]丁雨廷.LDPC码编译码原理及多码率编码研究[D].杭州电子科技大学,2014(09):10-23.

[4]王启玮,战兴群,严凯.LDPC码的编译码设计与研究[J].计算机测量与控制,2013(03).

[5]乔华,管武,董明科等.LDPC码高速译码器的设计与实现[J].北京大学学报(自然科学版),2008,44(03):347-352.

[6]童胜,王鹏,王单等.LDPC码量化和积译码的高效实现[J].西安电子科技大学学报,2004,31(05):709-713.

LDPC译码器 篇4

QC-LDPC进行子矩阵划分之后[6],实现部分并行译码设计的难度大大降低。而对于高并行度,高速率LDPC译码器设计,最大的挑战是简化节点运算,尤其是更新校验节点运算,需要进行排序操作,所以简化节点运算,使节点运算具有较小的延时,是这项设计的关键。本文使用树状结构利用归并算法[7]的思想,以完成高速译码器设计。基于这种归并排序思想,结合FPGA器件适合并行运算特点以及CCSDS推荐(8176,7156)码型特性,提出一种适合FPGA全流水线[8]实现的树状节点运算单元,使处理过程具有较小的线性延时。最终在Altera公司EP2S180器件上完成设计数据处理速率可以达到1.5 Gb/s,数据吞吐率达到750 Mb/s。

1 LDPC译码算法原理

1.1 基本算法

LDPC码的基本译码方案有两种:比特翻转算法[9]和概率译码算法[10]。比特翻转译码算法,计算复杂度低,但是无法实现LDPC码的最优译码效果;概率译码算法的基础上发展出了现在了BP译码(基于置信传播)算法[11]。BP算法译码性能优异,普通BP译码算法以及对数域BP译码算法,含有大量乘法以及双曲线函数,通过简化得到Normalized最小和译码算法[12]。具体流程如下:

设vml·uml为迭代过程中变量节点与校验节点的对数似然比,vl0为输入序列的软判决信息。

1.1.1 初始化

1.1.2 迭代循环

(1)校验节点更新,其中a为Normalized衰减因子

(2)变量节点更新

1.1.3 译码判据

其中8为判决之后的序列信息:

当译码结束停止迭代,认为译码成功,否则继续迭代过程直到最大迭代次数时译码结束,若达到最大迭代次数时,式仍不成立,则认为译码失败。输出的码字为停止迭代时的序列或是最大迭代次数时的序列。

1.2 更新校验节点等价转换

由校验节点更新公式(2)可知,校验节点的通常算法为,将校验节点向量绝对值进行排序,逐次取得最小值,以及确定符号位值即可求得,不过即使效率最优的快速排序方法,时间复杂度仍为O(nlgn)且快速排序算法执行时间不稳定,无法使用流水线实现,故不宜使用硬件实现。

进一步分析,由校验节点更新公式可得,若已知L(m),更新校验节点的过程中只需要计算符号积,最小值最小值位置,以及除去vmin之外的最小值。求得最小值,最小值位置,符号积,以及次小值,即可完成更新校验节点的值。

首先对于校验节点更新符号位,由下式:

所以将各个校验节点求得符号积再与本身符号位做乘积运算即可,而对于符号位的乘积运算的乘积运算本质为异或运算。

其次校验节点绝对值的更新,由式(7):

式(7)中lmin为最小值的位置。

只需要将非最小值位置替换为校验节点的最小值,最小值位置的值替换为这组校验节点中除了这个节点以外的最小值(及校验节点中的次小值)。

1.3 FPGA实现更新校验节点

考虑到FPGA器件并行计算的特点,以及FPGA器件在一个时钟周期可以做两次逻辑运算的特点,利用归并算法的原理,不断的向前传递上一级最小值,最小值的位置和次小值,以此增加译码速度,设计一种基于流水线的更新校验节点的方式满足LDPC高速译码的需要。

运算单元核心流程如下:

设计算模块输入为,上一模块级符号积(s0,s1),最小值(a0,a1),最小值位置(l0,l1)以及次小值(b0,b1),输出结果流程如下所示:

1)输入两个符号积(s0,s1),异或输出符号积s。

2)最小值为a=min(a0,a1)。

3)最小值位置为l=(a0≥a1)l1:l0。

4)次小值为l=(a0≥a1)?min(a0,b1):min(a1,b0)。

注:对于第一级流水输入次小值为最大整数(如数据精度为8 bit则置为0x FF)即可。

如图1所示为计算模块的工作框图,每一级分别增加寄存器存储中间状态,即可完成流水线设计。

FPGA设计更新校验节点模块如图2所示,每一级输入均只与上一级输出结果有关,且输出作为下一级流水线的输入。

译码器模块内部实现RTL图如图3、图4所示,分为符号和,最小值,最小值位置更新以及次小值的更新两部分。图3中指示的为符号和,最小值,最小值位置的更新,均通过比较输入最小值,进行选通操作。图4所示为次小值的更新流程,为两路输入最小值和次小值交织比较选出较小的数值,再通过最小值,选出相应的次小值。

2 FPGA译码器实现

2.1 FPGA流水线设计

本次译码器设计针对CCSDS推荐(8176,7156)码,校验矩阵结构如下:

式(8)中Ax,y为每行重为2的511×511的循环行列式,所以每个校验方程含有变量为32=25。所需要流水线的级数为5,对于CCSDS标准每行校验节点为32,通过5级流水线结构,延时5个时钟周期,就可以得到更新后校验节点的信息。如图5所示为校验节点更新模块中的流水线框图,每个模块均产生对应的符号和,最小值,最小值位置,次小值,随着处理过程的推进,模块数量呈指数下降。

由于每层流水线中均有寄存器存储中间值,且每层的输入只与上层的输出有关,所以一个时钟周期完成一层数据计算之后,将用于更新下一级流水线输出,此层可以立刻进行下一个数据的计算,所以更新校验节点的总时钟周期为,校验节点更新总周期数与线性延时的和,因此可大大加快了译码速度。

2.2 部分并行化设计

通过分析(8176,7156)码特点,发现Ax,y可以分解为两个行重为1的循环行列式,由于行重为1,可存储为列向量,进行一次地址线性变换即可完成校验节点与变量节点置信信息的转换。

对于QC-LDPC校验矩阵拆分后的每个单独的校验向量,校验向量长度为b时,若b=b1·b2,则可将校验向量分为b1个长度为b2的校验向量。则长度为b的校验向量退化为长度为b1的校验向量,地址产生器可以方便地使用计数器来实现,每个时钟周期读取b2个数据完成校验节点或变量节点更新,完成更新后将数据重新存储到原先位置,从而可以增加译码器并行度,且不会造成存储器的访问冲突。

针对CCSDS推荐的(8176,7156)码,每个列向量进一步拆解为511=7×73,可以拆成7部分相互独立的列向量,每次可计算更新7×2组校验节点,完成一次循环所消耗时钟周期为73,实现LDPC译码的部分并行化,使校验节点更新速度提高了七倍。

2.3 数据乒乓处理设计

在LDPC译码迭代过程中,校验节点更新和变量节点更新无法同时进行,即校验节点更新模块和变量节点更新模块时间利用率只有50%。为了提高更新模块时间利用率,从而进一步提高译码器处理速率,借鉴高速缓存中的乒乓处理技术,采用对连续两帧数据进行处理,及一帧数据校验节点更新时,另一帧数据进行变量节点更新,这样通过只增加数据存储单元,不增加数据处理单元的方式,即可将译码器数据处理速度提高一倍。以此消除处理单元的空闲时间,增加译码器硬件利用率。

2.4 置信信息量化选择

基于置信信息的LDPC译码器,通常的量化模式是使用定点或者浮点型数据,表示对数似然比,在迭代次数增加的情形下,若量化位数过少会影响译码精度,量化位数过多会增加FPGA片内资源的消耗。

本设计中,综合译码精度以及FPGA片内资源的设计,考虑设计一种定长的量化方式,并通过整体缩放的方式,使迭代次数增加的情况下,仍能达到优异的迭代效果。具体方式是,在修正最小和译码算法使用归一化因子等于0.75(只需要移位加法器即可以完成归一化,具体做法为数值右移1位和右移2位数据相加得到,易于硬件实现)。每次迭代完成后,将所得的变量节点的数据右移一位,并将初始校验信息也右移一位。若超过绝对值超过阈值,则节点值取阈值即可。由译码器的原理可知,译码过程为置信信息逐层传递过程,初始值所占校验节点更新过程中比例越来越小,各节点的相对大小比例越来越大的过程,且每次迭代更新校验节点只取决于变量节点的最小值和次小值,所以每次迭代完成之后,将全部数据按照相同比例缩放,并加入限定阈值,保证其最大值不会溢出,不会影响译码结果。最终本设计中,变量节点以及校验节点的量化精度为6 bit,这样在保证译码精度同时,同时保证变量节点数据在相对有效范围,使存储资源可以得到有效的利用。

3 实验结果分析

最终,在ALTERA公司EP2S180器件上完成高速LDPC译码器设计,译码器的使用FPGA存储资源以及逻辑资源情况如表1所示:

分析译码器处理数据流程,可以计算出译码器的数据处理速率。译码器设计并行度为7,所以完成一次数据更新需要73个时钟周期。在每次迭代过程中完成校验节点更新和变量节点更新分别需要增加5个和2个时钟周期的线性延时,最后读写RAM所引入的4个时钟周期的延时,总计完成一次迭代需要时钟周期为156个时钟周期。设置迭代次数为10,总计需要1 560个时钟周期,由于同时处理2帧数据所引入延时30个时钟周期,模块工作时钟频率为150 MHz,故可计算得数据处理速率大于1.5Gb/s,数据吞吐率达到750 Mb/s以上,与实测完全一致,可以满足高速数据传输的要求。经过软件布局布线后仿真表明,此译码器最高工作频率可达到185 MHz。

表2对比本文与其他文献中设计的译码器性能可知。可以发现本文提出的译码器在较低时钟频率迭代次数较多情况下,仍能满足设计性能远高于上述文献提出的译码器结构,主要是由于本设计采用这种全流水线结构以及两帧同时操作的乒乓处理结构,使数据处理速度有了很大的提升。现此译码器已用于XX卫星通信测试中。

4 结语

基于归并算法原理以及FPGA流水线设计方法,设计一种适于FPGA实现的LDPC译码器,通过流水线设计大大减少更新校验节点的延时,提高了译码速度,并通过平行展开的方式,增加了译码器的并行度,并通过数据乒乓处理的方式,同时处理两帧数据,进一步减少了译码器的线性输出延时。最终在Altera公司FPGA上实现了750 Mb/s(8160,7156)QC-LDPC码译码器的设计,数据处理速度优异,完全可以满足卫星通信中高速纠错译码的需求。现此译码器已用于XX卫星通信测试中。

摘要:LDPC码是一种纠错能力极强的编码,已广泛用于新一代数字电视,深空探测,卫星通讯等多种领域,基于不同要求出现了许多不同的编码标准,所以定制化的LDPC码译码算法的硬件实现已成为当今的研究热点之一。为满足卫星通信中高速数据传输的需求,使用LDPC码Normalized最小和译码硬件实现算法以及归并算法原理,并结合FPGA适合并行计算的特点,提出一种基于流水线的部分并行LDPC译码的FPGA设计,通过仿真和实验,最终完成满足卫星高速通信需求的LDPC译码器设计。最终使用Altera公司FPGA上完成译码器设计,整个系统在时钟频率为150 MHz的条件下,数据处理速率达到1.5Gb/s以上,数据吞吐率达到750 Mb/s纠错性能优异,完全满足卫星高速数据处理要求。

LDPC码编码器实现方法 篇5

1962年, Gallager首次提出了LDPC码[1], 但是由于其译码算法过于复杂, 并没有得到足够的重视。1996年, Mackay和Neal发现LDPC码和Turbo码同样具有接近香农限的优异性能[2], 从而引发了对LDPC码研究的热潮。最近提出的诸如第二代数字广播电视 (dvb-s2) 以及无线宽带接入网等标准都采用了LDPC码。

基于迭代译码算法, LDPC码的译码器可以达到数Gbps的数据吞吐量[3]。而传统的编码方法需通过生成矩阵生成码字, 其复杂度和码长的平方成正比, 这使得LDPC码在编码器的实现上需要大量的硬件资源并产生高编码延时, Richardson在文献[4]中引入了一种新颖的算法在很大程度上解决了该问题, 但较高的编码复杂度和编码时延依然是其应用所面临的主要问题之一。

1 LDPC码编码原理

不同于其他线性分组码, LDPC码是由其H矩阵来表示的。一般的编码方式也是将校验矩阵转换为G矩阵来完成编码, H矩阵从根本上决定了LDPC码的性能, 所以对LDPC码而言, H矩阵的选取是极其重要的关键问题。

H矩阵主要通过下述几种方式获取:首先是通过计算机随机生成H后比较挑选出性能最佳的H, 这是早期所采用的方式;其次是通过PEG等方法, 从双边图的角度去构造H矩阵, 这样可以得到性能比较稳定的H矩阵。前述方法一般都是从性能的角度去考虑H矩阵的优劣, 一般都会对硬件实现带来负面影响, 近几年来兴起了结构化H矩阵, 这种H矩阵具有特殊的结构, 是一种兼具硬件实现与良好性能的优异码型。

在获得H矩阵后, 则可得到相应的码字。常见的编码方法主要有以下三类:

(1) 常规编码

将矩阵H进行初等变换, 转换为G矩阵。设信息源为S, 则编码生成的码字U=S·G。

(2) 软件仿真情况下采用的编码方法

设码字为U, H矩阵为M·N, 编码前的信息源为S, 编码后得到的校验位为C, 则有U=[C|S]。分解H矩阵为H=[A|B], 其中A为M·M的矩阵, B为M· (N-M) 的矩阵。因此U·HT=0→AC+BS=0, 由此可计算出C=A-1BS。

(3) 具有类似下三角形式的H的快速编码

该方法是将H矩阵分解为一个具有类似于下三角分布的新H矩阵, 然后通过表达式H·c=0计算出校验位表达式, 完成编码。

2 LDPC编码器主要实现方法

经过对当前LDPC码编码器多种实现方法的分析与概括, 将其归纳为五种实现方法, 描述如下:

2.1 G矩阵实现方法

传统的LDPC编码方法通过H矩阵, 转换成G矩阵, 将信息位与G矩阵相乘, 则得到编码码字。在其硬件实现上, 只需要存储G矩阵, 进行乘法操作, 即完成编码器的硬件实现。但由于在转换过程中, G矩阵失去了H矩阵所特有的稀疏性, 为稠密矩阵, 使得编码器在硬件实现上相当复杂, 需要消耗大量的硬件资源来存储G矩阵。现在很少采用这种方法实现LDPC码编码器。

2.2构造特定H矩阵实现方法

该方法从硬件实现结构出发进行探索, 首先综合考虑具体实现上的特殊结构和复杂度, 再根据其分析结果, 找到对应的具有一定特殊性的H矩阵, 最后根据H矩阵各子模块的特殊性来做相应的实现。通过这种方式构造出来的LDPC码, 要么有利于编码实现, 要么有利于译码实现。

虽然这种方法在一定程度上可以降低编码器实现复杂度, 也降低了其硬件资源消耗和时延, 但由于这样的H矩阵结构具有极强的特殊性, 使得该方法在实现一些特定参数的LDPC码时受到一定的限制。

2.3 RU预分解实现方法

基于RU分解方式, 预先在软件上对H矩阵进行RU分解处理, 即将H矩阵转化为近似下三角的新H矩阵, 如图1所示, 即

undefined

, 可得表达式如下:

通过计算可知:

p1T=-F-1 (-ET-1A+C) sT.

p2T=-T-1 (AsT+Bp1T) .

其中F=-ET-1B+D, 即进行相应的前向计算和后向计算, 则可得到校验位p1, p2, 将其与信息位进行顺序重组, 最终完成编码器实现[5]。

该方法将对H矩阵处理的大部分工作放在计算机上进行, 极大降低了硬件实现上的复杂度以及硬件资源的消耗, 使得该方法支持任意H矩阵。在近几年研究编码器的实现中经常采用该方法。

2.4 LU预分解实现方法

该方法基于LU分解方式对于编码器进行实现。首先通过计算机把校验矩阵划分为undefined的形式, 其中H矩阵为m*n阶, 子矩阵A为m*k阶, 子矩阵B为m*m阶, k+m=n, 然后将矩阵B分解为下三角矩阵L和上三角矩阵U, 即L·U=B, 设编码码字undefined, 通过H·C=0, 可以得到表达式

A·s=B·p,

计算得到

p=U-1·L-1·A·s.

即进行相应的前向计算和后向计算得到校验位p, 将其与信息位s进行重组后, 即可完成相应的LDPC码编码。

该方法类似于RU预分解实现方法, 将对H矩阵处理的大部分工作放在计算机上进行, 由此极大降低了硬件实现上的复杂度以及硬件资源的消耗, 使得该方法支持任意H矩阵。

2.5因子图实现方法

该方法从因子图角度入手, 即根据LDPC码因子图, 把编码过程转换为重复、交织、校验位计算以及累加等操作, 即可完成编码。从实现角度上来看, 该方法与前面归纳出的四种实现方法截然不同。

这种从因子图角度考虑的编码器实现方法, 结构简单且固定, 运算复杂度很低, 不需要对H矩阵做任何结构预设计或预处理, 只需根据H矩阵的相关性能参数, 在硬件上设计相应功能的运算模块并将其做级联, 则可完成编码。

该方法多用于实现RA码、IRA码以及eIRA码等编码器。

3 LDPC码编码器实现发展趋势

相对于其他码型, LDPC码有着很好的性能, 其硬件实现同样也受到青睐。但LDPC码进行直接编码, 其复杂度是码字长度的二次方, 这带来了相当高的编码复杂度, 所需消耗的硬件资源也很大。因此, 最初对于编码器的实现, 一直专注于如何降低其实现复杂度, 且多数情况下, 都将编码器和译码器的实现分开进行考虑。但针对同一H矩阵, 却将编码器和译码器单独考虑并分别实现, 这会增加编译实现复杂度, 故为了节省硬件资源并降低实现复杂度, 如何基于同一H矩阵, 找到一种既能同时实现编译码又能获得低实现复杂度的折中方案, 显得尤为重要。

为了适应不同的传输环境, 满足不同的服务质量的要求, 通信系统需要前向纠错编码的码率甚至帧长自适应地根据信道环境做出相应调整, 这意味着对编码器设计要求更高, 即自适应信道变化的编码器。如DVB-S2中采用的LDPC码就设置了两种编码长度以及21种码率, 极大地改善了系统性能[6,7]。码率及帧长的自适应虽然可以由多个编码器和译码器实现, 但此举必然导致编译码器的复杂度过高, 故如何设计复杂度较低的变码率变帧长编译码器显得更加重要, 且已成为当前编码领域的研究热点。

4结论

本文总结LDPC码编码器的硬件实现方法, 即G矩阵实现方法、构造特定H矩阵实现方法、RU预分解实现方法、LU预分解实现方法、结构图实现方法, 并概述编码器实现的发展趋势。在实际应用中, 根据具体环境对LDPC的码型结构以及实现有不同需求, 动态选择相应的编码器实现方法, 开发相应硬件产品, 有着重要的研究意义。

LDPC编译码器的硬件实现, 进一步推动了LDPC码在深空通信, B3G (4G) 移动通信等中的应用。总之, LDPC码性能优异, 在各个领域存在广阔的应用前景, 是当前研究的一个热点, 有深远的研究价值。

参考文献

[1]Robert G Gallager.Low-Density Parity-Check Codes[J].IRE Transon.Inform.Theory, 1962 (8) :21-28.

[2]D J C MacKay, R M Neal.Near Shannon Limit Per-formance of Low-Density Parity-Check Codes[J].E-lectron.Lett, 1997 (33) :457-458.

[3]A Darabiha, A C Carusone, F R Kschischang.Multi-Gbit/sec Low Density Parity Check Decoders with Re-duced Interconnect Complexity.IEEE ISCAS, May, 2005, pp.5194-5197.

[4]T Richardson, R Urbanke.Efficient Encoding of Low-Density Parity-Check codes[J].IEEE Transactions onInformation Theory, 2001, 47 (2) :638-656.

[5]Lee, D.-U.;Luk, W.;Wang, C.;Jones, C., "A flexiblehardware encoder for low-density parity-checkcodes, "Field-Programmable Custom Computing Ma-chines, 2004.FCCM2004.12th Annual IEEE Sympo-sium on, vol., no., pp.101-111, 20-23 April 2004.

[6]Alberto Morello, Vittoria Mignone.DVB-S2:The SecondGeneration Standard for Satellite Broad-band Services[J].Proceedings of the IEEE, 2006, 94 (1) :210-216.

LDPC译码器 篇6

LDPC码的译码算法可分为硬判决算法和软判决算法两种。两种算法各有优势和不足,硬判决易于实现,但性能较差;软判决性能较好,但复杂度高。文献[3]提出了混合比特反转(HBF)译码算法,核心思想是先进行BP译码,再进行BF译码,并且指出在译码复杂度不增加许多的情况下,HBF算法性能优于BP算法,此译码算法是先进行软判决,再进行硬判决,虽然性能有所提高,但是译码复杂度并没有降低,还有所升高。本文提出了一种混合迭代译码算法(Mixed Iteration Algorithm,MIA),核心思想是先进行硬判决,再进行软判决,这样在误码率性能没有下降的前提下,译码复杂度大大降低,并且减小了传播时延。

1 LDPC译码算法

1.1 硬判决算法

最初的硬判决算法是由Gallager提出的比特翻转算法(BF)[1],原理是传输序列的某一比特参与的校验方程错误越多,则认为此比特错误的概率越大,因此翻转该比特。BF算法在迭代过程中传递的是二进制硬信息,复杂度低,但性能较差。为了进一步提高BF算法的性能,Y.Kou等提出了一种加权比特翻转(WBF)算法[4],考虑利用信道输出的软信息,也就是比特判决的可靠度undefined越大,则其硬判决值的准确度就越高,因而获得了性能与复杂度之间的良好折中。WBF算法将一个校验关系的破坏归因于校验方程中绝对值最小的那一个符号。如果校验方程不成立,该方程中所有相关符号都可能出错,绝对值越小,符号出错的可能性越大,但绝对值较大的符号的可信度同样不应被忽略。基于以上分析,Feng Guo等提出了一种可靠性加权比特翻转(RRWBF)算法[5]。

1.2 软判决算法

在软判决译码算法方面,最初Gallager提出了置信传播算法(Belief Propagation Algorithm,BP),其中需要大量乘法和加法运算,Kschischang等将BP算法作了改进[6],通过对数将乘法运算变为加法运算,即对数域BP算法(LLR BP),在计算校验位节点信息时,该算法要用到双曲正切运算,实现复杂,为此,Fossorier研究了低复杂度的迭代译码算法[7,8],将校验位节点信息的计算简化为求符号运算和求最小值运算,提出了最小和算法(UMP BP-Based)。

2 MIA算法

RRWBF算法操作简单,易于硬件实现,但是性能较差,UMP BP-Based算法性能较好,但实现复杂度较高。MIA算法就是将两者结合,通过设定最大迭代次数iterRRWBF和iterMSA,提供的误码率性能接近UMP BP-Based算法,译码复杂度在RRWBF和UMP BP-Based算法之间,并且减小了传播时延。

假设二进制码字c=[c0,c1,…,cN-1],经过BPSK调制后得到序列x=[x0,x1,…,xN-1],其中xn=1-2cN,0≤n≤N-1,x进入均值为0,方差为σ2=N0/2的AWGN信道后得到信道输出序列y=[y0,y1,…,yN-1],其中yn=xn+vn,0≤n≤N-1,vn为加性高斯白噪声。根据接收序列y进行判决得到二进制硬判决序列z=[z0,z1,…,zN-1]。MIA算法的步骤如下:

1) 计算校正子s=[s0,s1,…,sM-1],即

undefined,m=0,1,…,M-1 (1)

如果s=0,停止迭代,输出硬判决序列z并显示译码成功,否则进入步骤2)。

2) 计算翻转函数En,即

undefined

undefined

3) 翻转最大的En所对应的比特zn。

4) 若s=0,则译码结束;若s≠0且未达到最大迭代次数,重复步骤1)~3),否则,执行后续步骤。

5) 初始化L(qij)=L(ci)=2yi/σ2。

6) 进行迭代处理,其中校验节点消息处理为

undefined

变量节点消息处理为

undefined

译码判决为

undefined

若L(Qi)>0,则undefined,否则undefined;若undefined或者达到最大迭代次数,则译码结束,否则从步骤6)继续迭代。

3 算法仿真及分析

为了验证混合译码算法的性能,采用BPSK调制、AWGN信道,选用Mackay的1A方法生成码长为200、码率1/2的LDPC码进行性能仿真。

3.1 算法性能比较

BF算法、RRWBF算法、UMP BP-Based算法和MIA算法在最大迭代次数为10时的误码率曲线如图1所示。

由图1可以看出,MIA算法误码率性能接近UMP BP-Based算法。

3.2 不同算法迭代次数比较

LDPC码的每种译码算法都要设定算法最大迭代次数,算法迭代次数会随着Eb/No的增大而减小,算法的复杂度一部分决定于算法的平均迭代次数,而MIA算法的平均迭代次数是由RRWBF算法和UMP BP-Based算法的平均迭代次数共同构成的。根据蒙特卡罗法可以计算固定Eb/No值时的算法平均迭代次数,本节设定算法的最大迭代次数为50,BF算法、RRWBF算法、UMP BP-Based算法和LLR BP算法4种不同算法的平均迭代次数曲线如图2所示。

由图2可以得出,当Eb/No=1 dB时,各算法的平均迭代次数如表1所示。

3.3 算法复杂度分析

码率1/2的LDPC码(n,p,2p),各种算法的每次迭代的运算量如表2所示[9]。

由表2可以计算,本文选用Mackay的1A方法生成的码为(200,3,6),每次迭代时RRWBF算法需217次加法,UMP BP-Based算法需850次加法,RRWBF算法运算量是UMP BP-Based算法的1/4。由分析可知,Eb/No=1 dB时,RRWBF算法误码率性能约为10-2,根据分析可知,RRWBF算法平均迭代次数为11,UMP BP-Based算法平均迭代次数为4。可以定义:平均算法复杂度为Iaverage,单次算法复杂度为I,平均迭代次数为N,则Eb/No=1 dB时,UMP BP-Based和MIA算法平均算法复杂度公式分别为

Iundefined=NUMP BP-Based×IUMP BP-Based (7)

Iundefined=NUMP BP-Based×IUMP BP-Based×1%+

NRRWBF×IRRWBF×99% (8)

由此可以计算,在Eb/No=1 dB时,MIA算法平均算法复杂度为2 431次加法,而UMP BP-Based平均算法复杂度为3 400次加法,MIA算法比UMP BP-Based算法运算复杂度降低了28.5%。

4 小结

本文提出的MIA算法先进行了硬判决,后进行了软判决译码,充分发挥了RRWBF算法实现复杂度低,UMP BP-Based算法性能好的优点,实现了在误码率性能没有下降的前提下,译码复杂度明显降低的效果,进而使得传播时延得到减小。根据MIA算法设计的LDPC解码器将会非常适用于质量很差、实时通信要求较高的信道,如临近空间雨衰信道、蜂窝网的城市环境的信道等。设备复杂度有所提高,但对于设备集成度越来越高的今天,这个因素的影响力将越来越小。

摘要:根据LDPC码RRWBF算法和UMP BP-Based算法,提出一种混合迭代译码算法。该算法充分利用硬判决算法具有复杂度低和软判决算法性能好的优点,实现了在误码率性能没有下降的前提下,译码复杂度明显降低的效果,进而使传播时延得到减小。仿真结果表明,经过精心设计的不同迭代次数的MIA算法与性能相当的UMP BP-Based算法相比,译码复杂度降低28.5%。

关键词:LDPC码,RRWBF算法,UMPBP-Based算法

参考文献

[1]GALLAGER R G.Low density parity check codes[M].[S.l.]:MITPress,1963.

[2]肖扬.Turbo与LDPC编解码及其应用[M].北京:人民邮电出版社,2010.

[3]周立媛,张立军,陈常嘉.低密度校验码的混合比特反转译码算法[J].北京交通大学学报,2005,29(2):1673-0291.

[4]KOU Y,LIN S,FOSSORIER M.Low density parity check codes based onfinite geometries:a rediscovery and new results[J].IEEE Trans.Infor-mation Theory,2001,47(7):2711-2736.

[5]GUO F,HANZO L.Reliability ratio based weighted bit-flipping decodingfor low-density parity-check codes[J].IEEE Trans.Electronic Letters,2004,40(21):1356-1358.

[6]KSCHISCHANG F R,FREY B J,LOELIGER H A.Factor graphs and thesum-product algorithm[J].IEEE Trans.Information Theory,2001,47(2):498-519.

[7]FOSSORIER M P C.Iterative reliability-based decoding of low-densityparity check codes[J].IEEE Journal of Selected Areas in Communica-tions,2001,19(5):908-917.

[8]FOSSORIER M R C,MIHALJEVIC M,IMAI H.Reduced complexity it-erative decoding of low-density parity check codes based on belief propa-gation[J].IEEE Trans.Communication,1999,47(5):673-680.

LDPC译码器 篇7

低密度校验(LDPC)码最早由Gallager提出,是一种校验矩阵非常稀疏的线性分组码,即校验矩阵中“1”的个数远小于“0”的个数。Mackay等人的进一步研究表明,LDPC码的性能在置信传播(BP)译码算法下可以接近Shannon极限[1,2]。LDPC码还具有可并行的译码结构、内建的交织作用、低的误码平台和比Turbo码更低的译码复杂度等特点。近年来,具有准循环结构的QC-LDPC码成为了研究热点。QC-LDPC码可以采用移位寄存器的方式进行编码,大大降低了编码复杂度[3]。目前,QC-LDPC码已被广泛应用于各种通信系统中。

LDPC码可以采用BP算法进行译码,但其中的非线性运算较复杂。Min-Sum近似算法较适合硬件实现,且经过一定改进后可以非常接近BP算法的性能[3]。LDPC码的译码是一个不断迭代的消息传递过程。译码过程中需要存储大量的信息,包括各节点的初始信息、外信息、后验信息等[5,6,7]。译码器中的存储空间往往消耗了大量的硬件资源。

针对上述问题,本文提出了一种基于Min-Sum近似算法的QC-LDPC译码器。文中首先对QC-LDPC码、Min-Sum近似译码算法和消息传递调度策略做了简要介绍,接着提出了基于Min-Sum近似的QC-LDPC译码器结构,并针对一种3/4码率的非规则QC-LDPC码对译码器的工作流程进行了阐述,然后研究了信息的非线性量化,最后对译码器的性能进行了分析。

2 QC-LDPC码及其译码

2.1 QC-LDPC码

为了解决LDPC码编码复杂度较高的问题,近年来提出了具有准循环结构的QC-LDPC码,其编码后的码字分块循环后仍是一个码字。QC-LDPC码的校验矩阵HM×N个子矩阵构成。这些子矩阵要么是一个q×q的全零子阵,要么是一个q×q的循环子阵。循环子阵可以是由单位矩阵I循环移位得到的循环置换矩阵,也可以由多个循环置换矩阵构成[8]。QC-LDPC码具有与随机LDPC码相似的性能[9],但由于可以采用移位寄存器的方式进行编码,其编码复杂度与码长成线性关系[3]。又由于其校验矩阵结构的规律性,可以大量减少存储校验矩阵所需的空间,同时也有利于译码过程中对数据的寻址。

2.2 Min-Sum近似译码算法

LDPC码可以采用基于Tanner图的消息传递(MP)算法进行译码。其中,性能最好的是BP算法,其在没有圈存在的情况下等效于最大似然[1]。在BP算法中,信息在变量节点和校验节点之间来回的传递。设Umn(l)Vnm(l)分别为在第l次迭代中校验节点m传递给变量节点n和变量节点n传递给校验节点m的信息,Vn(l)为第l次迭代后变量节点n的后验信息,Vn(0)为从信道获得的变量节点n的对数似然比(LLR)。译码过程包括如下4个步骤:

(1) 初始化:

Vnm(0)=Vn(0)(1)

(2) 校验节点更新:

tanh(Umn(l)2)=n'Ν(m)ntanh(Vn'm(l-1)2)(2)

其中N(m)n表示除变量节点n之外的所有与校验节点m相连的变量节点的集合。

(3) 变量节点更新:

Vnm(l)=Vn(0)+m'Μ(n)mUm'n(l)(3)Vn(l)=Vn(0)+m'Μ(n)Um'n(l)(4)

其中M(n)m表示除校验节点m之外的所有与变量节点n相连的校验节点的集合,M(n)表示所有与变量节点n相连的校验节点的集合。

(4) 奇偶校验:将变量节点的后验信息代入校验方程。若所有校验方程均满足,则判决输出;否则重复步骤2和3,直至满足校验或达到最大迭代次数。

由于式(2)中的非线性运算tanh较复杂,通常采用Min-Sum近似简化译码算法。在Min-Sum近似算法中,式(2)被简化为

Umn(l)=(n'Ν(m)nsign(Vn'm(l-1)))×minn'Ν(m)n|Vn'm(l-1)|(5)

然而,近似的引入带来了译码性能的下降,于是出现了基于Min-Sum近似的各种改进算法。其中,Normalized BP算法将式(5)修改为

Umn(l)=(n'Ν(m)nsign(Vn'm(l-1)))×(minn'Ν(m)n|Vn'm(l-1)|α)(6)

其中α为归一化因子。Offset BP算法将式(5)修改为

Umn(l)=(n'Ν(m)nsign(Vn'm(l-1)))×max{minn'Ν(m)n|Vn'm(l-1)|-β,0}(7)

其中β为偏移因子。改进后的Min-Sum近似算法可以非常接近BP算法的性能[4]。

2.3 消息传递调度策略

译码过程中通常采用Flooding消息传递调度策略。第l次迭代中,首先所有的校验节点信息Umn(l)根据第l-1次迭代中获得的变量节点信息Vnm(l-1)进行更新,接着所有的变量节点信息Vnm(l)根据新获得的校验节点信息Umn(l)进行更新。然而,某些Vnm(l)可以根据式(5)中部分已经计算出的Umn(l)由式(3)计算得到。这些Vnm(l)可以在式(5)中代替Vnm(l-1)对余下的Umn(l)进行更新。这就引入了Shuffled消息传递调度策略。

在Shuffled 消息传递调度策略中,逐变量节点的对信息进行更新,校验节点更新与变量节点更新交错的进行[10]。对于变量节点n,式(5)被修改为

Umn(l)=(n'Ν(m)nn'nsign(Vn'm(l)))×minn'Ν(m)nn'n|Vn'm(l)|×(n'Ν(m)nn'nsign(Vn'm(l-1)))×minn'Ν(m)nn'n|Vn'm(l-1)|(8)

针对QC-LDPC码准循环的校验矩阵结构,可以将码字中的比特对应的分为G组,每组包含q个比特。采用Group Shuffled消息传递调度策略,逐组的对信息进行更新。类似的,还有Turbo消息传递调度策略,即逐校验节点的对信息进行更新。由于本次迭代中更新后的信息马上参与了之后的信息更新,可以大大加快译码收敛速度。

3 QC-LDPC译码器结构

为了减少译码过程中所需的存储空间,我们重新安排Min-Sum近似算法中的运算。在变量节点更新中,变量节点n无需将所有的变量节点信息Vnm(l)发送给与之相连的校验节点,而只计算出变量节点后验信息Vn(l)。校验节点m根据上次迭代中的校验节点信息Umn(l),可以利用式(9)计算出相应的Vnm(l)

Vnm(l)=Vn(l)-Umn(l)(9)

在校验节点更新中,校验节点m也无需将所有的Umn(l)发送给与之相连的变量节点。注意到在Min-Sum近似算法中,Umn(l)的值存在着冗余,即Umn(l)的绝对值要么取决于Vn'm(l-1), n'∈N(m) 绝对值的最小值,要么取决于Vn'm(l-1), n'∈N(m) 绝对值的次小值。我们将Umn(l)以一种压缩冗余的形式表示,即由Umn(l)的符号signmn(l)Vn'm(l-1), n'∈N(m) 绝对值的最小值minm(l-1)、次小值sub_minm(l-1)和取得上述最小值的变量节点的序号indexm(l-1)来表示。这样,变量节点n可以利用式(10)和(11)计算出相应的Umn(l)

|Umn(l)|={f(minm(l-1)),n=indexm(l-1)f(sub_minm(l-1)),(10)Umn(l)=signmn(l)×|Umn(l)|(11)

其中函数f (x) 针对不同的Min-Sum近似算法有不同的形式,如归一化或偏移处理等。

图 1为基于上述Min-Sum近似算法的QC-LDPC译码器结构。其中,LLR缓存存储变量节点初始信息Vn(0),Prob缓存存储变量节点后验信息Vn(l),Sign缓存存储校验节点信息Umn(l)的符号,Min、Sub_Min和Index缓存分别存储参与同一个校验节点更新的变量节点信息Vmn(l-1)绝对值的最小值、次小值和取得上述最小值的变量节点的序号。为了提高缓存的访问效率,可以将minm(l-1)、sub_minm(l-1)和indexm(l-1)合并为一个字来存储,其分别占用指定的位段,这样可以将Min、Sub_Min和Index缓存合并为一个缓存。

变量节点更新功能单元(VNU)结构如图 2 (a)所示。VNU根据Sign、Min、Sub_Min和Index缓存中的signmn(l)、minm(l-1)、sub_minm(l-1)和indexm(l-1),利用式(10)和(11)通过选择计算(S&C)得到相应的Umn(l)。VNU根据式(4)将Umn(l)和LLR缓存中的Vn(0)进行求和,得到更新后的Vn(l),存入Prob缓存。

校验节点更新功能单元(CNU)结构如图 2 (b)所示。CNU同样根据Sign、Min、Sub_Min和Index缓存中的值,利用式(10)和(11)得到相应的Umn(l)。同时根据Prob缓存中的Vn(l),利用式(9)计算出相应的Vnm(l)。CNU根据Vnm(l)的符号,计算出更新后的Umn(l+1)的符号signmn(l+1),存入Sign缓存。同时对Vnm(l)的绝对值进行比较,得到更新后的minm(l)、sub_minm(l)和indexm(l),分别存入Min、Sub_Min和Index缓存。

4 译码器工作流程

某码长L=9216、码率为R= 3/4的非规则QC-LDPC码,其校验矩阵H由9×36个子矩阵构成,每一个子阵的大小为q = 256。H可以分为M = 9个行块,每一行块中循环置换矩阵的数量为Ri ( i = 1, 2, …, 9);可以分为N = 36个列块,每一列块中循环置换矩阵的数量为Cj ( j = 1, 2, … , 36 )。H中共有

Κ=i=19Ri=j=136Cj(12)

个循环置换矩阵。针对QC-LDPC码校验矩阵准循环的特性,译码过程中以块为单位对信息进行更新。

变量节点更新以列块为单位进行。在对第j ( j = 1, 2, … , 36 ) 列块进行变量节点更新时,由于每一列块中参与同一变量节点更新的校验节点的位置具有准循环的特性,VNU根据该列块中Cj个循环置换矩阵相对于单位矩阵的偏移量,采用循环寻址,可以方便的找到参与每一个变量节点更新的Cj个signmn(l)、minm(l-1)、sub_minm(l-1)和indexm(l-1)在Sign、Min、Sub_Min和Index缓存中的位置。利用式(10)、(11)和(4)进行变量节点更新。

校验节点更新以行块为单位进行。在对第i ( i = 1, 2, … , 9 ) 行块进行校验节点更新时,由于每一行块中参与同一校验节点更新的变量节点的位置具有准循环的特性,CNU根据该行块中Rj个循环置换矩阵相对于单位矩阵的偏移量,采用循环寻址,可以方便的找到参与每一个校验节点更新的RiVn(l)在Prob缓存中的位置。根据式(10)、(11)、(9)和不同的Min-Sum近似算法进行校验节点更新。

在Flooding 消息传递调度策略中,首先对所有行块进行校验节点更新,然后对所有列块进行变量节点更新。而根据Group Shuffle消息传递调度策略,可以对应36个列块,将变量节点分为36个组。首先对第1列块相关的行块进行校验节点更新,即对第1列块中C1个循环置换矩阵所在的行块进行校验节点更新,然后对第1列块进行变量节点更新。接着对第2列块相关的行块进行校验节点更新,再对第2列块进行变量节点更新,依次类推。将上述行块和列快的更新顺序互换,则可以实现Turbo消息传递调度策略。

5 非线性量化

为了进一步减少译码器所需的存储空间,可以对信息采用非线性量化。在线性量化中,大的量化间隔会引入较大的量化噪声,导致译码性能的下降;而减少量化比特数则会缩小信息的动态范围,影响译码收敛速度。非线性量化可以较好的平衡量化间隔和量化比特数之间的矛盾。

量化规则通常需要根据信息的概率密度函数(pdf)进行选择。密度演进理论可以用于跟踪迭代过程中信息pdf的变化[2]。设Pv(x)和Pu(x)分别为变量节点信息Vnm(l)和校验节点信息Umn(l)的pdf。假设LDPC码的校验矩阵中没有圈的存在,且在分析时假设发送的是全零码[2]。对于变量节点更新,由于式(3)中Vn(0)Umn(l)均为独立的随机变量,Vnm(l)的pdf可由其pdf的卷积得到。考虑到变量节点度分布函数λ (x),有

Ρv(x)=F-1(F(Ρ0(x))λ(F(Ρu(x))))(13)

其中F表示傅立叶变换,P0(x)为变量节点初始信息Vn(0)的pdf,其可以根据具体的信道类型和调制方式计算得到。对于校验节点更新,针对式(5),且考虑到校验节点度分布ρk ,有

Ρu(x)=k=2dCk-12((Ρv(x)+Ρv(-x))(φ+(|x|)+φ-(|x|))k-2+(Ρv(x)-Ρv(-x))(φ+(|x|)-φ-(|x|))k-2)(14)

其中函数

φ+(|x|)=x+Ρv(v)dv=-xΡv(v)dv(15)

注意到在Min-Sum近似算法中,校验节点更新可以直接基于量化值进行,因此只需对变量节点信息进行非线性量化。根据对称性,实际中Vnm(l)的pdf为

pdfv(x)=12(Ρv(x)+Ρv(-x))(16)

设选用b比特量化,量化值为xt ( t = 1, 2, … , 2b )。信息x的量化值Q(x)=xt,当满足

(x-xt)2(x-xs)2,s=1,2,,2b(17)xt=x{Q(x)=xt}xpdfv(x)dx(18)

我们需要找到最佳的量化值x*t,使得代价函数

C=t=12bx{Q(x)=xt}(x-xt)2pdfv(x)dx(19)

最小。x*t 可以通过基于约束条件(17)和(18)的最优化搜索得到。

6 性能分析

对第4节中3/4码率的非规则QC-LDPC码进行译码。编码后的比特采用BPSK调制。译码器采用Normalized BP算法,归一化因子α = 1.25,最大迭代次数为20。

图 3为AWGN信道下不同比特量化时的误码率(BER)曲线。图 4为AWGN信道下不同比特量化时的平均迭代次数(AI)。可以看出,选用6比特线性量化与浮点相比几乎没有性能损失。选用4比特非线性量化可以接近6比特线性量化时的性能,而译码器所需的存储空间可以减少约1/3。图 5为选用4比特非线性量化时,Group Shuffled和Flooding消息传递调度策略下的平均迭代次数。可以看出,采用Group Shuffled调度策略可以大大加快译码收敛速度,在信噪比Eb/N0 = 3.0 dB时,平均迭代次数比Flooding减少约40 %。

不难推得,本文中的译码器与通常的译码器所需存储空间的比值

δ=(Κq+(1-R)Ν(2(b-1)+log2(maxRi))+Νqb)/(Κqb+Νq)(20)

b = 4时,对于上述码率R = 3/4的QC-LDPC码,可以减少约35 %的存储空间。且比值δ为码率R的单调递增函数,随着R的提高,所节省的存储空间将进一步的增加。又注意到Sign、Min、Sub_Min和Index缓存的存储单元数都只与校验矩阵的行块数M有关,对于校验矩阵中循环置换矩阵数K较多的非规则QC-LDPC码,该译码器的存储空间有效性更为明显。

7 结论

针对译码过程中需要存储大量信息的问题,本文提出了一种基于Min-Sum近似算法的QC-LDPC译码器。通过重新安排Min-Sum近似算法中的运算,并将校验节点信息以一种压缩冗余的形式表示,大大减少了译码器所需的存储空间。充分利用QC-LDPC码校验矩阵准循环的特性,译码过程中以块为单位对信息进行更新,且可以实现多种消息传递调度策略。仿真结果表明,采用Group Shuffled调度策略可以大大加快译码收敛速度。为了进一步减少存储空间,对变量节点信息采用了非线性量化,根据密度演进理论对量化规则进行了优化。仿真结果表明,选用4比特非线性量化与浮点相比仅有0.1 dB的性能损失。对于文中3/4码率的QC-LDPC码,该译码器可以减少约35 %的存储空间。且随着码率的提高,所节省的存储空间将进一步的增加。对于校验矩阵中循环置换矩阵数较多的非规则QC-LDPC码,该译码器的存储空间有效性更为明显。

参考文献

[1]D.J.C.MacKay.Good Error-Correcting Codes Basedon Very Sparse Matrices[J].IEEE Transaction on Infor-mation Theory,1999,45(2):399-431.

[2]T.J.Richardson,R.L.Urbanke.The Capacity of Low-Density Parity-Check Codes under Message-Passing Deco-ding[J].IEEE Transaction on Information Theory,2001,47(2):599-618.

[3]Z.W.Li,L.Chen,L.Q.Zeng,et al.Efficient Enco-ding of Quasi-Cyclic LDPC Codes[J].IEEE Transactionon Communications,2005,54(1):71-81.

[4] J. Chen, A. Dholakia, E. Eleftheriou, et al. Reduced-Complexity Decoding of LDPC Codes [J]. IEEE Transaction on Communications, 2005, 53(8): 1288-1299.

[5]T.Zhang,K.K.Parhi.An FPGA Implementation of(3,6)-Regular Low-Density Parity-Check Code Decod-er[J].EURASIP Journal on Applied Signal Processing2003,6:530-542.

[6] Y. Chen, K. K. Parhi. Overlapped Message Passing for Quasi-Cyclic Low-Density Parity-Check Codes [J]. IEEE Transaction on Circuits and Systems, 2004, 51(6): 1106-1113.

[7] L. Yang, H. Liu, C. J. R. Shi. Code Construction and FPGA Implementation of a Low-Error-Floor Multi-Rate Low-Density Parity-Check Code Decoder [J]. IEEE Transaction on Circuits and Systems, 2006, 53(4): 892-904.

[8] M. P. C. Fossorier. Quasi-Cyclic Low-Density Parity-Check Codes From Circulant Permutation Matrices[J]. IEEE Transaction on Information Theory, 2004, 50(8): 1788-1793.

[9] L. Chen, J. Xu, I. Djurdjevic, et al. Near Shannon Limit Quasi-Cyclic Low-Density Parity-Check Codes [J]. IEEE Transaction on Communications, 2004, 52(7): 1038-1042.

LDPC译码器 篇8

LDPC码是一种具有稀疏校验矩阵的 (n, k) 线性分组码, 其具有逼近香农 (Shannon) 限的优良性质[1]。近年的研究表明, LDPC码是一类性能优异的好码, 它比Turbo码在技术上更具有优势, 更能适应未来通信系统高速数据传输和高性能的要求[2]。

LDPC码基于稀疏校验矩阵的特点使得它存在高效的译码算法, 能够克服分组码在码长较长时所面临的巨大译码计算量[3], 便于硬件实现。因此, 开展相关标准的技术开发和设计工作是十分重要和必要的, 相关技术的研究成为当前通信技术方面的一个研究的重点和热点。

1 CCSDS标准中的LDPC码

CCSDS标准实验规范由2部分组成: (1) 描述了一种码率为7/8的LDPC码, 该码的特点和性能适用于近地 (Near-earth) 应用; (2) 描述了一组多码率的LDPC码, 该码组的设计特点和性能适用于深空 (Deep-space) 应用[4]。这里采用深空通信中所采用的编译码方案。方案中定义了9种深空中适用的LDPC码, 信息位的长度分为1 024、4 096和16 384三种, 码率也分为1/2、2/3和4/5三种。1/2码率的LDPC码校验矩阵表示为:

式中, IM和0M分别表示M×M的单位矩阵和全零矩阵;Π1~Π8表示交织矩阵;交织矩阵Πk在第i行和第πk (i) 列i∈{0, ……M-1}非零, 其余元素为零。πk (i) 的定义如下:

M的取值不同可以获得不同码长的1/2码率的LDPC码。4/5码率的LDPC码校验矩阵可由矩阵H1/2经过简单扩展得到。

2 译码算法

2.1 归一化最小和算法

LDPC码常用的软判决译码算法是基于置信传播 (BP) 算法[5,6], 也称为和积译码算法, 但该算法校验节点计算中函数运算硬件实现复杂度很高, 不利于高速译码器的实现。归一化最小和 (NMS) 算法对和积译码算法校验节点消息更新过程进行了简化[7], 归一化最小和算法译码的步骤如下:

(1) 计算信道传递给变量节点的初始概率似然比信息L (Pi) , i=1, 2, …n;然后对每一个变量节点i, 设定变量节点传向校验节点初始信息表示为:

式中, yi为信道软比特信息;

(2) 计算第l次迭代时校验节点传向变量节点的消息:

(3) 计算第l次迭代时变量节点传向校验节点的消息:

(4) 硬判决译码, 对所有变量节点计算硬判决消息:

若L (l) (qi) >0, 则判决

(5) 若Hc^T=0或者到达最大迭代次数, 则结束运算, 输出判决结果, 否则重复步骤 (1) ~步骤 (4) 。

其中, α为归一化补偿因子;Rj为校验节点j相邻的变量节点集合;Ci为变量节点i相邻的校验节点集合;Rj/i为集合Rj中除变量节点i以外的所有元素;Ci/j为集合Ci中除变量节点j以外的所有元素。

2.2 信息量化

信息量化的主要目标是找到一个定点表示模型, 在性能衰减的可接受范围内用尽可能少的位宽表示数据[8]。降低数据占用的位宽, 能够减小译码器消耗的硬件资源、降低功耗的同时提高处理器的运行速度。

本文通过大量仿真验证, 确定在外信息和信道信息均为8 bits量化的情况下, 15次迭代的归一化最小和算法译码性能损失较小。因此本方案的译码器量化比特数选择为8 bits, 其中1 bit表示符号, 3 bits表示整数位, 5 bits表示小数位, 归一化补偿因子α为0.75, CCSDS (5120, 4096) LDPC码在量化前后的性能对比如图1所示。

2.3 译码器结构

归一化最小和译码算法实现结构有3种:串行结构、全并行结构和部分并行结构[9]。本文综合考虑译码器占用资源和运行速度之间的矛盾, 采用部分并行结构实现高速LDPC译码。

部分并行译码器的结构主要包含5个部分:输入缓存模块RAM_A集合、输出缓存模块_B、校验节点计算单元CFU集合、变量节点计算单元VFU集合和迭代信息存储阵列。部分并行译码器结构如图2所示。

输入缓存模块RAM_A集合用于存储信道初始软比特信息, 包含n个RAM存储块;校验节点计算单元CFU集合用于完成校验节点到变量节点的信息更新计算, 即完成式 (4) 的运算;变量节点计算模块VFU集合用于完成变量节点到校验节点的信息更新计算, 同时计算变量后验概率并进行硬判决译码输出, 即完成式 (5) 和式 (6) 的运算;存储阵列用于存储校验节点和变量节点信息, 由m×n个基本存储单元组成;输出缓存模块用于存储译码输出码字。

在传统的LDPC译码器译码工作过程中, CFU和VFU两者是交替工作的, 译码器在同一时刻只能进行一种运算, 硬件的利用率不足。为了提高译码效率, 文献[10]提出了一种2帧数据同时译码, 译码器中CFU和VFU计算单元交替处理2帧不同的信息的译码设计方法。两帧并行译码CFU和VFU更新时序图如图3所示。

译码器在一次译码迭代过程中同时读入2帧数据, 在同一时刻VFU和CFU分别处理不同的数据帧, 交替进行。由于CFU和VFU交替处理2帧不同的数据, 该方法下设计的译码器接近传统设计方法的2倍, 大大提高了译码效率[11]。

2.4 吞吐量分析

吞吐量是指译码器在单位时间内能够接收并完成译码的最大数据速率, 吞吐量计算为:

式中, n为LDPC码的码长;fc为译码器工作时钟频率;R为码率;N为译码器同时译码的帧数;b为LDPC码子矩阵的维数;Niter为译码器的迭代次数。

中码长n等于5 120;译码器工作时钟fc等于150 MHz;码率R等于4/5;译码器采用2帧同时译码, N=2;校验矩阵划分为12行, 44列的子矩阵, 每个子矩阵是维数为128的方阵;译码器的迭代次数Niter等于15次, 采用式 (8) 可以计算得到译码器的吞吐量为320 Mbps。

3 译码性能仿真结果分析

为了验证上述译码器性能, 对CCSDS中定义的 (5 120, 4 096) 译码器在AWGN信道下的译码器性能进行了仿真。调制方式采用BPSK调制, NMS算法中使用的归一化因子为α=0.75。不同迭代次数下 (5 120, 4 096) LDPC码的译码性能曲线如图4所示。

仿真中归一化最小和算法的迭代次数分别选取15次、20次、30次和50次。作为对比, 图4还给出了采用标准和积算法 (BP) 迭代50次的译码性能曲线, 从图4中可以看出, 采用归一化最小和算法迭代50次 (NMS) 与标准和积算法 (BP) 迭代50次相比较性能损失约为0.1 d B。在不同迭代次数的归一化最小和算法 (NMS) 中, 用15次迭代相对于50次迭代性能损失约为0.4 d B, 在可接受的范围之内, 因此在实现过程中选取的迭代次数为15次。

根据所提出的部分并行译码器结构, 在硬件可编程逻辑器件 (FPGA) 上实现了码率为4/5, 码长为5 120的LDPC码的译码算法。FPGA器件选用Xilinx公司的Virtex6系列芯片XC6VLX240T, 采用Verilog HDL硬件描述语言完成了各个模块的寄存器传输级 (RTL) 描述。利用Model Sim 7.2仿真工具进行了功能仿真验证。用Xilinx ISE 14.3综合工具进行了综合、布线, 译码器占用的查找表为56 695块, 占总查找表数的37%;占用的寄存器为53 922, 占总寄存器数的17%;占用的存储器为10 883, 占总查找表数的30%。

4 结束语

针对CCSDS标准中定义的码长为5 120、码率为4/5的LDPC码, 根据其校验矩阵的低密度准循环特性, 设计了基于部分并行结构的采用2帧交替译码的译码器。经过实际测试, 译码器可以在主频为150 Mhz的条件下稳定工作, 满足高速通信的性能要求。

摘要:简要介绍了准循环低密度奇偶校验 (LDPC) 码的重要性, 对CCSDS标准定义的LDPC码进行了深入研究。针对LDPC码的校验矩阵具有稀疏准循环特性, 对归一化最小和译码算法进行了研究, 给出了部分并行译码器的结构。通过数值仿真验证了译码算法在高斯白噪声条件下的译码性能。利用现场可编程逻辑器件 (FPGA) 对CCSDS标准中定义的 (5120, 4096) 码进行了实现。

关键词:CCSDS,低密度奇偶校验码,归一化最小和算法,译码器

参考文献

[1]李志勇, 李文铎.一种高速LDPC编译码器的设计与实现[J].无线电工程, 2009, 39 (7) :17-19.

[2]李刚, 黑勇, 仇玉林.IEEE 802.16e中LDPC译码器的实现[J].嵌入式系统应用, 2008, 24 (10) :18-19.

[3]LI Z W, CHEN L, ZENG L Q, et al.Efficient Encoding ofQuasi-Cyclic Low-Density Parity-Check Codes[J].IEEETransactions on Communications, 2006, 54 (1) :71-81.

[4]冉旭.CCSDS深空通信标准LDPC码编译码器设计[D].西安:西安理工大学, 2010:17-18.

[5]FOSSORIER M, MIHALJ EVIC M, LMAI H.ReducedComplexity Iterative Decoding of Low Density ParityCheck Codes Based on Belief Propagation[J].IEEETransactions on Communications, 1999, 47 (5) :673-680.

[6]魏瑞刚, 陈晖, 邱金蕙, 等.高速数据传输中的LDPC码译码算法研究[J].无线电工程, 2011, 41 (3) :20-22.

[7]谭林, 朱江, 杨军, 等.近地应用CCSDS标准LDPC码动态补偿译码算法研究[J].电子设计工程, 2011, 19 (18) :36-38.

[8]赵建功, 刘香玲.准循环LDPC码的部分并行译码算法[J].无线电工程, 2012, 42 (2) :55-57.

[9]乔华, 管武, 董明科, 等.LDPC码高速译码器的设计与实现[J].北京大学学报 (自然科学版) , 2008, 44 (3) :347-352.

[10]野晓东, 马林华, 王卫民, 等.基于整数运算的LDPC码最小和译码算法[J].通信学报, 2010, 31 (6) :106-111.

本文来自 360文秘网(www.360wenmi.com),转载请保留网址和出处

【LDPC译码器】相关文章:

LDPC译码09-04

Turbo译码器08-05

RS译码器09-09

二进制译码器05-08

自动译码07-13

Viterbi译码05-27

迭代译码算法07-16

解读《达·芬奇译码》07-01

译码软件系统09-15

数字译码显示电路心得体会05-27

上一篇:会计准则国际化探究下一篇:国际形象分析