《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 業(yè)界動態(tài) > 基于PC機(jī)的視頻點播機(jī)頂盒的設(shè)計

基于PC機(jī)的視頻點播機(jī)頂盒的設(shè)計

2009-01-07
作者:佘新平1, 王宏遠(yuǎn)2

  摘? 要: 提出了CATV網(wǎng)絡(luò)環(huán)境下視頻點播(VOD)機(jī)頂盒的設(shè)計。機(jī)頂盒由五大模塊組成:數(shù)字調(diào)諧器,QAM數(shù)字解調(diào)芯片,MPEG-2解復(fù)用芯片,I2C總線控制器和接口電路。它由一塊PC機(jī)插卡實現(xiàn),該插卡運行在Windows 95環(huán)境下。作為其軟件支持的虛擬設(shè)備驅(qū)動程序完成插卡與微機(jī)之間的通信。通過多次調(diào)試和試驗,它能夠成功地實現(xiàn)視頻業(yè)務(wù)的正常接收。

  關(guān)鍵詞: 機(jī)頂盒? QAM解調(diào)? MPEG-2解復(fù)用? 接口電路? 虛擬設(shè)備驅(qū)動程序

?

  機(jī)頂盒是視頻點播(VOD)系統(tǒng)的終端設(shè)備,是用戶與VOD服務(wù)器之間的智能接口。它用于視頻業(yè)務(wù)的接收和用戶請求的發(fā)送。因此,VOD系統(tǒng)中的數(shù)據(jù)傳輸被分成兩個通路:下行通路用于把視頻信息傳送到用戶;上行通路用于把用戶的點播需求傳送到發(fā)送端?;赑C機(jī)的機(jī)頂盒是將機(jī)頂盒的功能做成普通的PC插卡形式,利用計算機(jī)實現(xiàn)視頻點播的所有功能。這樣做有幾點好處:

  (1) 充分利用微機(jī)的軟、硬件資源,從而降低了用戶終端設(shè)備的成本;

  (2) 兼容性好,可適應(yīng)不同的接入網(wǎng)和不同類型的業(yè)務(wù);

  (3) 軟件維護(hù)和升級方便,適應(yīng)未來發(fā)展;

  (4) 可設(shè)計易操作、美觀和基于Windows95/98的用戶界面。

  該機(jī)頂盒由兩塊普通PC機(jī)插卡構(gòu)成,它們分別完成下行數(shù)據(jù)的接收和上行數(shù)據(jù)的發(fā)送。上行數(shù)據(jù)的發(fā)送由一塊內(nèi)置MODEM卡通過電話線完成,下行數(shù)據(jù)的接收則由另一塊插卡通過CATV網(wǎng)實現(xiàn)。

  本文研究的主要內(nèi)容是在微機(jī)上如何實現(xiàn)下行數(shù)據(jù)的正常接收。為此,提出了一種以數(shù)字調(diào)諧器、最新QAM數(shù)字解調(diào)芯片和高性能MPEG-2解復(fù)用芯片為核心的機(jī)頂盒設(shè)計方案。在機(jī)頂盒的硬件設(shè)計中,采用了先進(jìn)的I2C總線技術(shù)、QAM數(shù)字解調(diào)技術(shù)、MPEG-2解復(fù)用技術(shù)、FIFO存儲器技術(shù)以及通用的ISA總線接口技術(shù);在軟件設(shè)計中,采用了VC++編程技術(shù)和Windows95/98環(huán)境下利用VToolsD開發(fā)虛擬設(shè)備驅(qū)動程序(即VxD)的技術(shù)。

1 機(jī)頂盒的硬件設(shè)計

  機(jī)頂盒的主要功能是為人們提供一個訪問VOD業(yè)務(wù)的途徑,為合法用戶提供一個友好的界面,其接收部分的總體硬件框圖如圖1所示。

?

