尤衛衛,冒建亮,葉 樺
(東南大學 自動化學院,江蘇 南京 210096)
液晶顯示器由于其輕薄、便攜、高分辨率等優點已被廣泛應用到生活、工業、軍事等各種場合。TFT-LCD顯示器作為液晶顯示器中一類重要的代表,具有體積小,功耗低,顯示品質優良等諸多優勢,已經成為當前桌面顯示的主流。雖然TFT-LCD顯示效果極佳,但由于控制時序相對復雜,其控制一直是大家研究的重點[1-2]。目前對TFT-LCD的控制方式主要有3種:
(1)使用專用控制芯片,但此方式易受器件斷檔影響,并且不利用技術移植;
(2)使用內置TFT-LCD控制器的STM32,如ARM9等,此方式適用于高端顯示領域,成本較高;
(3)使用FPGA或CPLD進行 TFT-LCD的控制器設計,利用此方式設計靈活性強、可移植性高,且器件性價比高。
比較3種方案,本文選擇靈活性強、可移植性高,且器件性價比高的第三種方案來設計控制器[3]。
圖1為液晶屏顯示系統的系統框圖。其中,主控芯片STM32[4]內部制定了與CPLD間的通訊協議,主要用于實現在LCD上的各類寫操作指令,通過Intel8080總線將待顯示信息傳送給CPLD。作為控制器的核心元件,CPLD主要實現三個模塊的功能[5]:
(1)協議解析模塊:CPLD接收控制器STM32發出的控制指令,實現對8080總線通訊協議的解析,主要包括待寫數據模式,待寫數據坐標以及待寫數據RGB顏色。
(2)SRAM 讀寫控制模塊:CPLD 在 TFTLCD屏顯消隱區間,根據提出的數據坐標及RGB顏色,將相應值寫入SRAM相應地址。在TFTLCD屏顯有效區間時,將上述數據按照時序依次讀出,完成TFT-LCD的顯示驅動。
(3)LCD時序驅動模塊:根據LCD顯示時序,實現液晶屏的顯示驅動。
STM32內部實現了底層接口函數及上層界面函數,底層接口函數主要實現通訊協議的制定,包括用于界面顯示的各類函數的實現。主要包括:單點寫、多點寫、8點帶背景寫與8點不帶背景寫命令。各命令具體操作如下:
(1)單點寫
單點寫主要是為了實現一些不易繪制的圖形,如圓、三角形等,也可用于顯示完整的圖片。STM32內部根據指定的時序規則,依次發送指令:選擇單點寫模式→待顯示像素點行、列地址→待顯示像素點顏色。
(2)多點寫
多點寫主要用于繪制直線、矩形等,也可用于局部圖形的填充。STM32內部根據指定的時序規則,依次發送指令:選擇多點寫模式→待顯示圖形起始點行、列地址→待顯示圖形長度→待顯示圖形顏色。
(3)8點帶背景寫
主要用于字符的覆蓋顯示,可繪制任意像素為8N×8N的字符。STM32內部根據指定的時序規則,依次發送指令:選擇8點帶背景寫模式→待顯示字符起始行、列地址→待顯示字符前景色→待顯示字符背景色。
(4)8點不帶背景寫
主要用于字符的層疊顯示,可繪制任意像素為8N×8N的字符。STM32內部根據指定的時序規則,依次發送指令:選擇8點不帶背景寫模式→待顯示字符起始行、列地址→待顯示字符前景色。
根據上述4種操作,STM32可以便捷地進行各類圖文的繪制,并將相應的指令傳送給CPLD對通訊數據進行解析,實現TFT-LCD的顯示驅動。
顯示器的驅動主要由CPLD實現,包括LCD時序驅動、通訊協議解析和SRAM讀寫控制,如圖2所示。CPLD接收控制器STM32發出的控制指令,提取待顯示點的坐標與RGB數據,并在TFT-LCD屏顯消隱區間,將相應數據寫入SRAM相應地址。在TFT-LCD屏顯有效區間時,將相應數據按照時序依次讀出,完成TFTLCD的顯示驅動。

