《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > 基于PCI總線(xiàn)的MPEG-1壓縮卡軟硬件設(shè)計(jì)及實(shí)現(xiàn)

基于PCI總線(xiàn)的MPEG-1壓縮卡軟硬件設(shè)計(jì)及實(shí)現(xiàn)

2008-08-22
作者:劉偉峰, 唐曉英

  摘? 要:? 隨著計(jì)算機(jī)技術(shù)、多媒體和數(shù)據(jù)通信技術(shù)的發(fā)展,計(jì)算機(jī)視頻的應(yīng)用越來(lái)越廣。但視頻通常由于數(shù)據(jù)量巨大,應(yīng)用受到不少限制。為解決視頻數(shù)據(jù)" title="視頻數(shù)據(jù)">視頻數(shù)據(jù)的存儲(chǔ)和傳輸,唯一途徑就是對(duì)視頻數(shù)據(jù)進(jìn)行壓縮。結(jié)合目前實(shí)際需求,給出了一種基于PCI總線(xiàn)的MPEG-I壓縮卡的軟件、硬件實(shí)現(xiàn)方案。

  關(guān)鍵詞: PCI總線(xiàn)? WDM驅(qū)動(dòng)? MPEG-1壓縮卡

?

  隨著計(jì)算機(jī)技術(shù)、多媒體和數(shù)據(jù)通信技術(shù)的高速發(fā)展,人們生活水平的提高,對(duì)計(jì)算機(jī)視頻的需求和應(yīng)用越來(lái)越多,如視頻監(jiān)控、視頻會(huì)議、計(jì)算機(jī)視覺(jué)等。計(jì)算機(jī)視頻提供給人的信息很多,但是視頻的數(shù)據(jù)量很大,不利于傳輸和存儲(chǔ),使其應(yīng)用受到不少限制。為解決視頻數(shù)據(jù)的存儲(chǔ)和傳輸,唯一途徑就是對(duì)視頻數(shù)據(jù)進(jìn)行壓縮。

  目前常見(jiàn)的視頻壓縮方法有MPEG-1、MPEG-2、MPEG-4、H.261、H.263等??紤]壓縮技術(shù)的成熟度和該壓縮卡的主要用途,本文采用MPEG-1作為壓縮標(biāo)準(zhǔn),研制了基于PCI總線(xiàn)的MPEG-I壓縮卡。該卡適用于視頻監(jiān)控、視頻會(huì)議等多種應(yīng)用場(chǎng)合。該卡加上一臺(tái)主機(jī)、攝像頭和軟件可構(gòu)成一個(gè)完整的視頻采集壓縮系統(tǒng)。

1 系統(tǒng)特點(diǎn)

  (1)支持BNC、RCA、S-VIDEO視頻接口;

  (2)支持PAL和NTSC制式;

  (3)可對(duì)視頻實(shí)時(shí)預(yù)覽,最大分辨率可達(dá)720×576×32;

  (4)可對(duì)聲音進(jìn)行同步監(jiān)聽(tīng);

  (5)可對(duì)音、視頻信號(hào)進(jìn)行MPEG-I壓縮,生成MPEG文件和VCD文件;

  (6)用戶(hù)可編程MPEG-1編碼設(shè)置,可支持CBR和VBR;

  (7)可一機(jī)多卡同時(shí)工作;

  (8)可從動(dòng)態(tài)影像中捕獲單幀,生成JPG和BMP文件;

  (9)支持Win98/Win2000。

2 系統(tǒng)硬件設(shè)計(jì)

2.1 系統(tǒng)組成

  該系統(tǒng)主要由視頻解碼、音頻解碼、壓縮核心和PCI接口等組成,其總體框圖如圖1所示。

?