?

  在圖1中,來自CATV網(wǎng)的下行數(shù)據(jù)經(jīng)數(shù)字調(diào)諧電路實現(xiàn)頻點選擇,某一頻點上的數(shù)據(jù)流中包含了十幾路節(jié)目的數(shù)據(jù),這些數(shù)據(jù)在發(fā)送端經(jīng)過了MPEG-2標(biāo)準(zhǔn)的系統(tǒng)復(fù)用。該電路輸出中頻信號,然后由模/數(shù)轉(zhuǎn)換電路輸出數(shù)字信號,作為QAM解調(diào)電路的輸入。上述過程中的頻點選擇和QAM解調(diào)均由微處理器經(jīng)I2C總線控制。

  QAM解調(diào)后的數(shù)字信號送到MPEG-2解復(fù)用電路,實現(xiàn)通道選擇,即選出用戶點播的一路節(jié)目。該節(jié)目的數(shù)據(jù)為MPEG-1標(biāo)準(zhǔn)的壓縮形式。為了節(jié)約成本和簡化電路,并考慮到目前微機(jī)的速度很高、且為Windows95操作系統(tǒng),本設(shè)計中不采用硬件解壓縮方式,而是將數(shù)據(jù)經(jīng)主機(jī)接口電路以DMA傳輸方式傳送到計算機(jī)的內(nèi)存中,用軟件方法對該路節(jié)目進(jìn)行實時解壓縮處理并播放出來。

  上述整個電路可分為幾個相對獨立的模塊,下面分別對它們進(jìn)行介紹。

1.1 數(shù)字調(diào)諧電路[1]

  數(shù)字調(diào)諧電路實際上就是一個高頻頭,它的作用是接收來自CATV網(wǎng)的下行數(shù)據(jù),根據(jù)微處理器的指令,實現(xiàn)頻點選擇(與模擬電視相似)。某一選定頻點的數(shù)據(jù)流中仍含有多路節(jié)目的數(shù)字信號,每個用戶只收看某一頻點中的一路節(jié)目。頻點選擇由微處理器通過I2C總線控制。數(shù)字調(diào)諧電路與后級電路的連接如圖2所示。

?

?

1.2 A/D視頻轉(zhuǎn)換電路[2]

  高頻頭輸出的模擬中頻信號的幅值已滿足A/D轉(zhuǎn)換器的輸入要求,因此將它直接送給A/D轉(zhuǎn)換器數(shù)字化,以供后續(xù)的數(shù)字電路進(jìn)一步處理。該模/數(shù)轉(zhuǎn)換器采用Philips公司的芯片,它將模擬視頻信號轉(zhuǎn)換成二進(jìn)制編碼的數(shù)字視頻信號。A/D轉(zhuǎn)換電路的連接如圖2所示。

1.3 QAM解調(diào)電路[1~2]

  QAM解調(diào)電路是機(jī)頂盒接收部分的重點和難點之一,芯片的選型十分重要。它的作用是將A/D視頻轉(zhuǎn)換電路輸出的數(shù)字信號進(jìn)行QAM解調(diào)和其它處理后輸出基帶數(shù)字信號。

  QAM解調(diào)電路采用最新QAM數(shù)字解調(diào)芯片。該芯片的功能強(qiáng)大,全數(shù)字化處理,芯片外部不需要反饋環(huán)路,支持16、32、64、128和256QAM的解調(diào)。為了實現(xiàn)芯片的強(qiáng)大功能,其內(nèi)部有大批的控制/配置寄存器供用戶編程使用,這些寄存器可通過I2C總線或并行總線進(jìn)行讀或?qū)懖僮?。芯片輸出糾錯后的MPEG-2傳輸流。

  上述介紹的調(diào)諧電路、A/D視頻轉(zhuǎn)換電路和QAM解調(diào)電路組成了一個相對獨立的整體,它們的應(yīng)用電路框圖如圖2所示。

1.4 I2C總線控制電路[3~4]

  在上述電路中,調(diào)諧電路的頻點選擇、QAM解調(diào)芯片內(nèi)部一系列寄存器的讀寫操作均由微處理器通過I2C總線控制。而微處理器芯片內(nèi)沒有I2C總線接口, 因此需要設(shè)計I2C總線控制電路。該電路由I2C 總線控制器芯片PCF8584構(gòu)成,它可用作大多數(shù)并行總線與串行的I2C總線之間進(jìn)行雙向通信的接口。 利用它可以很方便地將微處理器接入I2C總線,實現(xiàn)芯片間的數(shù)據(jù)傳輸和控制。

  I2C總線控制電路與其它電路的連接方法如圖3所示。

?

?