圖2 TFT-LCD顯示驅動框圖Fig.2 Driving chart of TFT-LCD display
3.2.1 通訊協議解析模塊
CPLD對STM32的通訊協議解析,按照先取指令后取數據的方式進行。當STM32發送控制指令時,控制線RS為0,發送數據指令時,控制線RS為1,每發送完對應的指令,發送相應的數據。因此,通過判斷RS由0到1的上升邊沿,此時總線上數據狀態穩定,即可讀取指令至CPLD中的寄存器;同理,當檢測到RS由1到0的下降邊沿時,可以根據接收到的控制指令,將相應的數據存放入對應的寄存器中,進而在TFT-LCD數據寫有效時,進行相應的寫屏操作。
寫屏操作具體指STM32用于圖文繪制的單點寫、多點寫、8點帶背景寫與8點不帶背景寫的驅動程序,采用有限狀態機模式,主要分為兩大類:第一類是輸出只和狀態有關,與輸入無關,即Moore型狀態機;第二類是輸出和輸入、狀態有關,且次態也與輸入和當前狀態有關,即 Mealy型狀態機。本設計中采用的是Mealy型狀態機,各部分對應狀態操作如下:
(1)清屏操作
設定狀態S1:寄存器清零操作;S2:清屏操作。狀態圖如圖3所示。其中,WAddCnt為寫屏操作完成標志。

圖3 清屏操作狀態圖Fig.3 State chart of screen clearing operation
(2)單點寫
設定狀態S1:等待數據穩定;S2:寫單點操作,S3:寄存器清零操作。狀態圖如圖4所示。

圖4 單點寫操作狀態圖Fig.4 State chart of single point writing operation
(3)多點寫
設定狀態S1:等待數據穩定;S2:寫起始點操作;S3:寫剩余長度點操作。狀態圖如圖5所示。其中,MulPotWrCnt為寫計數器,MulPotLength為多點寫長度。

圖5 多點寫操作狀態圖Fig.5 State chart of multipoint writing operation
(4)8點帶背景寫
設定狀態S1:等待數據穩定;S2:寫起始點操作;S3:寫其余7點操作。狀態圖如圖6所示。其中,MulPotWrCnt為寫計數器;狀態S2和狀態S3中,對字模數據的操作為:0寫背景色,1寫前景色。

圖6 8點帶背景寫狀態圖Fig.6 State chart of 8points with background writing operation
(5)8點不帶背景寫
設定狀態S1:等待數據穩定;S2:寫起始有效點操作;S3:無效點計數清零操作;S4:寫其余有效點操作。狀態圖如圖7所示。其中,8Addr[7]為字模最高位,每個時鐘周期左移1位;8AddrCnt為單字模中兩有效點間無效點計數器;MulPotWrCnt為寫計數器,8AddrWrCnt為單字模中無效點總計數器。對字模數據的操作為:0為無效點,1為有效點,此時寫背景色。

圖7 8點不帶背景寫狀態圖Fig.7 State chart of 8points without background writing operation
3.2.2 SRAM 讀寫控制模塊
外部緩存SRAM的主要作用是將STM32發送的圖文數據進行緩存,以便在TFT-LCD顯示有效區間,CPLD可按照一定的時序從SRAM中依次讀出。對于SRAM,通過設定與的高低,將芯片的16位數據線分高8位和低8位存儲RGB顏色數據,以滿足存儲像素點640×480的需求,即將整屏數據分為上半屏(0~239行)、下半屏(240~479行)存儲,每半屏地址一樣,地址數為640×240。當接收到顯示像素點為上半屏數據時,設定=0=1,數據存儲于低8位,當接收到顯示像素點為下半屏數據時,設定=1=0,數據存儲于高8位。
3.2.3 LCD時序驅動模塊
LCD驅動程序流程圖如圖8所示。通過行、場計數器,產生TFT-LCD控制所需的行、場同步信號、像素時鐘,同時產生RGB數據讀寫有效位,即在RGB數據讀有效時,按照時序依次從SRAM中讀取存儲的數值,在RGB數據寫有效時,CPLD根據數據傳輸指令協議,接收并解析STM32給定的TFT-LCD上各坐標點待顯示的圖像數據。

圖8 LCD驅動模塊流程圖Fig.8 Flow chart of LCD driving module
本節利用 Quartus II[9]軟件仿真功能,對LCD時序和SRAM讀寫功能進行仿真。
如圖9為LCD時序仿真圖,其中,LCD_HS是行同步信號,LCD_VS是場同步信號,可以看出,當場計數器Vcnt達到524時,意味著一場掃描完,LCD_VS發生反轉,進入場消隱,同時新的一場同步信號隨后到來。

圖9 LCD時序仿真圖Fig.9 Simulation chart of LCD timing
SRAM讀寫控制信號由TFT-LCD顯示有效與消隱區間決定,設定RCnt和 WCnt分別為SRAM讀、寫狀態的地址、數據判斷標志位。

