<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于VW2010的視頻壓縮存儲(chǔ)系統(tǒng)的軟硬件設(shè)計(jì)

          基于VW2010的視頻壓縮存儲(chǔ)系統(tǒng)的軟硬件設(shè)計(jì)

          作者: 時(shí)間:2008-07-09 來源:網(wǎng)絡(luò) 收藏

          0 引言

          MPEG-4 (ISO/IEC 14496)是第二代編碼技術(shù)制定的國(guó)際標(biāo)準(zhǔn),該標(biāo)準(zhǔn)具有高比、可擴(kuò)展性和可交互性等優(yōu)點(diǎn)。在MPEG-4應(yīng)用方面,由于它能以較少的帶寬傳輸高質(zhì)量的畫面,并可將多種多媒體通信加以綜合,所以有著很好的應(yīng)用前景。為此,本文針對(duì)實(shí)際需求,提出了采用編解碼芯片為核心的嵌人式MPEG-4音方案,詳盡介紹了原理,給出了芯片的HOST引導(dǎo)模式程序方法。

          1硬件設(shè)計(jì)

          1.1 的主要特點(diǎn)

          VW2010是VWEB公司開發(fā)的實(shí)時(shí)MPEG-4音壓縮/解壓芯片(CODEC)。該芯片具有以下主要特點(diǎn):

          ◇片內(nèi)集成有3個(gè)信號(hào)處理/控制單元,其中包括一個(gè)編碼(壓縮)器、一個(gè)視頻解碼(解壓)器和一個(gè)片內(nèi)CPU(內(nèi)部擴(kuò)展了一個(gè)音頻編碼DSP、一個(gè)音頻解碼DSP、一個(gè)多路復(fù)合單元和一個(gè)多路解復(fù)合單元);

          ◇具有可編程、高性能和低功耗特點(diǎn),芯片內(nèi)的每個(gè)信號(hào)處理/控制單元都由一個(gè)RISC處理器和專用的硬件加速器構(gòu)成,此外,片內(nèi)視頻編解碼器中還集成了一個(gè)專用的SDRAM;

          ◇在系統(tǒng)上電/復(fù)位時(shí),視頻編解碼器的固件程序可由外部主機(jī)(host)載人各自專用的SDRAM,而片內(nèi)CPU的固件程序則可載人VW2010外掛的SDRAM;

          ◇芯片的主機(jī)接口采用標(biāo)準(zhǔn)PCI接口,符合PCI局部總線規(guī)范2.2;

          ◇為了使編解碼性能達(dá)到最佳,VW2010內(nèi)部集成有一個(gè)雙通道DMAC,系統(tǒng)host可直接通過主機(jī)接口對(duì)VW2010進(jìn)行控制,MPEG數(shù)據(jù)流則采用DMA方式傳輸。

          ◇提供有與PHILIPS公司兼容的I2C總線,可方便地對(duì)外圍芯片進(jìn)行控制。

          1.2VW2010的壓縮卡硬件設(shè)計(jì)

          本系統(tǒng)集成了2塊VW2010芯片,可以同時(shí)對(duì)2路音視頻流進(jìn)行編碼,并可與IDE硬盤進(jìn)行無縫連接。具體的系統(tǒng)硬件框圖如圖1所示。

          圖1中,復(fù)合視頻信號(hào)先經(jīng)過視頻接收電路進(jìn)行前端處理(包括阻抗匹配、限幅和鉗位),然后通過視頻解碼電路產(chǎn)生符合VW2010視頻接口標(biāo)準(zhǔn)的ITU656信號(hào)。視頻解碼電路的核心是一個(gè)視頻解碼芯片,該芯片可對(duì)視頻信號(hào)進(jìn)行A/D轉(zhuǎn)換和編碼,以產(chǎn)生ITU656標(biāo)準(zhǔn)的并行數(shù)字電視信號(hào)。本文選取SAA7113作為視頻解碼芯片。

          模擬音頻信號(hào)經(jīng)過模擬音頻接收電路進(jìn)行前端處理后,通過音頻ADC電路產(chǎn)生符合VW2010音頻接口標(biāo)準(zhǔn)的I2S信號(hào)。

          VW2010是壓縮卡的核心處理芯片,該芯片除可完成音、視頻信號(hào)的編碼外,還可提供對(duì)解碼器和ADC的控制(通過I℃總線),其編碼產(chǎn)生的MPEG流可通過芯片內(nèi)部集成的HOST接口和CDO接口輸出。VW2010必須在微碼和固件代碼下工作,VW2010提供有從ROM引導(dǎo)、從ICI引導(dǎo)、從主機(jī)(Host)引導(dǎo)三種引導(dǎo)方式。本文使用的方案是從主機(jī)(Host)引導(dǎo)。該方式不同于一般市面上的產(chǎn)品所采用的ROM引導(dǎo)模式。它只進(jìn)行編碼,設(shè)計(jì)時(shí)可通過設(shè)置相關(guān)的寄存器來將微代碼下載到編碼SDRAM中。

          系統(tǒng)中的FPGA用來進(jìn)行總線擴(kuò)展和數(shù)據(jù)緩存。它一方面可通過HOST-intel總線接口與2片VW2010芯片連接,以用來下載固件代碼和VW2010的參數(shù)配置,同時(shí)通過CDO接口接收VW2010的編碼視頻流并進(jìn)行緩存;另一方面,F(xiàn)PGA也可通過IDE接口和硬盤進(jìn)行連接,以用來進(jìn)行編碼數(shù)據(jù)的。

          DSP是本系統(tǒng)的核心控制芯片,可配合FPGA模擬HOST-intel總線接口和IDE接口,從而控制VW2010固件代碼的下載和硬盤的讀寫,同時(shí)建立FAT32格式的文件目錄系統(tǒng)。本設(shè)計(jì)中的DSP芯片選用TI公司的TMS320VC5416。

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

          本系統(tǒng)的軟件主要分為3大模塊:VW2010控制模塊、硬盤控制模塊和數(shù)據(jù)傳輸模塊。VW2010控制模塊主要用于下載固件代碼和配置參數(shù),是啟動(dòng)VW2010正常工作的基礎(chǔ),因此也是程序設(shè)計(jì)的核心模塊。本文將著重討論如何通過HOST-intel總線接口控制VW2010芯片,以進(jìn)行固件代碼的下載和參數(shù)的配置。

          2.1 固件代碼的下載

          VW2010需要在固件的支持下工作。固件主要有2部分,一是boot.sre,二是pscodec.sre(PS流)或tscodec.sre(TS流)。HOST接口通過訪問相關(guān)的寄存器和編碼SDRAM來下載固件。對(duì)寄存器和SDRAM的訪問在有關(guān)文獻(xiàn)中已有詳細(xì)討論,在此不再贅述。具體的固件下載流程如下:

          (1)設(shè)置寄存器REG_DHIU3,使VW2010處于固件下載狀態(tài);

          (2)設(shè)置寄存器REG_DHIU6,設(shè)置VW2010處于VW2005工作模式,并使VW2010的系統(tǒng)時(shí)鐘為162 MHz;因?yàn)楸鞠到y(tǒng)只進(jìn)行編碼壓縮,所以應(yīng)設(shè)置寄存器REG_DHIU6,使VW2010處于VW2005工作模式,這樣,VW2010就會(huì)自動(dòng)分配編碼SDRAM的地址,以用于存放固件代碼。

          (3)設(shè)置編碼軟件寄存器;

          (4)設(shè)置解碼軟件寄存器;

          (5)通過向0x3F1800地址發(fā)送0x0,清除FirmwareReadyCode;

          (6)下載boot.sre和pscodec.sre或tscodec.sre;此處要把sre文件中的數(shù)據(jù)部分按順序?qū)懭刖幋aSDRAM中的相應(yīng)地址處。

          (7)設(shè)置REG_DHIU3來啟動(dòng)VW2010;

          (8)通過讀取SDRAM中的FirmwareReadyCode區(qū)來確認(rèn)固件已經(jīng)下載并準(zhǔn)備好;Firmwar-eReadyCode是編碼SDRAM的0x3F1800地址中內(nèi)容的高16位,如果讀到0x0A00,則說明固件已經(jīng)下載成功。

          2.2參數(shù)配置

          因?yàn)楣碳a所對(duì)應(yīng)的參數(shù)設(shè)置是某種模式的默認(rèn)值,所以要通過參數(shù)配置來調(diào)整某些參數(shù)以適合自己的電路設(shè)計(jì)。參數(shù)配置可通過發(fā)IOCTL碼進(jìn)行。VW2010采用共享存儲(chǔ)區(qū)機(jī)制來接收HOST命令并返回命令執(zhí)行結(jié)果。HOST與VW2010進(jìn)行通信的共享存儲(chǔ)區(qū)位于編碼SDRAM中地址3F1800處,共128字節(jié);而VW2010與HOST進(jìn)行通信的共享存儲(chǔ)區(qū)則位于編碼SDRAM中的地址3F1880處,也是128字節(jié)。共享存儲(chǔ)區(qū)的格式如表1和2所列。

          在發(fā)送IOCTL命令前,必須首先發(fā)送OPEN命令。OPEN命令可用來打開設(shè)備以獲得"devicehandle"和輔助參數(shù)區(qū)的首地址等參數(shù)。

          要發(fā)送的IOCLT命令全部發(fā)送完以后,還必須發(fā)送CLOSE命令來釋放"device handle"。

          所有的IOCTL命令都是在OPEN命令和CLOSE命令之間發(fā)送的,VW2010提供的IOCTL碼共32位寬,由3部分組成。第一部分是固件類型,可形成IOCTL碼的高8位;第二部分是操作類型(分為讀和寫),可作為IOCTL碼的[23..16]位;第三部分是要發(fā)送的IOCTL命令。其參數(shù)配置流程如圖2所示。發(fā)送IOCTL命令的詳細(xì)過程如下:

          (1)讀共享存儲(chǔ)區(qū)的0x3F1884至0x3F1894中的內(nèi)容,并在0x3F1888處存放返回碼,0x3F188C存放返回的"handle",0x3F1890處存放輔助參數(shù)區(qū)地址。如果返回碼的數(shù)值是0,則說明無錯(cuò),這時(shí),DSP將存儲(chǔ)這些返回的參數(shù)以備后用;

          (2)讀REG_INT1,如果REG_INT1=0x01,則表示設(shè)備已準(zhǔn)備好接受IOCTL命令;如果設(shè)備準(zhǔn)備好,則繼續(xù)下一步;否則,重復(fù)檢查Firmwar-eReadyCode和REG_INT1,直到設(shè)備準(zhǔn)備好;

          (3)寫IOCTL命令碼到共享存儲(chǔ)區(qū)0x3F1800地址的CMD區(qū),并寫中斷指示碼到共享存儲(chǔ)區(qū)0x3F1800地址的Int Flag區(qū)(0=關(guān)中斷,1=開中斷)。然后把從第一步中OPEN命令返回的"de-vice handle"寫到0x3F180C處,再把從第一步中OPEN命令返回的輔助參數(shù)區(qū)的地址"x"寫到0x3F1810處;

          (4)把要發(fā)送的IOCTL碼參數(shù)個(gè)數(shù)寫到輔助參數(shù)區(qū)的"x"地址處,把要發(fā)送的IOCTL碼寫到輔助參數(shù)區(qū)的"x+4"地址處,再把要發(fā)送的IOCTL碼參數(shù)寫到輔助參數(shù)區(qū)的"x+8"地址處;

          (5)給寄存器REG_DHIU5寫0x0,以發(fā)送一個(gè)中斷給VW2010。在處理IOCTL命令前,芯片會(huì)鎖定semaphore寄存器(REG_INT1=0x0),處理完IOCTL命令后,芯片則會(huì)釋放semaphore寄存器(REG_INT1=0x01);

          (6)處理中斷。

          3 結(jié)束語

          本文在介紹VW2010內(nèi)部結(jié)構(gòu)的背景下,提出了采用DSP作為外部主機(jī)的方法。該方法沒有采用VW2010的SDK中所采用的利用PC作為主機(jī)的壓縮編碼系統(tǒng)設(shè)計(jì)方案。文章從系統(tǒng)的工作原理及流程到系統(tǒng)的設(shè)計(jì),特別是VW2010固件代碼的下載和參數(shù)的配置,都進(jìn)行了詳細(xì)的闡述。測(cè)試結(jié)果表明,該設(shè)計(jì)方案簡(jiǎn)單可行,可以在低比特率的條件下完成良好的圖象壓縮編碼和存儲(chǔ)。



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();