隨著計算機、多媒體和數據通信等技術的高速發展,對計算機音視頻的需求和應用越來越多,如視頻監控、視頻會議等。計算機音視頻提供給人的信息很多,但其數據量很大,不利于傳輸和存儲,從而使其應用受到不少限制。為解決音視頻數據的存儲和傳輸,唯一的途徑就是對音視頻數據進行壓縮。
基于Z1510專用音視頻壓縮芯片設計的具有USB接口的實時MPEG-1音視頻壓縮卡,較傳統的PCI接口的MPEG-1音視頻卡具有支持熱插拔和即插即用等特點,同時該系統還具備很好的可擴展性。本文就來介紹這個系統的設計與實現。
1 硬件設計
本系統主要由音視頻A/D轉換單元、音視頻壓縮單元、系統控制單元和UBS接口單元四大部分組成,如圖1所示。模擬音視頻信號經AK4550、SAA7113音視頻A/D轉換器后送入Z1510音視頻壓縮芯片,壓縮編碼后生成的MPEG-1碼流經USB端口輸出。整個壓縮系統的控制由TMS320F2812和EPM7128AE共同完成,壓縮后的數據通過USB接口芯片PDIUSBD12輸出。
1.1 音視頻壓縮部分的電路設計
本系統中的MPEG-1壓縮芯片選用以色列Emblaze Semiconductor公司的Z1510。Z1510是一款高性能低成本的音視頻壓縮編碼芯片,它可完成MPEG-1音視頻壓縮、MJPEG視頻編碼以及全分辨率靜態圖像捕獲,還可對CD-ROM和VCD進行格式化。Z1510壓縮芯片有三種系統配置(Master、Direct-data、Indirect-data),總共有20余種工作模式,不同的工作模式可通過加載不同的代碼來實現。
Z1510的音視頻輸入是通過視頻端口和串行接口完成的。視頻輸入端口主要接收視頻A/D轉換器產生的ITU-R BT.601或ITU-R BT.656格式的數字視頻信號和相應的時鐘同步信號。Z1510有五個串行端口,包括三個輸入端口(Audio0、Audio1和CD-Drive)和兩個輸出端口(CD-Drive和SVCD decoder),每一個端口均可作為主設備端口和從設備端口,本系統中應用的Audio1端口作為主設備端口,接收未壓縮的數字音頻信號,同時為音頻A/D轉換器提供相應的同步時鐘信號。
Z1510的主時鐘信號頻率為穩定的27MHz,該時鐘信號頻率在芯片內部被PLL1倍頻為81MHz,驅動Z1510的視頻壓縮內核及SDRAM。而PLL2連接到DSP內核,該PLL由軟件配置PLL寄存器,工作在94.5MHz,用于音頻壓縮和系統數據流復合。系統主時鐘由一個27MHz的晶體振蕩器直接提供,該晶振同時也為EPM7128AE和TMS320F2812提供時鐘信號。
在Z1510進行MPEG-1壓縮時,它是工作在LAVE(Live Audio Video Encoding)模式。在此模式下,Z1510只能配置為間接工作(Indirect-data)狀態,此時Z1510作為從設備,受主機控制,主機可以通過其HOST接口訪問它內部的配置和狀態寄存器,并且可以通過局部FIFO獲得壓縮后的視頻碼流。
Z1510的HOST接口的主要信號有:
·HAD[150] 數據總線;
·HCONFIG[9,8] 總線數據類型選擇;
·HWR_N,HRD_N 讀寫控制,HCS_N器件片選信號;
·HALE在復用總線模式下,鎖定低8位地址HAD[7~0];在非復用總線模式下,指示當前數據總線上發送的是寄存器地址還是寄存器數據。
·HINT_N 中斷請求信號,低電平有效。
在存儲空間分配中,Z1510分在TMS320F2812外部拓展存儲空間(XINTF)的0區(0x00 2000~0x00 3FFF),因此需將HALE管腳在CPLD內部通過進位鏈與DSP的A0相連,而片選信號HCS_N需由A12、A13、A14、A15和DSP的信號經譯碼實現,HWR_N和HRD_N信號由A12、A13、A14、A15和DSP的信號經譯碼實現。
1.2 系統控制單元
本系統使用TI公司的TMS320F2812和Altera公司的MAX7000系列的EPM7128AE實現系統的管理和控制。TMS320F2812是基于TMS320C28xTM DSP內核的芯片,時鐘頻率高達150MHz,具有18K的SARAM和128K的片內Flash,另外還具有1M的外部擴展存儲空間(XINTF)。TMS320F2812的外部擴展存儲空間只可用作數據空間或程序空間,不支持I/O空間,它分為0、1、2、6、7五個區,沒有DS、PS、IS三個信號線,取而代之的是三個區選信號,其中0區和1區共用一個區選信號,6區和7區共用一個區選信號,在設計中,由于SAA7113的片選信號直接拉高,而它的配置是通過TMS320F2812的GPIO模擬I2C總線實現的,因此不占用存儲空間;Z1510的控制接口地址與數據復用和USB接口芯片PDIUSBD12一樣,都只有一個地址位(占用兩個位置);只有外界FLASH芯片MBM29LV800(512K×16位)占用存儲空間較多,因此系統主要存儲空間分配如下:
Z1510 占用Zone00x00 2000~0x00 2001
USB接口 占用Zone10x00 4000~0x00 4001
FLASH 占用Zone20x08 0000~0x0F FFFF
由于本系統采用專門的視頻壓縮芯片,CPLD主要完成一些邏輯仲裁、地址解碼邏輯、控制信號的產生等,無需進行一些較復雜的運算,因而選用內核電壓和I/O電壓均為3.3V且具有128個宏單元的EPM7128AE來實現。
1.3 接口單元
Z1510在進行標準的MPEG-1音視頻壓縮時,系統比特率一般在1.5Mbps以下。雖然最高速度12Mbps的USB1.1里的開銷包括了命令包、幀標記和握手協議傳輸等,但仍可達2Mbps的系統比特率,可以滿足系統設計需要。在綜合考慮性價比后,選用了Philips公司的USB1.1接口芯片PDIUSBD12。PDIUSBD12看起來就像是一個帶八位數據總線和一個地址位的存儲器,它提供的微處理器接口可以兼容大部分的DSP環境,其接口信號包括八位數據線D0~D7和ALE、A0、、、、,USB控制器可以分為地址/數據復用模式或單地址/數據模式,如表1所示。DSP的數據地址總線是分離的,USB控制器采用單地址/數據總線模式更容易與DSP接口。
2 軟件設計
本系統的軟件設計主要分兩大部分:對硬件的初始化(SAA7113、Z1510)和PC機與系統的實時通信。系統上電后,由電源輸出端的RC電路觸發CPLD里的D觸發器,對DSP進行復位,然后由DSP對其它器件進行復位和初始化。
2.1 硬件初始化
對SAA7113的初始化可通過將DSP的McBSP用作通用I/O腳模擬I2C總線來實現,DSP作為主器件,SAA7113作為從器件,用McBSP的CLKR模擬SCL,FSR模擬SDA。首先設置DSP的GPFMUX寄存器的相應位為0,使CLKR和FSR用作通用I/O腳;然后設置GPFDIR和GPFDAT寄存器的相應位以改變CLKR和FSR的輸入輸出方向和高低電平,GPFDIR.bit=0時為輸入,相反為輸出;GPFDAT.bit=0,同時引腳為輸出時為低電平,相反為高電平。通過CLKR和FSR管腳的高低電平的變化和輸入輸出狀態的切換可以實現I2C協議。SAA7113的初始化就是對寄存器配置合適的參數,使其能夠有符合要求的輸出。寄存器配置通過I2C總線來進行,很多可以控制I2C總線的器件都可以作為主器件對7113進行初始化,這里介紹用51單片機初始化7113的例子。
系統在開始工作之前,還要進行一個軟復位過程。TMS320F2812先向Z1510的Soft_reset寄存器(地址0x08)寫0x55,等待至少1微秒后,設置Int_enable [6]寄存器,使能RDY中斷,等Z1510產生一個RDY中斷后,清中斷,完成軟復位,開始代碼加載。SAA7113是一種視頻解碼芯片,它可以輸入4路模擬視頻信號,通過內部寄存器的不同配置可以對4路輸入進行轉換,輸入可以為4路CVBS或2路S視頻(Y/C)信號,輸出8位“VPO”總線,為標準的ITU 656、YUV 4:2:2格式。7113兼容PAL、NTSC、SECAM多種制式,可以自動檢測場頻適用的50或60Hz,可以在PAL、NTSC之間自動切換。7113內部具有一系列寄存器,可以配置為不同的參數,對色度、亮度等的控制都是通過對相應寄存器改寫不同的值,寄存器的讀寫需要通過I2C總線進行。7113的模擬與數字部分均采用+3.3V供電,數字I/O接口可兼容+5V,正常工作時功耗0.4W, 空閑時為0.07W。7113需外接24.576MHz晶體,內部具有鎖相環(LLC),可輸出27MHz的系統時鐘。芯片具有上電自動復位功能,另有外部復位管腳(CE),低電平復位,復位以后輸出總線變為三態,待復位信號變高后自動恢復,時鐘丟失、電源電壓降低都會引起芯片的自動復位。7113為QFP44封裝。
在Z1510內部寄存器有一段程序空間,這段空間以塊為單位,每塊的大小是256字節。其中,DSP核程序空間為0x280~0x2BF(64 banks),視頻編碼核的二進制代碼的裝載空間為0x000~0x004和0x00C等六個塊。裝載步驟如下:
(1)向Z1510內部寄存器0x2E寫入0x01,表示外部的SDRAM是1M×16bit;
(2)向0x0C寄存器寫0x03,使能FIFO Ready和End of Data中斷;
(3)向0x11寄存器寫0x18,設定工作模式為內部內存寫模式;
(4)向0x10寫0x20,設定Z1510的FIFO滿為256字節;
(5)向0x08寄存器寫0x04,發送開始命令;等待Ready中斷,然后清除Ready中斷;
(6)向Data _in寄存器0x01寫256個字節數據;等待End of Data中斷,然后清除中斷;
(7)查程序空間的代碼是否裝載完畢,如沒有,回到(5)繼續裝載。
通過設定Z1510內部工作寄存器的特定狀態可以使其工作在特定的模式,在本系統中設定Z1510工作在LAVE模式,在此模式下,Z1510從音頻和視頻A/D轉換器獲取數據并壓縮為MPEG-1碼流。Z1510正常工作后,輸出MPEG-1碼流。其輸出碼流要經過輸出端口FIFO緩沖,每當FIFO寫入超過半門限時,產生中斷FRDY(FIFO Ready)通知DSP,DSP通過讀寄存器DATA_out(0x00)取走數據,其半門限可由ThreshHold寄存器設定,最大256字節。FIFO滿后,DSP連續讀寄存器256次可以取走數據。Z1510的驅動流程見圖2。
2.2 接口程序設計
在設計開發一個USB外設的時候,主要需要編寫三部分程序:①固件程序;②USB驅動程序;③客戶應用程序。固件編程主要完成PDIUSBD12的驅動,使DSP系統與外部系統進行數據交換。
在Win32系統中,每一個設備對象都抽象為文件。在應用程序設計中,只需通過幾條簡單的文件操作API函數,就可以實現與某個設備通信。主要使用的API函數有DeviceIOControl()、ReadFile()、WriteFile()。其中,DeviceIOControl()用于PC機(主機)向圖像壓縮系統發送請求;ReadFile()和WriteFile()分別用于從圖像壓縮系統中讀出數據和寫入數據。在設計過程中必須注意的問題是:由于USB接口是主-從方式的接口,它的一切傳輸都必須通過主機向外設發送請求后才能進行,所以在使用ReadFile()、WriteFile()讀寫數據之前,必須先通過DeviceIOControl()向圖像壓縮系統發送請求,系統接收請求后才能讀寫數據,開始進行音視頻壓縮。
該音視頻壓縮系統具有較好的功能擴展性,正如前面所介紹的,由于Z1510具有多種工作模式,在系統初始化時可根據所需工作模式加載不同的代碼,對相應的寄存器進行不同的初始化,通過改變工作模式,可完成單獨的視頻壓縮、音頻壓縮、靜態非壓縮或壓縮圖像獲取(PC CAMERA)等多種功能。如再在系統中設計大容量FLASH,還可升級為獨立的音視頻壓縮記錄系統。
-
寄存器
+關注
關注
31文章
5343瀏覽量
120369 -
usb
+關注
關注
60文章
7945瀏覽量
264660 -
視頻
+關注
關注
6文章
1945瀏覽量
72910 -
計算機
+關注
關注
19文章
7494瀏覽量
87955 -
PCI
+關注
關注
4文章
666瀏覽量
130270
發布評論請先 登錄
相關推薦
評論