《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 设计应用 > WIMAX LDPC码译码器的FPGA实现
WIMAX LDPC码译码器的FPGA实现
来源:电子技术应用2011年第3期
王秀敏,张 洋,陈豪威,付 娟
中国计量学院 信息工程学院,浙江 杭州310018
摘要: 设计了基于TDMP-NMS算法的码率码长可配置LDPC码译码器,支持WIMAX标准LDPC码的译码。 通过插入最短的额外时钟周期,使得更新后的节点信息得到了及时利用。采用一种工作于增量模式的基于填充算法的桶形移位寄存器结构,实现了对该标准中576、768、1152、2304 4种码长LDPC 码译码的支持。结果表明所设计的译码器完全能满足WIMAX标准对数据吞吐率的要求。
中图分类号: TN47
文献标识码: A
文章编号: 0258-7998(2011)03-0044-04
Implementation of WIMAX LDPC decoder based on FPGA
Wang Xiumin,Zhang Yang,Chen Haowei,Fu Juan
College of Information Engineering, China Jiliang University, Hangzhou 310018,China
Abstract: A code rate and code length reconfigurable LDPC decoder is proposed which is based on TDMP-NMS algorithm and supports WIMAX standard. The updated node information is used in timely by inserting the shortest extra tine slots. By adopting a filling algorithm based barrel shifter working in an incremental mode, the decoder can support the decoding of four code length LDPC in this standard:576,768,1152,2304. Results show that the decoder designed can fully meet the throughput requirement of WIMAX standard.
Key words : WIMAX;LDPC decoder;FPGA;TDMP;normalized min sum algorithm

 

    全球微波互联接入WIMAX是一种基于IEEE802.16e标准的无线城域网WMAN技术。该技术采用LDPC码作为其信道编码方案。WIMAX标准的LDPC码由于其优异的性能而引起了人们的广泛关注。Torben Brack等人根据该标准中各个码率LDPC码校验矩阵的不同特点,对码率为1/2和2/3B的LDPC码采用TDMP译码算法,对其他4种码率的LDPC码采用BP算法。设计实现了一个可支持WIMAX标准中所有码率和码长的LDPC码译码器[1]。SHIH Xin Yu等人对LDPC码的校验基矩阵进行行列置换,使得变量节点和校验节点的处理在时间上可以部分重叠,基于BP算法实现了支持该标准中码率为1/2 的19种码长的LDPC码的译码器[2]。
    重组网络是部分并行LDPC码译码器中的一个重要组成单元。对数移位寄存器结构和双向网络仅适用于单个码长。为了实现对多种码长的支持[3],采用了Benes网络,基于该网络的部分并行译码器可支持扩展因子小于该网络输入输出端口数的各种码长LDPC码的译码。由于该网络中各个开关控制信号的产生是基于一种递推的算法,因此其复杂度较高。
    本文将TDMP算法运用于WIMAX标准中所有6种码率的LDPC码的译码,通过分析得出了各个码率LDPC码的变量节点后验LLR在前后两次更新之间的最小时间间隔,采用插入额外时钟周期的方法使得更新后的节点信息得到了及时利用。设计了一种基于填充算法的桶形移位寄存器结构的重组网络单元,实现了对该标准中576、768、1152和2304 4种码长的支持。采用了基于增量的循环移位模式,降低了硬件实现复杂度和单次迭代处理的周期数,提高了吞吐率。
1 LDPC码的译码算法
    LDPC码的标准译码算法为BP算法。TDMP及时利用了更新后的节点信息,加快了译码收敛速率。中高信噪比条件下,该算法成功译码所需的平均迭代次数仅是BP算法的一半。TDMP-NMS算法采用归一化最小和算法更新TDMP算法中的校验节点信息,简化了运算复杂度。该算法的译码处理步骤如下[3]:

