??? 摘? 要: DVB-C數(shù)據(jù)廣播系統(tǒng)的基本結(jié)構(gòu),詳細(xì)分析了TS復(fù)接器在整個系統(tǒng)中的重要性與功能,提出一種DSP與FPGA相結(jié)合的實(shí)現(xiàn)方案,及其設(shè)計(jì)方法和系統(tǒng)結(jié)構(gòu)。?
??? 關(guān)鍵詞: DVB-C數(shù)據(jù)廣播? TS復(fù)接器? DSP? FPGA
?
??? 信息時代的到來使人們需要共享越來越多的信息。隨著信息及其需求的爆炸性增長,信息的選擇及傳輸速率成為一個重要問題,。有線電視網(wǎng)絡(luò)有其固有的高帶寬特性,適合大容量的數(shù)據(jù)傳輸和實(shí)時性要求,使寬帶數(shù)字接入成為可能,。在我國由于有線電視網(wǎng)是一個已經(jīng)存在的接入網(wǎng)絡(luò),成本低,、可維護(hù)性強(qiáng),、頻率資源豐富,、覆蓋面廣,、用戶量大,因而通過有線電視網(wǎng)進(jìn)行數(shù)據(jù)廣播是目前國內(nèi)應(yīng)用領(lǐng)域的一大熱點(diǎn),。DVB-C是ETSI(European Telecommunications Standards Institute)提供的基于Cable上數(shù)據(jù)廣播的一整套標(biāo)準(zhǔn)[1,2,3],本文首先介紹DVB-C數(shù)據(jù)廣播系統(tǒng)的基本結(jié)構(gòu),接著詳細(xì)分析TS復(fù)接器在整個系統(tǒng)中的重要性與功能,然后詳細(xì)說明利用DSP(數(shù)字信號處理器)與FPGA(現(xiàn)場可編程門陣列)相結(jié)合的一個實(shí)現(xiàn)方案,闡明了其中的設(shè)計(jì)方法和系統(tǒng)結(jié)構(gòu)。?
1 DVB-C數(shù)字廣播系統(tǒng)簡介?
??? 一個實(shí)用的DVB-C廣播系統(tǒng)的結(jié)構(gòu)如圖1所示[3~6],整個系統(tǒng)可以大致分為三個部分:(1) 信息前端,包括視頻服務(wù)器,、播控服務(wù)器,、通信控制服務(wù)器、用戶管理工作站,、節(jié)目采集工作站,、節(jié)目編排工作站等;(2)傳輸網(wǎng)絡(luò),利用現(xiàn)有的HFC網(wǎng)絡(luò)巨大的頻帶資源實(shí)現(xiàn)數(shù)據(jù)傳輸;(3)用戶終端,用戶利用機(jī)頂盒或者Cable-Modem接收和瀏覽信息。?
?
?
??? 從圖1可以看到,在DVB-C數(shù)字廣播系統(tǒng)中,一個通道上傳輸?shù)臄?shù)據(jù)可能包含多路節(jié)目或來自多個節(jié)目源,因此需要對多路多節(jié)目TS流(MPTS)進(jìn)行復(fù)合轉(zhuǎn)接,生成一個符合DVB-C標(biāo)準(zhǔn)的MPTS,再經(jīng)調(diào)制后在一個通道上傳輸,。由TS復(fù)接器來完成這個功能,。TS復(fù)接器在前端系統(tǒng)中相當(dāng)于一個交換機(jī),它負(fù)責(zé)對多個MPTS進(jìn)行轉(zhuǎn)換和復(fù)合,生成一個MPTS。在復(fù)合過程中,要完成包標(biāo)識符(PID)過濾,、PID重新標(biāo)識,、插入節(jié)目特定信息/服務(wù)信息(PSI/SI)、多路MPTS的交織等工作[4,5],。從中可以看出復(fù)接器在整個系統(tǒng)中的重要性,TS復(fù)接器工作是否穩(wěn)定可靠,直接影響整個系統(tǒng)的正常運(yùn)作,。?
2 TS復(fù)接器的設(shè)計(jì)方法?
??? 在該系統(tǒng)中需要對6路數(shù)字衛(wèi)星電視節(jié)目進(jìn)行復(fù)接。各路有效速率為0~15Mbps的異步串行接口(ASI)輸入,6路總速率不超過36Mbps,輸出為恒定速率38.1Mbps的ASI輸出,輸出的MPTS為符合DVB-C標(biāo)準(zhǔn)的傳送流;復(fù)接器調(diào)整PID,包括將輸入MPTS中的PSI/SI等不需要的信息過濾掉以及對有效TS包重新分配PID,。新的PSI/SI信息作為復(fù)接器的輸入按一定速率插入到MPTS中,插入的PSI/SI信息包括節(jié)目關(guān)聯(lián)表(PAT),、節(jié)目映射表(PMT)、網(wǎng)絡(luò)信息表(NIT),、服務(wù)描述表(SDT)等[4,5],復(fù)接器還能接受來自播控系統(tǒng)的數(shù)據(jù)信息,作為復(fù)接器輸出流的一部分,。系統(tǒng)的功能模塊結(jié)構(gòu)如圖2所示。
?
?
??? 由圖2可以看到,由于需要處理的數(shù)據(jù)速率快,、數(shù)據(jù)量大,、要求實(shí)時性,一般的處理芯片無法完成,。為了達(dá)到上述目的,采用高速DSP和FPGA一起來完成。整個系統(tǒng)基于DSP和FPGA,配以CPLD,、高速SRAM,、異步FIFO等。DSP具有運(yùn)算速度快,、計(jì)算能力強(qiáng)、可用資源比較豐富的特點(diǎn),尤其適合于實(shí)現(xiàn)各種數(shù)字信號的處理功能,在各種領(lǐng)域具有廣泛的應(yīng)用,。但由于所要處理的數(shù)據(jù)量太大,僅靠DSP片內(nèi)RAM是遠(yuǎn)遠(yuǎn)不夠的,所以還必須要有大容量,、訪問速度快的緩沖區(qū)對接收到的數(shù)據(jù)進(jìn)行緩沖,以便于DSP進(jìn)行處理?;舅枷胧荈PGA完成TS包過濾和PID置換,、PSI/SI提取等工作,系統(tǒng)的控制工作、TS包交織算法則由DSP完成,整個控制邏輯則由CPLD完成,。?
3 TS復(fù)接器的一種實(shí)現(xiàn)方案?
??? 針對上述分析,采用DSP與FPGA相結(jié)合的方法成功實(shí)現(xiàn)了TS復(fù)接器,該實(shí)現(xiàn)方案如圖3所示,。圖3中的DSP采用TI公司的TMS320VC5410-100,它具有100MIPS的快速處理能力,以及片內(nèi)64K的RAM和多個串口等資源,其片外尋址空間可以多達(dá)8M Word。FPGA則采用了Xilinx公司的XCV300,。?
?
?
??? 筆者為DSP擴(kuò)展了2M Word的高速SRAM作緩沖,分為兩個1M Word的雙緩沖,處理時以幀為單位,DSP和FPGA只能訪問其中一個1M Word的SRAM,。一般情況下,FPGA從輸入接口把一幀數(shù)據(jù)存入其中一個緩沖區(qū),DSP對另外一個緩沖區(qū)進(jìn)行操作,根據(jù)交織表把數(shù)據(jù)送到FIFO,再輸出到輸出接口,兩者的總線切換由FPGA負(fù)責(zé)完成。?
??? 圖3可以分為以下幾個模塊:?
??? a.輸入模塊:使用ASI接口將270M串行編碼數(shù)據(jù)轉(zhuǎn)換成27M并行數(shù)據(jù),并提供接收時鐘,、數(shù)據(jù)有效等控制信號,。?
??? b.FPGA模塊:接收ASI接口輸出的并行數(shù)據(jù),實(shí)現(xiàn)同步、PID置換,、PSI/SI提取等,并將數(shù)據(jù)寫入SRAM中,跟蹤記錄每路的TS包數(shù);產(chǎn)生幀切換脈沖,控制雙緩沖區(qū)的切換,。 ?
??? c.DSP主控模塊:DSP完成整個系統(tǒng)的控制功能,計(jì)算交織表,負(fù)責(zé)與播控系統(tǒng)的通信等。?
??? d.CPLD模塊:根據(jù)DSP提供的地址和數(shù)據(jù)進(jìn)行譯碼,對總線上的各設(shè)備進(jìn)行互斥片選;產(chǎn)生中斷申請信號;對發(fā)送FIFO的全空信號進(jìn)行采樣,控制從發(fā)送FIFO讀數(shù)據(jù)并將數(shù)據(jù)送給輸出ASI接口,。?
??? e.輸出模塊:由CPLD提供控制信號,將數(shù)據(jù)從發(fā)送FIFO讀出來,同時寫入發(fā)送ASI接口,。?
??? f.命令通信接口:復(fù)接器通過串口與播控服務(wù)器通信,從服務(wù)器接收系統(tǒng)復(fù)位、狀態(tài)查詢,、PID置換,、PSI/SI插入和提取等命令,并向服務(wù)器反饋必要的信息。?
??? 為保證數(shù)據(jù)信號接收端解碼器能正確解碼,緩沖區(qū)不會上溢或下溢,解碼輸出信號平穩(wěn),要求復(fù)接器輸入的各路TS包均勻分布在輸出數(shù)據(jù)流中,所以必須在發(fā)送之前對輸入的各路TS包做交織,。采用實(shí)時交織的方法,FPGA能夠在每次幀切換的時候記錄各路TS包的數(shù)目,然后計(jì)算交織表,。交織表依照如下方式計(jì)算:?
??? 設(shè)數(shù)據(jù)流共有K路MPTS流,數(shù)據(jù)流的一個數(shù)據(jù)幀有M個TS包,每路MPTS有m(i)(i=0,1,...K-1)個TS包, 假設(shè)各路TS包由大到小排序,m(0)最大,否則首先排序。根據(jù)M,、K,、m(i)對輸入的TS流進(jìn)行交織,對第i路有:用p(i,n)指示第i路是否將一個TS包輸出到MPTS中的第n個TS包,q(i)表示第i路中已輸出到MPTS中的TS包數(shù),初值為0;?
??? i=0,n=0;?
??? while(n ??? {? ??? ??? p(i,n)=[m(i) * n/M]+1;? [ ]表示取整? ??? ??? if (p(i,n)-q(i)>=1)? ??? ?? ???? {? ??? ??????? 將第i路的第q(i)個TS包輸出到MPTS中的第n個TS包;? ??? ??????? q(i)++;? ??? ??????? n++;? ??? ??????? }? ??? ??????? i++;? ??? ??????? if ( i=K ) i=0;? ??? }? ??? 最后在Xilinx的Xilinx Foundation Series先對所設(shè)計(jì)的邏輯進(jìn)行仿真,利用DSP的simulation進(jìn)行程序的仿真,仿真結(jié)束后在單板上進(jìn)行調(diào)試,。由于選用的FPGA的容量限制,門數(shù)有限,能夠進(jìn)行PID置換的個數(shù)受到限制,但是可以根據(jù)估算出的各路TS包數(shù)對每一路能夠置換的PID數(shù)目進(jìn)行動態(tài)調(diào)整;由于采用了交織算法,能夠?qū)ν话l(fā)數(shù)據(jù)進(jìn)行很好的平滑作用,利于后級進(jìn)行處理,。把復(fù)接器接到圖1所示的系統(tǒng)中去,通過復(fù)接器處理的節(jié)目流在STB(機(jī)頂盒)上能夠接收到穩(wěn)定清晰的節(jié)目,并且系統(tǒng)穩(wěn)定工作,說明本文所設(shè)計(jì)的復(fù)接器達(dá)到了預(yù)期目的,。? ??? 本文詳細(xì)分析了DVB-C數(shù)據(jù)廣播系統(tǒng)中的關(guān)鍵部件——復(fù)接器的一種實(shí)現(xiàn)方法,該方法基于DSP+FPGA的結(jié)構(gòu),便于以后的升級與擴(kuò)展。同時,所設(shè)計(jì)的復(fù)接器除了應(yīng)用在DVB-C數(shù)據(jù)廣播系統(tǒng)外,凡是輸入符合DVB-C的TS流標(biāo)準(zhǔn)均可以使用,。? 參考文獻(xiàn)? 1 Information technology-Generic coding of moving pictures?and associated audio information:Systems. ITU-T Recommendation H.220.0 (1995) | ISO/IEC 13818-1:1995? 2 鐘玉琢,喬秉新,祁衛(wèi)譯. 運(yùn)動圖像及其伴音通用國際標(biāo)準(zhǔn)——MPEG-2. 北京:清華大學(xué)出版社,1997? 3 Digital broadcasting systems for television, sound and data?services. Framing structure, channel coding and modulation?for cable systems. ETS 300 429,; 1994? 4 Allocation of Service Information (SI) codes for DVB systems.ETR 162; 1995? 5 DVB guidelines for implementation and usage of Service?Information (SI). ETR 211,; 1997? 6 Support for use of scrambling and Conditional Access(CA) within DVB systems. ETR 289,; 1996