2.2 視頻解碼設(shè)計(jì)

  視頻解碼部分主要完成模擬視頻到數(shù)字視頻的處理,以供后面預(yù)覽、壓縮用。視頻解碼芯片常用的有SAA7110、SAA7113和SAA7114等。本方案中采用Philips公司的SAA7114。SAA7114有六路模擬輸入,內(nèi)置模擬源選擇器可構(gòu)成6×CVBS、2×Y/C,2×CVBS、1×Y/C和4 ×CVBS;兩路模擬預(yù)處理通道,內(nèi)有抗混迭濾波器;CVBS或Y/C通道含完全可編程靜態(tài)增益控制或自動(dòng)增益控制功能,對(duì)CVBS、Y/C通道可進(jìn)行自動(dòng)鉗位控制;能自動(dòng)檢測(cè)50Hz/60Hz場(chǎng)頻,并可自動(dòng)在PAL和NTSC制式進(jìn)行切換;能將PAL、NTSC和SECAM信號(hào)解碼及模數(shù)變換得到符合ITU-601/ITU-656的數(shù)字電視信號(hào)。該芯片是目前視頻解碼芯片中接收視頻源的寬容性及視頻解碼圖像質(zhì)量最好的一種。其通過(guò)I2C接口,進(jìn)行初始化設(shè)置。

  本系統(tǒng)采用Image Port作為數(shù)字視頻輸出端口,數(shù)字視頻格式采用ITU-656,AI11(PIN 20)作為BNC/RCA輸入腳,AI12、AI22作為S-VIDEO輸入腳。

2.3 音頻解碼設(shè)計(jì)

  音頻解碼的數(shù)據(jù)一部分提供給SAA7146A作聲音監(jiān)聽(tīng)用,另一部分用于壓縮??紤]到成本,本系統(tǒng)采用BURR-BROWN公司的PCM1800E。該芯片是雙聲道單片ΔΣ型20 位ADC,單+5V電源供電,信噪比為95dB(典型值),動(dòng)態(tài)范圍95dB(典型值),內(nèi)嵌高通濾波器,支持四種接口方式和四種數(shù)據(jù)格式。其采樣頻率為32kHz、44.1kHz和48kHz可選。

  本系統(tǒng)采用從模式,20位I2S數(shù)據(jù)格式。主時(shí)鐘由SAA7114提供。

2.4 MPEG-1壓縮部分設(shè)計(jì)

  本系統(tǒng)中MPEG-I壓縮芯片選用ZAPEX公司的SZ1510。該芯片基于TI的TMS320C54x DSP內(nèi)核,能對(duì)ITU-601/ITU-656數(shù)字電視信號(hào)和PCM音頻流進(jìn)行MPEG-1實(shí)時(shí)壓縮,可生成多種流,如音頻基本流、視頻基本流、音視頻復(fù)合流等。

  該芯片外接27MHz晶振,可支持多種主機(jī)接口,可工作在復(fù)用" title="復(fù)用">復(fù)用或非復(fù)用、Intel或Motorola類(lèi)型總線(xiàn)。通過(guò)輸入管腳HCONFIG[1:0]和SysConfig寄存器可設(shè)置成六種總線(xiàn)接口類(lèi)型:Intel 8051類(lèi)型的數(shù)據(jù)/地址復(fù)用的8位總線(xiàn)、Motorola類(lèi)型的數(shù)據(jù)/地址復(fù)用的8位總線(xiàn)、Intel 8051類(lèi)型的非復(fù)用的8位數(shù)據(jù)總線(xiàn)、Motorola類(lèi)型的非復(fù)用的8位數(shù)據(jù)總線(xiàn)、Intel 8051類(lèi)型的非復(fù)用的16位數(shù)據(jù)總線(xiàn)和Motorola類(lèi)型的非復(fù)用的16位數(shù)據(jù)總線(xiàn)。支持I2S聲音接口。

  本系統(tǒng)中采用Intel 8051類(lèi)型的非復(fù)用的16位數(shù)據(jù)總線(xiàn)。

2.5 PCI接口部分設(shè)計(jì)

  本系統(tǒng)中PCI接口芯片選用SAA7146A,該芯片并不是通用的PCI接口芯片,而是一個(gè)多媒體橋(Multimedia Bridge)。方框圖如圖2。該芯片符合PCI2.1規(guī)范。它有八個(gè)DMA通道,三個(gè)視頻,四個(gè)音頻,一個(gè)DEBI(Data Expansion Bus Interface)。還具有兩路視頻通道,可對(duì)視頻數(shù)據(jù)進(jìn)行縮放,一路可無(wú)級(jí)縮放HPS(High Performace Scaler),其縱向可達(dá)1:1024、橫向可達(dá)1:256;另一路有級(jí)縮放BRS(Binary Ratio Scaler)支持CIF和QCIF格式。

