王志德,王晶輝,郭淑琴
(浙江工業(yè)大學(xué)信息與通信工程系,浙江杭州310023)
數(shù)字電視接收設(shè)備主要分為電視卡、電視盒和電視棒3類[1],它使我們?cè)陔娔X上收看數(shù)字電視節(jié)目成為了可能,無需網(wǎng)絡(luò),甚至無需連線。國(guó)外市場(chǎng)相對(duì)成熟,國(guó)內(nèi)主要生產(chǎn)廠家有圓剛、美如畫等,但因技術(shù)不成熟、價(jià)格高、信號(hào)覆蓋范圍小等因素影響,市場(chǎng)并未得到推廣。然而,我國(guó)的數(shù)字電視技術(shù)[2]在這10多年的時(shí)間里一直在努力發(fā)展,特別是基于有線的數(shù)字視頻廣播已成為廣播電視業(yè)的支柱產(chǎn)業(yè)。因此,現(xiàn)階段針對(duì)有線數(shù)字電視方面的應(yīng)用有著廣闊的前景和良好的市場(chǎng)。所以,以USB接口作為傳輸接口開發(fā)一個(gè)簡(jiǎn)單易用的個(gè)人電腦外擴(kuò)設(shè)備來播放有線數(shù)字電視就是一種不錯(cuò)的方案。本文提出的DVB-C數(shù)字電視接收系統(tǒng)正是接收有線電視網(wǎng)的信號(hào)并轉(zhuǎn)換成滿足MPEG-2標(biāo)準(zhǔn)的TS流通過USB接口傳送給PC機(jī)進(jìn)行音視頻解碼等處理,最終實(shí)現(xiàn)數(shù)字電視節(jié)目的實(shí)時(shí)播放。
DVB-C數(shù)字電視接收系統(tǒng)硬件電路主要由3部分組成:調(diào)諧器芯片、信道解調(diào)芯片、USB控制芯片。系統(tǒng)的整體結(jié)構(gòu)框圖如圖1所示:
圖1 DVB-C電視接收系統(tǒng)功能框圖
調(diào)諧器輸入來自有線電視網(wǎng)的48-860MHz的RF信號(hào),經(jīng)過帶通濾波器濾除帶外干擾信號(hào)后,由前置放大器進(jìn)行低噪聲放大,然后送入變頻器進(jìn)行變頻得到36MHz中頻信號(hào)。信道解調(diào)芯片接收中頻信號(hào)先進(jìn)行濾波,再經(jīng)移相電路分成兩路相位相差90°的I、Q信號(hào)送至QAM解調(diào)電路中進(jìn)行QAM解調(diào),再經(jīng)過維特比解碼(內(nèi)碼)和里德-所羅門解碼(外碼)卷積去交織器等完成前向糾錯(cuò)恢復(fù)輸出滿足MPEG-2標(biāo)準(zhǔn)以188字節(jié)為一包的TS流送至USB芯片。而USB芯片采用內(nèi)部的FIFO與USB2.0智能接口引擎直接將TS流傳輸至PC機(jī),由PC機(jī)先接收一段數(shù)據(jù)進(jìn)行緩沖,再將數(shù)據(jù)源源不斷地傳給播放器軟件進(jìn)行音/視頻分離與解碼,實(shí)現(xiàn)實(shí)時(shí)播放[3]。
硬件方面,由于希望設(shè)計(jì)的USB數(shù)字電視接收器是一種體積小,功耗低,移動(dòng)性好的設(shè)備,并且符合DVB-C傳輸標(biāo)準(zhǔn),所以在芯片的選擇上進(jìn)行了一定的研究。最終決定,高頻頭選擇Infineon公司的TUA6039,信道解調(diào)芯片選擇 ST公司的 Stv0297芯片,USB傳輸控制芯片選擇 Cypress公司的CY7C68013A芯片。
TUA6039的制程采用雙極半導(dǎo)體,很適用于在設(shè)計(jì)上以低成本與低耗電為主要考量的固定廣播接收器。它是一具完全三波段的射頻調(diào)諧器IC,擁有整合式的中頻自動(dòng)增益控制擴(kuò)大器與相位閉鎖回路,其功耗只有330mW。而且,TUA6039可以支持地面無線電視與有線電視應(yīng)用上所有主要模擬與數(shù)字標(biāo)準(zhǔn)。
Stv0297芯片內(nèi)部包含有解調(diào)模塊、前向糾錯(cuò)模塊、下變頻模塊、A/D模塊和載波恢復(fù)電路模塊等,并且系統(tǒng)程序可以通過芯片提供的一些實(shí)時(shí)的質(zhì)量監(jiān)控參數(shù)和鎖定狀態(tài)參數(shù)知道STV0297當(dāng)前的狀態(tài)。STV0297的輸出端還提供了AGC(自動(dòng)增益控制電路)及I2C控制總線。通過這些控制電路和總線來控制前端的調(diào)諧器,同時(shí)也簡(jiǎn)化了程序的設(shè)計(jì)。
CY7C68013A[4,5]是Cypress半導(dǎo)體公司推出的EZ-USB FX2LP系列芯片中的主要成員,它集成了USB2.0協(xié)議的微處理器,其內(nèi)部還包括智能串行接口引擎(SIE)、增強(qiáng)型8051內(nèi)核、16KB的RAM、4KB的FIFO存儲(chǔ)器、I2C控制器和通用可編程接口(GPIF)等。
EZ-USB提供了3種可用的接口模式:端口(I/O)、可編程的GPIF方式和Slave FIFO方式。其中,為了保證USB數(shù)據(jù)的傳輸速率,要求在與主機(jī)通信時(shí)不需要EZ-USB的CPU干預(yù),外部邏輯直接對(duì)芯片內(nèi)部的端點(diǎn)FIFO緩沖區(qū)進(jìn)行讀操作或?qū)懖僮?。所以,?duì)于數(shù)字電視接收設(shè)備來說,USB芯片必須工作在Slave FIFO模式下。此時(shí),CY7C68013A芯片與QAM解調(diào)芯片的主要引腳連接如圖2所示。
圖2 USB芯片主要引腳連接
在Slave FIFO模式[6]下,用到的關(guān)鍵寄存器主要有接口配置寄存器IFCONFIG(用于選擇接口方式和時(shí)鐘源)、端點(diǎn)配置寄存器(用于設(shè)置端點(diǎn)2、4、6、8的類型、傳輸方向、緩沖區(qū)大小與數(shù)量)、端點(diǎn)的Slave FIFO配置寄存器(決定PD引腳上的字節(jié)或字FIFO)、Slave FIFO接口引腳極性寄存器(決定主要引腳的正反極性)等等。
在USB接口設(shè)計(jì)中,USB固件編程是整個(gè)設(shè)計(jì)任務(wù)的重要部分。USB芯片的主要功能實(shí)現(xiàn)都集中在固件程序設(shè)計(jì)上,它不僅用來實(shí)現(xiàn)USB設(shè)備的主要功能,還需要和USB主機(jī)進(jìn)行數(shù)據(jù)通信。
在使用EZ-USB芯片進(jìn)行應(yīng)用開發(fā)中,利用EZ-USB固件框架可以簡(jiǎn)化和加速開發(fā)基于EZ-USB芯片的外圍設(shè)備。
固件框架就是一個(gè)簡(jiǎn)單的任務(wù)循環(huán)。其流程是先初始化狀態(tài)變量,然后調(diào)用初始化函數(shù)TD_Init()使USB接口到未配置狀態(tài)并使能中斷。然后每隔1s進(jìn)行一次設(shè)備重枚舉,直到端點(diǎn)0接受到一個(gè)SETUP包。然后調(diào)用用戶函數(shù)TD_Poll(),實(shí)現(xiàn)USB外設(shè)的主要功能。當(dāng)接收到設(shè)備請(qǐng)求時(shí),分析該請(qǐng)求并響應(yīng)之。接著判斷USB內(nèi)核是否收到USB掛起信號(hào)。如果接收到,則調(diào)用用戶函數(shù)TD_Suspend()。該函數(shù)成功返回為TRUE時(shí),再檢測(cè)是否有USB喚醒事件。如果未檢測(cè)到,則處理器進(jìn)入掛起方式;反之,則調(diào)用用戶函數(shù)TD_Resume()。如果從TD_Suspend()函數(shù)返回為FALSE,則程序繼續(xù)運(yùn)行。
固件程序的主要任務(wù)是完成一些功能寄存器的初始化設(shè)置;并修改描述符指針,實(shí)現(xiàn)設(shè)備的重枚舉過程;最后根據(jù)實(shí)際需求,添加相應(yīng)代碼來完成數(shù)據(jù)的接收與發(fā)送等特殊功能。
其中,主要對(duì)固件框架中的periph.c(用戶任務(wù)調(diào)度函數(shù)文件)和dscr.a51(描述符表)進(jìn)行了修改。dscr.a51中包含各種描述符,根據(jù)設(shè)計(jì)需要修改設(shè)備的VID、PID。periph.c中主要包括TD_Init()和TD_Poll()函數(shù),TD_Init()函數(shù)負(fù)責(zé)初始化端點(diǎn)狀態(tài)變量,須在這里設(shè)置成Slave FIFO模式,而在TD_Poll()函數(shù)中添加自定義用戶代碼以實(shí)現(xiàn)數(shù)據(jù)通信?;竞瘮?shù)結(jié)構(gòu)如下:
整個(gè)接收系統(tǒng)采用Windows平臺(tái),所以驅(qū)動(dòng)軟件部分采用BDA體系架構(gòu)。BDA(Broadcast Driver Architecture)是微軟提供的一種廣播驅(qū)動(dòng)體系框架。這種框架支持用于接收數(shù)字電視的各種網(wǎng)絡(luò)拓?fù)錁?gòu)成,它包含了用于網(wǎng)絡(luò)構(gòu)造和控制的軟構(gòu)件,多路選擇,表分析和IP數(shù)據(jù)遞送等以適用于主要的數(shù)字電視標(biāo)準(zhǔn)包括DVB和ATSC等。在我們的接收系統(tǒng)中,BDA驅(qū)動(dòng)主要提供對(duì)前端調(diào)諧器、解調(diào)芯片、USB接口的的控制,獲取和傳輸TS流,以及為上層應(yīng)用提供應(yīng)用程序接口。
應(yīng)用軟件部分采用DirectShow中的過濾器[7]結(jié)構(gòu),它是微軟提供在Windows平臺(tái)上進(jìn)行多媒體串流處理的一套軟件開發(fā)組件,使用DirectShow,可以很方便地從支持BDA驅(qū)動(dòng)的硬件上捕獲數(shù)據(jù)并進(jìn)行處理與播放。在DirectShow技術(shù)中,一個(gè)播放器由多個(gè)功能不同的Filter連接而成,這些Filter不是獨(dú)立工作,而是互相聯(lián)系、互相配合。按照功能不同,F(xiàn)ilter大致可分為Source Filter、Transform Filter、Decoder Filter和Render Filter。其中,Source Filter由BDA驅(qū)動(dòng)程序生成,Decoder Filter可以由第三方提供,Transform Filter和Render Filter都由DirectShow開發(fā)包提供。本系統(tǒng)搭建的Filter Graph如圖3所示:
圖3 系統(tǒng)Filter Graph
本文首先介紹了USB數(shù)字電視接收系統(tǒng)的總體設(shè)計(jì)方案,然后分別介紹了系統(tǒng)實(shí)現(xiàn)的幾個(gè)關(guān)鍵點(diǎn):硬件電路連接、USB固件程序設(shè)計(jì)和PC主機(jī)應(yīng)用軟件架構(gòu)。該設(shè)計(jì)符合USB2.0標(biāo)準(zhǔn),系統(tǒng)傳輸速率高,穩(wěn)定性好,可擴(kuò)展性好。同時(shí),合理的改變軟硬件模塊就可以做成符合其他傳輸標(biāo)準(zhǔn)的數(shù)字電視接收系統(tǒng)。因此,該設(shè)計(jì)具有一定的實(shí)際應(yīng)用價(jià)值與市場(chǎng)前景。
[1] 宋欣.數(shù)字電視卡的設(shè)計(jì)與實(shí)現(xiàn)[D].天津:天津大學(xué),2005.
[2] 劉達(dá).數(shù)字電視技術(shù)[M].北京:電子工業(yè)出版社,2007:28-36.
[3] 潘云忠,潘宜漾.有線電視數(shù)字機(jī)頂盒的原理與維修[M].北京:人民郵電出版社,2009:79-81.
[4] 賽普拉斯公司.FX2LP DMB-T/H TV Dongle[DB/OL].http://cypress.com/?rID=37775,2010 -07 -09.
[5] 薛園園.USB應(yīng)用開發(fā)技術(shù)大全[M].北京:人民郵電出版社,2007:185-197.
[6] 仝瑞普.基于Slave FIFO模式USB數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].南京:南京理工大學(xué),2008.
[7] 陸其明.DirectShow開發(fā)指南[M].北京:清華大學(xué)出版社,2004:8-13.