MPEG-2信道解復(fù)用器的DSP+FPGA設(shè)計
關(guān)鍵詞:MPEG-2標準; 傳輸流; 碼流分析 ??
數(shù)字高清晰度電視(High Definition Television)簡稱HDTV,是繼黑白電視和彩色電視之后的第三代電視系統(tǒng)。其圖像細膩逼真,質(zhì)量與35 mm電影相當,再配以環(huán)繞音響,使收視效果大幅度提高。它將成為21世紀的主要電視產(chǎn)品,具有潛在的巨大經(jīng)濟效益。因此,日、歐、美等發(fā)達國家都相繼投入了大量人力、物力來開發(fā)HDTV系統(tǒng)。我國從1996年啟動國家重大產(chǎn)業(yè)工程項目HDTV功能樣機系統(tǒng)研究開發(fā)工程。
1 MPEG-2標準簡介以及數(shù)字電視功能分析?
MPEG(Motion pictures expert group)譯為運動圖像專家組,他是在ISO的召集下,為數(shù)字視頻和音頻制定壓縮標準的專家組。該組織于1994年推出MPEG-2標準。此標準分為4個文件,分別是:
系統(tǒng)層(System,ISO13818-1)描述視頻,音頻的數(shù)據(jù)復(fù)用方式和視頻,音頻同步方式。?
視頻壓縮層(Video,ISO13818-2)描述數(shù)字視頻編碼方式和解碼過程。?
音頻壓縮層(Audio,ISO13818-3)描述數(shù)字音頻編碼方式和解碼過程。?
一致性(Conformance,ISO13818-4)說明測試編碼碼流的過程,檢驗是否符合前3個文件的規(guī)定。?
MPEG-2運動圖像及其伴音通用國際標準在數(shù)字音/視頻領(lǐng)域得到了廣泛的應(yīng)用。在MPEG-2中,定義了兩種形式的碼流,即傳輸流(TS)和節(jié)目流(PS)。節(jié)目流一般用于相對無錯的環(huán)境中,如交互式多媒體業(yè)務(wù),其長度是可變的。傳輸流則用于有錯誤的環(huán)境中,如數(shù)字電視的地面廣播傳輸,其分組長度固定為188 b。傳輸流和節(jié)目流都是編碼后的基本數(shù)據(jù)流(ES)按照一定的格式打包后形成PES包,再加上一些系統(tǒng)級信息而構(gòu)成。碼流的形成過程可以用圖1來表示。其中,采樣得到的視頻數(shù)據(jù)流和音頻數(shù)據(jù)流經(jīng)過編碼器后,成為MPEG-2 基本流(ES),再通過打包,成為包化ES流(PES),再經(jīng)過傳輸復(fù)用器,將音頻PES,視頻PES,以及其他的數(shù)據(jù)和控制信息,轉(zhuǎn)換成MPEG2傳輸流(TS).TS流經(jīng)過信道編碼和調(diào)制之后,發(fā)送到信道中。在接收端,正好相反,經(jīng)過解調(diào),信道解碼和前向糾錯之后,再通過傳輸解復(fù)用器,分別輸出視頻PES流,音頻PES流,以及數(shù)據(jù)和控制信息,再通過視頻解碼器和音頻解碼器后,分別送入DTV顯示系統(tǒng)和音頻播放系統(tǒng)。
2 關(guān)于傳輸流以及傳輸流中幾個重要概念?
傳輸流TS包的結(jié)構(gòu)如圖2所示。?
傳輸流由一道或多道節(jié)目組成,每道節(jié)目由一個或多個原始流和一些其他流復(fù)合在一起,包括視頻流,音頻流,節(jié)目特殊信息流和其他數(shù)據(jù)包。?
首先介紹視頻和音頻PES流是如何轉(zhuǎn)換成TS流的。PES流是由視頻或音頻基本流分別打包處理后形成的PES包系列,PES包的長度是不定的。每個PES包的包頭攜帶了:?
流標識(SID)由同一個ES經(jīng)打包處理后得到的PES,其流標識相同。?
顯示時間戳(PTS)用于視頻和音頻之間的同步控制,它指示對解碼后視頻和音頻播放的適當時刻。?
解碼時間戳(DTS)用于視頻基本流解碼器和音頻基本流解碼器的同步控制,它指示對視頻和音頻基本流解碼的適當時刻基本流的速率控制信息。?
由于TS包長固定為188 b,所以在打包時,PES包長若大于188 b,則對其進行分段處理,因為PES是放在TS包的有效載荷區(qū)進行傳送的,所以分段后每段大小為184 b,不足184 b的加上適應(yīng)字段構(gòu)成184 b,有沒有適應(yīng)字段則由包頭中的適應(yīng)字段控制來指示。每段加上TS包頭就形成一個TS包。
TS包包頭中各字段含義如下:?
同步字節(jié)指示一個TS包的開始。
傳輸錯誤指示表示該傳輸包在傳輸過程中有無錯誤。?
有效傳輸開始指示若有效載荷區(qū)傳輸?shù)氖莵碜訮ES包的數(shù)據(jù),則有效傳輸開始指示表示有效載荷區(qū)的第一字節(jié)是否為被分段的PES包的起首字節(jié)。若有效載荷區(qū)傳輸?shù)氖莵碜怨?jié)目特殊信息的數(shù)據(jù),則有效傳輸開始指示表示載荷區(qū)第一字節(jié)是否是PSI數(shù)據(jù)起首字節(jié)的位置指針。?
傳輸優(yōu)先指示表示的是具有相同的PID的傳輸包的優(yōu)先級。?
連續(xù)計數(shù)器PID相同的傳輸包的計數(shù)。?
此外,在TS包包頭的調(diào)整字段中,有一個重要的域PCR,即節(jié)目時鐘基準。它以固定的頻率插入包頭。在解碼端,正是根據(jù)PCR來恢復(fù)系統(tǒng)時鐘的。?
PSI信息使用4個表來定義碼流的結(jié)構(gòu),分別為節(jié)目關(guān)聯(lián)表(PAT)、節(jié)目映射表(PMT)、條件接收表(CAT)和網(wǎng)絡(luò)信息表(NIT)。其中,最重要的表信息是PAT和PMT。PAT是PSI信息的根,其PID是0,表中列出了傳送碼流中所有節(jié)目的節(jié)目映射表的PID,PMT表中列出與該節(jié)目有關(guān)的所有基本碼流,如視頻、音頻和PCR及有關(guān)信息的PID。除PAT表包的PID永遠是0外,還有兩種包的PID是預(yù)留的:?
①空包,用來作碼流填充,PID是8191。?
②CAT包,PID值是1。所有PSI信息必須以一定的頻率發(fā)送,每秒鐘至少要發(fā)送20次。?
3 信道解復(fù)用器的原理?
信道解復(fù)用器位于信道調(diào)制前端,它對輸入TS流進行處理以適應(yīng)該信道要求,基于MPEG-2的實時TS流信道解復(fù)用器的原理框圖如圖3所示。系統(tǒng)包括碼流輸入接口、PCR校正模塊、PSI分析和重新生成模塊及用戶接口等部分。
碼流輸入接口支持ASI(異步串行接口)和SPI(同步并行接口)兩種輸入格式。輸入信號經(jīng)過接口電平轉(zhuǎn)換,變?yōu)椴⑿蠺TL電平信號。輸入TS流的最大數(shù)據(jù)率可達120 Mb/s,該系統(tǒng)實現(xiàn)兩路獨立的TS流輸出,它們各自的數(shù)據(jù)率分別由CLOCK1和CLOCK2時鐘決定。其取值范圍從1.5 Mb/s到120 Mb/s。
系統(tǒng)中核心部分為2片F(xiàn)PGA和1片DSP,其中1片F(xiàn)PGA主要完成PID過濾和PCR延時補償,另外1片負責用戶接口。而DSP則負責分析TS流,根據(jù)用戶設(shè)定分路,并生成新的PAT及PMT數(shù)據(jù)包。CLOCK1和CLOCK2來自后端信道調(diào)制器的時鐘,輸入的單路多節(jié)目TS流的內(nèi)容將根據(jù)用戶的設(shè)定被分別分配到TS1和TS2,輸出碼率分別決定于CLOCK1和CLOCK2。DSP前端和后端的FIFO消除了輸入輸出碼率不同所帶來的數(shù)據(jù)丟失現(xiàn)象。27 MHz的本地時鐘用來補償輸入TS流的PCR在系統(tǒng)中所產(chǎn)生的延時。用戶接口通過一雙口RAM與系統(tǒng)交換相關(guān)的設(shè)定信息。下面對系統(tǒng)的幾個重要部分說明如下:?????????
3.1 碼流分析?
信道解復(fù)用器系統(tǒng)進入正常狀態(tài)工作前要完成用戶參數(shù)設(shè)定,用戶最關(guān)心的參數(shù)是輸入TS流中所含節(jié)目類型、PID號、碼率等信息。系統(tǒng)首先會對輸入的TS進行分析,從中提取出所有的節(jié)目信息,并且計算出不同類型數(shù)據(jù)包的碼率。用戶根據(jù)這些分析結(jié)果可以了解到目前輸入TS流的所有基本信息。
3.2 用戶設(shè)定 ?
根據(jù)用戶的實際需要,輸入TS流的節(jié)目內(nèi)容可以分別被指定分配到兩個輸出通道,并且允許同一個節(jié)目同時被分配到兩個通道,用戶也被允許修改PID號。比如:輸入為一個22 Mb/s的TS流,包含3個節(jié)目,每個節(jié)目又包含多個視頻、音頻等數(shù)據(jù)流。假如目前用戶有兩個輸出信道,一個為8?29 Mb/s,另一個為23?56 Mb/s,并且用戶打算將輸入碼流中的節(jié)目1分配到信道1,節(jié)目2和3分配到信道2。用戶則可根據(jù)需要做相應(yīng)的設(shè)定,解復(fù)用器系統(tǒng)將根據(jù)用戶的設(shè)定來分別為輸出TS1和TS2生成新的PAT和PMT并且將相應(yīng)的視頻、音頻等數(shù)據(jù)包分配到相應(yīng)的通道。用戶選擇節(jié)目時也可以只選擇該節(jié)目中的部分數(shù)據(jù)流。比如某個節(jié)目包含4個視頻流,而用戶只對其中的兩個視頻流感興趣,那么用戶在設(shè)定時可以只選擇需要的視頻流,在系統(tǒng)進入正常工作時,未被選中的數(shù)據(jù)流將被自動過濾。?
3.3 PCR補償?
PCR是TS流的重要部分,它的精度決定了解碼端恢復(fù)時鐘的精度,直接關(guān)系到解碼器是否能正常的工作。輸入TS流中各節(jié)目的數(shù)據(jù)包從進來到出去會在信道解復(fù)用器的FIFO內(nèi)產(chǎn)生一定的延時,如果不對其PCR做相應(yīng)的延時補償,其輸出TS流的PCR誤差將有可能遠大于協(xié)議所規(guī)定的±500 ns的誤差范圍,從而導(dǎo)致解碼不正常。假定某個PCR在T1時刻進入信道解復(fù)用器,在T2時刻從解復(fù)用器輸出,則該時刻的PCR值將被替換為PCR′。
PCR′ = PCR +(T2-T1)??
延時補償運算中所用到的時間標記T1、T2是由本地27 MHz時鐘計數(shù)所得,由于碼流在解復(fù)用器內(nèi)的停留時間并不會太大,所以用本地27MHz記錄延時帶來的累積誤差很小。
3.4 用戶接口?
對于解復(fù)用器后端的信道調(diào)制器來說,最關(guān)心的是如何從信道解復(fù)用器中得到節(jié)目信息,以及如何將所選節(jié)目分配到TS1和TS2上。這些信息是通過用戶接口進行交換的。?
考慮到本系統(tǒng)需交換的信息較多,這里采用一容量較大的16位地址的雙端口RAM(DPRAM),作為信道調(diào)制器和解復(fù)用器交換信息的平臺。信道解復(fù)用器在對輸入TS流進行分析后,將所提取的各種節(jié)目信息放在雙口RAM的相應(yīng)地址中,以供信道調(diào)制器讀取和修改。解復(fù)用器根據(jù)調(diào)制器送入的讀寫信號及相關(guān)數(shù)據(jù)和地址信息,由FPGA電路實現(xiàn)取指和譯碼,將調(diào)制器所需信息從DPRAM的相應(yīng)地址中取出并送給信道調(diào)制器,或?qū)?strong>信道調(diào)制器修改后的信息從DPRAM的相應(yīng)地址中取出。