大多數嵌入式產品的顯示終端都選擇LCD,但在某些需要大螢幕顯示的應用中,工業級LCD的價格比較昂貴,且現有的大螢幕顯示器(包括CRT顯示器和LCD顯示器)一般都採用統一的15針VGA顯示介面。三星公司ARM9晶片S3C2410以其強大的功能和高性價比在目前嵌入式產品中得到廣泛的應用。筆者在開發基於ARM嵌入式平台的血液流變測試儀的過程中,成功地利用高效能視頻D/A轉換晶片ADV7120,將S3C2410內建的LCD掃描式介面轉換為VGA介面,使之能夠驅動VGA介面的顯示器。
1 VGA介面介紹
近年來,業界制定出了眾多數字化的顯示介面協議,較為典型的是DVI(Digital Visual Interface)。由於數字介面的標準還未統一,廠商支援各自的標準,導致數字介面的標準遲遲未定。VGA介面是一個類比訊號介面。作為在顯示領域多年的介面標準,直到今天它仍是所有顯示終端最為成熟的標準介面,現在某些高端的電視也支援VGA介面。
15針VGA介面訊號定義如表1所列。除了2個NC訊號、3根顯示資料匯流排和5個GND訊號,比較重要的訊號是3個RGB彩色分量訊號和2個掃描同步訊號HSYNC和VSYNC。VGA介面中彩色分量採用RS343電平標準。RS343電平標準的峰峰值電壓為1 V。該標準定義的4個電平範圍是:
白電平--+0.714 V;
黑電平--+0.054 V;
消隱電平--0 V;
同步電平---0.286 V。
2 S3C2410 LCD控制器簡介
三星公司的ARM9晶片S3C2410功能強大,性價比高,在目前的嵌入式產品中得到了廣泛的應用。S3C2410帶有LCD控制器,可以很方便地控制驅動掃描式介面的LCD顯示。
2.1 引腳功能資訊
LCD控制器提供了掃描式資料轉送引腳和時序控制引腳,具體描述如下:
VFRAME/VSYNC--LCD控制器和LCD磁碟機之間的幀同步訊號。該訊號告訴LCD屏新一幀開始了。LCD控制器在一幀顯示完成後立即插入一個VFRAME訊號,開始新一幀的顯示。
VLINE/HSYNC--LCD控制器和LCD磁碟機之間的行同步脈衝訊號。該訊號用於LCD磁碟機將水平線(行)移位寄存器的內容傳送給LCD屏顯示。LCD控制器在整行資料移人LCD磁碟機後,插入一個VLINE訊號。
VCLK--LCD控制器和LCD磁碟機之間的像素時鐘訊號。LCD控制在VCLK的上升沿處送出資料,LCD磁碟機在VCLK的下降沿處採樣。
VM/VDEN--LCD磁碟機的AC訊號。VM訊號被LCD磁碟機用於改變行和列的電壓極性,從而控制像素點的顯示。VM訊號可以與每幀同步,也可以與可變資料的VLINE訊號同步。
VD[23:0]--LCD像素資料輸出連接埠。
2.2 寄存器
S3C2410的LCD控制寄存器主要有:LCDCON1寄存器、LCDCON2寄存器、LCDCON3寄存器、LCDCON4寄存器、LCDCON5寄存器。這些寄存器的設定與顯示屏資訊、控制時序和資料轉送格式等密切相關,在設計中需要根據顯示裝置的具體資訊正確設定這些寄存器才能使S3C2410正常控制驅動不同的顯示屏。
2.3 內部結構
S3C2410的LCD控制器用來傳輸映像資料併產生相應的控制訊號,由REGBANK(控制寄存器組)、LCDCD-MA(專用DMA)、VIDPCS(視頻訊號處理單元)、LPC3600和TIMEGEN(時序訊號產生單元)組成,1所示。其中REGBANK包含17個可程式化寄存器和幾個256×16的調色盤儲存空間,用來配置LCD控制器並設定相應的參數;而LCDCDMA提供了視頻訊號的快速傳輸通道,自動通過系統匯流排從系統幀緩衝中取出視頻資料並傳輸到視頻訊號處理單元;VIDPCS將專用DMA中取出的訊號整形並提高驅動能力等處理後,輸出到外部資料連接埠VD[23:0];TIMEGEN和LPC3600負責產生LCD所需要的控制時序。
?
3 VGA介面設計
利用高效能視頻D/A轉換晶片ADV7120將S3C24l0內建的LCD掃描式介面轉換為VGA介面,然後用帶有VGA介面的顯示器顯示。
3.1 ADV7120簡介
ADV7120是美國ADI公司生產的高速視頻數模轉換晶片,其像素掃描時鐘頻率有30 MHz、50 MHz、80 MHz三個等級。ADV7120在單晶片上整合了3個獨立的8位高速D/A轉換器,可以分別處理紅、綠、藍視頻資料,特別適用於高解析度類比介面的顯示終端和要求高速D/A轉換的應用系統。
ADV7120的輸入及控制訊號非常簡單:3組8位的數位視訊資料輸入端,分別對應RGB視頻資料,資料輸入端採用標準TTL電平介面;4條視頻控制訊號線包括複合約步訊號SYNC、消隱訊號BLANK、白電平參考訊號REF WHITE和像素時鐘訊號CLOCK;外接一個1.23 V數模轉換參考電壓源和1個輸出滿度調節。只有4條輸出訊號線:類比RGB訊號採用高阻電流源輸出方式,可以直接驅動75Ω同軸傳輸線;同步參考電流輸出訊號Isync用來在綠視頻類比訊號中編碼視頻同步資訊。
3.2 原理圖設計
VGA介面的同步訊號和LCD掃描式介面的同步訊號是一致的。利用ADV7120可以方便地將S3C24l0的LCD掃描式介面轉換成VGA介面,電路原理2所示。
S3C2410處理器介面中的同步掃描訊號HSYNC和VSYNC直接接到VGA介面,VDEN訊號(顯示資料有效訊號)則被用於控制ADV7120晶片。由於ADV7120對參考電平的要求精度很高,不能以電阻分壓電路代替。在此採用了1.2 V電壓基準晶片AD589來產生參考電壓。該電路設計中需要注意的是,在PCB布板時要將類比地和數字地分開。
4 S3C2410相關寄存器設定
以解析度為640×480、重新整理頻率為60 Hz、16位彩色顯示模式為例,根據圖3所示VGA介面同步訊號時序,介紹S3C2410中LCDCON1~LCDCON5寄存器的設定。
4.1 LCDCONl寄存器
LINECNT:行計數器的狀態位。唯讀,不用設定。
CLKVAL:確定VCLK頻率的參數。公式為VCLK=HCLK/[(CLKVAL+1)×2],單位為Hz。筆者所用的硬體系統HCLK=100 MHz,640×480的顯示屏需要VCLK=20 MHz,故需設定CLKVAL=1。
MMODE:確定VM的改變速度。在此選擇MMODE=O,為每幀變化模式。
PNRMODE:確定掃描方式。選擇PNRMODE=0x3,為TFT LCD面板掃描模式。
BPPMODE:確定BPP(每一像素位元數)模式。在此選擇BPPMODE=0xC,為TFT 16位元模式。
ENVID:資料輸出和邏輯訊號使能控制位。選擇ENVID=1,為允許資料輸出和邏輯控制。
4.2 LCDCON2寄存器
VBPD:確定幀同步訊號和幀資料轉送前的一段延遲時間,是幀資料轉送前延遲時間和行同步時鐘間隔寬度的比值,3,VBPD=t3/t6=1.02 mS/31.77μs=32。
LINEVAL:確定顯示的垂直方向尺寸。公式:LINEVAL=YSIZE-1=479。
VFPD:確定幀資料轉送完成後到下一幀同步訊號到來的一段延遲時間,是幀資料轉送後延遲時間和行同步時鐘間隔寬度的比值,3,VFPD=t5/t6=0.35 ms/31.77μs=11。
VSPW:確定幀同步時鐘脈衝寬度,是幀同步訊號時鐘寬度和行同步時鐘間隔寬度的比值。3,VSPW=t2/t6=0.06 ms/31.77μs=2。
4.3 LCDCON3寄存器
HBPD:確定行同步訊號和行資料轉送前的一段延遲時間,描述行資料轉送前延遲時間內VCLK脈衝個數,3,VBPD=t7×VCLK=1.89 μs×25MHz=47。
HOZAL:確定顯示的水平方向尺寸。公式HOZAL=XSIZE-1=639。
HFPD:確定行資料轉送完成後到下一行同步訊號到來的一段延遲時間,描述行資料轉送後延遲時間內VCLK脈衝個數,3,HFPD=t9×VCLK=0.94 μs×25 MHz=24。
4.4 LCDCON4寄存器
HSPW:確定行同步時鐘脈衝寬度。描述行同步脈衝寬度時間內VCLK脈衝個數,3,HSPW=3.77μs×25 MHz=94。
4.5 LCDCON5寄存器
VSTATUS:垂直方向狀態。唯讀,不用設定。
HSTATUS:水平方向狀態。唯讀,不用設定。
BPP24BL:確定顯示資料存放區格式。此處設定BPP24BL=0x0,為小端模式存放。
FRM565:確定16位元據輸出格式。此處設定FRM565=0x1,為5:6:5格式輸出。
INVVCLK:確定VCLK脈衝有效邊沿極性。根據螢幕資訊確定,此處選擇INVVCLK=0xl,VCLK上升沿到來時資料轉送開始。
INVVLlNE:確定HSYNC脈衝的極性。由圖3可知,為負極性,設定INVVLINE=0x1選擇負極性脈衝。
INVVFRAME:確定VSYNC脈衝的極性。由圖3可以看出,為負極性,故設定INVVFRAME=0x1選擇負極性脈衝。
INVVD:確定資料輸出的脈衝極性。根據螢幕資訊確定,此處設定INVVD=0x0選擇正極性脈衝。
INVVDEN:確定VDEN訊號極性。根據螢幕資訊確定,此處設定INVVDEN=0x0為正極性脈衝。
INVPWREN:確定PWREN訊號極性。根據螢幕資訊確定,此處設定NVPWREN=0x0為正極性脈衝。
INVLEND:確定LEND訊號極性。根據螢幕資訊確定,此處設定INVLEND=0x0為正極性脈衝。
PWREN:PWREN訊號輸出允許。設定PWREN=0xl,允許PWREN輸出。
ENLEND:LEND輸出訊號允許。設定ENLEND=0x1,允許LEND輸出。
BSWP:位元組交換控制位。根據各自需要設定,此處設定BSWP=0x0,禁止位元組交換。
HWSWP:半字交換控制位。根據各自需要設定,此處設定HWSWP=0xl,使能半位元組交換。
5 討論與總結
S3C2410處理器能夠驅動24位顏色模式的VGA介面,但當處理器資料匯流排負載過大時,顯示效果就不太理想。具體分析所需資料頻寬如下:
S3C2410處理器工作在640×480×60 Hz×24位(解析度為640×480、重新整理頻率為60 Hz、24位色彩)模式下的資料頻寬為:640×480×60×4/(1 024×1 024)=70.3MB/s(24位顏色實際佔用32位元據量),這些資料都需要利用DMA方式通過系統的資料匯流排從SDRAM中獲得。而S3C2410處理器在100 MHz的匯流排頻率下,32位記憶體的峰值頻寬是100×32/8=400MB/s,實際頻寬也就100~200 MB/s。那麼70.3 MB/s的顯示資料對於S3C2410處理器過於沉重了,顯示器的螢幕經常會出現短暫的黑屏。這是因為系統匯流排太忙,LCD掃描式介面的資料跟不上,掃描時鐘的頻率暫時變慢導致CRT顯示器的同步訊號不符合規範所致。若用16位顏色模式,則資料頻寬減為640×480×60×2/(1 024×1 024)=35.2MB/s。實際測試中,工作在16位顏色模式下,可以正常顯示60 Hz下的640×480的VGA圖形。
綜上分析,如果要支援高解析度和高重新整理率的顯示,需要比較大的資料頻寬,對處理器的頻率和匯流排頻率要求較高。目前的嵌入式處理器在這些方面有很大的限制,不過本設計可以完全支援16位色彩下640×480×60 Hz顯示模式的CRT顯示,並且如果採用LCD作為顯示介面,LCD對重新整理率的要求和CRT顯示器不同,LCD可以在重新整理率為30 Hz的情況下正常顯示。本設計對解決基於ARM的嵌入式系統中大螢幕顯示方面的問題有很大的實用價值和借鑒意義。