一種新型編碼芯片及其驅(qū)動程序的設(shè)計方案
目前,電視節(jié)目的拍攝、制作、傳輸?shù)讲コ稣趯崿F(xiàn)數(shù)字化。MPEG視頻音頻編碼標準的出現(xiàn),解決了電視信號數(shù)字化后信息量過大而信道帶寬有限的問題,加上數(shù)字視頻硬件方面的產(chǎn)品不斷進步,促進了各種數(shù)字視頻產(chǎn)品的推出,這一切都預(yù)示著電視廣播全面步入數(shù)字化的時代。數(shù)字電視產(chǎn)品的開發(fā)不僅能給觀眾帶來高品質(zhì)畫面和音響效果的享受,而且MPEG-II視頻音頻壓縮的ATM網(wǎng)接入技術(shù)的開發(fā)為VOD(視頻點播)的時代鋪平了道路。
本文引用地址:http://butianyuan.cn/article/83120.htm目前世界上的數(shù)字電視系統(tǒng)標準有歐洲的DVB系統(tǒng)和美國的ATSC系統(tǒng)。這兩種系統(tǒng)在視頻壓縮上都采用MPEG-II標準,在聲音上DVB系統(tǒng)采用MPEG-II的音頻壓縮標準,ATSC系統(tǒng)則采用杜比AC-3壓縮技術(shù)。本文介紹C-Cube公司MPEG-II編碼器芯片DVxpert-II,它可用于歐洲D(zhuǎn)VB標準常規(guī)數(shù)字電視的前端系統(tǒng)的產(chǎn)品開發(fā)中。
1 芯片簡介
C-Cube公司開發(fā)的視頻處理單芯片DVxpert-II是在該公司DVx的MPEG-II單芯片編/解碼結(jié)構(gòu)的基礎(chǔ)上提高了性能的處理器。它可以產(chǎn)生高品質(zhì)的4:2:0和4:2:2 MPEG-II圖像,同時壓縮率也有所提高。該芯片能實現(xiàn)視頻編碼(video encoding)、解碼(decoding)和編/解碼(codec)三種功能,可實現(xiàn)運動補償、分塊/離散余弦變換壓縮算法。
DVxpert-II處理器的核心是32位Micro SPACR RISC Core處理器,工作頻率為100mhZ。該處理器內(nèi)有一個16K字節(jié)指令的高速緩沖存儲器(I-Cache)和一個8K字節(jié)的數(shù)據(jù)存儲器(Data Memory)接口,這是一種可編程可升級的結(jié)構(gòu)。芯片采用數(shù)據(jù)存儲器而不是數(shù)據(jù)緩沖器,目的是使軟件能更多地控制存儲器,并允許重復進行DMA傳輸。此外,DVxpert-II處理器還有兩個協(xié)處理器:DSP協(xié)處理器和運動估計協(xié)處理器(Motion Estimator),減輕了RISC處理器運算的負擔,它們共同完成視頻壓縮編碼算法,提高了編碼速度。DSP協(xié)處理器每秒鐘可執(zhí)行大約16億個算術(shù)操作指令(1600MOPS),執(zhí)行向量從存儲器到存儲器的指令,這能提高從RISC到DSP流量操作速度。其8K字節(jié)存儲器有兩個緩沖區(qū)(兩個塊),可允許DMA和DSP同時操作。
DSP協(xié)處理器能完成以下功能:①解電視電影模式;②活動測量;③運動補償;④自適應(yīng)暫時濾波;⑤線性濾波和篩選;⑥D(zhuǎn)CT變換和逆DCT變換(12位);⑦量化和逆量化;⑧變長的Huffman編碼和解碼。
可編程運動估計協(xié)處理器(運動估計器ME)支持所有的塊匹配和運動估計類型,它從RISC處理的CPU中取得運動估計的命令并返回結(jié)果。每次運動估計完成后會產(chǎn)生一個中斷。
很多公司都有自己所開發(fā)的單芯片MPEG-II編碼的LSI。進行DCT及運動補償?shù)妊菟闼璧碾娐方Y(jié)構(gòu)各不相同,C-Cube公司開發(fā)的DVxpert-II等芯片為大部分處理工作由RISC處理器及DSP等完成的“處理器型”芯片,與之配套的還有C-Cube公司開發(fā)的軟件,即微碼(.ux)文件。該文件包括進行視頻壓縮的代碼以及初始化DVxpert-II處理器的存儲器和下面要介紹的處理器外掛的SDRAM。因為它的可編程性能好,只要改換輸入到處理器的微碼,就可以變更壓縮算法或修正軟件的差錯。 DVxpert-II的內(nèi)部模塊框圖如圖1所示。
由圖中可見,DVxpert-II處理器是利用PCI總線接口與主機等設(shè)備相通信的,主機必須用PCI總線驅(qū)動處理器,控制編碼過程;壓縮好的視頻比特流也必須經(jīng)PCI總線存儲到主機內(nèi),PCI接口由主機時鐘(33MHz)驅(qū)動。
DVxpert-II處理器還有與串行ROM的接口,開發(fā)人員可選擇利用串行EPROM裝載部分初始化程序。在本開發(fā)系統(tǒng)中,為了使硬件電路簡化,所有全部初始化過程都由驅(qū)動程序經(jīng)PCI總線接口完成(可省去串行EPROM)。
該芯片還可外掛64bit同步動態(tài)RAM(SDRAM),實際電路采用4片16M比特的SDRAM實現(xiàn)8M字節(jié)外部存儲器,存儲C-Cube公司的微碼和數(shù)據(jù),并可由開發(fā)人員分配存儲空間。當處理器進行MPEG-II視頻編碼時,SDRAM所含具體內(nèi)容如下:①應(yīng)用程序微碼;②視頻幀捕獲緩沖區(qū);③運動估計取樣視頻緩沖區(qū);④預(yù)測的重構(gòu)幀緩沖區(qū);⑤參考幀;⑥速率緩沖區(qū);⑦用于編碼算法的本地表和其他數(shù)據(jù)。
處理器有視頻接口,可輸入/輸出未壓縮的數(shù)字視頻流;還有音頻接口,可輸入/輸出未壓縮的數(shù)字音頻(為獲得與視頻同步的信息)。DVxpert-II處理器只能進行視頻編碼,而未壓縮的音頻數(shù)據(jù)只能經(jīng)PCI總線送到主機存儲器,在DVxpert-II處理器外進行軟件壓縮。
本開發(fā)系統(tǒng)進行4:2:0Main Level @ Main Profile 的視頻編碼,僅用一片DVxpert-II處理器,因此可不用其和另一處理器相連的IPC的接口。
2 驅(qū)動程序的開發(fā)
虛擬設(shè)備驅(qū)動程序可包含對設(shè)備進行操作的設(shè)備專用代碼,任務(wù)具有可設(shè)操作模式,需保存數(shù)據(jù)的硬件設(shè)備都需要有虛擬設(shè)備驅(qū)動程序。虛擬設(shè)備保持了每個應(yīng)用程序的設(shè)備狀態(tài)軌跡,并能保證當應(yīng)用程序繼續(xù)執(zhí)行時設(shè)備處于正確狀態(tài)。編碼器將DVxpert-II集成于即插即用的PCI插卡,因此要開發(fā)該PCI設(shè)備的虛擬設(shè)備驅(qū)動程序(VxD)以支持編碼器芯片的正常工作,該軟件采用Microsoft VC 6.0開發(fā),在WIN98操作系統(tǒng)下運行。
WIN98操作系統(tǒng)的基本系統(tǒng)體系結(jié)構(gòu)分成Ring0層和Ring3層,它們能提供不同級別的系統(tǒng)保護。Ring3層通過Intel處理器體系所提供的保護服務(wù)與其他的運行進程隔開,以達到保護的目的。Ring0層由虛擬機管理器(VMM)等構(gòu)成。VxD是一個管理硬件設(shè)備或者已安裝軟件等系統(tǒng)資源的32位可執(zhí)行程序,運行在Ring0層,處理系統(tǒng)或外設(shè)中斷及DMA操作等,它使基于Windows的應(yīng)用程序可有效地實現(xiàn)多任務(wù)。WIN95/98的VxD對即插即用提供支持,因此當DVxpert-II處理器電路設(shè)計成即插即用PCI擴展卡時,起動后可由操作系統(tǒng)自動檢測到它。VxD的軟件開發(fā)可利用美國Vireo.Software公司推出的VtoolsD for Win95開發(fā)工具包進行,該VxD被開發(fā)成可動態(tài)加載/卸載的驅(qū)動程序,以保護模式駐留在擴展內(nèi)存中。VtoolsD中的Quick VxD程序可提供一些選項來快速生成VxD代碼框架。編碼器的VxD應(yīng)包括:設(shè)備的初始化,處理中斷信號,以及與運行在Ring3層進行通信。
設(shè)備的初始化流程圖如圖2所示。
微碼數(shù)據(jù)經(jīng)PCI總線可以兩種模式(從模式和主模式)傳輸?shù)骄幋a器設(shè)備上。從模式一次只能傳一個32位的雙字,速度慢,主模式以DMA方式猝發(fā),可高速傳大量數(shù)據(jù)。微碼中寫入處理器控制總線寄存器的部分只能采用從模式方式;微碼中寫入SDRAM中的數(shù)據(jù)根據(jù).ux文件要采用DMA方式,這要通過設(shè)置處理器的一些寄存器實現(xiàn)。
WIN95/98的內(nèi)存為平滑線性內(nèi)存模式,線性編址模式簡化了應(yīng)用軟件的開發(fā)過程,提供了存取虛擬地址空間的功能,使用戶可存取的內(nèi)存地址達4GB,2GB給應(yīng)用軟件,2GB給操作系統(tǒng)本身,因此VxD能申請4個BUFFER,用于存放DMA方式傳輸編碼時所用的命令和消息,該BUFFER表示物理地址連續(xù)的空間,同時還可映射為相應(yīng)的線性地址空間。
虛擬設(shè)備驅(qū)動程序可處理編碼器工作時發(fā)來的中斷,其服務(wù)過程如下:
?、偈紫惹宄袛啵虎贗SR把BUFFER中的消息存放到消息隊列;③ISR檢查當前消息的序列號:如果有錯,轉(zhuǎn)到處理錯誤的函數(shù),若無錯,ISR把命令隊列中的下一個命令移到Ring0層的BUFFER內(nèi);④分析消息隊列內(nèi)的新消息,并且寫相應(yīng)的新命令。
在WIN95/98中,Win32API提供設(shè)備輸入輸出控制(DeviceIoControl)來支持Ring3到Ring0的直接調(diào)用,它通常用于調(diào)用動態(tài)加載的VxD;Ring0層則可通過OnW32DeviceIoControl(PEOCTLPARAMSpDIOCParams)中的pDIOCParams->dioc_OutBuf向Ring3層傳遞數(shù)據(jù)。
DVxpert-II提供的PCI接口和編程接口使其可方便地集成到PC插卡上,而且可由驅(qū)動程序?qū)ζ溥M行較靈活的控制。目前該VxD已在使用之中,編碼器設(shè)備工作良好。
評論