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