ARM的LCD控制暫存器和原理(抖動演算法和FRC)
阿新 • • 發佈:2019-02-18
控制器簡介
在複雜的PC機中,我們經常提到顯示卡這個東西,相信大家對顯示卡的原理都不陌生。LCD控制器就相當於嵌入式系統的顯示卡。它負責把視訊記憶體中的LCD圖形資料傳輸到LCD驅動器,併產生必須的LCD控制訊號。視訊記憶體與系統儲存器共用主存空間。這樣做有幾個好處:節約儲存器,提高空間利用率,符合嵌入式系統的設計精神;視訊記憶體設定在主存空間內,對視訊記憶體的操作,實際上就是對主存的操作,簡化程式編制。 圖1 控制器系統框圖 LCD控制器使用LCDCDMA,把視訊記憶體資料輸入LCD控制器。LCDCDMA是專用DMA,在不用CPU參與的情況下,自動傳輸視訊記憶體的視訊資料到LCD控制器。控制器中有一個24字的FIFO 儲存區。其中12個FIFOL,12個FIFOH,在單掃描模式下僅12個FIFOH可用。當FIFO為空或部分為空時,LCDCDMA請求從視訊記憶體預取資料(使用突發傳輸模式,一次預取4個字;在傳輸期間,不允許出讓匯流排控制權)。 S3C44B0的LCD 控制器使用時間抖動演算法和幀速控制方法,實現LCD上的單色、4級灰度(每個象素佔用2位)、16級灰度(每個象素佔用4位)顯示,也能與彩色STN介面,支援最大256色(每個象素佔用8位)的顯示。 LCD 控制器可以程式設計支援不同水平和垂直點數(640×480, 320×240, 160×160等等),以及不同的介面時序和重新整理速率的LCD,支援4位雙掃描、4位單掃描、8位單掃描的LCD顯示器,並支援虛擬螢幕,實現硬體水平/垂直捲動。(這些概念後邊會詳細解釋) 灰度顯示中,4級灰度顯示模式使用查詢表,允許在16級灰度中選擇4級灰度顯示。該查詢表和彩色查詢表的藍色查詢表公用一個暫存器BULEVAL[15:0],灰度0由BLUEVAL[3:0]值表示,灰度1由BLUEVAL[7:4]值表示,灰度2由BLUEVAL[11:8]值表示,灰度3由BLUEVAL[15:12]值表示。16級灰度顯示模式不使用查詢表。 彩色8位顯示模式中,3位分配為紅,3位綠,可以同時顯示8個紅色與8個綠色,2位藍色位,可以同時顯示4個藍色,合起來最大顯示256色。紅、綠、藍分別使用不同的查詢表,紅色、綠色查詢表入口都是32位(並分成8組),分別由REDVAL[31:0]、GREENVAL[31:0]暫存器指示,藍色查詢表入口為16位,由BLUEVAL[15:0] 暫存器指示,並分成4組。也就是說紅色、綠色可以在16種顏色組合中選擇8色進行顯示,藍色可以在8種顏色組合中選擇4色進行顯示。 LCD自重新整理模式:S3C44B0X支援LCD自重新整理模式,以減少電源消耗,這時電源管理可以進入SL_IDLE模式。控制器原理
掃描
LCD控制器的一項重要工作是向LCD驅動器,按照一定的格式輸出顯示資料,然後驅動器逐象素的顯示,由於人眼的滯留效應,看到的是連貫的影象。這個過程稱為掃描。控制器的VD[7..0]是資料輸出埠。根據不同的驅動器,分為4位雙掃描、4位單掃描和8位單掃描,位數指輸出埠的位寬,單掃描同時重新整理螢幕上的一行,雙掃描同時重新整理兩行。 圖2-1 掃描模式 圖2-2 彩色掃描模式 當然,驅動器光有資料還不能顯示,必須知道什麼時候這些資料有效,什麼時候換行,什麼時候換頁,等等。這就需要一些同步訊號。控制器提供VCLK/VLINE/VFRAME/VM訊號做同步用。在VCLK上升延,VD輸出資料;VCLK下降延,驅動器鎖存該資料;所以VCLK實際是象素的同步訊號。同理,VLINE是行的同步訊號,VFRAME是幀的同步訊號。VM是驅動器切換板電極的交流訊號。切換的速率是可以程式設計的,由MVAL暫存器控制。VCLK(Hz)=MCLK/(CLKVAL× 2) 此外需要設定LCD的解析度和顯示模式。因為這些引數和控制器的同步訊號直接相關。舉例說明:一個LCD面板是320×240的解析度,那麼控制器每輸出320個象素,就會輸出一個行同步訊號;每輸出240行之後,就應該輸出幀同步訊號;如果是4bit單行掃描,那麼每個VCLK可以輸出4個象素,則每行只會有320÷4=80個VCLK訊號。可見前面的結論換句話說,LCD的解析度和顯示模式的引數,決定了控制器的時鐘。 HOZVAL = ( Horizontal display size / Number of the valid VD data line) -1
彩色:Horizontal display size = 3 * Number of Horizontal Pixel LINEVAL = (Vertical display size) -1:單掃描
LINEVAL = (Vertical display size / 2) -1:雙掃描