基于VW2005的MPEG-4音視頻壓縮卡的設(shè)計
由于MPEG-4標(biāo)準(zhǔn)具有出色的壓縮速率和良好的圖像效果,目前無論是壓縮電影、視頻電話,還是數(shù)碼攝像機、數(shù)碼相機,都將MPEG-4作為首選的視頻壓縮標(biāo)準(zhǔn)。
本文設(shè)計的壓縮卡基于MPEG-4音視頻編碼技術(shù),具有USB2.0接口,支持熱插拔,在實現(xiàn)上采用硬壓縮,所用壓縮芯片為Vweb公司的VW2005。
硬件設(shè)計
VW2005芯片的主要特點
VW2005是Vweb公司開發(fā)的實時MPEG-4音視頻編碼芯片。該芯片將未壓縮的ITU-R.BT.656數(shù)字視頻信號壓縮為MPEG-1/2/4或H.263視頻格式,將兩路獨立通道的I2S數(shù)字音頻信號壓縮為MPEG-1/2、MP3、AAC或AC3音頻格式。該芯片既可以輸出用于
網(wǎng)絡(luò)領(lǐng)域的傳輸流(TS),也可以輸出用于存儲的程序流(PS)。
該芯片具有以下主要特點:
1. 片內(nèi)集成2個信號處理/控制單元,包括一個嵌入式處理器RISC/DSP(內(nèi)部擴展一個音頻編碼DSP),用于總體控制VW2005、音頻編碼及A/V多路復(fù)用,還有一個視頻編碼器。
2. 具有2個數(shù)據(jù)輸出端:壓縮數(shù)據(jù)輸出端(CDO)和主機/PCI輸出端,但同一時刻只能使用其中一個。
3. 主機/PCI接口用于與外部處理器、存儲器及其它設(shè)備的連接,有三種工作模式:16位Motorola模式、16位Intel模式和PCI目標(biāo)機模式,可由上電/復(fù)位來選擇。
4. 外部ROM用于存儲引導(dǎo)程序及內(nèi)部寄存器的初始值,可由內(nèi)部RISC處理器和外部主機處理器使用。
5. 提供了與Philips公司的I2C接口功能類似的內(nèi)部設(shè)備通信接口(ICI),方便對外圍設(shè)備的控制。提供了12個通用I/O口(GPIO),可以用作普通I/O口或配置成特殊功能的接口。
壓縮卡硬件設(shè)計原理
壓縮卡的原理框圖如圖1所示。SAA7113完成系統(tǒng)前端數(shù)字圖像的采集,與VW2005可以直接無縫連接,無需其它邏輯電路。SAA7113是一個9位可編程視頻解碼芯片,片外只需提供一個24.576MHz的晶振,片內(nèi)時鐘產(chǎn)生器自動產(chǎn)生內(nèi)部電路所需的工作頻率。SAA7113在CY7C68013的I2C總線的時序控制下,將采集到的ITU656 YUV4:2:2格式(8位)的數(shù)字圖像數(shù)據(jù)以27MB/s的速率通過片外數(shù)據(jù)總線VPO0~VPO7傳輸?shù)絍W2005,完成數(shù)字圖像的MPEG-4編碼。
圖1 壓縮卡原理框圖
AK5355完成系統(tǒng)前端音頻信號的采集,與VW2005可以實現(xiàn)無縫連接,無需其它邏輯電路。AK5355是用于數(shù)字音頻系統(tǒng)的雙聲道單片品型16位ADC,信噪比為91dB,動態(tài)范圍為91dB,其內(nèi)部嵌有增益放大器和數(shù)字高通濾波器,模擬信號單端輸入,無需外接濾波器,通過將DIF引腳置高使之具有I2S的音頻數(shù)據(jù)格式輸出,本系統(tǒng)將AK5355設(shè)置為受控模式,即時鐘信號MCLK、BCLK和LRCK分別由VW2005的音頻系統(tǒng)時鐘輸出amclk_enc、sck_enc和ws_enc提供。
8MB的SDRAM芯片MT48LC2M32B2具有32位寬的數(shù)據(jù)總線,用于存儲輸入VW2005的音視頻原始數(shù)據(jù)及壓縮過程中產(chǎn)生的中間數(shù)據(jù)和壓縮結(jié)果數(shù)據(jù)。本系統(tǒng)壓縮后的數(shù)據(jù)由VW2005內(nèi)部的多路復(fù)用器控制并從主機接口輸出。
2MB的Flash芯片AT49BV1614用于存儲VW2005內(nèi)部各模塊所有的微碼(microcode)及引導(dǎo)程序,上電復(fù)位后,F(xiàn)lash中存儲的數(shù)據(jù)通過總線讀入VW2005的內(nèi)部寄存器中,之后寄存器的值可由軟件讀取。
本系統(tǒng)中主機/PCI接口工作于16位Motorola模式,可以與CY7C68013無縫連接。CY7C68013作為一款USB2.0接口芯片,集成了USB2.0收發(fā)器、串行接口引擎、增強的8051微處理器和可編程的外圍接口。主機通過調(diào)用SDK中提供的API函數(shù),能方便地完成對VW2005的初始化和配置,并編寫USB設(shè)備驅(qū)動程序。VW2005通過主機接口將壓縮后的MPEG-4音視頻流傳輸?shù)浇涌谛酒珻Y7C68013,通過USB2.0接口能實時地將數(shù)據(jù)流傳送到主機。
Windows下VW2005
設(shè)備驅(qū)動程序設(shè)計
驅(qū)動程序總體
設(shè)計
設(shè)備驅(qū)動程序軟件結(jié)構(gòu)如圖2所示。應(yīng)用程序由用戶根據(jù)不同的應(yīng)用場合來編寫,它只與Vweb USB驅(qū)動程序通信,而不與硬件內(nèi)部的固件或微碼通信。在Windows下,應(yīng)用程序只需三個函數(shù)與驅(qū)動程序通信:CreatFile()用來打開一個基于VW2005的板卡;CloseHandle用來關(guān)閉一個基于VW2005的板卡;DeviceIoControl用來對VW2005板卡進(jìn)行各種控制和設(shè)置。為了支持VW2005芯片的運行,Vweb公司提供了用于系統(tǒng)設(shè)計的USB驅(qū)動API、USB驅(qū)動、芯片級API、固件及微碼。上電/復(fù)位后,固件從ROM中導(dǎo)入SDRAM,VW2005的RISC處理器有片內(nèi)高速緩存(如dmem)用于執(zhí)行固件程序,微碼下載到特殊的內(nèi)部RISC引擎,每個RISC引擎都有片內(nèi)RAM和高速緩沖,用于存儲和執(zhí)行寫入內(nèi)部的微碼。
圖2 系統(tǒng)驅(qū)動程序軟件結(jié)構(gòu)
主機與VW2005的通信
VW2005內(nèi)部的編碼存儲器(encoder SDRAM)中有兩個雙端口、128字節(jié)的共享存儲區(qū),作為主機與VW2005的通信媒介。用于主機到VW2005通信的128字節(jié)的共享存儲區(qū)(以下簡稱host_VW_SM)位于encoder SDRAM中地址0x3F1800處。Host_VW_SM格式如表1所示。
表1 主機到VW2005的共享存儲區(qū)格式
VW2005在Firmware ReadyCode中寫入0x0A00,表示準(zhǔn)備接收命令;CMD為命令碼,分別是讀數(shù)據(jù)(CMD=1)、發(fā)IOCTL碼(CMD=2)、寫數(shù)據(jù)(CMD=3)、打開命令(CMD=4)和關(guān)閉命令(CMD=5);Int Flag為中斷標(biāo)識,Int Flag="1則VW2005執(zhí)行完命令后產(chǎn)生一個中斷",Int Flag="0則不產(chǎn)生中斷";Device Handle由打開命令從固件中獲得;Paremeters為附加參數(shù)。
用于VW2005到主機通信的128字節(jié)的共享存儲區(qū)(以下簡稱VW_host_SM)位于encoder SDRAM中地址0x3F1880處。VW_host_SM格式如表2所示。
表2 VW2005到主機的共享存儲區(qū)格式
ACK/NACK的含義是:如果Int Flag="1",命令CMD執(zhí)行成功后則為ACK,失敗則為NACK,并將錯誤代碼保存在Return Code字段。Return Code的含義是:無錯誤產(chǎn)生則為0,有錯誤產(chǎn)生則為錯誤代碼。其它參數(shù)與host_VW_SM類似,不再贅述。
信號燈
由于共享存儲區(qū)是臨界資源,所以必須提供一種機制,用以保證主機和VW2005使用它們時是互斥的。為此,VW2005分別給host_VW_SM和VW_host_SM提供了兩個硬件信號燈,分別由寄存器REG_INT1和REG_INT2的最低位實現(xiàn)。驅(qū)動程序通過REG_INT1檢查固件是否為來自主機的下一個命令作好準(zhǔn)備,通過REG_INT2告知固件主機已處理完成前一個命令。
VW2005為信號燈定義了兩種操作:
寫操作:向REG_INT1或REG_INT2的最低位寫入1,釋放共享存儲區(qū)。
讀操作:返回REG_INT1或REG_INT2的最低位的值,同時將該位清零。
壓縮卡程序流程圖
壓縮結(jié)果是傳輸流時的程序流程如圖3所示。主機只需在編碼開始前對壓縮卡進(jìn)行初始化操作,之后的編碼壓縮完全由VW2005芯片獨立完成,這樣大大降低了壓縮卡對主機CPU的要求。
圖3 壓縮卡程序流程圖
結(jié)語
本文詳細(xì)介紹了基于VW2005芯片的MPEG-4音視頻壓縮卡的設(shè)計方案,包括硬件設(shè)計和Windows下設(shè)備驅(qū)動程序的設(shè)計。該系統(tǒng)采用專用MPEG-4音視頻編碼芯片VW2005,較其它基于DSP編碼或軟件編碼的方案在性能上有很大的提高,采用USB2.0接口,可以滿足不同傳輸速率的要求,能廣泛地應(yīng)用于遠(yuǎn)程音視頻監(jiān)控、網(wǎng)絡(luò)數(shù)字?jǐn)z像機和高清晰數(shù)字電視等多個領(lǐng)域。
參考文獻(xiàn)
1 VW2005 A/V/S Encoder Chip Hardware Description Manual (Revision 0.95) [DB/OL]. Vweb corporation, December 15, 2003
2 SAA7113H 9-bit video input processor [DB/OL]. Philips Semiconductors, July 01,1999
3 AK5355 low power 16bit Δ∑ ADC [DB/OL]. AKM corporation,2001,08
4 CY7C68013 EZ-USB FX2 USB Microcontroller [DB/OL]. Cypress Semiconductor Corporation, December 19, 2002