LDPC码译码算法的C语言FPGA编程实现

  • 格式:pdf
  • 大小:8.86 KB
  • 文档页数:3

本文由dan_feng1988贡献 pdf文档可能在WAP端浏览体验不佳。

建议您优先选择TXT,或下载源文件到本机查看。

2010 年第 01 期,第 43 卷 总第 217 期 通 信 技 术 Vol.43,No.01,2010 No.217,Totally Communications Technology LDPC 码译码算法的 C 语言 FPGA 编程实现 张 培 (苏州市职业大学,江苏 苏州 215104) 【摘 要】结合低密度奇偶校验码(LDPC)的译码算法和最新的现场可编程门阵列(FPGA)技术,提出了一种对低密度 奇偶校验码的最小和算法(MSA)进行 C 语言现场可编程门阵列编程实现的新方案。

基于 Xilinx 公司的 Virtex2 系列芯片 XC2V2000,设计实现了一种码长为 250,码率为 0.5 的(3,6)低密度奇偶校验码译码器,并给出了寄存器传输级(RTL)协同 仿真系统结构,证实了低密度奇偶校验码具有良好的纠错性能,为软件工程师开发基于现场可编程门阵列的嵌入式系统提供 了新的思路。

 【关键词】低密度奇偶校验码;现场可编程门阵列;最小和算法;寄存器传输级 【中图分类号】TN929.5 【文献标识码】A 【文章编号】1002-0802(2010)01-0043-02 Decoding Algorithm of LDPC Codes Based on FPGA Programming in C Language ZHANG Pei (Suzhou Vocational University, Suzhou Jiangsu 215104, China) 【Abstract】A novel method is proposed, which implements min sum algorithm (MSA) of low-density parity–check (LDPC) codes based on field programmable gate array(FPGA) programming in C language. A (3,6) LDPC decoder with a code rate of 0.5 and a block size of 250 bits is implemented on the basis of Xilinx’s Virtex2 series chip XC2V2000.The Register Transfer Level (RTL) simulation structure is given and the good performance of error correction is verified. A new idea is provided for soft engineers to develop embedded systems based on FPGA. 【Key words】low-density parity–check codes; field programmable gate array; min sum algorithm; register transfer level 0 引言 虽然 FPGA 是当今应用最广泛的可编程专用集成电路, 但是 FPGA 在设计和工具经验上需要相对高的投入,在硬件 设计语言作为主要的设计输入方式时尤其如此。

传统的硬件 描述语言主要用于描述数字系统的结构、 行为、 功能和接口, 对较为复杂的算法设计实现则支持不够。

面对当今数字系统 设计中涉及的越来越多、越来越复杂的算法描述和建模,开 始出现了描述硬件的 C 语言[1]。

 Impulse C 语言是目前比较新的一种硬件 C 语言,是一 种基于 C 语言的 FPGA 开发语言,并且能够很好地与 VHDL 语 言相融合。

Impulse C 支持高度并行的软硬件混合算法和应 用开发,具有可表达系统级并行性的特点,可以描述很多种 适用于编译 FPGA 硬件的功能。

它为在基于 FPGA 的板级平台 收稿日期:2008-11-29。

 作者简介:张 培(1979-),女,硕士,讲师,主要研究方向为电子与 通信技术。

上实现的高性能的硬件加速计算的应用提供了一种新的表 示方法 [2] 。

本文基于最新一代从 Impulse C 编程到硬件编译 的便捷技术, 提出了一种对 LDPC 码译码算法进行 C 语言 FPGA 编程实现的新方案。

