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