12.04.2007

Lcd Controller Timing parameters

Lcd panel 的Timing 最小單位是clock,datasheet中標示為 Clock cycle。
這是panel 的特性,每個panel 有他工作的極限。

像 XXX 的 480x272 type,他的 clock cycle 就標示:
  Typ : 9, Max 15, Unit MHz
所以我們就要適當調整(除頻) host controller 的lcd vclk 頻率,讓他落在這個範圍內。

這個 Clock 信號,配合 R.G.B Data line,每個clock 會write一個pixel 的data到Lcd。



Lcd 掃描是橫式的,以這個例子來看,就是一條 480 的線。 這是一條 horizontal 掃描線。

Lcd 需要另一個信號 HSYNC,用來標示Horizontal 掃描線的開始。
HSYNC信號必須要維持一段時間,讓Lcd controller能夠正確收到。在datasheet中,稱作 Horizontal Sync Pulse Width。
480x272 這個type,標示:
  Min 2, Typ 41 Unit CLK
基於每個 Lcd controller 內部控制器的能力,一旦收到 HSYNC 後,需要一段內部處理時間,才能開始收取horizontal line 的pixel 資料。
這一段時間叫做 Horizontal Back Porch。是以 lcd clock 為單位來計算的。
這也標示在lcd 的data sheet中。
像 480x272這個 type,就標示 Horizontal back porch:
 Min 2, Typ 2, Unit CLK
另外,由於Lcd Controller 實在太糟了,在處理完一條horizontal line的所有pixel後,ㄒ需要休息一段時間,才能再處理下一條。這段時間叫做 Horizontal front porch。
datasheet標示
 Min 2, Typ - Unit CLK
這樣,一條掃描線所需要的參數都定義出來了 (都是以 lcd clock 為單位):

|<--HSPW-->|<--HBP-->|<---HORIZONTAL_LINE_DATA--->|<--HFP-->|


掃描線做完後,接著要靠一條一條的掃描線形成一個畫面(frame)。所以這部份的參數內容,都是以一條掃描線的時間為單位的..

和水平掃描線一樣,每個畫面的開頭,都需要一個信號,告知Lcd "這一條線是frame的開頭",這個信號叫做 Vertical Synch : VSYNC。
在datasheet標示 VSYNC 的信號,必須要維持至少 2 條掃描線的時間: Vertical Pulse Width
 Min 2, Typ 10, Unit H
其中"H"代表一個掃描線所需要的時間。
完全和Horizontal line一樣,Lcd收到VSYNC後,需要一段準備的時間,叫做 vertical back porch。datasheet上寫
 Min 2, Typ 2, Unit H
接下來還是一樣,一個畫面的所有掃描線資料都收完後,Lcd需要休息一段時間,才能再處理下一個Vertical Synch 信號,這段時間叫 Vertical Front Porch。Datasheet上寫:
 Min 2, Typ 2, Unit H
所以Vertical 部份看起來Horizontal 一樣,只是他的reference clock 單位變成"Horizontal Line Time (Period)"

|<--VSPW-->|<--VBP-->|<---EVERY_LINES_IN_FRAME--->|<--VFP-->|


所以 決定 Lcd Clock 頻率後,在決定一條horizontal line 需要的clock 數後,就可以得到 horizontal line 的頻率:
Lcd Clock = 9MHz
HSPW(41)+HBP(2)+H_PIXEL_NUMBER(480)+HFP(2) = 525.
Horizontal Freq = 10MHz/525 = 17.14kHz
然後由vertical 參數算出一個畫面(frame)需要的horizontal line 後,就可以知道frame rate (frame freq:
Horizontal Freq = 17.14kHz
VSPW(10)+VBP(2)+V_LINE_NUMBER(272)+VFP(2) = 286
Frame Rate = 17.14kHz/286 = 59.9 Hz

11 則留言:

Kasiko 提到...

front porch並不是如你所說的,因CRT的時代就是這樣定義需要的.而從黑白電視一直延用至今就是如此.
請保持開放,中立的心態才能看到歷史完整的始末.

Checko 提到...

原來是為了相容性的問題呀。
難怪覺得以目前lcd controller 的能力應該不需要這麼長的時間。

真對不起。

匿名 提到...

簡單明瞭, 謝謝了!!老是不知道LCD為什麼動或為什麼不動, 真是很痛苦的感覺....
另外有一種LED panel是只有Dot Clock與Data Enable的(沒有HSYNC/VSYNC), 不知道它的control concept應該是怎麼樣........

Ethan Huang 伊森晃 提到...

Hi checko,

我是用google LCD的「porch」找到你這邊的…

看了你的說明和kasiko的留言,不曉得你知不知道為什麼要和CRT相容啊?

我是作手機的,而手機用的LCD若使用RGB interface的話也需要設定back and front porch。奇怪的是,手機用的LCD為什麼也有這種CRT遺留下來的參數?

搞不懂…

Checko 提到...

我也不知道為甚麼要follow 以往CRT的方式耶。

想不出有什麼原因需要這樣作。

匿名 提到...

請問哪裡可以找到CRT這部分的datasheet,因為我想看看能不能用單晶片8051搭配CPLD去偵測目前顯示卡所送出來的HSYNC/VSYNC頻率是多少....還是說有大大可以提供資料參考嗎?

Checko 提到...

啊,我不知道什麼是"CRT這方面"的資料耶。

是說 掃描線 什麼的嗎?

有關這一累的規格,有一本 "Video Demystified" 好像都有提到。

俊宏 提到...
作者已經移除這則留言。
俊宏 提到...

因為我需要用8051去做一個觸控式螢幕的校正程式,需要以水平掃瞄和垂直掃瞄來比對觸控式面板所壓下的位置,所以需要找這一方面的資料,因為我記得每一行水平掃瞄都有開始和結束的時序圖,需以此作為計算的依據,不知這方面是否有較為詳細的資料,很感謝你的幫忙,我先去找找看....

土豆仁 提到...

現在LCD還有Porch,是因為要讓2D加速進來工作,所以Display的Driver都要回報Porch的intterupt給顯卡GPU, 讓他們有空來更新畫面

Brad Chou 提到...

Horizontal Freq = 10MHz/525 = 17.14kHz

這一行應該是

Horizontal Freq = 9MHz/525 = 17.14kHz

才對哦~