DVB_C機頂盒中的視頻信號處理
摘要:機頂盒是交互式電視的關鍵技術(shù)之一。從MPEG 2解復用、視頻編解碼、視頻輸出、視頻與音頻的同步等方面介紹了DVB_C STB中的視頻信號處理技術(shù)。
本文引用地址:http://www.ex-cimer.com/article/242290.htm關鍵詞:數(shù)字機頂盒 同步 交互式電視(ITV)
隨著信息技術(shù)的高速發(fā)展,通信技術(shù)、計算機技術(shù)、電視技術(shù)已進入了相互結(jié)合的新時代。方興未艾的交互式電視(ITV)正是這種結(jié)合的具體體現(xiàn)。所謂交互式電視,是一種受觀眾控制的電視,在節(jié)目間和節(jié)目內(nèi)觀眾能夠作出選擇和決定,是一種非對稱雙工形式的新型電視技術(shù)。數(shù)字機頂盒是其中的關鍵技術(shù)之一。作為ITV系統(tǒng)中的用戶終端,它是普通電視與寬帶傳輸網(wǎng)絡之間的橋梁。通過STB,用戶可在普通電視機上收看高清晰度(如MPEG 2標準)的圖象;并且足不出戶,就可享受到視頻點播、家庭購物等一系列誘人的服務。
筆者所設計的是用于有線電視的機頂盒,主要功能是將數(shù)字電視信號轉(zhuǎn)換成模擬電視信號,使得在模擬電視向數(shù)字電視的過渡期間,模擬電視機能夠接收到數(shù)字電視節(jié)目;并在此基礎上增加了視頻點播、火線接口(IEEE 1394)等功能。機頂盒的內(nèi)部結(jié)構(gòu)主要分為視頻信號處理與音頻信號處理兩大部分。其中,視頻信號處理包括兩部分:(1)視頻信號自身解復用、解碼和格式轉(zhuǎn)換的處理;(2)視頻信號與音頻信號的同步。
1 系統(tǒng)結(jié)構(gòu)
圖1是筆者所設計的機頂盒的功能模塊框圖。
系統(tǒng)選用了VLSI公司的開發(fā)平臺:VES2761評估板以及JumpStart ARM 3.3a開發(fā)軟件。
前端部分接收有線電視電纜輸出的信號,進行頻率變換、QAM解碼、解交織、解RS碼、解擾等處理后,輸出MPEG 2解復用前的標準碼流,即傳送碼流。這部分主要由一片VES1820芯片完成。
解復用和中央處理器(主控CPU)集成在一片芯片VES2700上。MPEG 2傳送碼流被解復用為系統(tǒng)流、視頻流和音頻流三個部分。VES2700還提供IEEE 1394、IEEE 1284、RS232、Modem、I2C、智能卡和紅外通信等接口。
芯片VES6100需要一片外部的SDRAM(至少2MB),就可以作為一個MPEG 2(MP@ML或者MP@SL)解碼系統(tǒng)工作,并將解碼后的數(shù)據(jù)流分音頻信號和視頻信號輸出。音頻信號再經(jīng)過PCM解碼、放大,可以直接作為揚聲器的輸入信號。經(jīng)機頂盒輸出的信號可以符合各種格式,如:RGB、Svideo、復合視頻信號等,也可以是各種電視制式:NTSC、PAL、SECAM等。VES6100同時實現(xiàn)OSD(屏幕菜單顯示)功能。
在上行信道,用戶所發(fā)出的信息,例如選擇的電視劇片名信息經(jīng)過調(diào)制——通常是QPSK調(diào)制(QPSK抗干擾能力強)后,發(fā)送到電視臺。
2 解復用單元
VES2700包括兩個獨立的微處理器:(1)用戶化的RISC微處理器用于解復用,即傳輸解復用子系統(tǒng);(2)ARM703_t Host負責操作系統(tǒng)和OSD,控制I/O操作等。這兩個處理器并行工作,無資源競爭。ARM703的4K字節(jié)Cache,可以用單指令周期訪問部分代碼。高級的內(nèi)存管理機制保證代碼,如實時操作系統(tǒng),保存在Cache中。
VES2700擁有4條獨立高速總線,以防止瓶頸。4條總線分別為:(1)信道數(shù)據(jù)輸入總線;(2)連接DRAM控制器的總線;(3)ARM703_t Host總線,這條總線與I/O總線及其外設接口;(4)連接各種外設的I/O總線。
VES2700提供專用硬件來支持多種軟件功能,例如,CRC校驗、傳輸濾波、IR控制等功能。ARM703_t微處理器提供的庫可實現(xiàn)軟件Modem功能。
傳輸/解復用子系統(tǒng)采用了用戶化、高性能的RISC處理器,它有自己專用的128B指令SRAM和512B數(shù)據(jù)SRAM,以60Mb/s的速率處理MPEG2傳輸碼流、PES,并解析成MPEG2包,將相應的數(shù)據(jù)傳給視頻、音頻、電文、應用信息等隊列(位于外部DRAM中),并支持CAS(Conditional Access System)管理、丟失包檢測、PCR恢復、視頻和音頻的同步等功能。統(tǒng)一的內(nèi)存結(jié)構(gòu)滿足了傳輸/解復用子系統(tǒng)和ARM703的需要。RISC支持32種不同隊列。內(nèi)存控制器通過隊頭、隊尾指針來管理每個隊列。MPEG 2解碼器(VES6100)從這些隊列中讀取數(shù)據(jù)。
視頻隊列操作模型:為了將視頻數(shù)據(jù)寫入視頻隊列,RISC將“0”隊列號及有效數(shù)據(jù)寫入DRAM 緩存。當有相同隊列號時,內(nèi)存控制器將:(1)區(qū)分相關隊列頭指針;(2)將數(shù)據(jù)寫入頭指針所指的DRAM位置;(3)更新頭指針。
在系統(tǒng)初始化時,ARM703-t從外部存儲器(Flash Memory)下載微碼到片內(nèi)雙口SRAM。RISC以40.5MHz的時鐘速率執(zhí)行SRAM中的微碼。傳輸/解復用單元可同時處理32 PIds(Packet PIDs),支持運輸包及其凈負荷數(shù)據(jù)、PES包及其凈負荷數(shù)據(jù),輸出程序流小包。
傳輸/解復用處理器和ARM703-t共享2個存儲器,用于存儲代碼和數(shù)據(jù)表。RISC指令RAM(I-RAM)占用起始的1.25KB地址空間,ARM703對I-RAM可讀寫而傳輸/解復用處理器 RISC對I-RAM只可讀不可寫。RISC數(shù)據(jù)RAM(D-RAM)占512B。D-RAM是雙口訪問存儲器,可被RISC和ARM703讀寫。這2個RAM映射到ARM703和RISC的地址空間。
代碼和數(shù)據(jù)按下列步驟下載:
(1)啟動后,通過設置RISC控制寄存器停止位暫停運行傳輸/解復用處理器,代碼寫入RISC SRAM,恢復停止位;(2)如果RISC在運行,先停止打包器,再停止RISC(設置停止位),然后將新代碼寫入RISC SRAM。
3 MPEG A/V解碼器接口
VES6100需要外部SDRAM才能工作,最多支持32Mbit SDRAM,其大小決定于分辨率和操作模式的需要,同時支持復合視頻、S端子、立體聲、模擬和數(shù)字IEC958音頻輸出。VES2700的A/V操作模式中,視頻和音頻可以選擇為串行或并行。
系統(tǒng)中采用了串行視頻串行音頻模式,因為此時與外設接口最為方便,而OSD的帶寬最大。根據(jù)所選擇的模式,在本設計中,A/V操作模式寄存器設置如下:
0x1C=0x1800
0x50=0x0040
0x70=0x0042
VES2700與VES6100的連接如圖2所示。
4 VES6100對視頻信號的處理
VES6100芯片是一種MPEG2解碼器,其內(nèi)部結(jié)構(gòu)框圖如圖3所示。
該芯片包括3個子系統(tǒng):
·MPEG1/2音/視頻解碼器;
·OSD子系統(tǒng);
·NTSC/PAL/SECAM 編碼器。
其中與視頻信號密切相關的模塊如下:
視/音頻流處理器VASP
VASP解碼視頻和音頻數(shù)據(jù)。在視頻模式,VASP按照MPEG1/2語法,從視頻流中有層次地解出定長碼和變長碼,然后將這些碼翻譯成指令和數(shù)據(jù)(8×8bit DCT數(shù)據(jù)塊),傳送給MSP。VASP也執(zhí)行錯誤檢測和掩蔽以及解碼系數(shù)的反量化。
MPEG信號處理器MSP
作為VASP的從屬單元,MSP接收反量化系數(shù)及VASP的一系列指令,執(zhí)行與MPEG1/2解碼相關的所有數(shù)字信號處理任務,包括:
·IDCT(反DCT變換);
·二維半象素濾波計算;
·塊重建算法和運動補償。
MSP的輸出是4:2:0格式的象素數(shù)據(jù),存儲在外部SDRAM中,供顯示之用。
視頻圖象處理器VGP
VGP對已完成解碼的視頻數(shù)據(jù)進行處理,例如4:2:0視頻格式轉(zhuǎn)換成4:2:2視頻格式。它還執(zhí)行圖象重疊、OSD等功能。
VES6100作為微處理器(VES2700)的一個從設備工作。上電后,VES2700初始化VES6100和可編程寄存器,傳輸壓縮視/音頻數(shù)據(jù)到串口或8位寬并口。然后,VES6100在解碼模式下獨立地處理壓縮視頻流。微處理器控制設置寄存器以及響應中斷,可通過讀取狀態(tài)寄存器獲?。郑牛樱叮保埃暗倪\行狀態(tài)。
4.1 視頻輸入
MCB(內(nèi)存控制器與微控制器接口)將壓縮視頻流從片內(nèi)CDIF(Compressed Data Input FIFO)傳送到VCDB(Compressed Data Buffer,位于SDRAM中)。當VCDB到達上限標志時,MCB發(fā)生上限標志中斷,微處理器停止數(shù)據(jù)傳輸。MCB將壓縮視頻數(shù)據(jù)傳給VASP。當VASP處理壓縮數(shù)據(jù)時,MCB從VCDB中讀入數(shù)據(jù)并將它寫入CDOF(壓縮數(shù)據(jù)輸出隊列)。如果VCDB低于下限標志,微控制器恢復傳輸數(shù)據(jù)。當VCDB到達下限標志時,MCB產(chǎn)生下限標志中斷。
4.2 PES解析過程
在視頻解碼器提取頭部信息之前,包括PTS(顯示時間標簽)、SCR(系統(tǒng)參考時鐘)、壓縮視頻數(shù)據(jù)流,PES層數(shù)據(jù)解析模塊已經(jīng)完成定位。這個塊由微處理器的解碼控制寄存器控制。如果PES層解碼模式無效,壓縮數(shù)據(jù)直接存放到SDRAM。
4.3 起始碼搜索
待匹配的塊起始碼位于VASP的前端,對壓縮數(shù)據(jù)流一字節(jié)一字節(jié)地處理。當微處理器要求起始碼匹配時,起始碼匹配邏輯開始搜索起始碼,直到匹配成功。典型的起始碼包括序列起始碼、組起始碼和圖象起始碼。起始碼搜索分為兩種:塊搜索與非塊搜索。在非塊搜索中,即使找到了起始碼,視頻解碼器仍然繼續(xù)解碼;在塊搜索中,一旦發(fā)現(xiàn)起始碼便停止解碼過程。當需要快速解碼,例如信道切換模式或靜止圖象捕捉模式時,采用序列起始碼搜索方式。
4.4 視頻解碼
VASP和MSP執(zhí)行MPEG1/2解碼操作,包括VLC解碼、反量化、半象素濾波、塊重建、將重建塊寫入SDRAM幀存中。解碼必須與顯示同步。
VES6100的一般解碼過程如表1所示。處于同一列中的事件同時處理。由表可見,解碼順序與顯示順序并不一致。
表1 VES6100的一般解碼過程
Time | t0 | t1 | t2 | t3 | t4 | t5 | t6 | t7 | t8 | t9 | t10 |
Field | T | B | T | B | T | B | T | B | T | B | T |
Decode | P3 | B1 | B1 | B2 | B2 | P6 | P6 | B4 | B4 | B5 | B5 |
Display | I0 | I0 | B1 | B1 | B2 | B2 | P3 | P3 | B4 | B4 | B5 |
4.5 視頻輸出
MCB將存儲在SDRAM中的顯示幀傳送到視頻處理器。視頻處理器將4:2:0的解碼格式轉(zhuǎn)換成NTSC/PAL CCIR601格式。
4.6 視頻流錯誤掩蔽
VES6100能檢測出視頻流中的下列錯誤:
·非法語法;
·8×8塊中,系數(shù)數(shù)目大于64;
·數(shù)據(jù)流中的誤碼;
·宏塊序號錯。
VES6100一旦檢測出這些錯誤,便采取掩蔽措施重建宏塊(復制前一幀的相應宏塊),直到檢測到下一個片(slice)起始碼或圖象起始碼。如果壓縮數(shù)據(jù)流中有掩蔽矢量,它將作為重建宏塊的參考,否則利用0值運動矢量。如果宏塊序號錯誤,VES6100丟棄數(shù)據(jù)直至檢測到圖象起始碼,繼續(xù)正常解碼。
5 音頻和視頻的同步
實現(xiàn)視頻和音頻同步的基本思想是從解碼端恢復出一個與編碼端一致的時鐘。而視頻的PTS和音頻的PTS是基于同一時基的,所以,若視頻PTS與系統(tǒng)時鐘同步,音頻PTS也與時鐘同步的話,則視頻和音頻就同步。
VES6100從碼流中獲取PCR(程序參考時鐘)信息,并用它們調(diào)整解碼端的一個27MHz的壓控晶振,得到與編碼端一致的系統(tǒng)時鐘。這個時鐘被300分頻后,作為一個90kHz的局部計數(shù)器的工作頻率,并用得到的第一個PTS值作為這個計數(shù)器的初始值,在輸出圖象和聲音時,這個計數(shù)器的值表示了當前幀的實際輸出時間。這個時間可與期望的輸出時間(PTS)相比,判斷是否同步,確定同步措施。
VES6100有兩種音頻和視頻同步模式:自動模式和手動模式。這兩種同步模式都由內(nèi)存控制塊管理。同步算法基于MCB中的SCR(系統(tǒng)參考時鐘)和PTS兩個參量。SCR與PCR類似,也是將比特流本身的時序編碼的時間標簽,也可從同一道程序的視頻和音頻PTS值所用的共同時間基點推出。三個相關的寄存器是:PTS_audio、PTS_video和SCR,每個33位長,其中SCR可作為90kHz下的一個計數(shù)器使用。
自動模式又分為兩種:
(1)以系統(tǒng)流作為同步基準時,SCR作為標準時鐘,視頻和音頻的PTS和SCR進行比較。當PTS和SCR的差大于顯示時間時,產(chǎn)生同步信號,跳過或重復當前單元(視頻為1幀,音頻為2×32樣本/通道)。這是機頂盒的默認模式。
(2)以音頻流作為同步基準時,音頻的PTS作為標準時鐘。視頻PTS與音頻PTS作比較,當這二個PTS之差超過一幀圖象的顯示時間時,產(chǎn)生視頻同步信號。
手動模式:在這種模式下,音頻和視頻解碼自由運行,直到微處理器發(fā)出skip/repeat命令或提供音頻PTS和視頻PTS以及PCR時,才停止工作。
自動模式和手動模式的不同點在于PTS的來源。在自動模式下,PTS從MPEG 2碼流中提取出來或來自于外部時鐘;在手動模式下,微處理器提供PTS。
6 軟件設計
軟件的編程用ARM公司的ARM ANSI C語言結(jié)合ARM匯編語言來完成。主要包括VES6100和VES2700中各個寄存器的設置,VES2700對各個外設的控制和協(xié)調(diào),OSD的編寫,大部分功能可以利用API函數(shù)來實現(xiàn)。軟件的調(diào)試可以通過JTAG口進行,將硬件電路板與計算機連接起來,便可以在屏幕上觀察到存儲器的分配情況,寄存器的當前值,以及軟件的執(zhí)行情況。
評論