一種面向DVB-C的單片MPEG-2解碼方案
進(jìn)入21世紀(jì),全世界的數(shù)字電視發(fā)展相當(dāng)迅速,歐洲的DVB視頻廣播已經(jīng)相當(dāng)成熟,日本和美國也都開始了高清晰度節(jié)目的播出,并制定了數(shù)字電視廣播全面代替模擬電視廣播的時(shí)間表。在我國,由于各省市已有三十多套節(jié)目以MPEG-2方式壓縮并通過衛(wèi)星傳輸,DVB-S已經(jīng)形成了較為成熟的市場。國內(nèi)目前有多家廠商自主開發(fā)DVB解碼套片,生產(chǎn)并銷售DVB-S,價(jià)格也降到了用戶可以承受的水平。反觀DVB-C,同樣有多家廠商推出樣機(jī),但由于功能上不能完全滿足電視臺(tái)和用戶的需要以及源端設(shè)備改造需要較長過程,目前還沒有形成明顯的市場。
目前,DVB-C除了完成基本的音視頻解碼還必須增加以下幾個(gè)功能才能真正被市場接受。第一,提供對(duì)CA(條件接收)系統(tǒng)的支持。有線電視臺(tái)需要通過CA系統(tǒng)來實(shí)現(xiàn)對(duì)節(jié)目的加密和對(duì)用戶的管理、收費(fèi)。CA系統(tǒng)要求在接收端,機(jī)頂盒應(yīng)該支持IC-Card接口與SmartCard進(jìn)行通訊,并且提供標(biāo)準(zhǔn)的DVB數(shù)據(jù)流解擾模塊。第二,實(shí)現(xiàn)對(duì)TS流的存儲(chǔ)。這個(gè)功能現(xiàn)在有兩個(gè)趨勢:一種是由機(jī)頂盒提供硬盤接口(比如IDE接口),將TS流存在硬盤里供用戶回放,實(shí)現(xiàn)數(shù)字錄像機(jī)的功能;另一種是機(jī)頂盒提供USB或者1394這一類的高速通用接口,將TS流通過它們存入計(jì)算機(jī)中,用戶再通過計(jì)算機(jī)進(jìn)行處理。第三,實(shí)現(xiàn)局域網(wǎng)網(wǎng)絡(luò)接口。這樣機(jī)頂盒可以接收從局域網(wǎng)傳來的TS流,實(shí)現(xiàn)局域網(wǎng)上的視頻播放。第四,實(shí)現(xiàn)Web瀏覽功能。用戶可以通過機(jī)頂盒瀏覽網(wǎng)頁,當(dāng)然這需要現(xiàn)有電視分辨率的適當(dāng)提高和專門網(wǎng)站的提供。
針對(duì)DVB-C機(jī)頂盒的這些要求,選擇了Fujitsu公司的單片MPEG-2解碼方案,這套方案較好地支持了各種接口和功能模塊,且成本較低,以下是芯片的簡介,然后介紹整套方案的軟件和硬件。
1 芯片介紹
MB87L2250是由Fujitsu公司出品的單片MPEG音頻和視頻解碼器,它同時(shí)還有解傳輸復(fù)用功能并且集成了一片32位的RISC處理器。它為數(shù)字電視機(jī)頂盒提供了一種高性價(jià)比、高集成度的解決方案。在芯片設(shè)計(jì)中,MPEG解碼和解復(fù)用都由硬件完成,而片內(nèi)集成的工作頻率為54MHz的處理器則主要用于運(yùn)行客戶應(yīng)用程序,例如實(shí)現(xiàn)圖形界面。由于MB87L2250采用了2.5幀體系結(jié)構(gòu),因此僅需要16M位 SDRAM用于MPEG解碼、OSD菜單以及數(shù)據(jù)緩存。整個(gè)芯片具有以下特點(diǎn):
·32位RISC微處理器 ·1K字節(jié)的指令Cache
·2.5幀體系結(jié)構(gòu) ·僅需要16M位SDRAM
·支持32路不同的PID包 ·針對(duì)PID和Section的硬件過濾器
·紅外接收器 ·DVB標(biāo)準(zhǔn)解擾
·減少圖片內(nèi)存的 ·圖文電視的VBI方式插入內(nèi)存節(jié)省模式
·16:9與4:3格式轉(zhuǎn)換 ·電影格式轉(zhuǎn)換
·IIC總線 ·兩個(gè)SmartCard接口
·2、4、6或8位OSD ·16個(gè)可編程I/O口
·自動(dòng)時(shí)鐘恢復(fù)
圖1是MB87L2250的芯片結(jié)構(gòu)圖。
1.1 32位RISC處理器
這個(gè)片內(nèi)集成的ARC處理器是采用了4層流水線技術(shù)的RISC微處理器,它的工作頻率為54MHz。ARC內(nèi)部集成了一個(gè)256×32位的指令cache。ARC的存儲(chǔ)控制器包括了SRAM和SDRAM控制器,其中SRAM的控制器包括一個(gè)可編程的等待狀態(tài)產(chǎn)生器,用于和相連的不同速率的存儲(chǔ)介質(zhì)保持同步。而MPEG解碼器位于輔助地址空間,通過一個(gè)主機(jī)接口可以訪問所有的ARC寄存器和處理器的整個(gè)地址空間。這個(gè)特性主要用于調(diào)試,但是也可以用于基于FLASH系統(tǒng)的第一次啟動(dòng)。芯片還有一種休眠狀態(tài),此時(shí)ARC的工作頻率為13.5MHz。
1.2 傳輸流解復(fù)用和系統(tǒng)解碼
完成這部分功能的是傳輸系統(tǒng)解碼器(TSD)。通過TSD,主芯片可以接收8位的并行或串行數(shù)據(jù)流。TSD提供基本的同步和錯(cuò)誤檢測功能,但它的主要功能是作為PID分析器把唯一的一路PES流從TS流里最大32路PES流中鑒別出來。TSD選出相應(yīng)的有效數(shù)據(jù)和系統(tǒng)信息并把它們送給解碼緩存。另外,TSD還提供分段(Section)類型數(shù)據(jù)的分析比較。
TSD中主要包括頻道解碼器(Channel Decoder)、PCR存儲(chǔ)(Program Clock Reference Store)、PID分析器(PID parsing engine)、分段數(shù)據(jù)過濾器(Section Filter)等。為了支持有線廣播中的CA系統(tǒng),TSD還包括一個(gè)標(biāo)準(zhǔn)的DVB解擾器。這個(gè)解擾器能夠在TS層和PES層進(jìn)行解擾,可以并行處理八路不同的流,因此需要存儲(chǔ)八對(duì)控制字。解擾器可以自動(dòng)找到相應(yīng)的控制字。傳輸流解復(fù)用和系統(tǒng)解碼的流程圖如圖2所示。
1.3 視頻解碼及輸出
整個(gè)視頻解碼和視頻顯示過程由VD_VUM(Video Unit Management)管理和監(jiān)控。在它以下主要分為三個(gè)部分。其中,視頻解碼和參考圖像的內(nèi)存分配由VUM_VDM(Video Decoder Manager)管理;圖像顯示由VUM_VOM(Video Output Manager)控制;B幀圖像的緩存管理則由VUM_MIM(Memory Interface Management)負(fù)責(zé)。
視頻輸出主要由視頻輸出接口來完成。視頻輸出接口從本地SDRAM中讀入解壓后的視頻數(shù)據(jù),然后以Y、Cb、Cr格式輸出。它同時(shí)還提供數(shù)字視頻輸出,數(shù)字視頻輸出的設(shè)計(jì)是用于直接和視頻DAC連接的。這個(gè)模塊還包括專門的硬件模塊來支持OSD(OnScreenDisplay)和以VBI方式插入teletext。視頻輸出接口中還包括行場同步過濾器,用來支持一些視頻格式轉(zhuǎn)換,包括色度信號(hào)變換和高清格式轉(zhuǎn)換。
1.4 各種接口
MB87L2250支持的接口較多,除了一般性的Debug口、串口,還支持IC-Card接口和一個(gè)Host接口。IC-Card接口提供了兩個(gè)獨(dú)立的支持ISO 7816 IC-Card的接口,它們只支持異步的IC-Card。這個(gè)接口直接由CPU的主接口控制,所以不會(huì)影響音視頻解碼。在某一時(shí)刻,只有一個(gè)接口可以被激活,另一個(gè)則保持它上一次的狀態(tài)。這個(gè)接口主要包括一個(gè)串行轉(zhuǎn)并行和并行轉(zhuǎn)串行的轉(zhuǎn)換器,它需要時(shí)鐘和邏輯控制的支持。CPU提供需要傳輸?shù)耐暾麛?shù)據(jù)幀給IC-Card,并從IC-Card接收所有的數(shù)據(jù)幀。IC-Card接口監(jiān)控接口時(shí)鐘并支持?jǐn)?shù)據(jù)幀、數(shù)據(jù)時(shí)鐘和錯(cuò)誤處理,而CPU負(fù)責(zé)實(shí)現(xiàn)通訊協(xié)議和幀的打包。Host接口是用來外接其他CPU而不使用集成的ARC處理器,也可用來擴(kuò)展RAM或外接硬盤等。它支持的CPU有三種:FR30(最大25MHz),Motorola68xxx(最大33MHz),SPARClite 系列(最大40MHz)。
2 方案介紹
2.1系統(tǒng)原理圖及外圍芯片簡介
整個(gè)系統(tǒng)由射頻、主芯片、存儲(chǔ)器、輸出共四個(gè)部分組成。以下將介紹除主芯片部分以外的其他三個(gè)部分。圖3是系統(tǒng)原理簡圖。
(1) 射頻部分
射頻部分主要包括高頻頭和解調(diào)芯片,分別進(jìn)行射頻的變頻和信道解碼。在本系統(tǒng)中選用的高頻頭是THOMSON公司的DCF8910,解調(diào)芯片是ST公司的STV0297。系統(tǒng)工作時(shí),先由高頻頭將RF頻段的數(shù)字調(diào)制信號(hào)進(jìn)行下變頻,再進(jìn)行正交解調(diào)變成兩路IQ信號(hào)。然后將數(shù)字基帶信號(hào)輸入STV0297,進(jìn)行數(shù)模轉(zhuǎn)換和信道解碼,形成數(shù)字信號(hào)給后級(jí),其中包括DaM[0..7]、出錯(cuò)信號(hào)DErM、數(shù)據(jù)有效DvLM、 幀同步PsyM、時(shí)鐘信號(hào)ClkM。對(duì)高頻頭和STV0297的讀寫操作均通過IIC總線完成。
(2) 存儲(chǔ)器部分
存儲(chǔ)器部分包括兩片512K×16Bit的FLASH,一片2×512K×16Bit的SDRAM,一片64Kbit的EEPROM和一塊掛在Host接口上的IDE硬盤。兩片F(xiàn)LASH用來存儲(chǔ)一般無需更改的數(shù)據(jù),一片為啟動(dòng)FLASH,用于存儲(chǔ)系統(tǒng)的應(yīng)用程序;另一片為用戶FLASH,用于存儲(chǔ)較大的位圖。SDRAM作為應(yīng)用程序運(yùn)行時(shí)的內(nèi)存空間,其地址線包括行選地址線a0...a11、列選地址線a0...a7及Bank選擇線a11,總的地址空間為2M字節(jié)。FLASH與SDRAM共用數(shù)據(jù)總線和地址總線,為不發(fā)生沖突,需要使用74LS138譯碼器來進(jìn)行片選。EEPROM選用24C64,通過串行IIC總線對(duì)它進(jìn)行讀寫。
(3)輸出部分
輸出部分由音頻輸出、視頻輸出和串口輸出組成。視頻部分選用視頻編碼芯片SAA7128/29,它將送出來的數(shù)字視頻格式進(jìn)行數(shù)模轉(zhuǎn)換,經(jīng)過視頻矩陣編碼成模擬的視頻信號(hào)。它可輸出cvbs,y、c和R、G、B三種信號(hào)。該芯片工作在Slave模式下,即數(shù)據(jù)時(shí)鐘由主芯片供給,SAA7128/29利用此時(shí)鐘對(duì)數(shù)字信號(hào)進(jìn)行鎖存??刂菩盘?hào)有Hs行同步、Vs場同步,主芯片通過IIC總線對(duì)它進(jìn)行控制。
音頻部分使用PCM1723對(duì)主芯片送出的PCM數(shù)字音頻進(jìn)行數(shù)模轉(zhuǎn)換,其時(shí)鐘包括左右時(shí)鐘和位時(shí)鐘。PCM1723是通過主芯片產(chǎn)生的27MHz信號(hào)來實(shí)現(xiàn)同步的:它用將27MHz信號(hào)經(jīng)過分頻而得到的超采樣時(shí)鐘來鎖存數(shù)字信號(hào),同時(shí)將超采樣時(shí)鐘送回主芯片的音頻輸出部分進(jìn)行同步,因而使得音頻數(shù)字信號(hào)的輸出與它的鎖存同步。音頻數(shù)模轉(zhuǎn)換后再經(jīng)過模擬放大(如LM6142)就可以送給發(fā)聲部分了。
2.2 軟件模塊和功能介紹
為了豐富DVB-C機(jī)頂盒的功能,除了實(shí)現(xiàn)音視頻解碼及控制和基本的DVB-C功能外,還編寫了以下幾個(gè)軟件模塊:
(1)基于嵌入式系統(tǒng)的GUI(Graphic User Interface)。
美觀、簡潔、功能強(qiáng)大的圖形界面對(duì)于DVB-C機(jī)頂盒是十分重要的,因此編寫了一個(gè)基于嵌入式系統(tǒng)的GUI。在本系統(tǒng)中,GUI主要完成了三部分的功能:第一,封裝圖形設(shè)計(jì)API。在OSD的驅(qū)動(dòng)程序中基本的圖形原語均已實(shí)現(xiàn),其中包括點(diǎn)、線、矩形、填充等基本操作和漢字字庫的存儲(chǔ)、顯示。但為了適應(yīng)應(yīng)用層的調(diào)用,在GUI中還要將這些原語封裝成API;第二,提供圖形控件(Control)機(jī)制。Windows9x中圖形控件的概念符合面向?qū)ο蟪绦蛟O(shè)計(jì)的思想,使用起來簡單靈活,維護(hù)和修改也十分方便。在GUI的設(shè)計(jì)中,仿照Windows9x實(shí)現(xiàn)了控件機(jī)制;第三,進(jìn)程間通信及消息傳遞的管理。在一個(gè)多進(jìn)程實(shí)時(shí)系統(tǒng)中,GUI也必然包含一個(gè)進(jìn)程來接收其它進(jìn)程發(fā)給用戶界面的消息。
(2) EEPROM上的文件系統(tǒng)
EEPROM中主要存儲(chǔ)的是用戶信息。隨著功能的不斷豐富,用戶會(huì)有越來越多的信息需要存儲(chǔ),因此就需要一套簡單有效的文件系統(tǒng)來組織各種不同的信息。同時(shí),文件系統(tǒng)還要盡量克服EEPROM讀寫時(shí)間較長、不允許讀寫時(shí)斷電等缺點(diǎn)。這套文件系統(tǒng)主要完成三部分功能:第一,建立一套與流行操作系統(tǒng)基本相同的文件目錄機(jī)制。規(guī)定32個(gè)字節(jié)為一個(gè)文件塊(BLOCK),一個(gè)文件由一個(gè)或多個(gè)文件塊組成。文件采用樹狀結(jié)構(gòu)組織,同層文件均以雙向鏈表機(jī)構(gòu)進(jìn)行銜接,并且寫入信息時(shí),不會(huì)對(duì)指針進(jìn)行操作,保證了安全性;第二,設(shè)計(jì)EEPROM讀寫時(shí)機(jī)和策略。每次開機(jī)時(shí)在SDRAM中開辟一塊與EEPROM同樣大小的區(qū)域作為鏡像。所有讀操作均在鏡像中進(jìn)行,這樣將大大提高讀操作的效率,而寫操作將對(duì)EEPROM和鏡像同時(shí)操作,保證鏡像和EEPROM中信息完全一致;第三,提供強(qiáng)大的斷電保護(hù)功能。在對(duì)EEPROM進(jìn)行寫操作前,先將需要進(jìn)行的操作過程記錄下來,并清空操作完成標(biāo)志;如果在操作過程中斷電,下次開機(jī)時(shí)根據(jù)操作完成標(biāo)志可知EEPROM在操作過程中發(fā)生了斷電,按照記錄下來的操作過程恢復(fù)操作。
(3) CA系統(tǒng)接收端的實(shí)現(xiàn)
CPU復(fù)位后,首先輪詢讀SmartCard,以檢查SmartCard是否存在。如果SmartCard存在,則根據(jù)讀出的控制字判斷其是否是對(duì)本機(jī)頂盒合法的SmartCard。進(jìn)行這樣的讀機(jī)制主要是為了防止一卡多機(jī)(一張SmartCard驅(qū)動(dòng)多個(gè)機(jī)頂盒)的非法情況出現(xiàn)。當(dāng)SmartCard合法后,機(jī)頂盒從TS流中提取ECM段和EMM域,其中EMM域的PID在CAT的ca description中,ECM段的PID在PMT的ca description中。經(jīng)過簡單的私有加密算法加密后,這些信息被送往SmartCard。然后,CPU再次輪詢讀SmartCard,以檢查是否有控制字輸出。以上過程中CPU和SmartCard的交互均通過IC-Card接口實(shí)現(xiàn)。機(jī)頂盒不斷重復(fù)以上過程,若ECM或EMM版本號(hào)已更新,則將新版本送往SmartCard解密。獲取到正確的控制字后,機(jī)頂盒就可以利用硬件解擾模塊進(jìn)行解擾。
3 實(shí)現(xiàn)結(jié)果
目前已經(jīng)按照這套方案做出了DVB-C樣機(jī)。根據(jù)這套方案實(shí)現(xiàn)的DVB-C機(jī)頂盒具有功能多、主板面積小、成本較低、可擴(kuò)充性好等特點(diǎn)。在樣機(jī)的基礎(chǔ)上還可以在實(shí)時(shí)操作系統(tǒng)的支持下,實(shí)現(xiàn)網(wǎng)絡(luò)接口和Web瀏覽等功能。