摘要:TS流復(fù)用器作為數(shù)字電視系統(tǒng)前端的關(guān)鍵設(shè)備,對其功能、成本、設(shè)計靈活性方面的要求越來越高。傳統(tǒng)的復(fù)用器設(shè)計方案已經(jīng)不能滿足市場的需求,本文介紹一種基于可編程片上系統(tǒng)(SOPC)的復(fù)用器設(shè)計方案,該方案利用軟硬件相結(jié)合的方法將系統(tǒng)集成在一款A(yù)ltera公司的現(xiàn)場可編程門陣列(FPGA)上,不但完成了高效、穩(wěn)定、可移植性強(qiáng)的復(fù)用器設(shè)計,而且實(shí)現(xiàn)了對TS流實(shí)時監(jiān)測的功能。
關(guān)鍵詞:SOPC;TS;復(fù)用器;碼流監(jiān)測
1 引言
TS流復(fù)用器,是將不同來源如MPEG-2編碼器和TS碼流輸入的多路單節(jié)目TS(SPTS )或多節(jié)目TS(MPTS)數(shù)據(jù)復(fù)接成一路多節(jié)目TS(MPTS)(如圖1所示)。從現(xiàn)在數(shù)字電視前端產(chǎn)品的發(fā)展來看,我們對復(fù)用器的要求已經(jīng)不再滿足于單獨(dú)功能的產(chǎn)品了。而且復(fù)用器有時會被要求集成在多通道編碼器或者字幕機(jī)之中。這就為我們提出了兩個要求:(1)它的移植性要好。(2)由于復(fù)用器和它所應(yīng)用的產(chǎn)品在數(shù)字電視廣播中是中間級設(shè)備,我們希望它最好可以有碼流監(jiān)測的功能。
眾所周知,專用的碼流分析儀是數(shù)字電視技術(shù)開發(fā)階段,分析和監(jiān)測TS流的必要手段之一,為了迅速有效地找出故障源,解決問題,需要對碼流進(jìn)行監(jiān)測和分析。在實(shí)際工作中,我們發(fā)現(xiàn)常常有這樣的一種情況,在不方便使用碼流分析儀或者不中斷設(shè)備連接的情況下,希望看到一些TS流的關(guān)鍵信息。同樣,復(fù)用器的使用者也希望不通過其它的專用設(shè)備,就可以監(jiān)測到復(fù)用器所處理的節(jié)目流信息,比如PSI信息以及各路節(jié)目的業(yè)務(wù)名稱。另外,在復(fù)用器的設(shè)計中對TS流的一部分處理方法和過程也是碼流分析儀工作時需要的。這樣我們就可以合理利用資源,將解復(fù)用和再復(fù)用部分對TS流的分析結(jié)果應(yīng)用于碼流監(jiān)測模塊當(dāng)中。
2 系統(tǒng)實(shí)現(xiàn)方案
該復(fù)用器系統(tǒng)基于可編程片上系統(tǒng)(SOPC)思想實(shí)現(xiàn)(如圖2所示)。整個系統(tǒng)由一塊FPGA、外圍異步串行接口(ASI)芯片(CYP15G0101)、16×2LCD液晶屏及存儲芯片構(gòu)成。本次設(shè)計采用了Altera的嵌入式NIOSⅡ處理器,整個系統(tǒng)在FPGA上嵌入了復(fù)用器的硬核邏輯模塊以及用于系統(tǒng)控制的NIOSⅡ處理器。具體對TS流的分析處理大都由外圍硬核模塊處理,這些模塊全部通過AVALON總線作為從設(shè)備與NIOSⅡ處理器相關(guān)聯(lián),NIOSII處理器負(fù)責(zé)TS流解復(fù)用、復(fù)用以及監(jiān)測模塊的控制(各寄存器的配置等)以及液晶顯示器(LCD)的控制。
具體功能模塊
解復(fù)用器根據(jù)CPU設(shè)置各個解復(fù)用通道所要輸出的節(jié)目流PID,并輸出相應(yīng)的節(jié)目,而復(fù)用器一方面將單路及多路節(jié)目比特流按照一定的格式重新組織、復(fù)用成單路串行的傳輸流,另一方面它將編碼端的時鐘信息插入到TS流中,接收端借此恢復(fù)并調(diào)整本地時鐘,使之與編碼端保持嚴(yán)格的同步關(guān)系,保證音頻/視頻的同步恢復(fù)。碼流監(jiān)測模塊的設(shè)計,我們并不要求它完全達(dá)到碼流分析儀的功能,本次設(shè)計只需要實(shí)現(xiàn)我們平時比較關(guān)心的TS流信息處理:
(1)監(jiān)測傳輸碼流同步丟失(造成傳輸中斷);
(2)分析PSI信息(解出節(jié)目圖像的關(guān)鍵依據(jù));
(3)打印出TS流的節(jié)目表(確定各路節(jié)目的業(yè)務(wù)名稱)。
2.1 解復(fù)用器包括以下模塊
(1)188-204識別模塊:對輸入的MPTS和SPTS進(jìn)行包長確認(rèn)與同步鎖定。
(2)碼率統(tǒng)計模塊:對輸入的節(jié)目流進(jìn)行有效和非法PID識別與統(tǒng)計。
(3)8通道解復(fù)用子模塊:軟件編程對輸入的節(jié)目流進(jìn)行PID比較與選通輸出。
(4)PID過濾模塊:CPU向模塊內(nèi)部分布并行寄存器設(shè)定所要過濾掉數(shù)據(jù)流的PID值,在輸出部分進(jìn)行相應(yīng)的PID過濾。
(5)PID替換模塊:CPU向模塊內(nèi)部RAM設(shè)定所要替換的PID值,在輸出部分進(jìn)行相應(yīng)的PID替換。
2.2 復(fù)用器包括以下模塊
(1)8通道復(fù)用模塊:對8個通道進(jìn)行仲裁讀取整包數(shù)據(jù),復(fù)用輸出后的數(shù)據(jù)保持恒定的碼率。
(2)復(fù)用接口模塊:8通道復(fù)用模塊進(jìn)行復(fù)用前,各通道數(shù)據(jù)需要進(jìn)行緩存并通過申請應(yīng)答機(jī)制寫入16通道復(fù)用模塊復(fù)用輸出,復(fù)用接口模塊作用為連接TS數(shù)據(jù)流與復(fù)用模塊之間的接口。
(3)PSI信息插入模塊:在復(fù)用TS流中定時插入PSI信息。
(4) DCM-CC插入模塊:由CPU通過AVALON總線模塊發(fā)送DSM_CC數(shù)據(jù)在復(fù)用子模式中緩存后通過8通道復(fù)用模塊復(fù)用輸出。
(5)PCR、PTS、DTS調(diào)整模塊:兩種調(diào)整模式,一種采用本地27MHz時鐘重新生成PCR,用原PCR值與之對比并用兩者相應(yīng)差值修正PTS與DTS的值,另一種為在復(fù)用器入口處提取PCR值并開始計數(shù),計算其在復(fù)用輸出后的計數(shù)值并相應(yīng)修改PCR。在復(fù)用器的數(shù)據(jù)傳送流輸入端檢測PCR域并記錄PCR域初值,然后在復(fù)用器的數(shù)據(jù)傳送流輸出端檢測PCR域并將經(jīng)過補(bǔ)償計數(shù)后的PCR的新值裝載進(jìn)PCR域。
2.3 碼流監(jiān)測模塊
(1)監(jiān)測傳輸碼流同步丟失
TS流中的一包,是以0x47這樣的字節(jié)為同步頭的長為188字節(jié)的一段數(shù)據(jù)。要找到包同步頭Sync_byte(0x47),需要檢測輸入的TS流的每一個字節(jié),尋找其中匹配的值(0x47)。由于0x47并不是一個被同步頭所獨(dú)占的值,在包的其他位置也可能出現(xiàn)這個值,為了準(zhǔn)確無誤地檢測到同步頭,在找到0x47之后,還要檢測該字節(jié)后第188字節(jié)是否也為0x47。我們暫且認(rèn)為如果能夠連續(xù)5次在間隔187個字節(jié)后找到字節(jié)0x47,則找到同步;否則,則要繼續(xù)逐字節(jié)尋找。
之后,為了始終能同步TS流,每隔187個字節(jié)檢查一次同步頭,如果3次未能找到,則認(rèn)為此時發(fā)生了同步頭丟失的錯誤,錯誤標(biāo)志位置1。于此同時,重新逐字節(jié)尋找同步頭。這一功能的實(shí)現(xiàn)是利用解復(fù)用模塊中的188—204識別模塊來完成的,CPU通過讀取錯誤標(biāo)志位的值來判定是否顯示同步丟失錯誤。
(2)分析PSI信息
在一路復(fù)用TS流中可以有很多包含多個不同節(jié)目的原流。為了確定哪個原流屬于哪個節(jié)目,解碼器要通過TS中包含的附加信息來識別。這樣的信息就是節(jié)目專用信息(PSI:Program Special Information)表。在這個設(shè)計中,該模塊的作用就是通過分析PSI信息中的各包的PID值,來找到PAT和PMT列表,并把它們的相關(guān)信息打印出來。
由于在解復(fù)用模塊中已經(jīng)能夠識別節(jié)目流的PID,在這里我們通過識別出來的PID來找到相應(yīng)的PAT和PMT等信息。PAT的PID恒等于0X0000H,通過查找該值找到PAT包。之后在PAT列表中的節(jié)目信息中查找到各路節(jié)目的program_number 和PMT_PID,通過這兩個值我們就可以確定各路節(jié)目的業(yè)務(wù)名稱。
(3)打印出TS流的節(jié)目表
這一步利用軟件來完成。自己定義LCD.h的頭文件,里面定義了LCD液晶的初始化lcd_init()以及向LCD發(fā)送字符的寫函數(shù)lcd_write_data()等。CPU可以將識別的PSI信息發(fā)送到LCD顯示。
3 結(jié)束語
用該方案實(shí)現(xiàn)的復(fù)用器系統(tǒng)不單具有TS碼流監(jiān)測的功能,而且是一個典型的SOPC系統(tǒng),它由FPGA內(nèi)嵌的NIOSII處理器代替了傳統(tǒng)的外部獨(dú)立MCU。這樣可以大大提高系統(tǒng)的可移植性及設(shè)計靈活性。由單個芯片完成整個系統(tǒng)的主要功能,又是可編程系統(tǒng),具有靈活的設(shè)計方式,可裁減、擴(kuò)充和升級,并具有軟硬件在系統(tǒng)中可編程功能。
也就是說我們能夠利用最小面積的電路,實(shí)現(xiàn)對源流或者整個設(shè)備最終輸出TS流是否有錯誤的初步判斷,同時也能排查設(shè)備中其它器件和電路對TS流傳輸?shù)母蓴_。
——————————
參考文獻(xiàn)
[1]altera corp.Nios Ⅱ Processor Reference Handbook.2006.
[2]alrera corp.Nios Ⅱ Software Developer's Handbook.2006.
[3]alrera corp.Nios Ⅱ hardware development tutorial.2006.
[4]DVB Document ETR290. DVB-MeasurementGuide Lines for DVB Systems[S].
[5]ETSITR 101 290. MeasurementGuide Lines for DVB Systems[S].
[6]鄭志航.數(shù)字電視原理與應(yīng)用.北京:中國廣播電視出版社,2001.
作者簡介:李穎宏,女,工學(xué)碩士,現(xiàn)任北方工業(yè)大學(xué)自動化專業(yè)教授,主要從事自控理論及系統(tǒng)的教學(xué)及自動控制裝置的研發(fā)。