摘 要: 提出了CATV網(wǎng)絡(luò)環(huán)境下視頻點(diǎn)播(VOD)機(jī)頂盒的設(shè)計(jì)。機(jī)頂盒由五大模塊組成:數(shù)字調(diào)諧器,QAM數(shù)字解調(diào)芯片,MPEG-2解復(fù)用芯片,I2C總線控制器和接口電路。它由一塊PC機(jī)插卡實(shí)現(xiàn),該插卡運(yùn)行在Windows 95環(huán)境下。作為其軟件支持的虛擬設(shè)備驅(qū)動(dòng)程序完成插卡與微機(jī)之間的通信。通過多次調(diào)試和試驗(yàn),它能夠成功地實(shí)現(xiàn)視頻業(yè)務(wù)的正常接收。 關(guān)鍵詞: 機(jī)頂盒 QAM解調(diào) MPEG-2解復(fù)用 接口電路 虛擬設(shè)備驅(qū)動(dòng)程序 |
機(jī)頂盒是視頻點(diǎn)播(VOD)系統(tǒng)的終端設(shè)備,是用戶與VOD服務(wù)器之間的智能接口。它用于視頻業(yè)務(wù)的接收和用戶請(qǐng)求的發(fā)送。因此,VOD系統(tǒng)中的數(shù)據(jù)傳輸被分成兩個(gè)通路:下行通路用于把視頻信息傳送到用戶;上行通路用于把用戶的點(diǎn)播需求傳送到發(fā)送端。基于PC機(jī)的機(jī)頂盒是將機(jī)頂盒的功能做成普通的PC插卡形式,利用計(jì)算機(jī)實(shí)現(xiàn)視頻點(diǎn)播的所有功能。這樣做有幾點(diǎn)好處: 1 充分利用微機(jī)的軟、硬件資源,從而降低了用戶終端設(shè)備的成本; 2 兼容性好,可適應(yīng)不同的接入網(wǎng)和不同類型的業(yè)務(wù); 3 軟件維護(hù)和升級(jí)方便,適應(yīng)未來發(fā)展; 4 可設(shè)計(jì)易操作、美觀和基于Windows95/98的用戶界面。 該機(jī)頂盒由兩塊普通PC機(jī)插卡構(gòu)成,它們分別完成下行數(shù)據(jù)的接收和上行數(shù)據(jù)的發(fā)送。上行數(shù)據(jù)的發(fā)送由一塊內(nèi)置MODEM卡通過電話線完成,下行數(shù)據(jù)的接收則由另一塊插卡通過CATV網(wǎng)實(shí)現(xiàn)。
本文研究的主要內(nèi)容是在微機(jī)上如何實(shí)現(xiàn)下行數(shù)據(jù)的正常接收。為此,提出了一種以數(shù)字調(diào)諧器、最新QAM數(shù)字解調(diào)芯片和高性能MPEG-2解復(fù)用芯片為核心的機(jī)頂盒設(shè)計(jì)方案。在機(jī)頂盒的硬件設(shè)計(jì)中,采用了先進(jìn)的I2C總線技術(shù)、QAM數(shù)字解調(diào)技術(shù)、MPEG-2解復(fù)用技術(shù)、FIFO存儲(chǔ)器技術(shù)以及通用的ISA總線接口技術(shù);在軟件設(shè)計(jì)中,采用了VC++編程技術(shù)和Windows95/98環(huán)境下利用VToolsD開發(fā)虛擬設(shè)備驅(qū)動(dòng)程序即VxD的技術(shù)。 |
1 機(jī)頂盒的硬件設(shè)計(jì) 機(jī)頂盒的主要功能是為人們提供一個(gè)訪問VOD業(yè)務(wù)的途徑,為合法用戶提供一個(gè)友好的界面,其接收部分的總體硬件框圖如圖1所示。 |
|
在圖1中,來自CATV網(wǎng)的下行數(shù)據(jù)經(jīng)數(shù)字調(diào)諧電路實(shí)現(xiàn)頻點(diǎn)選擇,某一頻點(diǎn)上的數(shù)據(jù)流中包含了十幾路節(jié)目的數(shù)據(jù),這些數(shù)據(jù)在發(fā)送端經(jīng)過了MPEG-2標(biāo)準(zhǔn)的系統(tǒng)復(fù)用。該電路輸出中頻信號(hào),然后由模/數(shù)轉(zhuǎn)換電路輸出數(shù)字信號(hào),作為QAM解調(diào)電路的輸入。上述過程中的頻點(diǎn)選擇和QAM解調(diào)均由微處理器經(jīng)I2C總線控制。
QAM解調(diào)后的數(shù)字信號(hào)送到MPEG-2解復(fù)用電路,實(shí)現(xiàn)通道選擇,即選出用戶點(diǎn)播的一路節(jié)目。該節(jié)目的數(shù)據(jù)為MPEG-1標(biāo)準(zhǔn)的壓縮形式。為了節(jié)約成本和簡(jiǎn)化電路,并考慮到目前微機(jī)的速度很高、且為Windows95操作系統(tǒng),本設(shè)計(jì)中不采用硬件解壓縮方式,而是將數(shù)據(jù)經(jīng)主機(jī)接口電路以DMA傳輸方式傳送到計(jì)算機(jī)的內(nèi)存中,用軟件方法對(duì)該路節(jié)目進(jìn)行實(shí)時(shí)解壓縮處理并播放出來。
上述整個(gè)電路可分為幾個(gè)相對(duì)獨(dú)立的模塊,下面分別對(duì)它們進(jìn)行介紹。
1.1 數(shù)字調(diào)諧電路1 數(shù)字調(diào)諧電路實(shí)際上就是一個(gè)高頻頭,它的作用是接收來自CATV網(wǎng)的下行數(shù)據(jù),根據(jù)微處理器的指令,實(shí)現(xiàn)頻點(diǎn)選擇(與模擬電視相似)。某一選定頻點(diǎn)的數(shù)據(jù)流中仍含有多路節(jié)目的數(shù)字信號(hào),每個(gè)用戶只收看某一頻點(diǎn)中的一路節(jié)目。頻點(diǎn)選擇由微處理器通過I2C總線控制。數(shù)字調(diào)諧電路與后級(jí)電路的連接如圖2所示。 |
|
1.2 A/D視頻轉(zhuǎn)換電路2 高頻頭輸出的模擬中頻信號(hào)的幅值已滿足A/D轉(zhuǎn)換器的輸入要求,因此將它直接送給A/D轉(zhuǎn)換器數(shù)字化,以供后續(xù)的數(shù)字電路進(jìn)一步處理。該模/數(shù)轉(zhuǎn)換器采用Philips公司的芯片,它將模擬視頻信號(hào)轉(zhuǎn)換成二進(jìn)制編碼的數(shù)字視頻信號(hào)。A/D轉(zhuǎn)換電路的連接如圖2所示。
1.3 QAM解調(diào)電路1~2? QAM解調(diào)電路是機(jī)頂盒接收部分的重點(diǎn)和難點(diǎn)之一,芯片的選型十分重要。它的作用是將A/D視頻轉(zhuǎn)換電路輸出的數(shù)字信號(hào)進(jìn)行QAM解調(diào)和其它處理后輸出基帶數(shù)字信號(hào)。 QAM解調(diào)電路采用最新QAM數(shù)字解調(diào)芯片。該芯片的功能強(qiáng)大,全數(shù)字化處理,芯片外部不需要反饋環(huán)路,支持16、32、64、128和256QAM的解調(diào)。為了實(shí)現(xiàn)芯片的強(qiáng)大功能,其內(nèi)部有大批的控制/配置寄存器供用戶編程使用,這些寄存器可通過I2C總線或并行總線進(jìn)行讀或?qū)懖僮?。芯片輸出糾錯(cuò)后的MPEG-2傳輸流。 上述介紹的調(diào)諧電路、A/D視頻轉(zhuǎn)換電路和QAM解調(diào)電路組成了一個(gè)相對(duì)獨(dú)立的整體,它們的應(yīng)用電路框圖如圖2所示。
1.4 I2C總線控制電路3~4? 在上述電路中,調(diào)諧電路的頻點(diǎn)選擇、QAM解調(diào)芯片內(nèi)部一系列寄存器的讀寫操作均由微處理器通過I2C總線控制。而微處理器芯片內(nèi)沒有I2C總線接口? 因此需要設(shè)計(jì)I2C總線控制電路。該電路由I2C 總線控制器芯片PCF8584構(gòu)成,它可用作大多數(shù)并行總線與串行的I2C總線之間進(jìn)行雙向通信的接口。 利用它可以很方便地將微處理器接入I2C總線?實(shí)現(xiàn)芯片間的數(shù)據(jù)傳輸和控制。 I2C總線控制電路與其它電路的連接方法如圖3所示。 |
|
1.5 MPEG-2 系統(tǒng)解復(fù)用電路1~2?5 在視頻點(diǎn)播系統(tǒng)中,發(fā)送端的節(jié)目源是基于MPEG-1標(biāo)準(zhǔn)的數(shù)據(jù)流,它只適合相對(duì)無誤差的環(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ù)用電路從微處理器接收指令實(shí)現(xiàn)通道選擇,即從調(diào)諧電路已選定的頻點(diǎn)中選擇用戶點(diǎn)播的一路節(jié)目,滿足用戶的點(diǎn)播要求。 MPEG-2解復(fù)用電路采用高性能的MPEG-2系統(tǒng)解復(fù)用芯片。該芯片在接收到MPEG-2系統(tǒng)傳輸碼流后,對(duì)傳輸層和PES(Packetized Elementary Stream)層作解復(fù)用處理,提供某一路的碼流緩沖,其輸出送到主機(jī)接口電路,其應(yīng)用電路框圖如圖3所示。
1.6 計(jì)算機(jī)的接口電路設(shè)計(jì)6~8? 本設(shè)計(jì)中,計(jì)算機(jī)的接口電路有兩大任務(wù):一是微處理器通過該接口電路實(shí)現(xiàn)對(duì)調(diào)諧電路、QAM解調(diào)電路、MPEG-2解復(fù)用電路的控制與訪問,以便完成多路節(jié)目數(shù)據(jù)流的分接;二是接口電路將解復(fù)用電路輸出的一路節(jié)目數(shù)據(jù)傳送到計(jì)算機(jī)的內(nèi)存中,供微機(jī)對(duì)其進(jìn)行軟件解壓縮并播放出來。
由圖3可知,微處理器對(duì)調(diào)諧電路和QAM解調(diào)電路的訪問與控制是通過I2C總線控制器芯片PCF8584實(shí)現(xiàn)的,而微處理器對(duì)解復(fù)用電路的訪問與控制則直接通過解復(fù)用芯片的微處理器接口實(shí)現(xiàn)。此外,解復(fù)用芯片輸出的一路節(jié)目數(shù)據(jù)還需通過接口電路傳送到微機(jī)的內(nèi)存中。為了適合實(shí)時(shí)、高速或突發(fā)數(shù)據(jù)的傳輸,接口電路采用DMA傳輸技術(shù),并利用FIFO(First In First Out)存儲(chǔ)器作為數(shù)據(jù)緩沖電路。由于FIFO具有一定的存儲(chǔ)容量,能起到緩沖作用,故能很好地解決外設(shè)與計(jì)算機(jī)之間的速率匹配問題。此外,當(dāng)外設(shè)進(jìn)行連續(xù)的數(shù)據(jù)傳輸時(shí),主機(jī)的DMA傳輸可以間歇地進(jìn)行,從而能夠讓主機(jī)有時(shí)間執(zhí)行數(shù)據(jù)處理和顯示等后臺(tái)任務(wù)。 |
2 機(jī)頂盒的軟件設(shè)計(jì) 在機(jī)頂盒中,軟件設(shè)計(jì)主要包括三個(gè)部分:各芯片的讀寫操作。接口軟件編程和用戶界面的設(shè)計(jì)。數(shù)字調(diào)諧電路、QAM解調(diào)電路、I2C總線控制器和MPEG-2解復(fù)用電路的芯片中都含有大量的控制和配置寄存器供用戶進(jìn)行讀寫操作,以便預(yù)置有關(guān)的參數(shù)或?qū)δ承﹨?shù)進(jìn)行控制。這需要通過編程來實(shí)現(xiàn)。機(jī)頂盒的用戶界面是一個(gè)典型的WINDOWS界面,機(jī)頂盒的所有功能(包括解壓縮)都通過它來完成,因此可采用VC++進(jìn)行編程。接口軟件的功能是把插卡接收到的數(shù)據(jù)以DMA方式傳送到計(jì)算機(jī)的內(nèi)存中,要實(shí)現(xiàn)Windows95/98下DMA方式的數(shù)據(jù)傳輸,需要編寫虛擬設(shè)備驅(qū)動(dòng)程序。這是整個(gè)軟件設(shè)計(jì)中的重點(diǎn)和難點(diǎn)。限于篇幅下面簡(jiǎn)單說明虛擬設(shè)備驅(qū)動(dòng)程序的設(shè)計(jì)思想。
|
DMA虛擬設(shè)備驅(qū)動(dòng)程序采用VtoolsD編寫,可由Win32應(yīng)用程序動(dòng)態(tài)裝載。驅(qū)動(dòng)程序負(fù)責(zé)將外設(shè)中的數(shù)據(jù)以DMA方式傳送到內(nèi)存中的兩塊緩沖區(qū)里,應(yīng)用程序分別從這兩塊緩沖區(qū)輪流讀取數(shù)據(jù)。實(shí)現(xiàn)方法如下: 驅(qū)動(dòng)程序的入口是一個(gè)被稱作Control Dispatcher的函數(shù),它負(fù)責(zé)處理與該VxD相關(guān)的系統(tǒng)控制信息,并調(diào)用相應(yīng)的處理例程。一個(gè)可被動(dò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來動(dòng)態(tài)裝載VxD時(shí),系統(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ù)時(shí),Control Dispatcher調(diào)用該消息的處理例程OnW32DeviceIoControl此時(shí)可以接收從應(yīng)用程序發(fā)來的消息如主窗口句柄等。當(dāng)Win32應(yīng)用程序關(guān)閉該VxD或Win32應(yīng)用程序本身被關(guān)閉時(shí),Control Dispatcher調(diào)用該消息的處理例程OnSysDynamicDeviceExit,此時(shí)可以做一些清理性工作,如釋放DMA緩沖區(qū)等。
每當(dāng)一次DMA傳輸結(jié)束便產(chǎn)生一個(gè)硬件中斷。在VxD的中斷處理例程中,對(duì)DMA控制器重新進(jìn)行初始化(即改變DMA緩沖區(qū)的首地址使之指向另一個(gè)緩沖區(qū),以便開始下一次DMA傳輸),同時(shí)向Win32應(yīng)用程序發(fā)送消息通知它讀取內(nèi)存中的數(shù)據(jù)。 |
3 實(shí)驗(yàn)結(jié)果 將上述機(jī)頂盒電路做成一塊PC插卡用于接收下行數(shù)據(jù)。首先對(duì)電路中的各個(gè)模塊分別進(jìn)行了多次調(diào)試和試驗(yàn)。然后在此基礎(chǔ)上,利用試驗(yàn)用的節(jié)目源(即按照MPEG-2標(biāo)準(zhǔn)進(jìn)行傳輸復(fù)用后的多個(gè)不同節(jié)目的碼流)對(duì)整個(gè)電路進(jìn)行了聯(lián)調(diào)。它可以實(shí)現(xiàn)頻點(diǎn)選擇、QAM解調(diào)和通道選擇,從而得到用戶所要點(diǎn)播的某一路節(jié)目。該路節(jié)目的數(shù)據(jù)流格式遵從MEPG-1標(biāo)準(zhǔn),速率約為1.4Mb/s。最后利用編寫好的虛擬設(shè)備驅(qū)動(dòng)程序通過接口電路成功地將該路節(jié)目傳送到計(jì)算機(jī)的內(nèi)存中。編寫一個(gè)用于調(diào)試的Win32應(yīng)用程序,讀取內(nèi)存中的節(jié)目數(shù)據(jù)并形成一個(gè)數(shù)據(jù)文件后由金山影霸播放,效果良好。 在本文已有工作的基礎(chǔ)上,下一步工作將從以下幾個(gè)方面著手: (1)軟件解壓縮播放程序的編程。 (2)軟件解壓縮播放程序與虛擬設(shè)備驅(qū)動(dòng)程序的通信調(diào)試。 (3)用戶界面的設(shè)計(jì)和編程。 |
參考文獻(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 黎洪松.?dāng)?shù)字視頻技術(shù)及其應(yīng)用.北京:清華大學(xué)出版社,1997. 6 王換招等.PC系列微機(jī)總線.西安:西安交通大學(xué)出版社?1995. 7 路友榮.PC系列微機(jī)接口擴(kuò)展卡設(shè)計(jì).成都:成都科技大學(xué)出版社?1994 8 董渭清?王換招.高檔微機(jī)接口技術(shù)及應(yīng)用.西安:西安交通大學(xué)出版社?1995. 9 Karen Hazzah.Writing Windows VxDs and Device Drivers.RD Publications Inc.1995. 10 Vireo Software.VtoolsD 幫助文件. 1995~1996 |
評(píng)論