李明亮,肖 瑞
(重慶郵電大學自動化學院,重慶 400065)
隨著目前液晶顯示(LCD Liquid Crystal Display)技術的發(fā)展,TFT LCD (Thin Film Transistor Liquid Crystal Display)是目前唯一在亮度、對比度、功耗、壽命、體積和重量等綜合性能上全面超過CRT的顯示器件[1],成為液晶乃至整個平板顯示技術領域的主導產品,廣泛應用于包括便攜式移動產品、桌面顯示器、電視機、特殊工業(yè)、航空、醫(yī)療用途以及公共顯示等領域[2]。
TFT LCD顯示效果很好,但是由于其時序控制相對復雜,專用的TFT LCD控制器因此誕生。很多半導體廠家針對市場上某些TFT LCD屏研制出了專用控制器;以及一些內部自帶TFT LCD控制器的MCU,如三星的S3C2440A等[3-5]。隨著技術的更新,專用控制器逐漸適應不了對其他LCD的驅動控制;以及目前對LCD的面板尺寸、分辨率等要求進一步提高,使得必須擴大控制器的顯存容量,常用的以SDRAM作為緩存因其成本以及容量限制已跟不上LCD技術發(fā)展的需求。針對以上問題,本文提出了一種以CPLD為核心,以大容量SDRAM作為顯示緩存器的TFT LCD控制器的解決方案,該方案能夠對大尺寸LCD進行驅動控制并有效降低開發(fā)成本。
圖1 LCD控制器總體框圖
如圖1所示,LCD模塊采用的是InnoLux公司不帶控制器的 TFT_LCD (AT070TN92)模塊;SDRAM是根據所用TFT LCD液晶屏的分辨率大小和RGB數據的設定位寬選擇合理的容量。如本方案中LCD的分辨率為800*480,RGB數據位寬為16(RGB565),則 SDRAM 的容量最小為 750KB,采用以ISSI公司的K4S641632H大容量SDRAM作為顯示緩沖存儲器,容量為8Mbytes的SDRAM,可以存儲八個顯示分頁的內容;
本設計中采用40MHz的像素時鐘,16位色深,80MHz訪問時鐘的SDRAM,根據緩存計算公式:
因此,使用8M作為單頁顯存,理論上可以支持最大的分辨率為20a8*1536。能夠支持更大尺寸的液晶屏,但對SDRAM訪問時鐘頻率有限,目前業(yè)界公認的存儲電容中的數據有效保存時間最長為64ms,也就是說SDRAM中每一行刷新周期是64ms。這樣刷新頻率就等于行數量/64ms。一般常見的SDRAM內存規(guī)格有4096 Refresh Cycles/64ms刷新命令一次僅對一行有效,發(fā)送間隔是根據總行數的變化而變化,當總行數為4096行時,刷新時間為15.625us。而液晶屏刷新時鐘為40MHz,在液晶刷新周期內,SDRAM存儲的顯示容量肯定不足以支持更大的液晶屏幕。因此,提高SDRAM的刷新頻率便能解決這個液晶尺寸與顯示容量的問題。
本設計中CPLD相對于FPGA,由于其設計靈活性、更強的適應性及可重構性及邏輯單元數量,更適合于作為控制器核心。在設計控制器時采用的是Altera公司的MAX II系列的CPLD(EPM570)作為核心部件。
系統(tǒng)的功能框圖如圖2所示,CPLD主要功能模塊由MCU接口模塊、SDRAM讀寫控制模塊和LCD時序產生模塊組成。其中CPLD是整個控制器的核心,主要完成的功能有:(1)與外部MCU進行數據和控制命令的收發(fā),接受外部MCU的數據和控制命令并進行相關譯碼;(2)實現MCU與LCD對SDRAM中的數據共享訪問;(3)實現LCD的顯示控制時序,對LCD進行顯示控制。
圖2 LCD控制器功能圖
MCU接口模塊是本控制器與外部控制器(MCU)進行數據通信的接口,是數據傳輸的通道。外部MCU通過該接口對LCD控制芯片寫入命令、讀出狀態(tài)并寫入/讀取顯示數據。同時該接口也接受譯碼器的命令控制,從而使讀寫與內部操作相結合。MCU接口模塊的功能由較為復雜的內部組合邏輯和時序邏輯電路實現,可以支持目前幾種主流的MCU 控制信號,STM32、NIOSⅡ等。
本系統(tǒng)中MCU接口模塊負責接收微控制器(MCU)的信號,并將其轉換成相應的地址和數據信號以對SDRAM進行寫操作。MCU接口主要有16位數據位。 以及 CS,RS(寄存器選擇),RD,WR,A0等5個控制位。其優(yōu)點是:控制簡單方便,無需時鐘和同步信號,只需根據相應讀寫時序將控制命令寫入對應寄存器便能實現對液晶模塊的控制。為了保證上述通信的正確性,增加了相應的控制信號A0,當地址線A0為0時表示寫入的是地址寄存器,該寄存器用于對液晶模塊中的各個寄存器進行尋址;當地址線A0為1時表示寫入的是寄存器值用以通知MCU接口模塊何時進行地址映射。圖3和圖4為總線讀/寫時序圖。在總線寫時序中,當A0為低電平時,表示讀取的是狀態(tài)寄存器,當A0為高電平時表示讀取的是像素數據,讀期間的地址寄存器會被忽略。通過MCU模塊的設計,可以有效的實現與外部MCU的通信和數據交換。
圖3 總線讀時序
圖4 總線寫時序
對于LCD的顯示控制來說。最為關鍵的是行場掃描信號的設計和對顯存SDRAM的訪問。其中行場掃描信號對于FPGA或CPLD來說,比較容易實現。這里將詳細分析對SDRAM的訪問.SDRAM讀寫模塊是整個固件設計的關鍵部分也是設計中的難點,TFT LCD顯示屏需要不斷重復地刷新所要顯示的數據,若由MCU單元通過片內總線完成,將給MCU帶來巨大的負荷,尤其在LCD屏幕分辨率很大的時候,因此方案采用片外顯示存儲器SDRAM。既能完成MCU接口模塊對SDRAM中的數據進行讀寫操作,也能滿足LCD屏對SDRAM的數據需求。外部MCU首先將顯示數據寫入SDRAM,SDRAM讀寫控制模塊根據LCD時序產生模塊提供的相關時序信號所發(fā)出的數據請求,向LCD屏發(fā)送顯示數據。
SDRAM內部以BANK為組織,采用行、列地址共同尋址的方式,有效減少了SDRAM所需的地址位,提高了器件的實用性,但卻使得尋址過程變得更為復雜。為了提高SDRAM的存儲容量,因其自身結構的特殊性,必須在一定時間內給電容重復充電才能保持電容中的數據信息,即所謂的“刷新”。通過前面介紹我們知道最短刷新間隔為64ms,因此一般SDRAM的刷新方式為4096行64ms一次的全局刷新。芯片上電以后,需要至少100us的等待時間,等待時間內不能接受任何命令,然后對所有BANK進行一次預充電。此后,再進行2個周期的自動刷新,便進入模式寄存器設置狀態(tài),主要設置SDRAM工作時的突發(fā)長度,讀潛伏期、CAS延時等工作方式相關內容[6],使得對SDRAM的控制變得復雜,帶來了一定的設計難度。
為提高數據處理的速度,SDRAM支持數據突發(fā)傳輸方式。對SDRAM控制時,其內部操作時有很多種命令:模式寄存器設置、預充電、行列激活、讀/寫控制、自動刷新、自刷新、猝發(fā)突停、空操作等[7]。根據這些控制命令,SDRAM內部的狀態(tài)會隨之轉移,這些狀態(tài)分別為:空閑、模式寄存器設置、預充電、行列激活、讀/寫控制、自刷新、節(jié)電等。鑒于SDRAM要求的工作頻率較高,SDRAM控制器通過有限狀態(tài)機的方式實現,圖5為SDRAM模塊的狀態(tài)轉換圖。系統(tǒng)上電以后,首先進行初始化操作,這個過程包括至少100us的等待,然后對所有BANK預充電,完成2個周期的刷新和模式寄存器的設定。初始化之后便可對SDRAM進行讀寫操作,此后是讀取SDRAM中的顯示數據,將SDRAM設定為潛伏期為2的連續(xù)4個數據讀取模式,而片內總線對SDRAM讀寫操作則可設定為單個突發(fā)讀寫操作模式。
圖5 SDRAM模塊的狀態(tài)轉換圖
本設計中采用模塊化設計思想將SDRAM讀寫模塊分為初始化、自刷新及數據處理和信號尋址四大模塊。SDRAM讀寫模塊設計完成之后將其綜合到控制器中,圖6所示為SDRAM讀寫模塊的RTL級視圖。
圖6 SDRAM讀寫模塊的RTL級視圖
本設計中使用的液晶屏為AT070TN92,其中DCLK為26.4-46.8 MH。LCD時序發(fā)生模塊的主要功能是生成LCD顯示所需的時序信號,并根據時序信號向SDRAM讀寫模塊發(fā)送數據請求信號。AT070TN92時序信號工作分為兩種:一是在SYNC模式下的水平同步信號(HS)垂直同步信號(VS)和數據使能信號(DEN);二是在DE模式下的同步信號DE。這兩類LCD時序信號的產生過程很相似,只需增加一個計數器協(xié)調工作,就能方便地產生這些信號。在本方案中,以DE模式為例,外部晶振輸入80MHZ頻率的時鐘,通過CPLD內部邏輯進行二分頻產生40MHz的時鐘信號作為TFT LCD的主時鐘LCD_CLK。同時產生行同步信號HSYN、場同步信號VSYN和數據有效信號DE。HSYN和VSYN有效之后,當DE有效時,控制器開始向TFT LCD顯示屏輸送數據。圖7為LCD的時序圖。
圖7 LCD時序圖
設計語言使用Verilog HDL,仿真環(huán)境為Quarus II 10.0。其端口定義的程序主要有系統(tǒng)時鐘、MCU模塊接口、LCD接口和SDRAM相應的接口的定義。系統(tǒng)實現平臺采用STM32+CPLD為產品結構,處理器采用ARM系列的 STM32f10x,TFT LCD選用InnoLux公司不帶控制器的TFT_LCD(AT070TN92)模塊,CPLD芯片選用Altera公司的EPM570,顯示緩存SDRAM為K4S641632H。系統(tǒng)平臺和顯示效果圖8所示。測試結果表明TFT LCD控制器能夠正常工作,并能夠實現在不同平臺下的使用。
本文設計了“CPLD+SDRAM”的液晶顯示驅動電路,并以AT070TN92為例,介紹了其邏輯時序,MCU接口模塊,SDRAM讀寫模塊的具體實現。經測試能夠正常工作,有效提高顯示效果和降低開發(fā)成本。
圖8 系統(tǒng)顯示效果圖
[1]王大巍,王剛,李俊峰等.薄膜晶體管顯示器件的制造、測試、與技術發(fā)展[M].北京:機械工業(yè)出版社,2007.
[2]史耀華,史永勝.基于CPLD的通用型TFT LCD控制器設計與實現[D].西安:陜西科技大學,2010.
[3]朱耀東,經亞枝,張煥春.基于FPGA的LCD&VGA控制器設計[J].電子技術應用,2002,28(11):44-46.
[4]黃俊凱,蔣存波,葉漢民等.嵌入式LCD控制器的設計和實現[J].計算機工程,2005,31(3):218-220.
[5]付先成,鄒雪城,雷鎰銘.LCD控制器中央控制單元的設計[J].微電子學與計算機,2006,23(6):1-4.
[6]趙丕鳳,徐元欣,趙 亮等.多路讀寫的SDRAM接口設計[J].電子技術應用,28(9):19-23.
[7]侯宏錄,張文芳.基于FPGA的SDRAM控制器設計方案[J].兵工自動化,2012 Vol.20 No.2