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