基于AD9883A與USB的VGA圖像采集與顯示系統(tǒng)
1 引言
高速大容量圖像數(shù)據(jù)采集與顯示系統(tǒng)在雷達、氣象、地震預(yù)報、航空航天、通信等領(lǐng)域中有著廣泛的應(yīng)用前景。這些領(lǐng)域的信號處理具有實時性強,數(shù)據(jù)率高,數(shù)據(jù)量大,處理復(fù)雜,運算量大等特點。這就要求圖像數(shù)據(jù)采集必須具有處理大量數(shù)據(jù)的能力;并對其體積,功耗和穩(wěn)定性要求嚴格。高轉(zhuǎn)換率低功耗的A/D轉(zhuǎn)換器與高效FPGA相結(jié)合可完成該功能要求。圖像顯示接口由于采用不同的USB控制處理器件,主機需安裝各種專用驅(qū)動程序,且互不兼容,所以需要向USB接口的視頻設(shè)備提供統(tǒng)一的數(shù)據(jù)交換規(guī)范以方便快捷地與計算機通信。因此,這里給出了基于AD9883A與USB的VGA圖像采集與顯示系統(tǒng)的解決方案。
2 系統(tǒng)整體設(shè)計
圖1為圖像采集顯示系統(tǒng)框圖。
(1)VGA輸入模塊 將模擬信號RGB及行同步信號,場同步信號輸入給A/D轉(zhuǎn)換模塊。由于該模塊是由模擬電路組成,易產(chǎn)生噪聲,因此接口器件應(yīng)盡量靠近A/D轉(zhuǎn)換器放置。
(2)A/D轉(zhuǎn)換模塊 首先根據(jù)同步信號確定所采樣的行頻和場頻,接著由行頻和內(nèi)部寄存器確定像素時鐘,A/D轉(zhuǎn)換器內(nèi)部PLL產(chǎn)生像素時鐘。將VGA輸入的模擬信號轉(zhuǎn)換為8×3路的數(shù)字視頻信號,并通過一系列寄存器調(diào)整圖像的采樣效果。
(3)FPGA控制模塊 一方面FPGA通過I2C總線向A/D轉(zhuǎn)換器寄存器寫入控制信息;另一方面輸出8×3路的數(shù)字信號。當FPGA接收8×3路信號時,由于其像素頻率為75 MHz,與FPGA內(nèi)部時鐘頻率不一致,而且數(shù)據(jù)速率較大,因此,可利用兩個FIFO以pingpong的方式讀取。
(4)USB輸出顯示模塊FIFO為異步接口,具有數(shù)據(jù)緩沖作用。通過USB控制器獲取存儲在FIFO的數(shù)據(jù),并通過USB接口傳送至計算機以顯示。
3 系統(tǒng)硬件設(shè)計
3.1 VGA接口
VGA是一種D型接口,可傳輸VGA,SVGA,XGA,SXGA等圖像格式。VGA接口共有15針,分成3排,每排5個。VGA接口是顯卡應(yīng)用最為廣泛的接口類型。
系統(tǒng)VGA模擬信號輸入與A/D轉(zhuǎn)換器相連,A/D轉(zhuǎn)換器的RAIN,GAIN,BAIN分別與模擬接口的R,G,B相連。
3.2 A/D轉(zhuǎn)換接口
由于A/D轉(zhuǎn)換器的采樣率較高,相應(yīng)的輸出數(shù)據(jù)速率也高。在系統(tǒng)最高要求下,像素點頻率為108 MHz,相應(yīng)的數(shù)據(jù)速率為324 Mbit/s(R,G,B 3個分量,每個分量8 bit)。同時,由于采集圖像數(shù)據(jù),要求較高的行同步時。如果某一行圖像數(shù)據(jù)丟失一個或多個點數(shù)據(jù),整個圖像就會產(chǎn)生傾斜。因此需突發(fā)存儲每行數(shù)據(jù),保證數(shù)據(jù)不丟失。其突發(fā)長度為圖像的水平分辨率。
該采集模塊的A/D轉(zhuǎn)換器采用AD9883A。該器件是專門針對采集模擬R,G,B信號,并將其數(shù)字化顯示或為其他應(yīng)用而設(shè)計的。該器件具有采樣精度為8 bit的3路通道,最高采樣率為140 MS/s,300 MB的模擬帶寬,并且優(yōu)化了計算機及工作站的圖像接口,可采樣分辨率為1280×1024。刷新率為75 Hz的視頻信號。基于AD9883A的電路可為高清電視(HDTV)提供良好的計算機接口和高性能視頻設(shè)備的前端掃描轉(zhuǎn)換器。AD9883A內(nèi)部結(jié)構(gòu)如圖2所示。
輸入VGA圖像信號后,先箝位以調(diào)整其直流偏移分量,使輸入電平滿足A/D轉(zhuǎn)換模塊要求。AD9883A內(nèi)部具有3個高帶寬、8 bit分辨率、110MS/s轉(zhuǎn)換速率的A/D轉(zhuǎn)換器,對箝位后的模擬視頻信號進行采樣、量化、編碼,得到數(shù)字視頻信號,通過寄存器調(diào)整采樣相位,獲得最佳轉(zhuǎn)換效果。
采樣時鐘通過配置鎖相環(huán)(PLL)生成,可使用行同步信(HSYNC)作為參考時鐘,然后經(jīng)分頻,得到A/D轉(zhuǎn)換器所需的采樣時鐘。AD9883A內(nèi)部集成一個超低抖動鎖相環(huán),在所有工作模式下時鐘抖動不到點時鐘的5%。AD9883A時鐘的穩(wěn)定性對于系統(tǒng)產(chǎn)生清晰穩(wěn)定的圖像十分重要。由于AD9883A具有一個寬范圍,可調(diào)的鎖相環(huán),能夠產(chǎn)生12~140 MHz的像素點頻率,因此AD9883A支持豐富的輸入圖像格式。
AD9883A的同步信號產(chǎn)生模塊能識別多種同步信號輸入模式,同時也可根據(jù)需要靈活設(shè)定同步信號的輸出模式。通過I2C總線時序,方便實現(xiàn)器件初始化。
A/D轉(zhuǎn)換模塊能采集多種VGA圖像格式,但不能自動檢測圖像格式,必須通過它提供的I2C接口進行設(shè)置,F(xiàn)PGA自動檢測圖像格式,并設(shè)置A/D轉(zhuǎn)換模塊。另外,不同格式的VGA圖像中場同步信號的有效脈沖電平不統(tǒng)一,A/D轉(zhuǎn)換模塊可自動檢測輸入的場同步信號極性并存儲到內(nèi)部寄存器,通過讀取該寄存器判斷輸入VGA信號場同步的極性。A/D轉(zhuǎn)換模塊輸出的場同步信號實現(xiàn)輸入場同步信號的反相。FP-GA內(nèi)部的同步邏輯只支持一種有效電平的場同步信號,因此在采集前需讀取A/D轉(zhuǎn)換器內(nèi)部寄存器來判斷當前輸入同步信號的極性,以確定是否需要設(shè)置A/D轉(zhuǎn)換器對場同步信號進行反相處理。
輸入的模擬視頻信號經(jīng)箝位處理、增益與偏置控制后,AD9883內(nèi)部3個高精度高速A/D轉(zhuǎn)換器在鎖相環(huán)產(chǎn)生的采樣時鐘作用下,轉(zhuǎn)換為顯示所需的數(shù)字視頻信號。圖3為其數(shù)據(jù)輸出的時序,在輸出數(shù)據(jù)時鐘DATACK的下降沿,采樣及量化其對應(yīng)的信號,量化后的數(shù)據(jù)在時鐘上升沿輸出:接口電路以DATACK的上升沿準確鎖存圖像數(shù)據(jù),實現(xiàn)數(shù)字化圖像的采集??紤]到像素時鐘和數(shù)據(jù)的相位延遲等問題,可用HSYNC消除邊沿定時的不確定性。要注意的是,AD9883A有一個數(shù)據(jù)輸出通道,在輸出數(shù)據(jù)有效之前必須清空通道,從而導(dǎo)致在輸出每行有效數(shù)據(jù)之前將輸出4組無效數(shù)據(jù),可通過對時鐘計數(shù)避免輸出這些無效數(shù)據(jù)。
3.3 FPGA控制器設(shè)計
主控FPGA產(chǎn)生系統(tǒng)所需的控制信號,保證各個模塊協(xié)涮工作。該系統(tǒng)設(shè)計采用EP1C12Q240C8型FPGA。其內(nèi)部模塊框圖如圖4所示。
FPGA內(nèi)部由主控制、A/D轉(zhuǎn)換接口、FIFO,以及USB等模塊組成。主控制模塊負責協(xié)調(diào)各模塊之間的工作。A/D轉(zhuǎn)換接口模塊接收A/D轉(zhuǎn)換模塊輸出的數(shù)據(jù)和同步信號并保證圖像數(shù)據(jù)的行、場同步,F(xiàn)IFO模塊采用pingpong的方式讀取A/D轉(zhuǎn)換傳輸?shù)?×3路數(shù)字信號,然后USB輸出接口模塊輸出高速數(shù)據(jù)。
3.4 輸出顯示設(shè)計
USB接口模塊為應(yīng)用程序和功能性設(shè)備提供可靠接口,USB體系可分為USB主機和USB設(shè)備兩部分,其模塊結(jié)構(gòu)圖如圖5所示。
USB接口器件選用Cypress公司的EZ-USB FX2器件CY7C68013A。該器件內(nèi)部集成USB 2.0收發(fā)器智能串行引擎SIE,增強型8051控制器,通用可編程接口(GPIF),8.5 KB的RAM和4 KB的FIFO存儲器,F(xiàn)X2系列的獨創(chuàng)性設(shè)計可滿足USB2.0的總線帶寬。
該系統(tǒng)以傳輸控制信息和視頻數(shù)據(jù)為主,可將器件置于Slave FIFO模式,USB串行接口引擎(SIE)直接與Slave FIFO傳輸數(shù)據(jù),Slave FIFO再與外部設(shè)備(FPGA)通信,從而實現(xiàn)PC機與FPGA的通信,并顯示視頻數(shù)據(jù)。
3.5 USB設(shè)備驅(qū)動開發(fā)
USB設(shè)備驅(qū)動程序嘲是連接USB外設(shè)、操作系統(tǒng)以及用戶應(yīng)用程序的橋梁,是USB設(shè)備連接到計算機系統(tǒng)的軟件接口。EZ-USB FX2器件CY7C68013A的設(shè)備驅(qū)動程序有兩種:一種用來在設(shè)備接入時從主機下載的固件存儲RAM中,稱為同件下載驅(qū)動程序(wdgtldr.sys);另一種是在設(shè)備重新列舉后加載的通用設(shè)備驅(qū)動程序(ezusb.sys),應(yīng)用軟件通過該設(shè)備驅(qū)動程序與FX2通信。編寫上位機程序的一個類USB Video Class,它對應(yīng)于硬件CY7C68013A的一個同件,Video Class協(xié)議的目的是給USB接口的視頻設(shè)備提供統(tǒng)一的數(shù)據(jù)交換規(guī)范,這樣CY7C68013A接入PC后就無需ezusb.sys,而是使用PC自帶的Video驅(qū)動將其識別為Video設(shè)備。
固件的程序代碼既可通過外部E2PROM下載,也可通過主機下載,這里選用從主機下載。其中,USB Video Class協(xié)議是主機端通過向設(shè)備端獲取描述符(Descriptor)來得到視頻設(shè)備端的結(jié)構(gòu)及其所支持的功能。而控制這些功能模塊,配置數(shù)據(jù)源和數(shù)據(jù)流,則需通過Request(包括所有USB設(shè)備都需要支持的Standard Device Requests和Class與相關(guān)的Class Specific Requests)完成。
操作系統(tǒng)通過驅(qū)動程序?qū)崿F(xiàn)對Video Class的支持。Video Class驅(qū)動的整體框架分為兩部分:一部分是負責處理模塊的初始化,處理USB總線上的Descriptor和Requests的交互,包括USB總線上的控制和查詢包的接收、解釋、分配和應(yīng)答:另一部分是在初始化中啟動的一個獨立的內(nèi)核線程。負責執(zhí)行具體的控制指令,獲取和傳輸圖像數(shù)據(jù)。
表1給出了USB Video Class程序中Uncompressed Video Format Descriptor(未壓縮的視頻格式描述符)的相關(guān)定義和實例。這個描述符定義了一種特殊的視頻流的特性,用于定義未縮視頻的信息,包括所有的YUV類型。一個視頻終端包含屬于相關(guān)通道的USB端點IN或OUT,可支持一個或多個格式定義。為了選擇一種特定的格式,因此主機需發(fā)送控制請求給相關(guān)的通道。
4 結(jié)語
實現(xiàn)基于AD9883A和USB的8×3 bit,高速圖像數(shù)據(jù)采樣和顯示系統(tǒng)設(shè)計。該系統(tǒng)最高采樣速率可達110 Ms/s,采用高速率低功耗的AD9883A對1024×768,70Hz的圖像進行采樣,通過FPGA控制電路,CY7C68013A作為USB2.0的專用接口器件實現(xiàn)PC機與PFGA的通信,采用USB Video Class類,而不用加載額外的通用設(shè)備驅(qū)動程序。利用高速A/D轉(zhuǎn)換器,F(xiàn)PGA和USB共同實現(xiàn)電路的高速化與集成化。該系統(tǒng)可廣泛應(yīng)用于雷達、氣象預(yù)報、航空航天、通信等領(lǐng)域的圖像數(shù)據(jù)實時記錄。