?

  音頻接口以I2S為基礎(chǔ),通過(guò)編程控制以支持MSB-FIRST的不同格式及不同的時(shí)序格式。

  本系統(tǒng)中該部分主要實(shí)現(xiàn)功能如下:

  (1)通過(guò)DEBI接收SZ1510產(chǎn)生的MPEG-1數(shù)據(jù),傳輸?shù)絻?nèi)存;

  (2)通過(guò)視頻接口,接收SAA7114輸出的視頻解碼信號(hào),并進(jìn)行亮度、色度、飽和度的控制,并實(shí)現(xiàn)無(wú)級(jí)縮放功能,實(shí)現(xiàn)視頻預(yù)覽功能;

  (3)通過(guò)音頻接口,接收PCM1800E輸出的PCM編碼信號(hào),傳輸?shù)絻?nèi)存,實(shí)現(xiàn)聲音監(jiān)聽(tīng)功能;

  (4)提供符合PCI2.1規(guī)范的接口,將板上數(shù)據(jù)傳輸?shù)街鳈C(jī)內(nèi)存。

3 軟件設(shè)計(jì)

  軟件設(shè)計(jì)主要包括驅(qū)動(dòng)程序設(shè)計(jì)和應(yīng)用層" title="應(yīng)用層">應(yīng)用層的API設(shè)計(jì)。驅(qū)動(dòng)程序主要負(fù)責(zé)與硬件打交道,應(yīng)用層API主要負(fù)責(zé)與驅(qū)動(dòng)程序接口。由于設(shè)計(jì)了應(yīng)用層的API,應(yīng)用程序可很容易在上面進(jìn)行開(kāi)發(fā)。

3.1 驅(qū)動(dòng)程序設(shè)計(jì)

??? 為了支持Windows2000和Windows98,采用WDM(Windows Driver Model)驅(qū)動(dòng)程序。WDM 作為微軟的最新驅(qū)動(dòng)程序模型與傳統(tǒng)的Win3.x和Win95使用的VxD驅(qū)動(dòng)完全不同。WDM可支持電源管理、自動(dòng)配置和熱插拔等。WDM驅(qū)動(dòng)的設(shè)計(jì)可以采用Driver Studio(DS)、Windriver、DDK(Driver Device Kit)等。本系統(tǒng)驅(qū)動(dòng)采用Windows 2000 DDK借助VC6.0設(shè)計(jì)。

3.1.1 MPEG-I壓縮部分

??? 在驅(qū)動(dòng)中,重置SZ1510后,就可以裝載相應(yīng)工作模式的微碼;根據(jù)需要,設(shè)置好相應(yīng)寄存值后就可以啟動(dòng)SZ1510對(duì)視頻數(shù)據(jù)進(jìn)行MPEG-1編碼。每當(dāng)產(chǎn)生的壓縮數(shù)據(jù)超過(guò)SZ1510內(nèi)部的FIFO門(mén)限后,SZ1510產(chǎn)生相應(yīng)中斷,內(nèi)核調(diào)用中斷例程" title="例程">例程,在中斷例程中調(diào)用中斷延遲例程(DPC),在中斷延遲例程中接收產(chǎn)生的壓縮數(shù)據(jù)。SZ1510提供兩種方式提取數(shù)據(jù),一種用I2C總線(xiàn)接口方式,另一種用DEBI方式。

  在本系統(tǒng)中,采用DEBI進(jìn)行壓縮數(shù)據(jù)的傳輸??紤]到壓縮數(shù)據(jù)產(chǎn)生的速度,本系統(tǒng)開(kāi)了32頁(yè)大小的緩沖區(qū),在中斷延遲例程中填充該緩沖區(qū)。每當(dāng)填滿(mǎn)8頁(yè)大小后,產(chǎn)生一個(gè)事件通知應(yīng)用層進(jìn)行數(shù)據(jù)讀取。通過(guò)這種方式,可以避免壓縮數(shù)據(jù)的丟失。

其流程圖如圖3所示。

?

  在驅(qū)動(dòng)中,壓縮數(shù)據(jù)的提取方式將極大地影響生成MPEG文件的質(zhì)量。如果處理不當(dāng),將導(dǎo)致馬賽克、跳幀等現(xiàn)象。