1 LDPC 码译码算法的实现 LDPC 码是目前最逼近香农限的一类纠错码,其译码算法 [3-4] 有多种, 其中最小和算法 MSA Min Sum Algorithm) 是 Log-BP ( 算法的简化近似算法,它的性能比 Log-BP 算法略有损失,但 在复杂度上有大幅度的下降。

所以本设计选择采用 MSA 算法, 从而可以在译码性能和硬件复杂度之间达到更好的平衡。

 1.1 算法的软件实现与仿真 由于 Impulse C 编程的核心是进程和流,多个进程之间 的相互通信和同步主要通过数据流方式完成。

如果一个应用 程序具有设计良好的流接口,那么当它被映射到实际硬件和 43 软件时,就能高效运行。

因而设计中,使用了 CO PIPELINE 流水线指令,它允许循环的多重迭代并行执行,以数据流的 形式来读取数据和输出数据,应用程序可以一边从外部接收 数据,一边处理数据,效率更高,也能大大简化硬件软件系 统的设计和调试。

 在 CoDeveloper 开发环境下, 采用 Impulse C 编程对 MSA 译码算法进行软件实现。

生产者测试进程读取数据,然后送 给译码算法的 Impulse C 进程,最后消费者测试进程接收 Impulse C 译码后的数据流。

构造规则(3,6)LDPC 码,取 125*250 的校验矩阵, 将经过 AGWN 信道后的数据作为译码前 数据 Sent value,译码后数据为 Rcvd value。

每次读取一 组 250 个数据进行译码,共读取十组,在 CoDeveloper 开发 环境下进行桌面仿真。

观察到的数据流在系统各个不同进程 的流动情况以及译码输出桌面仿真结果如图 1 所示。

 1.2 生成 FPGA 硬件 将 Impulse C 编写的进程编译成 FPGA 硬件,主要采取 的步骤如图 2 所示。

在 C 分析阶段,编译器确定应用中的硬 件和软件进程。

在循环展开阶段,编译器将相应的循环转化 为等价的并行语句,最后生成可仿真 HDL 文件。

Impulse C 设计文件 C预 处理 C 分析 初始 优化 循环 展开 二次 优化 硬件 生成 图 2 Impulse C 到 FPGA 硬件的优化生成步骤 生成的寄存器传输级(RTL)结构顶层视窗如图 3 所示。

 分别单击其中的图标层层展开,直至底层原理结构,可以得 到更为细节的底层 RTL 级电路结构,如图 4 所示。

图 1 数据流在不同进程的流动及桌面仿真结果 图 3 RTL 级结构顶层视窗 图 4 底层 RTL 级电路结构 (下转第 47 页) 44 编码周期值为10,即第0帧、10帧、20帧为I帧,随机丢失第4 帧和第16帧,分别使用如上方法,对比结果如图3所示。

从图 4 中可以看出,在主观上,本文提出的算法掩盖效 果优于其它算法。

4 结语 本文针对视频数据传输时整帧丢失的情况,提出了一种 PSNR/dB 全新的空时域差错掩盖算法。

该算法充分利用了H.264的新 特性、以及时域与空域相结合的优势,在各种场景中均能够 保持较高的峰值信噪比,并且性能稳定,主观上也获得了更 好的视觉效果。

 参考文献 帧号 图3 Foreman序列丢失第4帧和第16帧时几种算法 性能比较曲线图 同样以Foreman(CIF)序列为例,从主观上比较几种算法 的掩盖效果。

实验中随机丢失第4帧,分别使用时域替换法 一般的运动向量外推法如图4(c)和本文提出的算法 如图4(b)、 如图4(d)进行差错掩盖后,第7帧图像的效果图。

[1] Yu Chen, Keman Yu, Jiang Li, et al. An Eerror Concealment Algorithm for Entire Frame Loss in Video Transmission[C]. USA:[s.n.],2004. [2] ITU-T Rec. H.264 ISO/IEC 14496-10 AVC. Draft ITU-T Recommendation and Final Draft International Standard of Joint Video Specification [S]. Geneva:[s.n.],2003. [3] Belfiore S, Grangetto M, Magli E, et al. An Error Concealment Algorithm 649-52. [4] Peng Q, Yang T W, Zhu C Q. Block-based Temporal Error for Streaming Video[C].USA:[s.n.], 2003:III- (a) 第7帧无错解码图像 (b) 时域替换法 Concealment for Video Packet Using Motion Vector Extrapolation[C]//Proc. IEEE Communications, Circuits and Systems and West Sino Expositions, USA:[s.n.],2002: 10-14. [5] JVT. H.264/AVC Reference Software JM10.2 [EB/OL]. (2007-8-7) [2008-12-25]. (c) 一般的运动向量外推法 (d) 本文提出的算法 old_jm/. http://iphome.hhi.de/suehring/tml/download/ 图4 Foreman序列随机丢失第4帧后第7帧差错掩盖效果图 (上接第44页) 译码器的译码速率和硬件资源消耗是考虑 LDPC 码译 码器 ASIC 实现时两个重要的因素,较高的译码速率往往意 味着更大的资源消耗。

 基于 Xilinx-Virtex2 芯片 XC2V2000, 当时钟频率为 50 MHz, 迭代次数为 10 次, 本设计耗费了 5493 个 LUT,译码速率为 10 Mb/s, 功耗为 367 mW。

对比相同功 能的传统硬件描述方法[5-7],由于 Impulse C 库可以有效地利 用 Streams-C 编译器提供的“流式编程”方法,芯片内部并 行译码结构采用流水线结构,降低了逻辑单元的使用量,硬 件规模相对较小。