文献标识码:A
文章编号: 0258-7998(2011)06-0035-03
随着数字信号处理技术在应用领域的迅速发展,以DSP处理器(如TI的TMS320系列)为应用系统核心器件的传统DSP技术,由于其硬件结构的不可变性和固定的数据总线宽度,很难满足用户对DSP系统可重配置性或可定制性的要求。而以大容量、高速度的FPGA为核心器件的现代DSP技术的出现成功解决了以上问题。FPGA内嵌有可配置的高速RAM、PLL以及硬件乘法累加器等DSP模块。因此,用FPGA实现数字信号处理可以很好地解决并行性和速度问题,而且其灵活的可配置特性,使得以FPGA为核心器件的DSP系统易于修改、测试及硬件升级。
本文利用Altera公司推出的一个面向DSP开发的系统级设计工具DSP Builder,在深入研究JPEG算法原理的基础上,设计了JPEG算法模型,并在Matalab/Simulink环境下进行了算法级仿真;最后将算法编译下载到FPGA硬件上,利用DSP Builder的HIL(Hardware In Loop)功能,由Simulink通过下载电缆向硬件输入测试数据,然后将测试结果送入Simulink中显示。采用这种方法实现了硬件级的仿真验证。
1 DSP Builder介绍
DSP Builder开发工具是Altera公司提供的数字信号处理平台,它是一个系统级(或算法级)设计工具,架构在多个软件工具之上,并把系统级和RTL级两个设计领域的设计工具连接起来,最大程度地发挥了两种工具的优势。DSP Builder依赖于MathWorks公司的数学分析工具Matlab/Simulink,以Simulink的Blockset出现,可以在Simulink中进行图形化设计和仿真,同时通过SignalCompiler把Matlab/Simulink的设计文件(.mdl)转成相应的硬件描述语言VHDL设计文件(.vhd),以及用于控制综合与编译的TCL脚本。而对后者的处理可以由FPGA/CPLD开发工具Quartus II来完成。
设计人员能够同时进行多个HDL模型或者QuartusII软件设计工程的设计,为每一个模块生成一个独立的仿真模型,并且能够在同一设计环境中,以标准Simulink/DSP Builder模型来仿真HDL模块。此外,该工具可充分利用和重复使用现有设计,从而大大提高产品开发速度。在仿真软件方面,除了可以利用Simulink的仿真环境,DSP Builder还提供了与Modelsim的接口,充分利用Modelsim仿真的优势。以前DSP开发者只能直接使用VHDL或VerilogHDL语言进行FPGA的DSP系统设计,难度比较大。现在利用基于FPGA的DSP开发工具DSP Builder以及完整的软件开发平台,可以使设计者遵循一条类似于软件设计流程的开发方法进行FPGA的DSP设计,设计效率大为提高。基于DSP Builder的系统级开发流程如图1所示。
2 JPEG算法原理
JPEG专家组开发了两种基本的压缩算法,一种是以离散余弦变换DCT(Discrete Cosine Transform)为基础的有损压缩算法;另一种是以预测技术为基础的无损压缩算法。使用有损压缩算法时,在压缩比为25:1的情况下,压缩后还原得到的图像与原始图像相比较,非图像专家难于找出它们之间的区别,因此得到了广泛的应用。例如,在VCD和DVD-Video电视图像压缩技术 中,就使用JPEG的有损压缩算法来取消空间方向上的冗余数据。
JPEG压缩是有损压缩,它利用了人眼视角系统的特性,使用量化和无损压缩编码相结合来去掉视角的冗余信息和数据本身的冗余信息。JPEG算法框图如图2所示。
压缩编码大致分成三个步骤:
(1)使用正向离散余弦变换FDCT把空间域表示的图变换成频率域表示的图。
(2)使用加权函数对DCT系数进行量化,这个加权函数对于人的视觉系统是最佳的。
(3)使用霍夫曼可变字长编码器对量化系数进行编码。译码(或者叫解压缩)过程与压缩编码过程相反。
3 JPEG算法模型的实现
在DSP Builder下进行系统搭建。DSP Builder平台提供了加法器、乘法器以及数字信号处理涉及到的众多模块,对这些模块可以进行可视化的参数编辑。本设计从Matlab的Workspace中导入需要压缩的图像,然后通过用DSP Builder构建的JPEG压缩算法压缩编解码,最后在Matlab中显示重建的图像。JPEG静态图像压缩算法压缩的对象是YCbCr格式的,所以在进行图像压缩前要进行预处理。通过Matlab中的Color Space Conversion将RGB格式的图像转换成YcbCr格式。
待压缩的图像数据首先要进行DCT变换,受FPGA硬件资源的限制,可以先进行一维行变换,将得到的数据按列存储到RAM中,等到数据全部输入到RAM中,再对RAM中的数据进行一维的DCT行变换。然后重复利用一维的DCT模块,以节省硬件资源。
DCT变换后的频率系数要进行量化。JPEG算法使用均匀量化器进行量化,量化步距按照系数所在的位置和每种颜色分量的色调值确定。因为人眼对亮度信号与对色差信号敏感度不同,因此使用了两种量化表。设计实现方法为:将DCT系数除以量化步长取整数。为了保证DCT系数中低频分量先出现,高频分量后出现,量化后的系数要重新编排,JPEG算法采用Z字型编码,增加了连续“0”系数的个数,即“0”的游程长度,以达到用更少的数据表示更多信息的目的,从而优化编码。量化的目的是减小非“0”系数的幅度以及增加“0”值系数的数目。
JPEG算法使用了差分脉冲调制编码(DPCM)技术,对相邻图像块之间量化DC系数的差值(Delta)进行编码。量化交流AC系数的特点是1×64矢量中包含许多“0”系数,并且许多“0”是连续的,因此使用非常简单和直观的游程长度编码(RLE)对它们进行编码。使用熵编码还可以对DPCM编码后的直流DC系数和RLE编码后的交流AC系数作进一步压缩。在JPEG有损压缩算法中,通过使用霍夫曼编码器来减少熵,原因是使用霍夫曼编码器可以用很简单的查表(Lookup Table)方法进行编码。压缩数据符号时,霍夫曼编码器对出现频度比较高的符号分配比较短的代码,而对出现频度较低的符号分配比较长的代码。这种可变长度的霍夫曼码表可以事先定义。
JPEG编码的最后一个步骤是把各种标记代码和编码后的图像数据组成一帧一帧的数据,以便于传输、存储和译码器译码,这种数据通常称为JPEG位数据流。
4 模型仿真分析
设计采用DSP Builder的HIL进行仿真验证。HIL把设计包裹在一套接口中间进行编译,然后下载到板子的FPGA中。首先将模型文件(.mdl)用SignalCompiler编译生成Quartus II的工程文件(.qpf);然后将工程文件加载到HIL模块中,在HIL模块中进行时钟、复位等信号设置,选择FPGA器件型号;最后编译文件并将配置下载到FPGA中。Simulink通过下载电缆把测试数据不断输入,然后在输出端不断获得硬件运行的结果。利用HIL在硬件上进行仿真,可以加快仿真速度,同时可对算法、时序和引脚配置进行检测。由于FPGA可以无限次烧录,所以利用HIL进行仿真非常方便。HIL仿真模块如图3所示。
利用HIL进行图像的压缩和解压仿真验证,观察经过压缩和解压后的图像可以发现,该仿真模型成功实现了JPEG静态图像压缩的编解码算法,解压后的图像效果很好。把SignalCompiler编译生成Quartus II的工程文件(.qpf)下载到FPGA芯片中,观察到使用的逻辑单元块LE(Logic Elements)数量为1 224个,而用VHDL语言编写JPEG算法下载到FPGA芯片中将占用1 483个单元块。表1表明用DSP Builder进行系统级的算法设计与用传统的VHDL语言进行设计更节省硬件资源。
应用现代DSP技术,通过Altera公司提供的数字信号处理开发工具DSP Builder搭建了JPEG静态图像压缩编解码模型,并用HIL进行了仿真验证。实验结果表明,设计的JPEG模型能够成功实现静态图像的压缩编解码,且重建的图像效果很好。应用DSP Builder进行系统级的算法设计相比用VHDL语言设计更节省硬件资源。
参考文献
[1] 潘松.现代DSP技术[M].西安:西安电子科技大学出版社,2003.
[2] 姚俊,马松辉.Simulink建模与仿真[M].西安:西安电子科技大学出版社,2002.
[3] 杨守良.Matlab/simulink在FPGA设计中的应用[J].微计算机信息,2005,21(8-2):98-99.
[4] 张艳.基于FPGA的JPEG解码算法的研究与实现[D].南京:南京理工大学,2009.
[5] 张太怡.基于JPEG国际标准的图像压缩方法的研究[J].重庆大学学报,1994,9:48-53.
[6] 汪宇飞.JPEG高速编码芯片的设计及其性能优化[D].西安:西北工业大学硕士论文,2006.
[7] 洪志良.JPEG静止图像压缩解压缩标准的硬件实现及其改进算法的研究[D].上海:复旦大学博士论文,2002.
[8] 崔平,汪渤,丁露.基于DSPBuilder的电视导引头跟踪控制系统设计[J].微计算机信息,2005,21(12-2):76-78.
[9] 呈永辉.基于DSPbuilder技术的轨道信号检测的研究与实现[D].成都:成都理工大学,2008.
[10] 张淼,伏云昌.基于DSP Builder的14防FIR滤波器的设计[J].现代电子技术,2007,30(21):185-186.