基于LPC2292的手持JPEG图像显示器设计
文章从JPEG的编码原理入手,针对LPC2292的资源和性能特点,进行了可行性分析。重点论述了Huffman解码和IDCT解码的优化算法的实现,很大程度上提高了解码算法的效率,使得算法在ARM7芯片上的移植成为可能。
1 概述
在数字图像处理过程中,JPEG编码是一种经常运用的压缩算法,目的是有效地压缩数字图像大小,便于存储和传输。其具有压缩比例高、失真小等特点。目前对应的JPEG解码方式有两种:硬件解码和软件解码。硬件解码是利用硬件解码芯片来完成对JPEG数据的解码;软件解码则是通过编写程序来完成对数据的还原。由于软件解码需要大量的浮点运算,目前较多的由PC及DSP来实现。
本文主要介绍了一种基于Philips公司的ARM芯片LPC2292来实现JPEG图像软件解码的方法及基于此算法实现的手持式JPEG图像显示器。
2 JPEG解码可行性分析
2.1 LPC2292的特点
LPC2292是一款基于32位ARM7TDMI-S,并支持实时仿真和跟踪的CPU,带有256 k字节(kB)嵌入的高速Flash存储器。128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。对代码规模有严格控制的应用可使用16位Thumb模式将代码 规模降低超过30%,而性能的损失却很小。
2.2 存储器容量计算
JPEG解码涉及到大量的数据计算,因此需要大量的数据缓存器。手持JPEG显示器的缓存主要包括原始JPEG图像数据缓存、JPEG解码缓存以及RGB数据显示缓存等。原始JPEG图像数据缓存用于存放需要解码的JPEG图像数据,根据JPEG图像的复杂度及压缩比不同,一般一帧320×240的彩色JPEG图像的大小在2k~20k字节。JPEG解码缓存主要用于存放一些JPEG解码过程中的中间数据,主要包括MCU解码中Huffman解码的临时结果,IDCT解码的临时结果等。RGB数据显示缓存用来存放JPEG解码完后的RGB原始数据,用于LCD液晶显示,一帧320×240的彩色16位RGB图像,共需要320×240×16÷8=57600字节。
LPC2292内部带有16k的SRAM。如果采用整张图像缓存、解码完再显示的话,根据上面的分析,仅显示缓存区一项就不能满足需要。因此,设计采用一边读取数据、一边解码、一边显示的策略,来减少对存储器的需求。
3 具体实现
3.1硬件实现
JPEG图像显示器的硬件实现框图如下图所示:
图1 JPEG图像显示器硬件框图 系统以LPC2292为控制核心,采用CAN总线来从外界读取原始JPEG数据,彩色LCD显示模块则选用TFT6758彩色LCD液晶显示模块。LPC2292内部自带的CAN接口及32位宽度的数据总线,可以很方便的与CAN总线及LCD液晶显示模块实现连接。 3.2软件实现: JPEG编码技术主要包括颜色转换、DCT变换、量化、熵编码及Huffman编码等部分,其数据格式在文献[1]中进行了详尽的阐述。 JPEG解码主要包括Huffman解码、反量化及IDCT变换、色彩变换等模块,其流程框图如下:
|
LPC2292 JPEG ARM7 Huffman IDCT 相关文章:
- 多功能嵌入式车辆行驶监控终端设计(06-17)
- 多核处理器构架的高速JPEG解码算法(02-07)
- 基于ARM7核处理器VxWorks系统BSP设计 (02-27)
- ARM7和ARM9双核平台的技术分析(02-27)
- LPC2294的实时时钟显示工程设计分析(05-03)
- 基于ARM7的新型嵌入式心电监护仪的研制(07-30)