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