李輝祥,黃光明
(華中師范大學(xué) 物理科學(xué)與技術(shù)學(xué)院,湖北 武漢 430079)
1972年,美國(guó)人 (西屋公司)首次提出一個(gè)全新的構(gòu)思——薄膜晶體管液晶顯示器 (Thin Film Transistor-Liquid Crystal Display),英文縮寫(xiě) TFT-LCD[1]。 此后,TFT-LCD 便經(jīng)歷了飛速發(fā)展。發(fā)展至今,TFT-LCD占LCD市場(chǎng)的比例超過(guò)90%,成為液晶乃至整個(gè)平板顯示技術(shù)領(lǐng)域的主導(dǎo)技術(shù),其產(chǎn)品應(yīng)用包括便攜式移動(dòng)產(chǎn)品、桌面顯示器、電視機(jī)、特殊工業(yè)、航空、醫(yī)遼用途以及公共顯示等領(lǐng)域[2]。TFT-LCD之所以能取得如此驚人的成績(jī),與它的出色品質(zhì)是分不開(kāi)的——TFT-LCD是目前唯一在亮度、對(duì)比度、功耗、壽命、體積和重量等綜合性能上全面趕上和超過(guò)CRT的顯示器件[3]。
使用彩色TFT-LCD需要為其提供較復(fù)雜的時(shí)序信號(hào),并配備高速大容量顯存。因此,TFT-LCD控制器顯得十分重要。目前對(duì)TFT-LCD的控制方式主要有3種:1)使用專(zhuān)用TFT-LCD控制芯片,如臺(tái)灣瑞佑科技股份有限公司的RA8875;2)使用內(nèi)置TFT-LCD控制器的 MCU,如三星公司的S3C2440;3)基于FPGA或CPLD設(shè)計(jì)的 TFT-LCD控制器。然而,使用專(zhuān)用顯示芯片進(jìn)行產(chǎn)品開(kāi)發(fā)易受器件斷檔影響,不利于長(zhǎng)期量產(chǎn)。另一方面,并不是所有的嵌入式處理器都內(nèi)置TFT-LCD處理器,尤其是在中低端領(lǐng)域。因此,基于FPGA或CPLD設(shè)計(jì)的TFT-LCD控制器顯得靈活性更強(qiáng),并且性?xún)r(jià)比較高[4]。
基于FPGA或CPLD設(shè)計(jì)TFT-LCD控制器時(shí),系統(tǒng)的難點(diǎn)在于如何解決MCU或TFT-LCD同時(shí)訪(fǎng)問(wèn)SRAM所造成的沖突。常見(jiàn)的做法有兩種:1)基于“乒乓操作”的思想,使用雙倍的存儲(chǔ)容量,MCU和LCD按照時(shí)間片輪轉(zhuǎn)的方式輪流訪(fǎng)問(wèn)SRAM;2)設(shè)計(jì)合理的總線(xiàn)仲裁邏輯,結(jié)合FIFO的特點(diǎn)優(yōu)先響應(yīng)MCU對(duì)SRAM的寫(xiě)操作。在方式1)中,存儲(chǔ)容量的加倍很顯然會(huì)帶來(lái)成本和體積的增加。對(duì)于方式2),如果MCU長(zhǎng)時(shí)間對(duì)SRAM發(fā)送數(shù)據(jù),LCD將得不到顯示數(shù)據(jù)而出現(xiàn)花點(diǎn)[5]。
針對(duì)上述弊端,本文提出一種基于CPLD的TFT-LCD控制器的設(shè)計(jì)方案。以CPLD為核心器件,外加相應(yīng)容量的SRAM作為顯示緩存,為T(mén)FT-LCD提供完整的時(shí)序信號(hào)及數(shù)據(jù)。同時(shí)仿照單片機(jī)響應(yīng)外部中斷的工作方式,成功實(shí)現(xiàn)MCU和TFT-LCD對(duì)SRAM的共享訪(fǎng)問(wèn)。
系統(tǒng)整體框圖如圖1所示,LCD控制器主要包含CPLD和SRAM兩款芯片。SRAM可根據(jù)所用TFT-LCD分辨率的大小和設(shè)定RGB數(shù)據(jù)的位寬合理選擇容量,例如LCD的分辨率為320×240,RGB數(shù)據(jù)位寬為16,則SRAM的容量最小為76 800個(gè)字,選取128 k字的容量比較合適。CPLD相對(duì)于FPGA,固件掉電不丟失,一旦編程完畢便可作為一個(gè)相對(duì)獨(dú)立的模塊在系統(tǒng)中使用。
圖1 系統(tǒng)整體框圖Fig.1 Overall block diagram of the system
CPLD作為系統(tǒng)的控制核心,需要完成諸多功能:接收外部MCU的數(shù)據(jù)和命令;生成TFT-LCD所需的時(shí)序信號(hào);實(shí)現(xiàn)MCU和TFT-LCD對(duì)SRAM的共享訪(fǎng)問(wèn)。因此,CPLD固件的設(shè)計(jì)是系統(tǒng)的關(guān)鍵,其質(zhì)量直接影響最終的顯示效果。
CPLD的功能框圖如圖2所示,可以看出CPLD要實(shí)現(xiàn)的功能模塊主要包括MCU接口模塊、SRAM讀寫(xiě)模塊和LCD時(shí)序發(fā)生模塊。這部分將對(duì)各個(gè)模塊逐一作簡(jiǎn)單說(shuō)明。
MCU接口模塊負(fù)責(zé)接收微控制器的數(shù)據(jù),并轉(zhuǎn)換成相應(yīng)的地址和數(shù)據(jù)以對(duì)SRAM進(jìn)行寫(xiě)操作。除了常規(guī)的總線(xiàn)操作信號(hào),如地址、數(shù)據(jù)、地址鎖存信號(hào)和寫(xiě)信號(hào),該模塊還要求微控制器發(fā)送一個(gè)握手信號(hào),用“1”和“0”表示。
在具體應(yīng)用過(guò)程中,微控制器需要完成的工作很簡(jiǎn)單,那就是告訴LCD控制器把哪一個(gè)像素點(diǎn)點(diǎn)亮成哪一種顏色。像素點(diǎn)的區(qū)分可以根據(jù)行列坐標(biāo)值來(lái)指示,顏色的區(qū)分可以根據(jù)LCD的參考手冊(cè)給出的RGB值來(lái)進(jìn)行,于是微控制器需要發(fā)送的數(shù)據(jù)有3種:行坐標(biāo)值、列坐標(biāo)值和RGB值。MCU接口模塊使用3個(gè)寄存器分別接收這3種數(shù)據(jù),然后將行列坐標(biāo)值映射成SRAM中對(duì)應(yīng)的地址,并使用寄存器暫時(shí)存起來(lái),RGB值直接存入該地址單元即可。例如,LCD屏的分辨率為320×240,行坐標(biāo)值為H_Value,列坐標(biāo)值為V_Value,則映射到SRAM的地址為H_Value×320+V_Value。
為了保證上述通信的正確性,握手信號(hào)是必不可少的。握手信號(hào)的‘1’和‘0’分別指示“發(fā)送”狀態(tài)和“空閑”狀態(tài),其意義在于告訴MCU接口模塊何時(shí)進(jìn)行地址映射。如果在“發(fā)送”狀態(tài)進(jìn)行地址映射,則可能將新接收的行坐標(biāo)值與還沒(méi)來(lái)得及更新的舊的列坐標(biāo)值進(jìn)行映射操作,這顯然會(huì)計(jì)算出一個(gè)錯(cuò)誤的地址,最終導(dǎo)致LCD上出現(xiàn)不應(yīng)該存在的花點(diǎn)。因而地址映射操作只能在“空閑”狀態(tài)進(jìn)行,這樣才能顯示出正確的圖像。
圖2 CPLD的功能框圖Fig.2 Functional block diagram of CPLD
SRAM讀寫(xiě)模塊是整個(gè)固件設(shè)計(jì)的關(guān)鍵部分,既要完成MCU接口模塊對(duì)SRAM的寫(xiě)操作,又要滿(mǎn)足LCD對(duì)SRAM的數(shù)據(jù)需求。LCD需要的數(shù)據(jù)是一段段的數(shù)據(jù)流,而微控制器發(fā)送數(shù)據(jù)的動(dòng)作卻是隨機(jī)的。因此SRAM讀寫(xiě)模塊必須在不破壞正常數(shù)據(jù)流的前提下,達(dá)到一定的實(shí)時(shí)性要求,做到不丟失微控制器發(fā)送的有效數(shù)據(jù)。
為了達(dá)到上述目的,本方案借鑒單片機(jī)響應(yīng)外部中斷的思想——在每個(gè)機(jī)器周期都檢測(cè)一次外部中斷。按照這種思路,SRAM讀寫(xiě)模塊將微控制器發(fā)送數(shù)據(jù)的動(dòng)作看成外部中斷,每間隔一定數(shù)量的讀SRAM操作便插入一個(gè)寫(xiě)SRAM的操作。只要SRAM讀寫(xiě)模塊的工作頻率足夠高,便可以及時(shí)響應(yīng)微控制器發(fā)送數(shù)據(jù)的請(qǐng)求。
LCD的工作頻率一般都有標(biāo)稱(chēng)值,或是在某一個(gè)比較小的范圍內(nèi)波動(dòng)。假設(shè)LCD的工作時(shí)鐘為DCLK,其頻率為fD;SRAM讀寫(xiě)模塊的工作時(shí)鐘為SCLK,其頻率為fS。本方案設(shè)置fS=3fD,且圖2中數(shù)據(jù)緩沖單元由四個(gè)寄存器組成,分別是m0、m1、m2和m3?,F(xiàn)分以下兩種情況加以詳細(xì)說(shuō)明。
第一種情況,當(dāng)LCD的數(shù)據(jù)請(qǐng)求信號(hào)有效時(shí)。數(shù)據(jù)緩沖單元會(huì)按照DCLK的節(jié)拍依次從m0、m1、m2和m3中取出數(shù)據(jù)送到RGB數(shù)據(jù)線(xiàn),而且取出m3中的數(shù)據(jù)后返回到m0取數(shù),即讓m0、m1、m2和m3組成一個(gè)循環(huán)隊(duì)列。與此同時(shí),SRAM讀寫(xiě)模塊按照SCLK的節(jié)拍,以12個(gè)SCLK為一個(gè)動(dòng)作周期。在該動(dòng)作周期的前9個(gè)SCLK順次累加地址從SRAM中讀取數(shù)據(jù),并更新到m0、m1、m2和m3中;在后3個(gè)SCLK插入一個(gè)寫(xiě)SRAM操作,而寫(xiě)SRAM的地址和數(shù)據(jù)來(lái)自MCU接口模塊中等待的地址寄存器和數(shù)據(jù)寄存器。如此一來(lái),m0、m1、m2和m3中各個(gè)寄存器的更新一定發(fā)生在讀取本寄存器之前,保證了數(shù)據(jù)的正確性。同時(shí)可以及時(shí)響應(yīng)微控制器的寫(xiě)數(shù)據(jù)請(qǐng)求,做到不丟失數(shù)據(jù)。該部分狀態(tài)轉(zhuǎn)移圖如圖3所示。
圖3 讀寫(xiě)SRAM狀態(tài)轉(zhuǎn)移圖Fig.3 State transition diagram when reading or writing SRAM
第二種情況,當(dāng)LCD的數(shù)據(jù)請(qǐng)求信號(hào)無(wú)效時(shí)。因不需要從SRAM中讀取數(shù)據(jù),這段時(shí)間便全部被用來(lái)執(zhí)行寫(xiě)SRAM的操作。只要微控制器不發(fā)送數(shù)據(jù),MCU接口模塊中的地址寄存器和數(shù)據(jù)寄存器便不會(huì)改變,此時(shí)即使重復(fù)向SRAM中某個(gè)單元寫(xiě)入相同的數(shù)據(jù)也不會(huì)影響顯示效果。
該模塊的主要功能是生成LCD要求的時(shí)序信號(hào)[6],并向SRAM讀寫(xiě)模塊發(fā)送正確的數(shù)據(jù)請(qǐng)求信號(hào)。
LCD的時(shí)序信號(hào)可分為兩類(lèi):一是在HV模式下的行同步信號(hào) (HSYNC)、場(chǎng)同步信號(hào) (VSYNC)和數(shù)據(jù)使能信號(hào)(DEN),二是在DE模式下的同步信號(hào)DE。這兩類(lèi)LCD時(shí)序信號(hào)的產(chǎn)生過(guò)程很相似,只要多個(gè)計(jì)數(shù)器協(xié)調(diào)工作,很容易產(chǎn)生這些信號(hào)。為便于觀察,現(xiàn)以DE模式為例,其仿真圖如圖4所示,從圖4中的Hsync和den信號(hào)可以看出DE信號(hào)的生成過(guò)程[7]。
圖4 DE信號(hào)仿真波形圖Fig.4 Simulation diagram of DE signal
本模塊的數(shù)據(jù)請(qǐng)求信號(hào)ramread_bit實(shí)際就是HV模式下的數(shù)據(jù)使能信號(hào)DEN或DE模式下的DE信號(hào)左移一個(gè)DCLK產(chǎn)生的,它的目的是指示SRAM讀寫(xiě)模塊何時(shí)需要更新數(shù)據(jù)緩沖器,并在每一行的掃描前一個(gè)DCLK準(zhǔn)備好數(shù)據(jù)。仍以DE模式為例,其仿真圖如圖5所示。
圖5 數(shù)據(jù)請(qǐng)求信號(hào)ramread_bit仿真圖Fig.5 Simulation diagram of data requesting signal ramread_bit
本測(cè)試平臺(tái)采用altera公司MAXⅡ系列產(chǎn)品EPM240T100C5N和ISSI公司的SRAM產(chǎn)品IS63LV1024,而液晶屏選用臺(tái)灣奇美電子的產(chǎn)品LO035NC111。LO035NC111是一款3.5寸的TFT-LCD,顯示數(shù)據(jù)位寬最大支持24位,本方案使用R5G6B5格式。顯示效果如圖6所示,測(cè)試表明本控制器達(dá)到了預(yù)期設(shè)計(jì)指標(biāo)。
本TFT-LCD控制器以低成本的MAXⅡ系列CPLD為基礎(chǔ),外加一片適當(dāng)容量的SRAM為顯示緩存,適用于驅(qū)動(dòng)小尺寸TFT-LCD。經(jīng)測(cè)試,工作穩(wěn)定可靠,性?xún)r(jià)比高。
圖6 顯示效果圖Fig.6 The result of display
[1]毛學(xué)軍.液晶顯示技術(shù)[M].北京:電子工業(yè)出版社,2008.
[2]李維提,郭強(qiáng).液晶顯示應(yīng)用技術(shù)[M].北京:電子工業(yè)出版社,2000.
[3]王大巍,王剛,李俊峰,等.薄膜晶體管顯示器件的制造、測(cè)試、與技術(shù)發(fā)展[M].北京:機(jī)械工業(yè)出版社,2007.
[4]胡健生,羅衛(wèi)兵,錢(qián)淵.嵌入式TFT-LCD控制器的設(shè)計(jì) [J].計(jì)算機(jī)工程,2010,36(5):237-239.
HU Jian-sheng,LUO Wei-bing,QIAN Yuan.Design of embedded TFT-LCD controller[J].Computer Engineering, 2010,36(5):237-239.
[5]余春蕾,張長(zhǎng)明.基于FPGA的TFT-LCD控制器的設(shè)計(jì)[J].應(yīng)用設(shè)計(jì),2008,45(5):1-2.
YU Chun-lei,ZHANG Chang-ming.Design of TFT-LCD controller based on FPGA[J].Application Design,2008,45(5):1-2.
[6]李兵兵,黃子強(qiáng).用于LCD測(cè)試系統(tǒng)的程控驅(qū)動(dòng)器設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2010(22):184-186,190.
LI Bing-bing,HUANG Zi-qiang.Design of program-controlled driver used for LCD test system[J].Modern Electronics Technique,2010(22):184-186,190.
[7]夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[M].2版北京:北京航空航天大學(xué)出版社,2008.