1.5 MPEG-2 系統(tǒng)解復(fù)用電路[1~2][5]

  在視頻點播系統(tǒng)中,發(fā)送端的節(jié)目源是基于MPEG-1標(biāo)準(zhǔn)的數(shù)據(jù)流,它只適合相對無誤差的環(huán)境,如CD-ROM、VCD的傳輸。為了適應(yīng)有噪聲或損耗介質(zhì)信道的傳輸,需將多路不同節(jié)目的MPEG-1格式的碼流按照MPEG-2標(biāo)準(zhǔn)進(jìn)行傳輸復(fù)用。因此,在接收端需要相應(yīng)的MPEG-2解復(fù)用電路的支持。

  MPEG-2解復(fù)用電路從微處理器接收指令實現(xiàn)通道選擇,即從調(diào)諧電路已選定的頻點中選擇用戶點播的一路節(jié)目,滿足用戶的點播要求。

  MPEG-2解復(fù)用電路采用高性能的MPEG-2系統(tǒng)解復(fù)用芯片。該芯片在接收到MPEG-2系統(tǒng)傳輸碼流后,對傳輸層和PES(Packetized Elementary Stream)層作解復(fù)用處理,提供某一路的碼流緩沖,其輸出送到主機(jī)接口電路,其應(yīng)用電路框圖如圖3所示。

1.6?計算機(jī)的接口電路設(shè)計[6~8]

  本設(shè)計中,計算機(jī)的接口電路有兩大任務(wù):一是微處理器通過該接口電路實現(xiàn)對調(diào)諧電路、QAM解調(diào)電路、MPEG-2解復(fù)用電路的控制與訪問,以便完成多路節(jié)目數(shù)據(jù)流的分接;二是接口電路將解復(fù)用電路輸出的一路節(jié)目數(shù)據(jù)傳送到計算機(jī)的內(nèi)存中,供微機(jī)對其進(jìn)行軟件解壓縮并播放出來。

  由圖3可知,微處理器對調(diào)諧電路和QAM解調(diào)電路的訪問與控制是通過I2C總線控制器芯片PCF8584實現(xiàn)的,而微處理器對解復(fù)用電路的訪問與控制則直接通過解復(fù)用芯片的微處理器接口實現(xiàn)。此外,解復(fù)用芯片輸出的一路節(jié)目數(shù)據(jù)還需通過接口電路傳送到微機(jī)的內(nèi)存中。為了適合實時、高速或突發(fā)數(shù)據(jù)的傳輸,接口電路采用DMA傳輸技術(shù),并利用FIFO(First In First Out)存儲器作為數(shù)據(jù)緩沖電路。由于FIFO具有一定的存儲容量,能起到緩沖作用,故能很好地解決外設(shè)與計算機(jī)之間的速率匹配問題。此外,當(dāng)外設(shè)進(jìn)行連續(xù)的數(shù)據(jù)傳輸時,主機(jī)的DMA傳輸可以間歇地進(jìn)行,從而能夠讓主機(jī)有時間執(zhí)行數(shù)據(jù)處理和顯示等后臺任務(wù)。

2 機(jī)頂盒的軟件設(shè)計

  在機(jī)頂盒中,軟件設(shè)計主要包括三個部分:各芯片的讀寫操作。接口軟件編程和用戶界面的設(shè)計。數(shù)字調(diào)諧電路、QAM解調(diào)電路、I2C總線控制器和MPEG-2解復(fù)用電路的芯片中都含有大量的控制和配置寄存器供用戶進(jìn)行讀寫操作,以便預(yù)置有關(guān)的參數(shù)或?qū)δ承﹨?shù)進(jìn)行控制。這需要通過編程來實現(xiàn)。機(jī)頂盒的用戶界面是一個典型的WINDOWS界面,機(jī)頂盒的所有功能(包括解壓縮)都通過它來完成,因此可采用VC++進(jìn)行編程。接口軟件的功能是把插卡接收到的數(shù)據(jù)以DMA方式傳送到計算機(jī)的內(nèi)存中,要實現(xiàn)Windows95/98下DMA方式的數(shù)據(jù)傳輸,需要編寫虛擬設(shè)備驅(qū)動程序。這是整個軟件設(shè)計中的重點和難點。限于篇幅下面簡單說明虛擬設(shè)備驅(qū)動程序的設(shè)計思想。

  DMA虛擬設(shè)備驅(qū)動程序采用VtoolsD編寫,可由Win32應(yīng)用程序動態(tài)裝載。驅(qū)動程序負(fù)責(zé)將外設(shè)中的數(shù)據(jù)以DMA方式傳送到內(nèi)存中的兩塊緩沖區(qū)里,應(yīng)用程序分別從這兩塊緩沖區(qū)輪流讀取數(shù)據(jù)。實現(xiàn)方法如下:

  驅(qū)動程序的入口是一個被稱作Control Dispatcher的函數(shù),它負(fù)責(zé)處理與該VxD相關(guān)的系統(tǒng)控制信息,并調(diào)用相應(yīng)的處理例程。一個可被動態(tài)裝載的VxD應(yīng)能處理以下消息:SYS_DYNAMIC_DEVICE_INIT(用于VxD的初始化階段);SYS_DYNAMIC_DEVICE_EXIT(用于VxD的退出階段);W32_DEVICEIOCONTROL(用于應(yīng)用程序和VxD的通信)。當(dāng)Win32應(yīng)用程序利用函數(shù)CreateFile來動態(tài)裝載VxD時,系統(tǒng)發(fā)送SYS_DYNAMIC_DEVICE_INIT消息,Control Dispatcher調(diào)用該消息的處理例程OnSysDynamicDeviceInit進(jìn)行VxD的初始化設(shè)置,例如DMA控制器的初始化、分配內(nèi)存空間、中斷控制器的初始化等。當(dāng)Win32應(yīng)用程序調(diào)用DeviceIoControl 函數(shù)向VxD發(fā)送數(shù)據(jù)時,Control Dispatcher調(diào)用該消息的處理例程OnW32DeviceIoControl,此時可以接收從應(yīng)用程序發(fā)來的消息如主窗口句柄等。當(dāng)Win32應(yīng)用程序關(guān)閉該VxD或Win32應(yīng)用程序本身被關(guān)閉時,Control Dispatcher調(diào)用該消息的處理例程OnSysDynamicDeviceExit,此時可以做一些清理性工作,如釋放DMA緩沖區(qū)等。

  每當(dāng)一次DMA傳輸結(jié)束便產(chǎn)生一個硬件中斷。在VxD的中斷處理例程中,對DMA控制器重新進(jìn)行初始化(即改變DMA緩沖區(qū)的首地址使之指向另一個緩沖區(qū),以便開始下一次DMA傳輸),同時向Win32應(yīng)用程序發(fā)送消息通知它讀取內(nèi)存中的數(shù)據(jù)。

