一种基于ARM9的彩色TFT-LCD模块设计及实现
摘 要:介绍了一种基于ARM9的彩色薄膜晶体管液晶显示模块(TFT-LCD)的设计和实现方法。为了解决图像及字符在液晶模块上的实时显示,图像库及字符库存储在容量达64Mbyte的NAND Flash闪存中,可以根据不同需求对图像库及字符库进行更新。模块支持24bit彩色RGB格式图像的显示,还支持JPEG格式图像的显示,JPEG图像的解码功能在ARM9处理器上实现。模块采用串口方式与其他外接主控系统通信,通过接收主控系统的不同指令,可以实现对库中图像及字符显示的实时更改。在液晶屏LQ080V3DG01上已通过测试,运行可靠。该模块已实际应用于图像显示设备中。 1 引 言 TFT-LCD因其厚度薄且画面质量优异,可以实现信息的高速度、高亮度及高对比度显示,已广泛应用于图像显示系统中。虽然TFT-LCD具有良好的显示性能,但TFT-LCD的驱动信号非常复杂,同时外围的控制单元需要处理的数据量非常大,以一个分辨率为640×480的彩色TFT-LCD为例,显示一幅彩色图像就需要处理900kbyte的数据量,这对于传统的单片机等处理器显得无能为力。由于图像数据量大,目前图像大都采用压缩后再存储,其中JPEG (Joint PhotographicExperts Group)格式的压缩图像应用最为广泛。 为了解决图像等大容量数据在TFT-LCD显示屏上的应用,本文提出了一种基于ARM9处理器S3C2440X的彩色液晶显示模块。模块能够实现对字符及彩色RGB格式图像的显示,同时还可以显示JPEG 格式的图像。由于液晶显示屏只能接收RGB格式的图像数据,为了实现对JPEG格式的图像显示,必须对压缩图像进行解压缩,JPEG格式图像的解码功能在 ARM9处理器上实现。本文提出的方法简化了彩色TFT-LCD图像显示的设计难度,同时为JPEG格式的解码及液晶显示提供了一种实现方法。液晶显示模块可以方便地与外接系统接口,实现图像显示模块的功能。 2 模块结构设计与分析 模块硬件包括4个部分:ARM9S3C2440X处理器、数据存储模块、液晶显示模块及RS232串口通信模块。模块中使用了两种非易失性闪存NAND Flash和NOR Flash。考虑到NOR Flash具有芯片内执行及可靠性高的特点,使用它来存储ARM9处理器运行的程序代码;存储容量大且高单元密度的NAND Flash用来存储海量数据,作为图像库及字符库的存储单元。SDRAM 作为外扩存储器使用。TFT-LCD LQ080V3DG01作为模块的显示屏使用。与其他外部模块通信采用RS232串口方式。 模块实现的主要功能有:JPEG 格式图像的解码;支持24bit彩色RGB图像数据及JPEG两种格式图像的显示;字符的显示;数据存储容量为64Mbyte,可以实现对图像库及字符库的更新;可以设置不同的串口波特率。模块功能框图如图1所示。 图1 模块功能框图。 2.1 ARM9嵌入式处理器S3C2440X S3C2440X是一款基于ARM920T 内核、主频最高达400MHz、适用于嵌入式应用的RISC处理器。它支持可配置的8,16,32bit数据总线宽度。在存储器接口方面,最多可以扩展6 个通道的ROM 或RAM 存储器,以及2 个通道的SDRAM,同时它还支持NAND Flash、NORFlash存储器扩展。 它内部的ARM920T 内核具有高速微控制器总线(AMBA BUS)结构及哈佛结构的高速缓冲存储器(Cache),高速缓冲分别是16kbyte程序及16kbyte数据存储器,使其具有良好的高速性能[3]; 具有丰富的外围设备,包括LCD控制器、UART、USB、SD 及SPI等接口,可以满足不同的设计要求。 2.1.1 LCD控制器 S3C2440X内部LCD控制器接口支持STNLCD及TFT-LCD的无缝连接,它支持单色、调色板彩色及24bit真彩色的显示。根据不同的设计要求,通过程序编程可以实现相应的LCD分辨率,数据格式及帧频等设置,从而满足各种类型的LCD模块。S3C2440XLCD控制器用来传输视频数据VD [23:0],同时产生相应的控制信号VSYNC、HSYNC、VDEN及LEND,时序图如图1所示。实现LCD 控制器功能的关键是根据LCD时序的要求,合理配置控制器寄存器。 图2 TFT-LCD时序图。 图1中的信号定义如下: VSYNC:LCD控制器和LCD之间的帧同步信号,高电平有效时表示一帧图像的起始。 HSYNC:行同步信号,由水平有效像素的大小决定。 VCLK:LCD时钟信号,在一个时钟周期内数据送入LCD移位寄存器内。 VDEN:数据使能信号,高电平表示数据有效。 LEND:行结束信号。 VD[23:0]:RGB数据信号线。对于24bitTFT-LCD,R、G、B各占8位;而对于16bit TFT屏有两种方式:5∶6∶5及5∶5∶5 1,使用时需要注意要与相应TFT-LCD的信号相一致。 2.1.2 数据存储模块 NAND Flash是一种固态内存,与EEPROM相比,具有读写速度快的优势;与SRAM 相比,具有非易失性等优势。图像尤其是彩色图像数据量大,因此需要考虑使用大容量的存储器来存储图像数据。另外,考虑到断电后数据的非易失性,因此选择 NAND Flash作为存储器件。 数据存储单元NAND Flash包括图像库及字符库,其中字符库存储容量是8Mbyte,图像库存储容量是56Mbyte。模块选用NAND FlashK9F1216U0A作为图像的存储器件,它的容量大小为64M×8bit,其中每页是(512 16)byte,块大小是 (16k 512)byte;随机读取一页数据的最大时间是12μs,而向NAND Flash写入一页数据的典型时间是200μs。以分辨率为640×480的RGB 彩色图像为例,图像数据大小是900byte,因此将此图像写入Flash的最大时间是341μs,然后将此图像从Flash读出的最长时间是21μs。 以分辨率为640×480的RGB格式彩色图像为例,56Mbyte的图像存储容量可以存储62幅图像,完全可以满足大容量存储的要求。在存储图像数据的编程过程中,由于NAND Flash是以页为单元进行数据存储,这就意味着一幅图像需要占用多个页的存储空间。需要注意的是,由于NAND Flash器件存在坏块单元,而且坏块是随机分布的,因此需要对坏块进行标记处理,对它们标记为不可用,这样就避免了由于坏块单元引起的数据存储错误。 2.1.3 JPEG图像解码 JPEG是一种目前广泛使用的静态图像压缩标准,它以其显着的压缩效率和较低的图像质量损失获得了广泛应用,成为国际通用的标准。 JPEG的目的是提供一种使用于各种连续色调图像的压缩方法,并且能够易于硬件实现,具有良好的性价比。为了满足各种应用需求,它提供了两种压缩编码技术:基于离散余弦变换(DCT)的有损压缩编码和基于DPCM 的无损编码,这两种编码方式可以采用4种操作模式来实现:顺序编码、累进编码、无损编码及层次编码。其中基于DCT变换的顺序编码方式最常用。 以基于离散余弦变换的顺序编码方式来说明JPEG图像解码的过程。图像解码是压缩编码的反过程,解码的码流起始位置标志信息,解码器根据 JPEG压缩图像的文件头信息,得到原始图像的基本信息。得到原始图像信息后,解码器根据JPEG文件中的霍夫曼表进行解码。由于熵编码过程中使用霍夫曼编码分别对DC及AC系数进行编码,其中系数编码的顺序采用zig-zag序列,因此实现解码时需要考虑这些相关实现过程,详细信息请参考相关文献 [5]。根据量化系数表,经霍夫曼解码后的系数与相应的量化值进行乘积,然后进行反余弦变换。需要注意的是,JPEG 图像使用的是YCrCb模型,其中Y 是亮度分量,Cr及Cb是色度分量,需要将系数的色彩空间从YCrCb转换到RGB空间,最终得到图像的R、G、B 数据值,这些数据才可以在液晶显示屏上显示。 根据JPEG 文件交换格式提供的资料文献[6],YCrCb色彩空间到RGB色彩空间的转换见公式(1)。 考虑到延时应尽量小,程序在NOR Flash存储器上执行效率低。图像解码算法中应合理安排在ARM9中的内存分配。设计过程中将频繁访问的程序代码及数据搬运到ARM9内部高速缓冲存储器中,从而提高编码的效率。由于顺序编码方式最常用,它通常称为JPEG 基本系统(BaseLine)。设计过程中,实现的JPEG 图像解码支持顺序编码,完全可以满足应用要求。 |