基于IEEE802.1 6e标准的LDPC编码器设计与实现
扫描二维码
随时随地手机看文章
摘要 根据IEEE802.16e标准中对LDPC码的定义,利用FPGA对编码器进行了实现。所采用的算法使用了线性复杂度编码,降低了逻辑资源占用量,并提高了编码速度。
关键词 IEEE 802.16e标准;低密度奇偶校验码;编码器
1962年Gallager在对纠错编码的研究中提出了LDPC码,但是由于当时的硬件条件不足,直到90年代末随着超大规模集成电路的推广才真正为人们所重视。虽然在高斯信道中LDPC(Low Density Parity Check,低密度奇偶校验码)码相比其他编码方法具有更优良的性能,但是由于其逼近香农限的性能是在较长的码长情况下才能得到体现,使得实现起来具有相当大的复杂度,即便是当今的超大规模集成电路也很难直接实现较长码长的编码和解码。于是如何构造和改进LDPC码成为目前研究的热点,而准循环低密度奇偶校验码的发现,为LDPC编译码的硬件实现提供了可能。QC—LDPC码具有更好的结构性与随机性,在保证码的信道性能不变的前提下,极大的简化了编码和译码电路,是目前实现LDPC编译码器的主流算法。正是由于这些优势,LDPC码已被WIMAX(IEEE802.16e)、WLAN(IEEE802.11n)、DVB-T等标准选定为信道编码的备选编码,并且极有可能成为第四代无线通信的编码标准。
1 IEEE802.16e标准中对LDPC码的规定
IEEE802.16e标准中LDPC码的校验矩阵为
其中,Pij被定义为z×z的单位变换矩阵或零矩阵,单位变换矩阵是通过对单位矩阵循环右移得到的。LDPC码是由的效验矩阵日定义,其中m是校验位的长度,n是码长的长度。基本矩阵中的移位集{p(i,j)}是用来决定相同码率不同码长的移位大小,对于码率1/2、3/4A、3/4B、2/3B和5/6的各种码,p(i,J)p(i,j)由式(2)决定。
其中,[x]表示不大于x的最大整数。([x]为取整函数)。
在IEEE802.16e标准中各种码长和码率的校验矩阵H都是由基本矩阵Hb膨胀得到的,每个基本矩阵有24列,膨胀因子z=n/24(n为码长)。
IEEE802.16e标准支持码长从576到2 304共19种码长。
IEEE802.16e中对于不同码率的LDPC码给定了不同的基本矩阵,以码率为1/2的码为例,基本矩阵Hb如图1所示。
图1中-1为全零阵;0为单位阵,其余标号为相应右移次数的单位阵。
2 基于IEEE802.16e的LDPC码的快速编码算法
高编码复杂度是LDPC码需要解决的主要问题,LDPC编码器直接实现具有和码长成二次方的时间复杂度,而Turbo码可以在线性时间内编码。于是如何使得LDPC码能够在与码长成线性时间内编码就成为一个非常关键的问题。
IEEE802.16e标准中规定的LDPC码是一种结构性码,其算法大大的降低了LDPC码的编码复杂度。但是如果采用传统的编码方法,其编码复杂度仍令人难以接受。校验矩阵H得到的生成矩阵是一个稀疏矩阵,所以可以根据校验矩阵H的稀疏性以及准循环特性来进行快速编码。
IEEE802.16e标准中给出了3种LDPC快速编码的算法。由于第3种编码方式是最常用的,而且已经比较成熟,现只对第3种编码方式进行说明。
为了说明效验矩阵结构,现将其分割为6个子矩阵表示
3 LDPC编码算法的实现
根据上述编码算法,FPGA程序实现了0.5码率,码长为2 304 bit,信息位为1 152 bit数据流的编码。每帧送入1 152 bit原始数据流,经过编码后产生1 152 bit效验位,因为是系统码,所以将原始信息位后紧跟效验位就可以合并成所要发送的编码码流。编码器的硬件总体结构如图2所示。
从图2可以看出,LDPC编码器中主要包含矩阵乘法模块,前项置换模块,矢量加法模块,以及生成码字模块。现对矩阵乘法模块,前项置换模块和码字生成模块进行介绍。
(1)矩阵乘法器模块:主要由循环移位器和模二加法器组成。由于FPGA运算的并行特点,编码器在计算矩阵乘法时可按行并行操作。输入的原始信息比特流与效验矩阵Hb的每一行进行相乘运算时,首先按照RAM中存储的非零列号找到相对应的信息位中的矢量,并对该矢量进行循环右移,循环右移的次数依照IEEE802.11e标准的规定进行控制,然后把这一行中的所有非零元素和信息位相乘所得结果做一次异或操作,这就是矩阵的一行与信息位相乘的结果。该过程可以并行执行,同时完成矩阵中每一行与信息位的相乘运算。
(2)前项置换器模块:IEEE802.16e标准中规定,LDPC码的效验矩阵r是双对角矩阵,所以对于乘矩阵T的逆的操作采用前项置换方法,其原理如下:
所以在FPGA中进行乘矩阵r的逆的计算,不必进行求逆和相乘运算,仅用异或运算就能完成。
(3)生成码字模块:主要作用是将原始信息位与效验位p1和p2合成。在IEEE802.16e标准中规定LDPC码为系统码,所以将原始信息位与效验位p1和p2按顺序依次拼接起来,就是实际编码后数据。
4 FPGA仿真结果分析
在QuartusⅡ软件下进行编译和综合,器件选择为Altera公司STRATIXII系列的EP2S90F1020C3,整个LDPC编码器最高工作时钟214 MHz,逻辑资源占用3 027 LE。LDPC码编码仿真结果如图3所示。
code_rden:编码器使能标志,高电平说明LDPC编码器正在工作。
matlab_code:LDPC编码的Matlab仿真结果输出。
ldpc_code:LDPC编码的FPGA仿真结果输出。
result_out:比对Matlab与FPGA仿真结果,输出码流进行相减一直为零,说明仿真结果正确。
5 结束语
文中分析了基于IEEE802.16e标准的LDPC码的校验矩阵H,然后在QuartusⅡ平台下根据分块矩阵的快速编码算法设计了一种编码器,满足IEEE802.16e标准的码长为2 304,码率为1/2的LDPC码的编码要求,并仿真验证了LDPC编码器的性能。仿真结果证明通过合理的构造LDPC码的校验矩阵以及选择合适的编码算法,可以有效降低编码复杂度,并实现了线性编码。