(2)开始继续下一次迭代处理。
2 WIMAX 标准的LDPC码译码器设计
2.1 译码器总体结构

    根据前述TDMP-NMS译码算法, 本文设计的部分并行LDPC码译码器结构如图1所示。整个译码器由后验LLR存储单元、数据重组网络、处理器阵列、硬判决输出单元及控制单元构成。为支持连续译码,信道信息的存储由2组相同的工作于乒乓读写模式的RAM完成。数据重组网络根据校验基矩阵中对应的数值对从后验LLR存储单元输出的z个数据进行循环移位后送入处理器阵列中相应单元进行处理。处理器阵列由96个相同的处理器单元构成,当扩展因子为z时,仅使能其中的z个处理单元,并行处理更新对应于1个超码的z个SPC码。 控制单元产生各个模块的工作使能信号和控制信号。采用最大迭代次数停止准则,当译码迭代次数达到设定的最大值时,硬判决输出单元对从后验LLR存储单元中读出的信息进行硬判决并输出译码结果。

2.2 重组网络的设计
    本设计所提出的重组网络单元结构支持对输入数据个数为该网络输入输出端口数的因子的数据序列的循环移位。该结构由数据填充单元和桶形移位寄存器单元构成。为支持最大扩展因子zmax=96码长的LDPC码, 本设计中桶形移位寄存器单元的输入输出数据端口数均为96。填充单元在预处理阶段用并行输入的z个有效数据填充桶形移位寄存器的所有96个输入端口,第nz+i个端口用第i个有效输入数据填充。其中n=0,1,…,(96/z)-1,i=1,…,z。桶形移位寄存器单元对这96个数据根据输入的循环移位值控制信号进行循序移位。移位结束之后,输出端口的前z个数据即为所需的数据序列。一个输人输出数据端口数均为12的重组网络,当有效输入数据个数为6,循环移位值为3时,数据流图如图2所示。

    每次迭代处理过程中,传递给处理器阵列的每个单元处理的变量节点后验LLR值是经过数据重组网络循环移位后的数据序列。为使下一次迭代处理时输入至该单元的数据是按原始顺序排列的序列[4],采用了两个重组网络,一个用于将从变量节点LLR存储器中的读出数据进行重组,另一个用于将处理更新后的LLR后验数据进行反重组。为了降低硬件实现的复杂度,同时减少单次迭代处理所需的时钟周期,提高译码器吞吐率,本设计将采用一种增量循环移位的方案[5]。采用该方案,每次对从存储器中读出的z个变量节点后验LLR信息循环移位的值是本次该组数据所需移位的值与上一次所需移位值的模z的差值。经处理器阵列处理更新后的后验LLR值不经过重组网络直接存储至原单元。
2.3 运算单元设计
    为使译码器能够支持WIAMX标准中的所有6种码率, 本文设计了如图3所示的基于串行处理的运算单元结构。其中alpha 运算单元接收以压缩形式输入的本超码的内信息ri,0,ri,1,ind_min,sign_j和变量节点j的后验LLR信息Pj,根据式(1)和式(2)计算出qij。qij一路传递给alpha缓存单元用于后续的后验LLR更新,一路传递给TC2SM转换模块,将以二进制补码表示的qij转换为符号-绝对值的表示形式,并传递给超码内信息处理更新单元。该单元每个周期接收一个幅度值和符号值,根据该幅度值与当前最小值min0和次小值min1的比较结果更新min0,min1,ind_min,将接收到的符号值存储于寄存器并执行模2累加运算。当对应于一个校验节点的所有变量节点信息接收完毕,开始执行min0,min1的归一化操作计算ri,0和ri,1,以及sign_j的更新。该运算完成之后开始从alpha缓存单元中顺序读出之前存储的qij,根据(6)(7)完成变量节点后验LLR值Pj的更新。控制模块的作用主要是根据当前超码校验节点的度数产生计算qij和更新ind_min、Pj时所需的当前变量节点的序号和各个模块的工作使能信号。为减少控制单元的扇出,本设计中采用8个运算单元共享一个控制单元的模式,整个处理器阵列96个运算单元共使用了12个控制单元。