3.1.2 驅(qū)動(dòng)程序中用戶(hù)緩沖區(qū)的訪(fǎng)問(wèn)

  驅(qū)動(dòng)程序訪(fǎng)問(wèn)用戶(hù)內(nèi)存主要通過(guò)緩沖I/O" title="I/O">I/O和直接I/O。緩沖I/O,I/O管理器創(chuàng)建一個(gè)內(nèi)核模式拷貝緩沖區(qū),并把用戶(hù)緩沖區(qū)的內(nèi)容拷貝到該緩沖區(qū)中,并在IRP首部的AssociateIrp.SystemBuffer域中存儲(chǔ)該非分頁(yè)內(nèi)存地址。驅(qū)動(dòng)程序可簡(jiǎn)單地讀寫(xiě)該塊內(nèi)存。直接I/O,I/O管理器為輸入數(shù)據(jù)提供一個(gè)內(nèi)核模式拷貝緩沖區(qū),對(duì)輸出數(shù)據(jù)提供一個(gè)內(nèi)存描述符(MDL)。為了使用緩沖I/O或直接I/O,在創(chuàng)建設(shè)備時(shí),必須設(shè)置設(shè)備對(duì)象的Flags域中的DO_BUFFERED_IO標(biāo)志位來(lái)使用緩沖I/O或設(shè)置DO_DIRECT_IO標(biāo)志位來(lái)使用直接I/O。

  在本驅(qū)動(dòng)中由于緩沖I/O和直接I/O都被使用,DO_BUFFERED_IO標(biāo)志位和DO_DIRECT_IO標(biāo)志位都被設(shè)置。

在定義IOCTL碼中,對(duì)緩沖I/O使用METHOD_BUFFEERED,對(duì)直接I/O使用METHOD_OUT_DIRECT。

3.2 應(yīng)用層API設(shè)計(jì)

  應(yīng)用層對(duì)驅(qū)動(dòng)程序的訪(fǎng)問(wèn)通過(guò)調(diào)用Win32 I/O函數(shù)(如ReadFile、WriteFile和DeviceIoControl)訪(fǎng)問(wèn)。當(dāng)應(yīng)用層調(diào)用Win32 I/O函數(shù)以請(qǐng)求I/O后,該請(qǐng)求由內(nèi)核的I/O系統(tǒng)服務(wù)接收,I/O管理器對(duì)該請(qǐng)求構(gòu)造合適的IRP包,并將其傳給驅(qū)動(dòng)程序棧,IRP在棧中進(jìn)行傳遞,傳到驅(qū)動(dòng)程序進(jìn)行處理,并將結(jié)果返回給應(yīng)用程序。

  通過(guò)應(yīng)用層API,在其上面可進(jìn)一步開(kāi)發(fā)各類(lèi)應(yīng)用程序。

  本系統(tǒng)達(dá)到了預(yù)期的要求,能夠在音視頻采集過(guò)程中對(duì)視頻、音頻進(jìn)行實(shí)時(shí)預(yù)覽、監(jiān)聽(tīng)。壓縮生成的文件可在標(biāo)準(zhǔn)媒體播放器上播放,并可對(duì)生成的VCD文件進(jìn)行刻錄,然后由VCD機(jī)播放。

?

參考文獻(xiàn)

1 SAA7416A Data Sheet . Philips Semiconductors. 1998

2 SAA7114 Data Sheet. Philips Semiconductors. 1999

3 SZ1510-MPEG A/V Encoder DataSheet. Version 3.0.Emblaze Research. 2001

4 PCM1800 Data Sheet. Burr-Brown Corporation.1997

5 Art Baker et al. Windows 2000設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)指南(原書(shū)第二版).北京:機(jī)械工業(yè)出版社,2001

6 Chris Can. Windows WDM 設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)指南.北京:機(jī)械工業(yè)出版社,2000

7 王興東. MPEG-I實(shí)時(shí)視頻壓縮及其應(yīng)用. 電子技術(shù),2002;(12)

8 銳 崗. 基于Windows 2000 WDM模型的AD板采樣驅(qū)動(dòng)程序的設(shè)計(jì).計(jì)算機(jī)應(yīng)用研究,2001;(8)

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話(huà)通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話(huà):010-82306118;郵箱:aet@chinaaet.com。