3 實驗結(jié)果

  將上述機(jī)頂盒電路做成一塊PC插卡用于接收下行數(shù)據(jù)。首先對電路中的各個模塊分別進(jìn)行了多次調(diào)試和試驗。然后在此基礎(chǔ)上,利用試驗用的節(jié)目源(即按照MPEG-2標(biāo)準(zhǔn)進(jìn)行傳輸復(fù)用后的多個不同節(jié)目的碼流)對整個電路進(jìn)行了聯(lián)調(diào)。它可以實現(xiàn)頻點選擇、QAM解調(diào)和通道選擇,從而得到用戶所要點播的某一路節(jié)目。該路節(jié)目的數(shù)據(jù)流格式遵從MEPG-1標(biāo)準(zhǔn),速率約為1.4Mb/s。最后利用編寫好的虛擬設(shè)備驅(qū)動程序通過接口電路成功地將該路節(jié)目傳送到計算機(jī)的內(nèi)存中。編寫一個用于調(diào)試的Win32應(yīng)用程序,讀取內(nèi)存中的節(jié)目數(shù)據(jù)并形成一個數(shù)據(jù)文件后由金山影霸播放,效果良好。

  在本文已有工作的基礎(chǔ)上,下一步工作將從以下幾個方面著手:

  (1)軟件解壓縮播放程序的編程。

  (2)軟件解壓縮播放程序與虛擬設(shè)備驅(qū)動程序的通信調(diào)試。

  (3)用戶界面的設(shè)計和編程。

?

參考文獻(xiàn)

1 Philips Semiconductors.INTEGRATED CIRCUITS,DATA SHEET. Product specification,1996.

2 Philips Semiconductors.INTEGRATED CIRCUITS,DATA?SHEET. Preliminary specification,1996.

3 Philips Semiconductors.The I2C-bus? and how to use it.Philips document ordering number 9398 393 40011.

4 Philips Semiconductors.PCF8584- I2C-bus controller.?Product? specification,1994.

5 黎洪松.數(shù)字視頻技術(shù)及其應(yīng)用.北京:清華大學(xué)出版社,1997.

6 王換招等.PC系列微機(jī)總線.西安:西安交通大學(xué)出版社,1995.

7 路友榮.PC系列微機(jī)接口擴(kuò)展卡設(shè)計.成都:成都科技大學(xué)出版社,1994

8 董渭清,王換招.高檔微機(jī)接口技術(shù)及應(yīng)用.西安:西安交通大學(xué)出版社,1995.

9 Karen Hazzah.Writing Windows VxDs and Device Drivers.R&D Publications,Inc.1995.

10 Vireo Software.VtoolsD 幫助文件. 1995~1996
本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。