圖10 SRAM讀時序仿真圖Fig.10 Simulation chart of SRAM reading
如圖11,當WE為低時,SRAM進行寫操作。此時,在WCnt為高電平時,給定待寫像素點地址,WCnt為低電平時,同樣經過20ns時延后寫相應地址數據。同時,在SRAM在讀操作時,行地址從0~639,當讀操作結束并轉入寫操作時,行地址清0,場地址加1,可見仿真結果的正確性。

圖11 SRAM寫時序仿真圖Fig.11 Simulation chart of SRAM writing
圖12是對TFT-LCD半場信號掃描仿真的結果。在TFT-LCD的行掃描中,有一段消隱區間與有效區間;在消隱區間,可以對SRAM進行數據寫操作,在有效區間,按照行地址計數0~639依次輸出信號。每行掃描結束后,場地址加1,當場地址到達239時,即TFT-LCD半場掃描結束,接下來以同樣的地址進行下半場的掃描。

圖12 半場掃描完仿真圖Fig.12 Simulation chart of half-court scanning finished
通過采用本文設計方法,實現的設計實物效果如圖13所示。

圖13 設計實物圖Fig.13 Chart of design entity
本文介紹了基于STM32和CPLD的TFTLCD顯示控制器的設計方法。TFT-LCD模塊采用的是不帶LCD控制器的群創AT056TN52-5.6in(1in=2.54cm)TFTLCD。在設計控制器時,采用的是Altera公司的 MAX II系列的 CPLD(EPM570)作為核心部件,以ISSI公司的IS61LV25616大容量SRAM作為顯示緩沖存儲器。測試結果表明,本文設計的控制器相對市場上TFT-LCD的專用控制芯片工作穩定可靠,性價比高。在很多場合具有一定的實用價值。
[1] 徐婧婧.彩色有源LCD顯示屏外圍驅動電路的研究與設計[D].長春:吉林大學,2007.Xu J J.The research and design on the peripheral driving circuit of color AM-LCD [D].Changchun:Jilin University,2007.(in Chinese)
[2] Lin J T,Wang F K,Lo S L,et al.Analysis of the supply and demand in the TFT-LCD market[J].Technological Forecasting and Social Change,2006,73(4):422-435.
[3] 李輝祥,黃光明.基于 CPLD 的 TFT-LCD控制器的設計[J].電子設計工程,2011,19(23):128-130.Li H X,Huang G M.Design of TFT-LCD controller based on CPLD [J].Electronic Design Engineering,2011,19(23):128-130.(in Chinese)
[4] 李寧.基于MDK的STM32處理器開發應用[M].北京:北京航空航天大學出版社,2008.Li N.Application of STM32 Processor Development Based on MDK [M].Beijing:Beihang University Press,2008.(in Chinese)
[5] 胡健生,羅衛兵,錢淵.嵌入式TFT-LCD控制器設計[J].計算機工程,2010,5:088.Hu J S,Luo W B,Qian Y.Design of embedded TFT-LCD controller[J].Computer Engineering,2010,5:088.(in Chinese)
[6] 蘇維嘉,張澎.基于FPGA的 TFT-LCD控制器的設計和實現[J].液晶與顯示,2010,25(1):75-78.Su W J,Zhang P.Design and implementation of TFT-LCD controller based on FPGA[J].Chinese Journal of Liquid Crystals and Displays,2010,(2511):75-78.(in Chinese)
[7] 唐徐立,黃君凱,劉明峰,等.基于FPGA的TFT-LCD控制器設計與實現[J].集成電路設計與開發,2010,35(11):1134-1137.Tang X L,Huang J K,Liu M F,et al.Design and realization of the TFT-LCD controller based on FPGA[J].Design and Development of IC,2010,35(11):1134-1137.(in Chinese)
[8] 黃杰勇.基于CPLD的 TFT-LCD控制器設計[J].現代計算機:上半月版,2013(2):62-64.Huang J Y.Design of TFT-LCD controller based on CPLD[J].Modern Computer:First Half Edition,2013(2):62-64.(in Chinese)
[9] 王冠,俞一鳴.面向CPLD/FPGA的Verilog設計 [M].北京:機械工業出版社,2007.Wang G,Yu Y M.Verilog Design for CPLD/FPGA [M].Beijing:Machinery Industry Press,2007.(in Chinese)
[10] 薛家祥,黃澤林,沈棟,等.TFT-LCD驅動中SDRAM 控制器的仲裁器設計[J].液晶與顯示,2013,28(6):877-882.Xue J X,Huang Z L,Shen D,et al.Design of SDRAM controller with arbiter for TFT-LCD driver[J].Chinese Journal of Liquid Crystals and Displays,2013,28(6):877-882.(in Chinese)