2.4 变量节点后验LLR信息的读取
    对WIMAX 标准中码率为1/2 和2/3B的LDPC码,通过改变各个超码的迭代处理顺序,可以使得任何两个相邻的超码没有公共的变量节点,因此当前超码的处理不用等到前一个超码迭代处理结束。在本设计中,当前一个超码的变量节点后验LLR从相应的存储单元读出完毕一个周期之后即开始读取当前超码的变量节点后验LLR信息。对于其他码率,通过分析其对应的校验矩阵的特点,发现同一个变量节点在前后两个相邻超码中的迭代处理顺序最大相差3个周期,如图4中码率为2/3的A码第一个超码和第二个超码方框内所示的数字对应的一组z个变量节点,在第一个超码中的处理顺序是第8,在第二个超码中的处理顺序是第5。 又由于从当前超码所有校验节点相邻的变量节点后验LLR读出完毕至第一组z个更新后的后验LLR输出之间相差7个时钟周期, 为了在当前超码处理时用到更新后的变量节点后验LLR信息,本设计在对其他码率的LDPC码迭代处理时,当前一个超码对应的所有变量节点读出完毕10个周期之后开始读取下一个超码的变量节点后验LLR信息。

3 实现结果及分析
    选择CycloneII系列的FPGA芯片EP2C70F896C6作为目标器件, 编译综合后的结果显示,该译码器共消耗27 077个逻辑单元,最高工作频率可达69 MHz,在该工作频率下,译码器对该标准中码长为2 304的各码率的LDPC码译码迭代10次时,所需的译码周期数分别为:
    1 011、1 686、985、1 520、1 550、1 257,对应的译码吞吐率分别为:79 Mb/s、63 Mb/s、109 Mb/s、79 Mb/s、78 Mb/s、106 Mb/s,完全能够满足WIMAX标准数据吞吐率的要求。
    在DE2-70开发板上对所设计的译码器进行了硬件测试,测试系统结构如图5所示。

    译码数据及控制信号产生模块产生译码器工作所需的译码数据和相关的控制信号:码率、码长、最大迭代次数、输入数据有效指示信号。译码器根据输入的数据及控制信号进行译码。译码数据及控制信号产生模块中有一个存储一帧译码数据的ROM。为了在Quartus2的SignalTap II Logic Analyzer中观察到译码器的输出信号,该模块周期性地从ROM中读取译码数据和产生相应的控制信号。本文对码率为1/2,码长为2 304的LDPC码进行了测试。测试中系统工作频率为50 MHz,逻辑分析仪的采样时钟为100 MHz,由输入的50 MHz信号经PLL倍频得到。得到译码器的译码输出波形如图6所示。图中hdd_en为输出有效数据指示信号,dout0 ~dout11为译码器并行输出的96 bit数据,将该数据与原信息序列相比较,结果完全相同,译码器工作正常。

    本文设计实现了一种支持WIMAX标准的码长、码率可配置LDPC码译码器,通过设计一种基于串行工作模式的运算单元,实现了对该标准中所有码率的支持。通过设计一种基于填充算法的重组网络单元实现了对该标准中扩展因子为24、32、48、96的4种码长的支持。采用TDMP-NMS算法,在提高译码收敛收率的同时,降低了硬件复杂度。实验结果表明,所设计的译码器在50 Hz的时钟频率下工作正常,完全能够满足WIMAX 标准数据吞吐率的要求。
参考文献
[1] BRACK T,ALLES M,KIENLE F,et al.A synthesizable IP core for WIMAX 802.16E LDPC code decoding.IEEE 17th International Symposium on Personal,Indoor and Mobile Radio Communications,2006:1-5.
[2] SHIH Xin Yu,ZHAN Cheng zhou,LIN Cheng Hung,et al. An 8.29 mm2 52 mW Multi-Mode LDPC Decoder Design  for Mobile WiMAX System in 0.13 ?滋m CMOS Process. IEEE Journal of Solid-state Circuits,2008,43(3):672-683.
[3] XIAO Peng,GOTO S.Implementation of LDPC decoder for  802.16e.IEEE 8th International Conference on ASIC(ASICON′09),2009:501-504.
[4] OH D,KESHAB K.Parhi.Low-complexity switch network  for reconfigurable LDPC decoders.IEEE Transactions on Very Large Scale Integration(VLSI) Systems,2010,18(1):85-93.
[5] YANG Sun,KARKOOTI M,JOSEPH R C.VLSI decoder  architecture for high throughput,Variable Block-size and  Multi-rate LDPC Codes.IEEE International Symposium on Circuits and Systems(ISCAS 2007),2007:2104-2107.

此内容为AET网站原创,未经授权禁止转载。