为了保证实时通信业务的服务质量,降低误码率,在数据传输中采用纠错编码的方式使其有一定的纠错能力[1]。低差错率的信道编码是提高无线通信可靠性和有效性的关键技术之一,也是无线通信领域的研究热点之一。研究人员对信道编码进行了大量研究,其中,Turbo码和LDPC码以其最接近香农极限的性能受到了通信界的广泛关注。与Turbo码相比,LDPC码没有错误平层,且迭代译码的复杂度低。此外,LDPC码本身具有抗突发差错的特性,不需要引入交织器,避免了交织过程带来的时延。因此,LDPC码在未来移动通信系统中具有良好的应用前景。
由于LDPC码的软判决译码算法[2]中消息计算量比较大,且消息互联比较复杂,因此采用软件的方式实现LDPC码的译码难以满足现代通信系统中对较高传输速率的要求,如WiMAX系统中要求最高可以提供75 Mb/s的传输速率[3]。相比于软件的实现方式,采用硬件实现能够很好地利用算法本身的并行性,从而提高译码效率。
1 LDPC码的TDMP译码算法
TDMP译码算法首先更新一层校验节点消息,然后更新的校验节点消息立即用来更新该层对应的变量节点消息,这个过程叫做子迭代。每一层子迭代更新的变量节点消息立即用于下一层子迭代过程中校验结点消息更新计算。以此类推,当所有的层都完成了校验结点和变量结点的消息更新后,就算完成了一次迭代过程。完整的TDMP译码算法执行过程如下:
2 LDPC码译码器结构设计
根据IEEE 802.16e标准[4]中定义的LDPC码特点,可以把校验矩阵中每一行划分为一个子校验矩阵。按这样的划分,每个子矩阵的列重均小于1,可保证每个子校验矩阵的各行消息同时计算。由于标准中定义的LDPC码扩展因子z(即子矩阵行数)为24~96,因此,为了在不增加后验消息与计算单元之间映射复杂度的情况下实现标准中定义的所有码长的LDPC码译码,本设计将并行度定为96(即96个消息运算单元)。为了减少硬件资源和存储访问的冲突,每一行的消息计算采用串行流水实现。
本文设计的LDPC码译码器要求在保持较好吞吐量的同时具有较高的灵活性,能够支持IEEE802.16e标准所定义的6种码率、19种码长的LDPC码译码。
本文提出的译码器整体结构如图1所示。该译码器主要包括6个单元:总体控制单元、校验矩阵存储单元、迭代结果存储单元、消息置换网络单元、消息处理单元和迭代结果检测单元。
2.1 总体控制单元
总体控制单元是整个译码器的调度中心,其主要完成如下控制:控制校验矩阵的更新;控制信道消息输入和译码结果输出;在消息迭代更新过程中,控制对上一次子迭代过程得到后验消息的读操作,以及本次子迭代过程得到后验消息的写操作;控制本次子迭代过程中消息的更新计算;控制上次迭代判决结果的检测;控制消息置换单元完成后验消息与消息处理单元之间的映射。
2.2 校验矩阵存储
该模块主要用于存储基本矩阵信息,包括每行行重、非-1元素值以及该元素列坐标。该模块由一个大小为125×16 bit的RAM实现。每个存储单元存储数据格式如图2所示。
图2中,row_weigh表示每行基本矩阵的行重;col*表示非-1元素所对应的列坐标;val*表示非-1元素的值。
2.3 迭代结果存储
该单元主要用于存储每次子迭代过程得到的后验消息和判决结果以及上一次迭代得到的判决结果。本单元主要包括输入输出控制模块、后验消息存储模块和判决结果存储模块。
2.4 消息置换网络
消息置换网络主要用于后验消息与消息处理单元之间的映射。根据IEEE 802.16e标准的LDPC码特点可知,迭代过程中所需的消息置换网络是一个可以支持19种位宽的桶式移位器。本文设计的消息置换网络采用的是Daesun[5]提出的一种改进的Benes网络。
2.5 消息处理
消息处理单元主要用于完成子迭代过程中校验消息和后验消息的更新计算。该模块主要包括计算控制模块、96个消息计算模块、校验消息缓存和临时变量消息缓存。
2.6 迭代结果检测
该模块主要用于检测上一次迭代得到的判决比特序列是否满足校验方程H×x′T=0。本设计采用的是将上一次迭代判决结果检测与当前一次迭代计算同时进行的策略,这样不但可以消除由于等待每次迭代的检测结果而带来的译码延时,还可以简化译码器总体控制的复杂度。
3 综合验证
3.1 综合结果
本文采用Xilinx公司的ISE工具,使用的FPGA为Virtex4,对文中所设计的电路进行了综合。
综合结果表明,本文实现的译码器最高工作频率为170.28 MHz,从系统稳定工作角度考虑,可将系统的工作频率定为140 MHz。在工作频率为140 MHz的情况下,本文设计的译码器吞吐量最高可达到128.77 Mb/s。与其他译码器[6-7]的对比结果如表1所示。
从验证结果中可以看出,两种译码方法得到的误码率只有很小的差异,这种差异主要来源于消息量化精度的不同。采用Matlab仿真时,消息的量化精度为0.1,而本文设计的译码器消息的量化精度为0.062 5。因此说明图3中的差异是合理的,本文设计的译码器是正确的。
本文提出了一种针对IEEE 802.16e标准、基于层译码算法的灵活、高效的译码器结构。利用Xilinx公司的ISE工具,使用Virtex4-xc4vfx12-sf363-12芯片的FPGA进行综合仿真,结果表明该结构最高工作频率可达到170.28 MHz,吞吐量可达到128.77 Mb/s。
参考文献
[1] 邓晓,潘学军.基于DMR通信协议的信道编解码研究[J].微型机与应用,2013,32(9):51-53.
[2] 袁东风,张海刚.LDPC码理论与应用[M].北京:人民邮电出版社,2008.
[3] 赵庆,廖青.IEEE 802.16实时轮询业务调度算法分析[EB/OL].(2008-10-24)[2013-09-02].http://www.paper.edu.cn.
[4] 肖扬.Turbo与LDPC编解码及其应用[M].北京:人民邮电出版社,2010.
[5] BERGERON J,CERNY E,HUTER A,et al.Verification methodology manual for SystemVerilog[M].Springer,2005.
[6] 王鹏,陈咏恩.高速LDPC码分层译码器设计[J].小型微型计算机系统,2009,30(11):2294-2297.
[7] 乔华,管武等,董明科.LDPC码高速译码器的设计与实现[J].北京大学学报,2008,44(3):347-352.
[8] BANERJEE S,GUPTA T.Design aware scheduling of dynamic testbench controlleddesign element accesses in FPGA-based HW/SW co-simulation systems for fast functional verification[C].2010 2nd Asia Symposium on Quality Electronic Design (ASQED),2010:175-181.
[9] 何宾.基于AXI4的可编程SoC系统设计[M].北京:清华大学出版社,2011.
[10] 赵泽才,常青.基于MicroBlaze的嵌入式系统设计[J].现代电子技术,2006,29(10):56-59.
[11] 罗华飞.MATLAB GUI设计学习手记[M].北京:北京航空航天大学出版社,2011.