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