嵌入式高分辨率VGA圖像顯示方法研究
1 顯示原理與VGA時序?qū)崿F(xiàn)
通用VGA顯示卡系統(tǒng)主要由控制電路、顯示緩存區(qū)和視頻BIOS程序三個部分組成??刂齐娐啡鐖D1所示??刂齐娐分饕瓿蓵r序發(fā)生、顯示緩沖區(qū)數(shù)據(jù)操作、主時鐘選擇和D/A轉(zhuǎn)換等功能;顯示緩沖區(qū)提供顯示數(shù)據(jù)緩存空間;視頻BIOS作為控制程序固化在顯示卡的ROM中。
1.1 VGA時序分析
通過對VGA顯示卡基本工作原理的分析可知,要實(shí)現(xiàn)VGA顯示就要解決數(shù)據(jù)來源、數(shù)據(jù)存儲、時序?qū)崿F(xiàn)等問題,其中關(guān)鍵還是如何實(shí)現(xiàn)VGA時序。 VGA的標(biāo)準(zhǔn)參考顯示時序如圖2所示。行時序和幀時序都需要產(chǎn)生同步脈沖(Sync a)、顯示后沿(Back porch b)、顯示時序段(Display interval c)和顯示前沿(Front porch d)四個部分。幾種常用模式的時序參數(shù)如表1所示。
1.2 VGA時序?qū)崿F(xiàn)
首先,根據(jù)刷新頻率確定主時鐘頻率,然后由主時鐘頻率和圖像分辨率計算出行總周期數(shù),再把表1中給出的a、b、c、d各時序段的時間按照主計數(shù)脈沖源頻率折算成時鐘周期數(shù)。在CPLD中利用計數(shù)器和RS觸發(fā)器,以計算出的各時序段時鐘周期數(shù)為基準(zhǔn),產(chǎn)生不同寬度和周期的脈沖信號,再利用它們的邏輯組合構(gòu)成圖2中的a、b、c、d各時序段以及D/A轉(zhuǎn)換器的空白信號BLANK和同步信號SYNC。
1.3 讀SRAM地址的產(chǎn)生方法
主時鐘作為像素點(diǎn)計數(shù)脈沖信號,同時提供顯存SRAM的讀信號和D/A轉(zhuǎn)換時鐘,它所驅(qū)動的計數(shù)器的輸出端作為讀SRAM的低位地址。行同步信號作為行數(shù)計數(shù)脈沖信號,它所驅(qū)動的計數(shù)器的輸出端作為讀SRAM的高位地址。由于采用兩片SRAM,所以最高位地址作為SRAM的片選使用。由于信號經(jīng)過CPLD內(nèi)部邏輯器件時存在一定的時間延遲,在CPLD產(chǎn)生地址和讀信號讀取數(shù)據(jù)時,讀信號、地址信號和數(shù)據(jù)信號不能滿足SRAM讀數(shù)據(jù)的時序要求??梢岳糜布娐穼ψx信號進(jìn)行一定的時序調(diào)整,使各信號之間能夠滿足讀SRAM和為DAC輸入數(shù)據(jù)的時序要求。
1.4 數(shù)據(jù)寬度和格式
如果VGA顯示真彩色BMP圖像,則需要R、G、B三個分量各8位,即24位表示一個像素值,很多情況下還采用32位表示一個像素值。為了節(jié)省顯存的存儲空間,可采用高彩色圖像,即每個像素值由16位表示,R、G、B三個分量分別使用5位、6位、5位,比真彩色圖像數(shù)據(jù)量減少一半,同時又能滿足顯示效果。
2 功能單元設(shè)計
實(shí)現(xiàn)VGA顯示,除了實(shí)現(xiàn)時序控制,還必須有其他功能單元的支持才能實(shí)現(xiàn)完整的圖像顯示。
(1) 控制器:VGA顯示有多種模式,需要通過控制器實(shí)現(xiàn)模式間切換,還需要對顯示的內(nèi)容進(jìn)行接收、處理和顯示。所以控制器的性能越高,數(shù)據(jù)更新和顯示效果就越好。
(2) 顯示數(shù)據(jù)緩存區(qū):VGA顯示要求顯存速度快、容量大。讀速度要達(dá)到65MHz以卜,存儲容量至少要2MB??刹捎酶咚賁RAM或SDRAM作為顯示數(shù)據(jù)緩存。
(3) 數(shù)模轉(zhuǎn)換器DAC:VGA顯示對數(shù)模轉(zhuǎn)換DAC有如下要求:一是高速轉(zhuǎn)換,轉(zhuǎn)換的速度應(yīng)該在80MHz或以上;二是剛步性好,能保證 R、G、B三路信號的同步性;三是有相應(yīng)的精度。可選擇一種包括3路8位高速D/A的專用視頻芯片。
(4) 數(shù)據(jù)源及其接口:要提高VGA顯示的效率,就要不斷更新數(shù)據(jù),同時還要保證實(shí)時性,因此需要非常高的接口速度。VGA顯示卡雖可達(dá)到100Mbps的數(shù)據(jù)更新速度,但是一般設(shè)備、特別是嵌入式設(shè)備達(dá)不到這么高的速度,而且大多數(shù)情況下也不需要這么高的數(shù)據(jù)更新率。目前常用接口為EPP接口、USB接口、 TCP/IP、RS232C/485等。其中TCP/IP、EPP接口和USB接口是基于計算機(jī)的,速度較快;TCP/IP、RS232C/485是基于網(wǎng)絡(luò)通信的接口,其中RS485速度雖慢,但應(yīng)用廣泛且容易實(shí)現(xiàn)遠(yuǎn)程控制。
在數(shù)據(jù)源為低速接口時,可以考慮采用 Flash或者SM存儲卡等預(yù)先存儲一些常用的圖像顯示數(shù)據(jù)和字庫文件,在更新數(shù)據(jù)時直接應(yīng)用這些數(shù)據(jù),從而加快顯示緩存的更新速度。這樣既能滿足高分辨率圖像的顯示,又能滿足文字信息數(shù)據(jù)的快速更新。剛時為了存儲更多的圖像,可以先存儲JPEG格式圖像,再由控制器解碼成BMP位圖圖像后送到顯示緩存顯示,這樣就相對擴(kuò)展了Flash的存儲空間。同時,由于圖像的解碼速度要大大快于數(shù)據(jù)源接口的速度,也就相應(yīng)提高了顯示緩存的數(shù)據(jù)更新速度。
由各功能單元組成的VGA顯示硬件結(jié)構(gòu)框圖如圖3所示。
3 顯存數(shù)據(jù)更新與顯示的同步實(shí)現(xiàn)
在VGA顯示時,要考慮如何實(shí)現(xiàn)顯存數(shù)據(jù)更新與顯示的同步進(jìn)行。解決的方案有以下幾種:
(1) 采用具有緩存作用的雙口RAM,這種方法使用的器件數(shù)量多、功耗大、成本高,基本不可取。
(2) 采用兩組SRAM進(jìn)行乒乓工作模式,一組SRAM用于顯示的同時,另一組SRAM用于圖像數(shù)據(jù)的更新,然后在兩組SRAM之間切換。這樣做會提高一些成本,而且需要更復(fù)雜的總線控制。
(3) 利用FPAG/CPLD和SDRAM構(gòu)造雙口SRAM。這種方法實(shí)時性好,成本較低,時序控制比較復(fù)雜,它是
(4) 采用一組SRAM作為顯存,可以簡化系統(tǒng)設(shè)計、降低成本。這時可以考慮利用行時序和幀時序中SRAM總線空閑的時序段,在不關(guān)閉圖像顯示的情況下實(shí)現(xiàn)顯存SRAM的數(shù)據(jù)更新。該方法的更新率與數(shù)據(jù)寫速度密切相關(guān),顯存的寫數(shù)據(jù)速度越快,該方法的更新率就越高。
假設(shè)CPU的工作時鐘最大為60MHz,并采用JPEG解碼更新方式。這時如果將解碼緩存區(qū)分配在CPU片內(nèi)內(nèi)存,則更新數(shù)據(jù)時直接由內(nèi)存向 SRAM寫數(shù)據(jù),一次需要0.17μs;如果將解碼緩存區(qū)分配在片外空間,則更新數(shù)據(jù)時CPU要先從片外讀數(shù)據(jù),再向SRAM寫數(shù)據(jù),這樣寫一次需要 0.25μs。在相鄰顯示的兩幀圖像只存在局部差別或更新文本顯示信息時,可使用局部數(shù)據(jù)更新方法,以提高更新率。表2給出了顯示每幀圖像包含的總線空閑時間,以及在不同解碼緩存區(qū)分配方式下圖像全部更新和10%局部更新的幀率。這里提到的幀率是指對顯存數(shù)據(jù)的更新速度,而不是指圖像的屏幕刷新率,它對刷新率沒有影響。
基于以上方案設(shè)計的嵌入式VGA顯示系統(tǒng)在只有系統(tǒng)控制板和CRT顯示器的情況下實(shí)現(xiàn)了嵌入式高分辨率VGA顯示。
通過對嵌入式VGA顯示系統(tǒng)的設(shè)計分析和實(shí)際使用,得到如下結(jié)論:
(1) 由于VGA顯示是一個高速過程,所以選擇器件時要選擇高速器件。
(2) VGA顯示時序要求較嚴(yán)格,時序中的前后沿及同步脈沖寬度都要依照嚴(yán)格的參考數(shù)據(jù)設(shè)置。
(3) 在一般情況下,由于數(shù)據(jù)接口的限制,數(shù)據(jù)更新率不能達(dá)到計算機(jī)的水平。通過一些特殊設(shè)計,還是能夠滿足大多數(shù)嵌入式VGA的需求。
(4) 性能、成本和復(fù)雜度要綜合考慮,要以系統(tǒng)的實(shí)際需求為目標(biāo),采用合理而實(shí)用的設(shè)計方案。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論