文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2010)09-0039-04
自由立體顯示器是一種無(wú)需佩戴輔助裝置就能觀看三維立體效果的顯示器。由于立體顯示器能夠真實(shí)還原三維信息,因此在軍事、商業(yè)、醫(yī)療等領(lǐng)域有著廣闊的發(fā)展前景[1]。
隨著立體顯示器研究的不斷發(fā)展,自由立體顯示技術(shù)日趨成熟,不斷涌現(xiàn)出各種新型的立體顯示技術(shù)[1,2]。其中基于視差的立體圖像顯示技術(shù)以實(shí)現(xiàn)方便和技術(shù)成熟的優(yōu)點(diǎn)被廣泛應(yīng)用[2]。傳統(tǒng)的立體圖像源通常不能直接用于新型立體顯示器顯示,為立體顯示器提供合適的圖像源成為立體顯示研究的一個(gè)重要環(huán)節(jié)。本文介紹一種基于視差原理的立體顯示器的視頻轉(zhuǎn)換系統(tǒng),它能夠?qū)⒁延械牧Ⅲw視頻格式轉(zhuǎn)換成所需的視頻格式。
基于視差的立體顯示器需要在屏幕上同時(shí)顯示一對(duì)立體圖像,因此顯示器所需的圖像格式也不同于平面顯示器。本文將以輸入左右格式(Side-by-Side)的視頻信號(hào)為例,詳細(xì)描述該信號(hào)格式轉(zhuǎn)換為一種液晶立體顯示器格式的設(shè)計(jì)與實(shí)現(xiàn)。該系統(tǒng)以FPGA為核心,采用全數(shù)字的數(shù)字視頻口DVI(Digital Visual Interface)作為液晶顯示器的視頻接口,并且使用一片DDR SDRAM構(gòu)建了高速的幀緩存系統(tǒng),保證了數(shù)據(jù)的實(shí)時(shí)處理。系統(tǒng)可以工作在2D和3D模式下,實(shí)現(xiàn)顯示器的平面/立體兼容,在1 280×1 024@60 Hz的19寸立體顯示器上工作穩(wěn)定,滿足系統(tǒng)要求,通用性很好。
1 系統(tǒng)設(shè)計(jì)
1.1 目標(biāo)視頻格式
目前存在大量左右格式的立體圖像和視頻。所謂的左右格式,就是在一幅完整的圖像上,將一對(duì)立體圖像平行放置在圖像的左半邊和右半邊,如圖1(a)所示。觀看者左眼只看到左邊的圖像,右眼只看到右邊的圖像時(shí)就能看到立體圖像。一種基于液晶和視差原理的自由立體顯示器,將左右圖像分別放在亞像素列的偶數(shù)列和奇數(shù)列。以屏幕分辨率為1 280×1 024為例,原圖第0~639列為左圖,640~1 279為右圖,則第0列和第640列像素組成變換后圖像的第0列和第1列;第1列和第641列組合為第2第3列……依次類推。組合的方式為交換對(duì)應(yīng)像素的綠色分量。合成后的效果如圖1(b)所示,左右圖像的亞像素在水平方向間隔排列。
1.2 硬件系統(tǒng)設(shè)計(jì)
系統(tǒng)的硬件框圖如圖2所示。該系統(tǒng)采用DVI作為視頻輸入輸出接口。DVI作為一種全數(shù)字的接口標(biāo)準(zhǔn),已經(jīng)成為液晶顯示器必備的一種接口。與VGA相比,它的優(yōu)點(diǎn)在于采用數(shù)字信號(hào)傳輸,沒有A/D、D/A二次轉(zhuǎn)換帶來(lái)的信號(hào)損失。其中輸入輸出分別采用TI公司的TFP401和TFP410芯片,該芯片支持最高165 MHz的像素時(shí)鐘,即對(duì)應(yīng)1 600×1 200@60 Hz的分辨率。FPGA芯片采用Xilinx公司的Spartan3E系列的XC3S1600E,該芯片具有較為豐富的資源,并且成本較低。為了滿足視頻數(shù)據(jù)存儲(chǔ)的需要,該系統(tǒng)還配備了一組位寬為32 bit、容量為64 MB的DDR SDRAM存儲(chǔ)芯片。當(dāng)系統(tǒng)工作在2D模式時(shí),F(xiàn)PGA采集由DVI輸入的視頻數(shù)據(jù),經(jīng)SDRAM緩存后發(fā)送給DVI輸出芯片;當(dāng)系統(tǒng)工作在3D模式時(shí),F(xiàn)PGA先對(duì)讀入的數(shù)據(jù)實(shí)時(shí)進(jìn)行格式轉(zhuǎn)換后再寫入SDRAM,然后從SDRAM讀出轉(zhuǎn)換好的數(shù)據(jù)發(fā)送給DVI輸出芯片,立體顯示器接收到的即是對(duì)應(yīng)的立體格式的數(shù)據(jù)。該設(shè)計(jì)利用DVI輸入輸出時(shí)序上的特點(diǎn),分時(shí)利用一組SDRAM實(shí)現(xiàn)了類似“乒乓操作”的幀緩存功能,充分利用了系統(tǒng)資源。
2 FPGA邏輯設(shè)計(jì)
系統(tǒng)設(shè)計(jì)的主要任務(wù)是完成FPGA對(duì)各個(gè)模塊的控制,包括DVI數(shù)據(jù)的輸入輸出、SDRAM的讀寫控制、數(shù)據(jù)的緩存以及各模塊之間的協(xié)調(diào)等。其中,數(shù)據(jù)的緩存是整個(gè)系統(tǒng)設(shè)計(jì)的關(guān)鍵。FPGA內(nèi)部的模塊劃分如圖3所示,虛線左邊的模塊采用視頻的像素時(shí)鐘作為工作時(shí)鐘,頻率取決于分辨率;右邊的模塊采用系統(tǒng)自身生成的時(shí)鐘作為工作時(shí)鐘,頻率最高為166 MHz。
2.1 DVI輸入輸出
DVI輸入輸出控制,一方面根據(jù)同步信號(hào)采集視頻數(shù)據(jù);另一方面要根據(jù)輸入信號(hào)生成輸出信號(hào),包括行同步(HSYNC)、場(chǎng)同步(VSYNC)、數(shù)據(jù)有效信號(hào)(DE)等。以輸入視頻信號(hào)1 280×1 024@60Hz為例,根據(jù)VESA(Video Electronics Standards Association)標(biāo)準(zhǔn),此時(shí)像素時(shí)鐘fp=108 MHz,每一行信號(hào)期間,當(dāng)DE信號(hào)為高電平時(shí),數(shù)據(jù)有效。于是可以在檢測(cè)到DE信號(hào)的上升沿后開始采集數(shù)據(jù),而在DE轉(zhuǎn)為低電平后停止數(shù)據(jù)的采集。采集的數(shù)據(jù)寫入SRAM,SRAM地址由同步信號(hào)解碼產(chǎn)生。
為了精確生成輸出DVI的同步信號(hào),需要在采集DVI輸入數(shù)據(jù)的同時(shí)統(tǒng)計(jì)輸入信號(hào)各個(gè)特征脈沖維持的時(shí)鐘數(shù)。圖4所示為以行為單位統(tǒng)計(jì)場(chǎng)同步信號(hào)的參數(shù)。輸出端在根據(jù)統(tǒng)計(jì)參數(shù)生成DVI同步信號(hào)的同時(shí),當(dāng)輸出信號(hào)的DE為高電平時(shí),從輸出SRAM讀取相應(yīng)的數(shù)據(jù)送到數(shù)據(jù)總線。
2.2 數(shù)據(jù)緩沖
數(shù)據(jù)緩沖是整個(gè)設(shè)計(jì)的關(guān)鍵。數(shù)據(jù)的存儲(chǔ)緩沖是信號(hào)處理中通常會(huì)遇到的問題。視頻信號(hào)的緩沖,由于其數(shù)據(jù)量大,使得對(duì)存儲(chǔ)器的容量和速度都提出了比較高的要求。當(dāng)系統(tǒng)工作在1 600×1 200@60 Hz的最大分辨率時(shí),存儲(chǔ)一幀數(shù)據(jù)所需的容量是d0=1 600×1 200×3 B=5.49 MB,此時(shí)的數(shù)據(jù)率為d=d0×60=329.59 MB/s,這要求存儲(chǔ)器具有大容量和足夠快的速度。常用的數(shù)據(jù)緩沖方法有FIFO、雙端口RAM和乒乓操作3種。
FIFO的使用非常簡(jiǎn)單,缺點(diǎn)是只能順序讀寫,并且容量較小。雙端口RAM可以做隨機(jī)存取,且速度很快,然而SRAM的價(jià)格昂貴,容量通常在幾百Kbit到幾Mbit大小,所以也不適合做大容量的存儲(chǔ)。而SDRAM有容量大且速度較快的優(yōu)點(diǎn),所以采用SDRAM的乒乓操作既可以滿足視頻數(shù)據(jù)大容量的要求,又能滿足速度上的要求,是一種較好的方案。
綜合以上方案,同時(shí)根據(jù)輸入輸出數(shù)據(jù)時(shí)序上的相似性特點(diǎn),本文提出了一種時(shí)分復(fù)用單片SDRAM的方案。該方案用一組SDRAM實(shí)現(xiàn)類似“乒乓操作”的幀緩沖效果。
整個(gè)存儲(chǔ)緩沖的結(jié)構(gòu)如圖5所示。輸入輸出均采用兩級(jí)緩存的方式。其中第一級(jí)緩存可以存儲(chǔ)一行數(shù)據(jù),采用FPGA片內(nèi)雙端口SRAM實(shí)現(xiàn);二級(jí)緩存是可以存放完整兩幀數(shù)據(jù)的DDR SDRAM,作為主存儲(chǔ)器。
當(dāng)某一幀數(shù)據(jù)到來(lái)時(shí),輸入端的數(shù)據(jù)不停地從雙端口RAM的一個(gè)端口寫入SRAM_Rx。每當(dāng)檢測(cè)到DE的下降沿,說明已經(jīng)有一行的數(shù)據(jù)寫入完畢,則從另外一個(gè)端口將SRAM_Rx的數(shù)據(jù)寫入DDR用于保存當(dāng)前幀數(shù)據(jù)的存儲(chǔ)區(qū)。寫入一行結(jié)束時(shí),輸入端要等到下一個(gè)DE下降沿到來(lái)才會(huì)再次有讀寫SDRAM的需求。也就是說SDRAM此時(shí)處于空閑期,于是馬上從之前保存好的上一幀數(shù)據(jù)中讀出相應(yīng)的一行數(shù)據(jù)寫入SRAM_Tx,輸出端則在寫入SRAM_Tx一行完畢后從SRAM_Tx的另一個(gè)端口讀出數(shù)據(jù)。這樣一直到一幀結(jié)束。當(dāng)下一幀數(shù)據(jù)到來(lái)時(shí),交換讀寫所指向的幀存儲(chǔ)區(qū),這樣保證了原視頻信號(hào)的幀率不變。
為了使設(shè)計(jì)簡(jiǎn)單,DDR控制器模塊DDR_IF使DDR工作在BL(Burst Length)即數(shù)據(jù)突發(fā)長(zhǎng)度等于2的狀態(tài)[4],并且以行為單位完成一次讀寫流程。每次要寫入或者讀出一行數(shù)據(jù)時(shí),主控制模塊MAIN_CTL向DDR_IF發(fā)送讀寫請(qǐng)求,然后發(fā)送一行數(shù)據(jù)所需要傳送的突發(fā)長(zhǎng)度的數(shù)量BL_CNT,以及該行數(shù)據(jù)要存入DDR的bank地址、行起始地址、列起始地址。之后,MAIN_CTL和DDR_IF進(jìn)入讀寫流程。一行數(shù)據(jù)讀寫操作的Modelsim時(shí)序仿真如圖6所示,圖中以一行數(shù)據(jù)有3個(gè)像素為例。
根據(jù)以上分析,DDR在一行數(shù)據(jù)的時(shí)間內(nèi)被復(fù)用,理論上只要滿足寫入一行加讀出一行數(shù)據(jù)的時(shí)間小于一行數(shù)據(jù)的持續(xù)時(shí)間Th即可。在1 600×1 200@60 Hz的分辨率下,行周期Th=13.3 ?滋s,當(dāng)DDR工作在165 MHz時(shí),其讀一行數(shù)據(jù)加寫一行數(shù)據(jù)的時(shí)間為:Tl=1 600×2/165 M×2=9.7 ?滋s<Th。即使考慮到DDR在讀寫之外的其他操作上花費(fèi)的額外時(shí)間,也能夠滿足要求。
2.3 格式轉(zhuǎn)換
2.3.1 3D模式
2.3.2 2D模式
對(duì)于本文設(shè)計(jì)的系統(tǒng),對(duì)程序稍作修改即可實(shí)現(xiàn)2D/3D兼容。只須在輸入端,第k個(gè)像素到達(dá)時(shí),各分量分別存入地址addr=k即可。
本文介紹的立體視頻轉(zhuǎn)換系統(tǒng)能夠在不影響幀率的情況下進(jìn)行實(shí)時(shí)轉(zhuǎn)換,并且滿足2D/3D兼容的需要。該系統(tǒng)目前已應(yīng)用于立體顯示器格式轉(zhuǎn)換。DVI接口的使用,使得該系統(tǒng)有著廣泛的兼容性。此外,系統(tǒng)用一片SDRAM實(shí)現(xiàn)了幀緩沖的功能,在充分利用系統(tǒng)資源的同時(shí),使得整個(gè)系統(tǒng)的設(shè)計(jì)更為簡(jiǎn)潔,有利于減小體積和降低成本。同時(shí),該系統(tǒng)實(shí)際上構(gòu)建了一個(gè)通用的視頻處理架構(gòu),具有很好的擴(kuò)展性,程序只需稍作修改即可用于其他尺寸、其他格式視頻源(如上下格式、時(shí)分格式)、其他立體實(shí)現(xiàn)方式(如按行或者按列分割左右圖像)的立體顯示器。
參考文獻(xiàn)
[1] 王元慶.自由立體顯示器的應(yīng)用與現(xiàn)狀[J].現(xiàn)代顯示,2003(1):38-41.
[2] 周如輝.實(shí)時(shí)視頻處理系統(tǒng)中乒乓緩存控制的設(shè)計(jì)[J]. 電子元器件應(yīng)用,2006(4):66-68.
[3] 朱煒.DDR SDRAM控制器的設(shè)計(jì)與實(shí)現(xiàn)[J].電子器件,2009(3):592-595.
[4] 王元慶.基于LCD的自由立體顯示技術(shù)[J].液晶與顯示,2003,18(2):116-201.
[5] 汪洋,王元慶.多用戶自由立體顯示技術(shù)[J].液晶與顯示,2009(3):434-437.