歡迎您光臨本站 登入註冊首頁

概述

名稱:基於VW2005的MPEG-4音視頻壓縮卡的設計摘要:本文提出了一種基於VW2005晶元的音視頻壓縮卡的設計方案,包括硬體設計和Windows下設備驅動程序的設計。該方案較其它基於DSP編碼或軟……
名稱:基於VW2005的MPEG-4音視頻壓縮卡的設計
摘要:本文提出了一種基於VW2005晶元的音視頻壓縮卡的設計方案,包括硬體設計和Windows下設備驅動程序的設計。該方案較其它基於DSP編碼或軟體編碼的方案在性能上有很大的提高。
關鍵詞: MPEG-4;VW2005;USB2.0;音視頻壓縮
由於 MPEG-4標準具有出色的壓縮速率和良好的圖像效果,目前無論是壓縮電影、視頻電話,還是數碼攝像機、數碼相機,都將 MPEG-4作為首選的視頻壓縮標準。
本文設計的壓縮卡基於 MPEG-4音視頻編碼技術,具有USB2.0介面,支持熱插拔,在實現上採用硬壓縮,所用壓縮晶元為Vweb公司的VW2005。
硬體設計
VW2005晶元的主要特點
VW2005是Vweb公司開發的實時 MPEG-4音視頻編碼晶元。該晶元將未壓縮的ITU-R.BT.656數字視頻信號壓縮為MPEG-1/2/4或H.263視頻格式,將兩路獨立通道的I2S數字音頻信號壓縮為MPEG-1/2、MP3、AAC或AC3音頻格式。該晶元既可以輸出用於網路領域的傳輸流(TS),也可以輸出用於存儲的程序流(PS)。
該晶元具有以下主要特點:
1.片內集成2個信號處理/控制單元,包括一個嵌入式處理器RISC/DSP(內部擴展一個音頻編碼DSP),用於總體控制VW2005、音頻編碼及A/V多路復用,還有一個視頻編碼器。
2.具有2個數據輸出端:壓縮數據輸出端(CDO)和主機/PCI輸出端,但同一時刻只能使用其中一個。
3.主機/PCI介面用於與外部處理器、存儲器及其它設備的連接,有三種工作模式:16位Motorola模式、16位Intel模式和PCI目標機模式,可由上電/複位來選擇。
4.外部ROM用於存儲引導程序及內部寄存器的初始值,可由內部RISC處理器和外部主機處理器使用。
5.提供了與Philips公司的I2C介面功能類似的內部設備通信介面(ICI),方便對外圍設備的控制。提供了12個通用I/O口(GPIO),可以用作普通I/O口或配置成特殊功能的介面。
壓縮卡硬體設計原理
壓縮卡的原理框圖如圖1所示。 SAA7113完成系統前端數字圖像的採集,與VW2005可以直接無縫連接,無需其它邏輯電路。 SAA7113是一個9位可編程視頻*晶元,片外只需提供一個 24.576MHZ的晶振,片內時鐘產生器自動產生內部電路所需的工作頻率。 SAA7113在 CY7C68013的I2C匯流排的時序控制下,將採集到的ITU656 YUV4:2:2格式(8位)的數字圖像數據以27MB/s的速率通過片外數據匯流排VPO0~VPO7傳輸到VW2005,完成數字圖像的 MPEG-4編碼。
AK5355完成系統前端音頻信號的採集,與VW2005可以實現無縫連接,無需其它邏輯電路。 AK5355是用於數字音頻系統的雙聲道單片品型16位ADC,信噪比為91dB,動態範圍為91dB,其內部嵌有增益放大器和數字高通濾波器,模擬信號單端輸入,無需外接濾波器,通過將DIF引腳置高使之具有I2S的音頻數據格式輸出,本系統將 AK5355設置為受控模式,即時鐘信號MCLK、BCLK和LRCK分別由VW2005的音頻系統時鐘輸出amclk_enc、sck_enc和ws_enc提供。
8MB的SDRAM晶元 MT48LC2M32B2具有32位寬的數據匯流排,用於存儲輸入VW2005的音視頻原始數據及壓縮過程中產生的中間數據和壓縮結果數據。本系統壓縮后的數據由VW2005內部的多路復用器控制並從主機介面輸出。
2MB的Flash晶元 AT49BV1614用於存儲VW2005內部各模塊所有的微碼(microcode)及引導程序,上電複位后,Flash中存儲的數據通過匯流排讀入VW2005的內部寄存器中,之後寄存器的值可由軟體讀齲
本系統中主機/PCI介面工作於16位Motorola模式,可以與 CY7C68013無縫連接。 CY7C68013作為一款USB2.0介面晶元,集成了USB2.0收發器、串列介面引擎、增強的8051微處理器和可編程的外圍介面。主機通過調用SDK中提供的API函數,能方便地完成對VW2005的初始化和配置,並編寫USB設備驅動程序。VW2005通過主機介面將壓縮后的 MPEG-4音視頻流傳輸到介面晶元 CY7C68013,通過USB2.0介面能實時地將數據流傳送到主機。

