梁發(fā)云,何 輝,施建盛,王思涵,劉 果,張 華
(1.南昌大學裸眼立體技術與虛擬現(xiàn)實研究中心,江西南昌330031;2.南昌興亞光電科技發(fā)展有限公司,江西南昌330031)
裸眼3D設備使用雙視圖模擬雙眼圖像,其視頻文件數(shù)據(jù)量大并要求實時處理,電路設計有其特殊性[1]。ARM芯片兼容多種操作系統(tǒng),顯示界面美觀,有豐富的應用程序,具有多種通用外部設備接口如:Flash Memory、SD card、網(wǎng)絡接口、LCD接口等。FPGA(可編程邏輯門陣列)以其高速并行的數(shù)據(jù)處理能力在視頻數(shù)據(jù)處理領域中應用廣泛,F(xiàn)PGA特別適合在立體視頻數(shù)據(jù)實時處理和傳輸中的應用。
本文提出一種ARM+FPGA的電路結構[2],通過FPGA的內(nèi)部邏輯設計實現(xiàn)對ARM的LCD接口視頻數(shù)據(jù)進行采集、緩存等處理,實驗表明系統(tǒng)準確采集視頻數(shù)據(jù)為立體視頻圖像算法實現(xiàn)提供支持[3]。
ARM處理器是32位精簡指令集處理器架構,具有高性能、體積小、功耗低等特點,F(xiàn)PGA的靈活性和高速數(shù)據(jù)處理能力使其很適合系統(tǒng)的視頻數(shù)據(jù)采集和處理,系統(tǒng)采用ARM+FPGA的硬件結構。
ARM選用S3C6410作為主控模塊,F(xiàn)PGA選用Altera Cyclone II系列EP2C8Q208C8為從模塊。S3C6410安裝經(jīng)過個性化定制的Windows CE6.0系統(tǒng),負責管理外設和支持各種應用程序。ARM的LCD接口信號主要有:DE(Data Enable,顯示數(shù)據(jù)有效信號)、HS(Horizontal Synchronization,行同步信號)、VS(Vertical Synchronization,場同步信號)、CLK(像素時鐘)和RGB像素數(shù)據(jù)線[4]。將數(shù)字RGB和液晶屏控制信號連接到EP2C8Q208C8的管腳,通過FPGA處理后再輸入到3D液晶屏的信號接口,系統(tǒng)總體結構如圖1所示。
圖1 系統(tǒng)結構圖
為了完成ARM輸出的視頻信號采集,F(xiàn)PGA的控制邏輯應包括系統(tǒng)控制模塊、數(shù)據(jù)采集模塊、SDRAM控制器、LCD 驅(qū)動模塊[5](見圖 2)。ARM 輸出的像素時鐘CLK 為33.3 MHz,EP2C8Q208C8外部時鐘為50 MHz,而SDRAM控制器工作頻率為120 MHz,所以在此結構中涉及到異步時鐘域數(shù)據(jù)的同步問題。系統(tǒng)控制模塊具備時鐘管理功能,產(chǎn)生3個時鐘信號33.3 MHz、120 MHz、120 MHz相移-108°,并產(chǎn)生穩(wěn)定的復位信號。
圖2 FPGA邏輯設計結構圖
FPGA采集管腳連接ARM的LCD數(shù)據(jù)接口,對ARM輸出的視頻數(shù)據(jù)進行采集,通過緩存和數(shù)據(jù)處理,在輸出端連接3D液晶屏。S3C6410和EP2C8Q208C8相互配合完成視頻數(shù)據(jù)的高速采集[6]。ARM視頻輸出接口、FPGA數(shù)據(jù)采集管腳和LCD接口相互對應關系如表1所示。
表1 ARM視頻輸出、FPGA采集管腳和LCD接口定義
視頻數(shù)據(jù)采集模塊使用ARM顯示輸出接口的像素脈沖作為時鐘,F(xiàn)PGA內(nèi)部設計異步FIFO_in實現(xiàn)采集像素時鐘與SDRAM控制器時鐘匹配,F(xiàn)IFO_in位寬為16 bit,深度1 024大于一行視頻數(shù)據(jù)像素個數(shù)[7]。FIFO_in的寫入端由S3C6410控制,當INDE信號為高電平時格式轉(zhuǎn)換模塊將ARM視頻輸出的24 bit RGB888數(shù)據(jù)做位拼接,拼接成RGB565格式便于16位寬的SDRAM數(shù)據(jù)讀寫,數(shù)據(jù)拼接代碼
圖3是使用Quartus II 10.1軟件中嵌入式邏輯分析儀捕獲到的數(shù)據(jù)采集模塊采集數(shù)據(jù)和位拼接的波形圖,拼接完成后16 bit數(shù)據(jù)WR1_DATA寫入到FIFO_in中,每個INDE周期寫入一行視頻數(shù)據(jù)。FIFO_in的輸出端連接到SDRAM控制器,當一行像素數(shù)據(jù)寫入完成且優(yōu)先級控制信號有效時,向SDRAM控制器發(fā)出寫請求,將采集到的數(shù)據(jù)突發(fā)寫入到SDRAM中。FIFO_in的復位信號連接到系統(tǒng)控制模塊的全局復位端。
圖3 采集ARM視頻輸出數(shù)據(jù)并進行位拼接(截圖)
視頻圖像數(shù)據(jù)量大,像素時鐘較高。SDRAM(同步動態(tài)隨機存儲器)需要不斷地刷新每個存儲單元來保持數(shù)據(jù),控制較復雜。系統(tǒng)設計專門的SDRAM控制器,完成SDRAM的初始化、預充電、刷新、讀、寫等操作。將SDRAM操作封裝成控制器,只留出控制和數(shù)據(jù)接口,使SDRAM的操作大為簡化[8]。SDRAM控制器狀態(tài)機如圖4。
圖4 SDRAM控制器狀態(tài)機
SDRAM選用Hynix公司的HY57V641620,內(nèi)部結構為4 Bank×1M×16 bit,共64 Mbit存儲容量。SDRAM控制器上電延時200μs進行初始化,首先對所有Bank預充電,隨后連續(xù)進行8次刷新操作,刷新完成加載模式寄存器設置SDRAM工作方式,初始化完成進入空閑等待狀態(tài),可以響應讀、寫或刷新命令。數(shù)據(jù)采集模塊檢測VS(場同步信號)的下降沿,當檢測到下降沿表明一幀視頻圖像的開始,將系統(tǒng)開始信號sys_start置為高電平。圖5是使用嵌入式邏輯分析儀捕獲到的檢測到VS_in下降沿時的波形。
圖5 捕獲VS_in下降沿系統(tǒng)開始工作(截圖)
圖5中pixel_clk是ARM顯示輸出33.3 MHz像素脈沖,nege_vsin檢測到VS_in的下降沿時拉高一個時鐘周期,sys_start信號鎖存nege_vsin高電平狀態(tài),整個系統(tǒng)開始工作。SDRAM讀和寫都采用全頁突發(fā)模式,提高了數(shù)據(jù)存取效率。當FIFO_in中寫入一行像素數(shù)據(jù)和優(yōu)先級控制信號有效時,對SDRAM控制器發(fā)起寫請求。系統(tǒng)視頻分辨率為800×480,每一幀圖像包含800×480=384 000個像素點,經(jīng)過采集模塊轉(zhuǎn)換后一幀圖像有384 000個16 bit數(shù)據(jù),需要在SDRAM中開辟2個相同大小的緩存區(qū)。HY57V641620一個Bank的容量為1M×16 bit=1 024×1 024×16 bit=1 048 576×16 bit,滿足系統(tǒng)一幀視頻數(shù)據(jù)緩存要求且留有足夠的余量便于系統(tǒng)升級。VS_in信號的下降沿作為幀緩存區(qū)選擇信號,當幀數(shù)據(jù)緩存區(qū)寫滿時將data_valid拉高,LCD_DE液晶屏控制模塊按照LCD時序從FIFO_out中讀出視頻數(shù)據(jù),F(xiàn)IFO_out使得SDRAM控制器和LCD控制模塊的數(shù)據(jù)跨時鐘域穩(wěn)定傳輸。
采用普通7 in(1 in=2.54 cm)分辨率為800×480的液晶顯示屏作為系統(tǒng)前期驗證,在LCD控制模塊中使用了參數(shù)化設計,將行像素脈沖數(shù)、場像素脈沖數(shù)、消隱前肩、消隱后肩、同步脈沖寬度等使用參數(shù)化定義,只要修改相應的參數(shù)就可以支持非標準時序的3D液晶屏。
LCD驅(qū)動方式分為DE模式和SYNC模式[9]。其中DE模式中的DE信號包含有行場時序信息,相當于HS、VS兩個信號的復合同步信號,在內(nèi)部邏輯實現(xiàn)時使用h_cnt和v_cnt兩個計數(shù)器來產(chǎn)生DE信號,DE信號為高電平時LCD顯示當前接收到的圖像數(shù)據(jù)。使用示波器測得的液晶屏控制器輸出DE信號波形如圖6所示。每行DE信號周期為30 ns×1 056=31.68μs,每場DE信號周期為31.68 μs×740=23.443 2 ms。SYNC 模式可以稱它為同步模式,使用HS做為行同步信號,VS作為場同步信號,數(shù)據(jù)有效信號作為數(shù)據(jù)傳輸?shù)氖鼓苄盘?。系統(tǒng)采用了DE模式,只使用像素時鐘CLK和DE信號來控制LCD圖像顯示更為簡便。7 in LCD的DE模式時序如圖7所示,LCD控制模塊使用行、場計數(shù)器產(chǎn)生DE信號和rdf_outreq(FIFO_out讀請求信號)。
圖6 液晶屏控制器DE信號(截圖)
圖7 LCD的DE模式時序
使用ModelSim對LCD控制模塊和數(shù)據(jù)采集過程進行仿真。數(shù)據(jù)采集過程時序波形如圖8a所示。數(shù)據(jù)采集過程以行像素為單位更新寫緩存區(qū),當FIFO_in中寫入0~799的24位像素數(shù)據(jù)和優(yōu)先級控制信號有效時,對SDRAM控制器發(fā)出寫請求,SDRAM突發(fā)控制邏輯響應寫請求寫入一行數(shù)據(jù)到幀緩存區(qū)。行顯示周期為31.68μs,寫入一行數(shù)據(jù)需800×(1/(120 MHz))=6.667μs,加上SDRAM突發(fā)操作所消耗的時間也能滿足LCD時序,行周期剩余時間SDRAM數(shù)據(jù)總線由LCD控制器控制,使得圖像數(shù)據(jù)穩(wěn)定傳輸。圖8b是在硬件平臺上加載配置文件使用嵌入式邏輯分析儀調(diào)試波形圖,可以看到LCD控制模塊從FIFO_out中讀出數(shù)據(jù)輸出到液晶屏上顯示。
圖8 仿真和硬件測試波形(截圖)
系統(tǒng)使用普通7 in LCD進行了實驗,完整采集到ARM輸出的視頻信號,系統(tǒng)工作正常,且復位穩(wěn)定。圖9a是FPGA完成視頻數(shù)據(jù)采集、緩存和驅(qū)動LCD顯示的Windows CE6.0歡迎界面,圖9b是使用圖片瀏覽器播放左右格式立體圖片。
圖9 系統(tǒng)調(diào)試完成實驗顯示效果
便攜式裸眼3D設備具有廣闊的發(fā)展前景,本文提出的ARM+FPGA硬件結構,充分利用兩者的優(yōu)勢,解決視頻文件解碼和較大數(shù)據(jù)量的視頻數(shù)據(jù)緩存問題,完成了數(shù)據(jù)采集、緩存和顯示功能。系統(tǒng)工作穩(wěn)定,且通過修改FPGA邏輯設計可以采集ARM輸出的多種分辨率視頻信號,可以支持不同尺寸和非標準時序的裸眼3D顯示屏,具有較強的通用性,為便攜式裸眼3D設備圖像數(shù)據(jù)處理提供支持。
[1]梁發(fā)云,鄧善熙,楊永躍.立體圖像視頻格式及其轉(zhuǎn)換技術研究[J].儀器儀表學報,2005,26(12):1233-1237.
[2]張挺飛,樊永生,孫凌云.基于FPGA+ARM的智能圖像門控系統(tǒng)[J].電視技術,2012,36(17):156-158.
[3]吳祿慎,任丹.面外“moire”計算機圖像處理技術的研究[J].南昌大學學報:工科版,2000,12(22):1-5.
[4] 鄧中亮,肖冠蘭.Windows CE6.0下LCD驅(qū)動程序移植[J].計算機與現(xiàn)代化,2011(1):14-17.
[5]吳繼華,蔡海寧,王誠.Altera FPGA/CPLD設計(高級篇)[M].北京:人民郵電出版社,2011.
[6]劉爽,趙凱生,龍再川,等.基于ARM和FPGA的嵌入式CCD采集系統(tǒng)[J].光電子·激光,2007,18(11):1296-1298.
[7] Altera Corporation.Cyclone II device handbook[EB/OL].[2013-11-6].http://www.altera.com.
[8] ZHU Jiayi,LIU Peilin,ZHOU Dajiang.An SDRAM controller optimized for high definition video coding application[C]//Proc.ISCAS.Seattle:IEEE Press ,2008:3518-3521.
[9]干莽,齊貴寶,陳捷,等.基于FPGA與SDRAM的高效LCD控制器設計[J].吉林大學學報:信息科學版,2013,31(4):380-384.