1 引 言
TFT-LCD因其厚度薄且畫面質(zhì)量優(yōu)異,,可以實現(xiàn)信息的高速度、高亮度及高對比度顯示,,已廣泛應(yīng)用于圖像顯示系統(tǒng)中,。雖然TFT-LCD具有良好的顯示性能,但TFT-LCD的驅(qū)動信號非常復(fù)雜,,同時外圍的控制單元需要處理的數(shù)據(jù)量非常大,,以一個分辨率為640×480的彩色TFT-LCD為例,顯示一幅彩色圖像就需要處理900kbyte的數(shù)據(jù)量,,這對于傳統(tǒng)的單片機等處理器顯得無能為力,。由于圖像數(shù)據(jù)量大,目前圖像大都采用壓縮后再存儲,其中JPEG (Joint PhotographicExperts Group)格式的壓縮圖像應(yīng)用最為廣泛,。
為了解決圖像等大容量數(shù)據(jù)在TFT-LCD顯示屏上的應(yīng)用,,本文提出了一種基于ARM9處理器S3C2440X的彩色液晶顯示模塊。模塊能夠?qū)崿F(xiàn)對字符及彩色RGB格式圖像的顯示,,同時還可以顯示JPEG格式的圖像,。由于液晶顯示屏只能接收RGB格式的圖像數(shù)據(jù),為了實現(xiàn)對JPEG格式的圖像顯示,,必須對壓縮圖像進行解壓縮,,JPEG格式圖像的解碼功能在ARM9處理器上實現(xiàn)。本文提出的方法簡化了彩色TFT-LCD圖像顯示的設(shè)計難度,,同時為JPEG格式的解碼及液晶顯示提供了一種實現(xiàn)方法,。液晶顯示模塊可以方便地與外接系統(tǒng)接口,實現(xiàn)圖像顯示模塊的功能,。
2 模塊結(jié)構(gòu)設(shè)計與分析
模塊硬件包括4個部分:ARM9S3C2440X處理器,、數(shù)據(jù)存儲模塊、液晶顯示模塊及RS232串口通信模塊,。模塊中使用了兩種非易失性閃存NAND Flash和NOR Flash,。考慮到NOR Flash具有芯片內(nèi)執(zhí)行及可靠性高的特點,,使用它來存儲ARM9處理器運行的程序代碼;存儲容量大且高單元密度的NAND Flash用來存儲海量數(shù)據(jù),,作為圖像庫及字符庫的存儲單元。SDRAM 作為外擴存儲器使用,。TFT-LCD LQ080V3DG01作為模塊的顯示屏使用,。與其他外部模塊通信采用RS232串口方式。
模塊實現(xiàn)的主要功能有:JPEG 格式圖像的解碼;支持24bit彩色RGB圖像數(shù)據(jù)及JPEG兩種格式圖像的顯示;字符的顯示;數(shù)據(jù)存儲容量為64Mbyte,,可以實現(xiàn)對圖像庫及字符庫的更新;可以設(shè)置不同的串口波特率,。模塊功能框圖如圖1所示。
圖1 模塊功能框圖,。
2.1 ARM9嵌入式處理器S3C2440X
S3C2440X是一款基于ARM920T 內(nèi)核,、主頻最高達400MHz、適用于嵌入式應(yīng)用的RISC處理器,。它支持可配置的8,,16,32bit數(shù)據(jù)總線寬度,。在存儲器接口方面,,最多可以擴展6個通道的ROM 或RAM 存儲器,以及2 個通道的SDRAM,,同時它還支持NAND Flash,、NORFlash存儲器擴展。
它內(nèi)部的ARM920T 內(nèi)核具有高速微控制器總線(AMBA BUS)結(jié)構(gòu)及哈佛結(jié)構(gòu)的高速緩沖存儲器(Cache),高速緩沖分別是16kbyte程序及16kbyte數(shù)據(jù)存儲器,,使其具有良好的高速性能[3];具有豐富的外圍設(shè)備,,包括LCD控制器、UART,、USB,、SD 及SPI等接口,可以滿足不同的設(shè)計要求,。
2.1.1 LCD控制器
S3C2440X內(nèi)部LCD控制器接口支持STNLCD及TFT-LCD的無縫連接,,它支持單色、調(diào)色板彩色及24bit真彩色的顯示,。根據(jù)不同的設(shè)計要求,,通過程序編程可以實現(xiàn)相應(yīng)的LCD分辨率,數(shù)據(jù)格式及幀頻等設(shè)置,,從而滿足各種類型的LCD模塊,。S3C2440XLCD控制器用來傳輸視頻數(shù)據(jù)VD [23:0],同時產(chǎn)生相應(yīng)的控制信號VSYNC,、HSYNC,、VDEN及LEND,時序圖如圖1所示,。實現(xiàn)LCD 控制器功能的關(guān)鍵是根據(jù)LCD時序的要求,合理配置控制器寄存器,。
圖2 TFT-LCD時序圖,。
圖1中的信號定義如下:
VSYNC:LCD控制器和LCD之間的幀同步信號,高電平有效時表示一幀圖像的起始,。
HSYNC:行同步信號,,由水平有效像素的大小決定。
VCLK:LCD時鐘信號,,在一個時鐘周期內(nèi)數(shù)據(jù)送入LCD移位寄存器內(nèi),。
VDEN:數(shù)據(jù)使能信號,高電平表示數(shù)據(jù)有效,。
LEND:行結(jié)束信號,。
VD[23:0]:RGB數(shù)據(jù)信號線。對于24bitTFT-LCD,,R,、G、B各占8位;而對于16bit TFT屏有兩種方式:5∶6∶5及5∶5∶5+1,,使用時需要注意要與相應(yīng)TFT-LCD的信號相一致,。
2.1.2 數(shù)據(jù)存儲模塊
NAND Flash是一種固態(tài)內(nèi)存,與EEPROM相比,具有讀寫速度快的優(yōu)勢;與SRAM 相比,,具有非易失性等優(yōu)勢,。圖像尤其是彩色圖像數(shù)據(jù)量大,因此需要考慮使用大容量的存儲器來存儲圖像數(shù)據(jù),。另外,,考慮到斷電后數(shù)據(jù)的非易失性,因此選擇NAND Flash作為存儲器件,。
數(shù)據(jù)存儲單元NAND Flash包括圖像庫及字符庫,,其中字符庫存儲容量是8Mbyte,圖像庫存儲容量是56Mbyte,。模塊選用NAND FlashK9F1216U0A作為圖像的存儲器件,,它的容量大小為64M×8bit,其中每頁是(512+16)byte,,塊大小是(16k+512)byte;隨機讀取一頁數(shù)據(jù)的最大時間是12μs,,而向NAND Flash寫入一頁數(shù)據(jù)的典型時間是200μs。以分辨率為640×480的RGB 彩色圖像為例,,圖像數(shù)據(jù)大小是900byte,,因此將此圖像寫入Flash的最大時間是341μs,然后將此圖像從Flash讀出的最長時間是21μs,。
以分辨率為640×480的RGB格式彩色圖像為例,,56Mbyte的圖像存儲容量可以存儲62幅圖像,完全可以滿足大容量存儲的要求,。在存儲圖像數(shù)據(jù)的編程過程中,,由于NAND Flash是以頁為單元進行數(shù)據(jù)存儲,這就意味著一幅圖像需要占用多個頁的存儲空間,。需要注意的是,,由于NAND Flash器件存在壞塊單元,而且壞塊是隨機分布的,,因此需要對壞塊進行標記處理,,對它們標記為不可用,這樣就避免了由于壞塊單元引起的數(shù)據(jù)存儲錯誤,。
2.1.3 JPEG圖像解碼
JPEG是一種目前廣泛使用的靜態(tài)圖像壓縮標準,,它以其顯著的壓縮效率和較低的圖像質(zhì)量損失獲得了廣泛應(yīng)用,成為國際通用的標準,。
JPEG的目的是提供一種使用于各種連續(xù)色調(diào)圖像的壓縮方法,,并且能夠易于硬件實現(xiàn),具有良好的性價比,。為了滿足各種應(yīng)用需求,,它提供了兩種壓縮編碼技術(shù):基于離散余弦變換(DCT)的有損壓縮編碼和基于DPCM 的無損編碼,,這兩種編碼方式可以采用4種操作模式來實現(xiàn):順序編碼、累進編碼,、無損編碼及層次編碼,。其中基于DCT變換的順序編碼方式最常用。
以基于離散余弦變換的順序編碼方式來說明JPEG圖像解碼的過程,。圖像解碼是壓縮編碼的反過程,,解碼的碼流起始位置標志信息,解碼器根據(jù)JPEG壓縮圖像的文件頭信息,,得到原始圖像的基本信息,。得到原始圖像信息后,解碼器根據(jù)JPEG文件中的霍夫曼表進行解碼,。由于熵編碼過程中使用霍夫曼編碼分別對DC及AC系數(shù)進行編碼,,其中系數(shù)編碼的順序采用zig-zag序列,因此實現(xiàn)解碼時需要考慮這些相關(guān)實現(xiàn)過程,,詳細信息請參考相關(guān)文獻[5],。根據(jù)量化系數(shù)表,經(jīng)霍夫曼解碼后的系數(shù)與相應(yīng)的量化值進行乘積,,然后進行反余弦變換,。需要注意的是,JPEG 圖像使用的是YCrCb模型,,其中Y 是亮度分量,,Cr及Cb是色度分量,需要將系數(shù)的色彩空間從YCrCb轉(zhuǎn)換到RGB空間,,最終得到圖像的R,、G、B 數(shù)據(jù)值,,這些數(shù)據(jù)才可以在液晶顯示屏上顯示。
根據(jù)JPEG 文件交換格式提供的資料文獻[6],,YCrCb色彩空間到RGB色彩空間的轉(zhuǎn)換見公式(1),。
考慮到延時應(yīng)盡量小,程序在NOR Flash存儲器上執(zhí)行效率低,。圖像解碼算法中應(yīng)合理安排在ARM9中的內(nèi)存分配,。設(shè)計過程中將頻繁訪問的程序代碼及數(shù)據(jù)搬運到ARM9內(nèi)部高速緩沖存儲器中,從而提高編碼的效率,。由于順序編碼方式最常用,,它通常稱為JPEG 基本系統(tǒng)(BaseLine)。設(shè)計過程中,,實現(xiàn)的JPEG 圖像解碼支持順序編碼,,完全可以滿足應(yīng)用要求,。
2.2 TFT-LCD LQ080V3DG01
實驗中選用LQ080V3DG01彩色液晶顯示模塊測試設(shè)計效果。LQ080V3DG01 由彩色TFT-LCD面板,、驅(qū)動電路,、控制電路、供電電路及背光單元組成,。它支持最大分辨率為640×480的圖形和文字顯示,,數(shù)據(jù)輸入格式為18bit,其中紅綠藍各占6bit,,提供的顏色共262 144種,。
TFT-LCD需要+3。3V或+5V供電電壓,,背光需要交流電源供電,。輸入的控制信號有4個:幀同步信號VSYNC、行同步信號HSYNC,、數(shù)據(jù)使能信號ENAB及時鐘信號CK,。數(shù)據(jù)線寬度是18bit,紅綠藍各占6bit,,分別是R [0∶5],、G [0∶5]及B [0∶5],顏色配置信息如表1所示,。
表1 輸入數(shù)據(jù)信號及顏色顯示配置
LQ080V3DG01液晶顯示屏的數(shù)據(jù)線共18bit,,對于24bit的彩色圖像以及24bit的ARM9S3C2440X的TFT-LCD控制器而言,其接口并不兼容,。設(shè)計中為了適應(yīng)LQ080V3DG01液晶顯示屏的接口,,分別舍棄了8bit R、G,、B 值的低2位,,測試結(jié)果顯示效果良好。如果選用的TFTLCD是24bit數(shù)據(jù)線,,則可以直接連接到LCD控制器相應(yīng)的數(shù)據(jù)線,。
3 模塊設(shè)計方案的實現(xiàn)
3.1 工作流程
在ARM9執(zhí)行初始化后,主程序就等待外部模塊通過串口發(fā)送指令,。外接模塊通過RS232串口與本模塊通信,,根據(jù)通信協(xié)議發(fā)送不同的指令,實現(xiàn)相應(yīng)的功能,。在約定的串口波特率下,,通信協(xié)議如下:顯示圖像時首先發(fā)送指令0x55,然后再發(fā)送圖像在圖像庫中的編號;顯示字符時首先發(fā)送指令0x56,,然后再發(fā)送字符在字符庫中的編號,,最后發(fā)送字符在液晶屏上顯示的橫軸及縱軸坐標,。需要說明的是,在NAND Flash存儲空間中的圖像庫及字符庫是自己定義的,,可以重新下載更新,。軟件流程圖如圖3示。
圖3 軟件流程圖
3.2 彩色圖像顯示
所設(shè)計的模塊支持24bit彩色RGB及JPEG兩種格式的圖像顯示,。因為像素數(shù)據(jù)可以直接送到液晶接口控制模塊顯示,,而JPEG格式的圖像則必須經(jīng)過解碼之后才能顯示,所以圖像在顯示前,,需要先判斷圖像數(shù)據(jù)是什么格式,。如果圖像數(shù)據(jù)是JPEG格式,則必須經(jīng)過圖像解碼,,解碼后得到原始彩色圖像的像素數(shù)據(jù)值R,、G、B,,這些數(shù)據(jù)經(jīng)過顯示控制單元送到液晶屏顯示,。如果圖像是原始圖像的數(shù)據(jù),則可以直接送到液晶控制模塊進行顯示,。
由于要顯示的圖像存儲在NAND Flash的圖像庫存儲空間,,所以在將彩色圖像輸出到TFT-LCD顯示時,首先要將需要顯示的圖像數(shù)據(jù)從NAND Flash中讀取出來,,得到一幅24bit彩色圖像的完整原始圖像數(shù)據(jù),。原始圖像數(shù)據(jù)中,一個像素占用3byte,,其中R,、G、B 各占1byte,。將數(shù)據(jù)輸出給TFT-LCD 顯示前,,需要根據(jù)LCD接收的數(shù)據(jù)格式將圖像數(shù)據(jù)進行轉(zhuǎn)換,然后才能輸出顯示,,圖像數(shù)據(jù)按照從上到下,,自左向右的順序輸出[9]。同樣,,將TFT-LCD按照相同的順序進行掃描,最終完成整幅圖像的顯示,。
NAND Flash存儲著大量的圖像數(shù)據(jù),,為了區(qū)分不同的圖像數(shù)據(jù),將相應(yīng)的圖像輸出顯示,,模塊采用RS232串口與外界通信,。通過發(fā)送不同的指令,,可以將在NAND Flash上存儲的相應(yīng)圖像讀取出來,輸出在TFT-LCD上,,最終實現(xiàn)各種彩色圖像的顯示,。
3.3 字符顯示
字符采用16×16點陣,由于每個像素占用3byte,,所以每個字符占用768byte,。可以將常用字符存儲在NAND Flash中,,作為字符庫使用,,需要時調(diào)用即可。當顯示字符時,,首先要確認相應(yīng)字符在存儲器中的位置,,然后根據(jù)地址信息對相應(yīng)字符進行操作,最后根據(jù)字符要顯示的位置在液晶屏上輸出,,實現(xiàn)字符在液晶屏上的顯示,。
實驗過程中為字符庫分配8Mbyte空間,可以存儲10 922個字符,。字符庫還可以實現(xiàn)更新,,只需將存儲器NAND Flash對應(yīng)地址空間的內(nèi)容替換即可。
4 實驗結(jié)果
為了測試模塊的正確性,,將一幅分辨率為640×480的圖像"AutumnLeaves"下載到NANDFlash存儲器中,,它在圖像庫中的編號為0x01。
根據(jù)串口通信協(xié)議,,向液晶顯示模塊發(fā)送指令0x55,,然后再發(fā)送圖像在圖像庫中的編號0x01。
顯示模塊接收到指令后,,液晶屏顯示效果如圖4所示,。測試結(jié)果表明,模塊工作正常,,發(fā)送顯示其他圖像及字符的指令同樣效果良好,,運行可靠,達到了模塊方案設(shè)計要求,。
圖4 液晶屏顯示圖像測試結(jié)果,。
5 結(jié) 論
提出了一種基于ARM9的24bit彩色TFTLCD液晶顯示模塊設(shè)計方案。圖像及字符庫存儲在NAND Flash固態(tài)閃存中,,保證了圖像及字符的實時顯示,,同時還能實現(xiàn)對圖像庫及字符庫的更新。提供了串口通信方式,,可以方便地實現(xiàn)與其他外接系統(tǒng)交互,。該模塊設(shè)計簡化了彩色TFT-LCD顯示圖像的設(shè)計難度,,提高了開發(fā)效能。模塊可以兼容不同類型的彩色TFT-LCD,,為液晶顯示模塊的彩色圖像顯示提供了一種新的方法,。