文献标识码: A
文章编号: 0258-7998(2014)09-0101-04
LDPC(Low Density Parity Check Code)码是一种性能优异的线性分组码,其性能非常接近于Shannon极限且具有很强的纠错能力。但自LDPC码被发明以来就存在一个阻碍其发展的巨大障碍。众所周知,一般的线性分组码是通过其生成矩阵实现编码。而LDPC码的校验矩阵虽然是稀疏的,但生成矩阵却不是稀疏矩阵。由于LDPC码的编码长度都很长,因此复杂的生成矩阵为编码带来了巨大困难。后来,人们利用其校验矩阵的特点实现了快速编码。即便如此,当码长很长时编码所需的存储空间仍然非常庞大,学者们也在不断探索高性能的编码方法。
目前,LDPC码已开始逐渐应用于空间通信、光纤通信、数字视频和音频广播等领域。LDPC码的编码标准主要有:DVB-S(DigitalVideoBroadcasting-Sa-tellite)标准、DVB-S2[1]标准、CCSDS(Consultative Committee for Space Data Systems)标准[2]、GB20600标准[3]、IEEE802.16e标准[4]等。LDPC编码已经在IEEE802.16e标准中作为专用传输码使用。DVB-S2是新一代数字卫星广播的标准,与DVB-S标准相比,其传输容量增益可达30%。CCSDS标准中的LDPC码包括近地和深空应用。GB20600标准中的LDPC码主要用于数字电视地面广播系统。本文主要研究IEEE 802.16e标准中LDPC码快速编码的实现方法,并将其与DVB-S2标准的LDPC缩短码的性能进行比较。
1 IEEE802.16e标准中的LDPC码校验矩阵的构造方式
IEEE802.16e标准中定义的LDPC码是一种准循环的非规则LDPC码,共有4种速率[4]。每一种速率都有相应的校验矩阵H。Hb是H的基校验矩阵,Hb经过扩展后可得到H,Hb的尺寸为mb×nb,具体构成见式(1)。nb的长度固定为24,mb的长度根据码速率不同而异。Hb1是一个mb×(nb-mb)矩阵。Hb2是一个mb×mb矩阵。q称为扩展系数,Hb可通过mb·q×nb·q的扩展方式获得校验矩阵H。
Hb1中的元素由-1或非负整数组成,若为-1,则校验矩阵H相应的位置是全0矩阵;若为非负整数,则校验矩阵H相应的位置是单位矩阵E进行非负整数次右移所得的矩阵。Hb2的第一列中h(1)、h(r)、h(mb)为非负整数,且h(1)=h(mb)。r的取值范围为2≤r≤mb-1,其具体值由IEEE802.16e标准指定。Hb2除第一列外,其余部分构成准双对角线结构,两条准对角线上的元素为0,其他位置为-1。Hb2的元素构成见式(2)。
根据IEEE802.16e标准,基矩阵Hb的扩展系数q共有19种取值,分别对应19种码长,最小为24,最大为96,具体的扩展规则见参考文献[4]。设基校验矩阵中处于位置(i,j)的元素为q(i,j)。以1/2速率的LDPC码为例,当q=96时,1/2速率的LDPC码的基校验矩阵为式(3),q(i,j)的更新方法见式(4),表示向下取整。
2 IEEE802.16e标准中LDPC码的FPGA实现
2.1 LDPC码的快速编码算法
将线性方程组式(5)中的各行都加在第一行,可推出:
2.2 快速编码算法的FPGA实现
以q=24、速率为1/2的LDPC码为例,其基校验矩阵根据式(3)、(4)计算可得到式(10),其中mb=nb-mb=kb=12。
根据式(6)可推得:
设输入序列s的长度为mb·q,每个时钟上升沿输入的位宽为q,即每次输入为si。可以定义kb个寄存器ZH,每个寄存器的位数为q位。利用上述寄存器来存储输入序列与基矩阵每一列的乘积,这个乘积在每个时钟周期进行更新。在更新时需计算当前值与乘积值的异或。在校验位计算中经常需要计算的乘积,
表示基校验矩阵Hb1中位于(i,j)位置的元素。由于该元素表示单位矩阵的移位,所以其与输入数据序列sj的乘积等效为输入数据序列的循环移位。当单位矩阵是右移时,乘积等效为输入序列的循环右移;当单位矩阵是左移时,乘积等效为输入序列的循环左移。利用这个特性可以大大简化序列与矩阵之间的乘法运算。图1表示编码的详细计算流程。在序列s12输入后,每个ZHi(i=1,2…12)寄存器中就会得到
将上述编码方法用HDL在Quartus II中实现,并分别在EP2C70F896C6、EP2S15484C3上实现综合和布线。逻辑资源占用情况如表1所示。对于不同的器件,消耗的逻辑资源各异,同时布线后逻辑单元的延迟也不尽相同。使用Stratix II系列的器件相比Cyclone II系列的器件的时钟频率提高了约50%。可以预见,如果提升输入和输出的位宽,逻辑单元间附加延迟会导致时钟频率略有降低,但由于并行度的增加,将显著提升数据吞吐速率。
在EP2C70F896C6上的时序仿真如图2所示。在仿真开始前首先复位使系统进入初始状态。工作时钟为50 MHz,输入序列s1=FF0000,s2=s3=…=s11=000000,s12=FFFFFF。输出的校验码序列为p1=F87C7B,p2=F0F8F7,…。在原码输出与校验位输出之间有一个等待周期。与参考文献[5]相比,考虑到预处理的时间以及输入和输出均需要大长度高速串/并、并/串转换,实际的系统性能会有一定程度下降。与参考文献[5]、[6]相比,本设计利用高速状态机实现,具有实时性强,不需要进行大长度串/并、并/串转换的优点,而且也不需要对基矩阵进行预处理和分割,对输入/输出的制约小,具有较高的性能。
3 IEEE802.16e和DVB-S2标准ldpc码的性能比较
本设计实现了q=24下,1/2速率的IEEE802.16e标准的LDPC码的快速编码。根据图3左图所示,在q=24时其HT·H结果中只有主对角线上的元素大于1,其他元素均小于等于1。根据参考文献[7],本校验矩阵中无4环,具有良好的译码性能。DVB-S2标准的LDPC码分为长码和短码两种,长度分别为64 800 bit和16 200 bit。由于码长较长,LDPC码编解码器实现具有相当难度,因此将本设计与DVB-S2标准的LDPC缩短码比较,缩短方法见参考文献[8]。由于长度24·q=576的IEEE802.16e标准LDPC码没有适当的q1值可使DVB-S2缩短码的码长与之相等,取q1=15,速率为1/2,则DVB-S2缩短码的码长为n=600。在高斯白噪声信道中进行性能仿真。仿真信道的调制方式为BPSK,采用BP译码算法,最大迭代次数为500次。对于200帧随机数据,每帧长度分别为288 bit和300 bit,分别进行编码调制和接收译码。最后的仿真曲线如图4所示。可见在码长基本相同的条件下,IEEE802.16e标准的LDPC码较DVB-S2缩短码具有优异的BER性能。图3右图是n=600的情况下DVB-S2缩短码的HT·H数值分布。由图中可见有大量4环位于校验矩阵H中,这也是其BER曲线中存在误码平台的原因。
本文对IEEE802.16e标准的LDPC码的快速编码算法进行了研究,并在FPGA上实现了q=24、n=576、速率为1/2的LDPC码快速编码器。时序仿真的结果显示该编码器具有良好的实时编码性能,资源占用少,性能优良。同时,该编码器具有良好的可扩展性。当q不同时,只要增加并行输入输出的位宽和内部寄存器位数即可灵活改变码长。其误码率在相同的信噪比下优于长度相近的DVB-S2标准的LDPC缩短码。因此,该编码器具有良好的实用价值。
参考文献
[1] DVB-S2 standard draft ETSI EN 302 307 V1.1.1[S].2004.
[2] CCSDS131.1-0-2.Low density parity check codes for use in near-earth and deep space applications[S].CCSDS,2007.
[3] 中华人民共和国国家标准.数字电视地面广播标准(GB20600)[S].2006.
[4] IEEE P802.16e/D8[S].IEEE Standard for Local and Metropo-litan Area Networks Part 16:Air Interface for Fixed and Mobile Broadband Wireless Access Systems,May 2005.
[5] 李超,石磊.基于IEEE802.16e标准的LDPC编码器设计与实现[J].电子科技,2011,24(6):40-42.
[6] 俞华梁,毛志刚,张函隽.IEEE802.16e标准的LDPC编码器设计及硬件实现[J].信息技术,2008(4):63-66.
[7] XIAO Y,LEE M H.Low complexity MIMO-LDPC CDMA systems over multipath channels[J].IEICE Trans.,2006,89(5):1713-1717.
[8] 肖扬.Turbo与LDPC编解码及其应用[M].北京:人民邮电出版社,2010.