圖1壓縮卡原理框圖

圖2系統驅動程序軟體結構

圖3壓縮卡程序流程圖
Windows下VW2005設備驅動程序設計
驅動程序總體設計
設備驅動程序軟體結構如圖2所示。應用程序由用戶根據不同的應用場合來編寫,它只與Vweb USB驅動程序通信,而不與硬體內部的固件或微碼通信。在Windows下,應用程序只需三個函數與驅動程序通信:CreatFile()用來打開一個基於VW2005的板卡;CloseHandle用來關閉一個基於VW2005的板卡;DeviceIoControl用來對VW2005板卡進行各種控制和設置。為了支持VW2005晶元的運行,Vweb公司提供了用於系統設計的USB驅動API、USB驅動、晶元級API、固件及微碼。上電/複位后,固件從ROM中導入SDRAM,VW2005的RISC處理器有片內高速緩存(如dmem)用於執行固件程序,微碼下載到特殊的內部RISC引擎,每個RISC引擎都有片內RAM和高速緩衝,用於存儲和執行寫入內部的微碼。
主機與VW2005的通信
VW2005內部的編碼存儲器(encoder SDRAM)中有兩個雙埠、128位元組的共享存儲區,作為主機與VW2005的通信媒介。
用於主機到VW2005通信的128位元組的共享存儲區(以下簡稱host_VW_SM)位於encoder SDRAM中地址0x3F1800處。Host_VW_SM格式如表1所示。

表1主機到VW2005的共享存儲區格式

表2 VW2005到主機的共享存儲區格式
VW2005在Firmware ReadyCode中寫入0x0A00,表示準備接收命令;CMD為命令碼,分別是讀數據(CMD=1)、發IOCTL碼(CMD=2)、寫數據(CMD=3)、打開命令(CMD=4)和關閉命令(CMD=5);Int Flag為中斷標識,Int Flag=1則VW2005執行完命令后產生一個中斷,Int Flag=0則不產生中斷;Device Handle由打開命令從固件中獲得;Paremeters為附加參數。
用於VW2005到主機通信的128位元組的共享存儲區(以下簡稱VW_host_SM)位於encoder SDRAM中地址0x3F1880處。VW_host_SM格式如表2所示。
ACK/NACK的含義是:如果Int Flag=1,命令CMD執行成功后則為ACK,失敗則為NACK,並將錯誤代碼保存在Return Code欄位。Return Code的含義是:無錯誤產生則為0,有錯誤產生則為錯誤代碼。其它參數與host_VW_SM類似,不再贅述。
信號燈
由於共享存儲區是臨界資源,所以必須提供一種機制,用以保證主機和VW2005使用它們時是互斥的。為此,VW2005分別給host_VW_SM和VW_host_SM提供了兩個硬體信號燈,分別由寄存器REG_INT1和REG_INT2的最低位實現。驅動程序通過REG_INT1檢查固件是否為來自主機的下一個命令作好準備,通過REG_INT2告知固件主機已處理完成前一個命令。VW2005為信號燈定義了兩種操作:
寫操作:向REG_INT1或REG_INT2的最低位寫入1,釋放共享存儲區。
讀操作:返回REG_INT1或REG_INT2的最低位的值,同時將該位清零。
壓縮卡程序流程圖
壓縮結果是傳輸流時的程序流程如圖3所示。
主機只需在編碼開始前對壓縮卡進行初始化操作,之後的編碼壓縮完全由VW2005晶元獨立完成,這樣大大降低了壓縮卡對主機CPU的要求。
結語
本文詳細介紹了基於VW2005晶元的 MPEG-4音視頻壓縮卡的設計方案,包括硬體設計和Windows下設備驅動程序的設計。該系統採用專用 MPEG-4音視頻編碼晶元VW2005,較其它基於DSP編碼或軟體編碼的方案在性能上有很大的提高,採用USB2.0介面,可以滿足不同傳輸速率的要求,能廣泛地應用於遠程音視頻*、網路數字攝像機和高清晰數字電視等多個領域。

[admin via 研發互助社區 ] 基於VW2005的MPEG-4音視頻壓縮卡的設計已經有5186次圍觀

http://cocdig.com/docs/show-post-42042.html