HDTV信源解碼器
關(guān)鍵詞: DSP; HDTV;C6701;STi7000; 解復(fù)用;AC-3
2002年5月B版
引言
數(shù)字高清晰度電視(HDTV)是繼黑白電視和彩色電視之后的新一代電視,HDTV接收機(jī)或機(jī)頂盒具有廣闊市場和巨大經(jīng)濟(jì)效益,已經(jīng)成為國際高科技領(lǐng)域研究開發(fā)的熱點(diǎn)之一。
HDTV接收系統(tǒng)由信道解碼、信源解碼、顯示終端組成。目前,多數(shù)HDTV信源解碼方案均由三片或三片以上的核心芯片組成,分別用于系統(tǒng)控制+解復(fù)用、視頻解碼、音頻解碼。為了提高系統(tǒng)的集成度,信源解碼方案正向著兩片方案過渡,最終可能實(shí)現(xiàn)單片解碼方案。本文提出一種兩片解碼方案:用TI的TMS320C6701完成系統(tǒng)控制、解復(fù)用、音頻解碼;用STi7000完成視頻解碼。
圖1 信源解碼器硬件框圖
圖2 信源解碼器軟件結(jié)構(gòu)框圖
圖3 軟件解碼數(shù)據(jù)流圖
硬件設(shè)計(jì)
本信源解碼方案的硬件設(shè)計(jì)如圖1所示。
系統(tǒng)的核心為TMS320C6701 DSP,采用EPROM固化系統(tǒng)程序。C6701配接SDRAM用來存儲數(shù)據(jù)和工作程序。FIFO1用來輸入TS。視頻解碼器STi7000映射到C6701存儲空間。STi7000配有SDRAM用來存儲視頻PES、各種圖像(解碼、參考和顯示幀圖像)及OSD數(shù)據(jù)。視頻后處理部分由THS8134 DAC、CPLD及運(yùn)放組成。系統(tǒng)本地時(shí)鐘和PWM產(chǎn)生器由FPGA實(shí)現(xiàn),它與VCXO、RC低通濾波器一起在C6701解復(fù)用軟件配合下完成27MHz時(shí)鐘恢復(fù)。音頻解碼由C6701軟件完成。音頻輸出部分由FIFO2、一個(gè) 74LS157和三個(gè)D/A芯片組成。音頻輸出所用時(shí)鐘和控制信號也由FPGA實(shí)現(xiàn)。
系統(tǒng)控制、解復(fù)用和音頻解碼
C6701是TI的高性能浮點(diǎn)DSP,時(shí)鐘為167MHz,具有1336MIPS能力。C6701的Memory Map選為Map0。在其存儲器的 CE0 空間中放置了1M*32位的SDRAM。在CE1空間放置了1M*16位EPROM。本系統(tǒng)使用ROM boot process,因此C6701的BOOTMODE[4:0] 引腳置為“10010”。C6701的程序超過64K字節(jié),因此從0地址開始執(zhí)行的是一個(gè)Loader,它把EPROM中其他程序繼續(xù)傳送到SDRAM中。傳送完成后,CPU開始從Loader以下的地址開始執(zhí)行程序。CE2空間用來放置異步器件,此時(shí)它的大小為4Mbytes。它被GAL內(nèi)部的譯碼器等分為四個(gè)部分。前兩個(gè)部分放置STi7000;第三部分放置FIFO1;第四部分放置實(shí)現(xiàn)本地時(shí)鐘和PWM的FPGA。CE3空間僅放置FIFO2。
C6701 PLL模式被選為 *4 , 即輸入引腳CLKMODE[1:0] = 11b。41.75MHz由5V晶體振蕩器產(chǎn)生,經(jīng)過LVT125做電平變換后輸入給C6701。C6701的SDCLK輸出加給零延遲時(shí)鐘緩沖器CY2308后分兩路分別提供給SDRAM。C6701所用的3.3V(VCC3)和1.9V(VCC1.9)由PT6921產(chǎn)生。本系統(tǒng)有一個(gè) 14腳插座, 它可與XDS510 emulator(硬件仿真器)連接起來實(shí)現(xiàn)仿真。C6701的HPI和串口1不被使用,相應(yīng)引腳與跳線連接,以便系統(tǒng)功能擴(kuò)展時(shí)使用。
本系統(tǒng)輸入為并行TS,輸入接口由TS數(shù)據(jù)(TSData[7:0]),DVALID,BCLK and ERROR組成。當(dāng)TS數(shù)據(jù)輸入達(dá)到2KB時(shí),F(xiàn)IFO的/HF信號有效,它作為一個(gè)中斷信號加給C6701 INT6腳。接到此中斷后,C6701運(yùn)行有關(guān)中斷子程序,DMA將2KB TS數(shù)據(jù)取出傳輸?shù)紺6701片內(nèi)的SRAM中。該FIFO映射到C6701 EMIF CE2空間。
27MHz系統(tǒng)時(shí)鐘恢復(fù)由FPGA(EPF10K20)中的計(jì)數(shù)器/PWM模塊、外部低通濾波器和VCXO在C6701相應(yīng)軟件的控制下完成。VCXO輸出的時(shí)鐘信號輸入給FPGA中的一個(gè)42位計(jì)數(shù)器產(chǎn)生本地時(shí)鐘LMCR。當(dāng)C6701按一定算法求得PCR與本地時(shí)鐘的差值后,將此差值輸出給FPGA的PWM模塊,該模塊將此差值轉(zhuǎn)換為PWM信號后輸出給低通濾波器,取出直流后控制VCXO輸出頻率。經(jīng)一定時(shí)間的調(diào)整后,得到與發(fā)射方同步的27MHz。VCXO輸出的27MHz時(shí)鐘也提供給視頻解碼器使用。
視頻解碼
視頻解碼由ST公司的STi7000在C6701的相應(yīng)軟件控制下實(shí)現(xiàn)。STi7000完成如下功能:a)接收C6701傳來的視頻PES并進(jìn)行句法分析,取出ES存入SDRAM,取出DTS、PTS存入相應(yīng)寄存器。b)找到ES中各層的開始碼并提取頭部信息,存入相應(yīng)寄存器中,發(fā)中斷給C6701。C6701讀取這些頭部信息,并據(jù)此控制解碼流水線工作。c)STi7000的核心是硬件SLICE層以下解碼流水線。它從SDRAM中讀出ES,進(jìn)行解壓縮(VLD-反掃描-IDCT-運(yùn)動(dòng)補(bǔ)償)得到重構(gòu)圖像,并根據(jù)其類型(I、B或P幀)存入SDRAM相應(yīng)區(qū)內(nèi)。在流水線開始每一幀圖像解碼前,C6701要根據(jù)該幀類型等參數(shù)向STi7000發(fā)解碼命令。解碼流水線另一個(gè)重要功能是實(shí)現(xiàn)隱錯(cuò)。d)視頻格式轉(zhuǎn)換:圖像輸出前,可進(jìn)行各種格式變換(水平分辨率上下變換;垂直行數(shù)上下變換;隔行(I)和逐行(P)相互變換;3:2電影下拉模式和幅型比(4:3或16:9)變換(FULL、ZOOM、LETTERBOX和SIDEBAR)。e)實(shí)現(xiàn)OSD功能。
STi7000約有110個(gè)寄存器,分為配置、控制、存儲器存取、解碼指令、顯示、OSD、時(shí)鐘/鎖相環(huán)、D1接口、PES等9類。 C6701對STi7000各寄存器的存取通過STi7000的8位微控制器接口進(jìn)行。該接口映射入C6701 EMIF CE2空間最低1MB內(nèi)。其8位數(shù)據(jù)線接到LVT16245一邊;8位地址線接LVT16244輸出邊;片選(notA_cs)接GAL相應(yīng)的輸出,讀寫(A_RnotW)接LVT16244輸出/B_AWE上。中斷請求信號(notA_IRQ)接C6701 INT4腳。C6701通過STi7000的8位并行數(shù)據(jù)接口向STi7000寫入視頻壓縮數(shù)據(jù)。該接口與上述8位微處理器接口共用8位數(shù)據(jù)線。壓縮數(shù)據(jù)請求信號接C6701 INT5腳。壓縮數(shù)據(jù)選通輸入notA_STRB則由GAL提供。
STi7000需要128Mbit的SDRAM存儲器,由兩片4*512K*32-Bit的100MHz SDRAM芯片組成。STi7000要求SDRAM具有如下特點(diǎn):全頁Burst長度;連續(xù)Wrap;3周期CAS Latency。SDRAM和STi7000實(shí)現(xiàn)“glueless(無膠合)”連接。
本系統(tǒng)采用TI的THS8134實(shí)現(xiàn)視頻輸出D/A變換。本系統(tǒng)只實(shí)現(xiàn)HD輸出方式。STi7000的24Bit Y、Cb、Cr數(shù)字視頻信號和PIXCLK直接輸出給THS8134,產(chǎn)生模擬Y、Pb、Pr分量信號。STi7000的PIXCLK、HSYNC和VSYNC信號加給一個(gè)CPLD(EPM7128)。該CPLD控制THS8134按照相應(yīng)的標(biāo)準(zhǔn)(1080I格式對應(yīng)SMPTE274M;720P格式對應(yīng)SMPTE296M;480P格式對應(yīng)SMPTE293M;480I格式對應(yīng)SMPTE170M)分別在Y、Pb、Pr分量上疊加三電平(1080I和720P)或兩電平(480P)復(fù)合同步信號,然后經(jīng)運(yùn)算放大器放大后輸出。這四種格式由C6701 TOUT0和TOUT1輸出的Displaymode0和1選擇。
當(dāng)音頻開始輸出時(shí),C6701先將4KB數(shù)據(jù)寫入FIFO2中。FIFO2映射入C6701 EMIF CE3空間。FIFO2的滿標(biāo)志/FF信號有效,它觸發(fā)FPGA內(nèi)相應(yīng)模塊開始工作,將音頻主時(shí)鐘12.2880MHz時(shí)鐘分頻產(chǎn)生LRCLK(左右時(shí)鐘信號,頻率48KHz)和SCLK(串行時(shí)鐘,頻率為3.072MHz)。SCLK信號作為FIFO2的讀信號,而LRCLK則作為74LS157的輸入選擇信號。當(dāng)LRCLK為高電平時(shí),左(左環(huán)、中央聲道)數(shù)據(jù)輸出給三個(gè)DAC芯片;當(dāng)LRCLK為低電平時(shí),右(右環(huán)、LFE)數(shù)據(jù)輸出給三個(gè)DAC芯片。MCLK、LRCLK和SCLK同時(shí)輸入給三個(gè)DAC芯片。由三個(gè)DAC輸出的5.1聲道經(jīng)放大后分別輸出。當(dāng)FIFO2中已輸出2KB數(shù)據(jù)時(shí),其/HF無效,此信號接至C6701 INT7輸入腳,觸發(fā)該中斷。C6701執(zhí)行相應(yīng)的中斷子程序,再向FIFO2輸出2KB數(shù)據(jù),如此循環(huán),保證音頻信號持續(xù)輸出。
軟件設(shè)計(jì)
系統(tǒng)的軟件結(jié)構(gòu)如圖2所示。
在C6701內(nèi)部有64Kbytes的數(shù)據(jù)SRAM和64Kbytes的Cache/Program SRAM。程序SRAM經(jīng)初始化用作Cache。64K字節(jié)的片內(nèi)數(shù)據(jù)RAM被組織成兩個(gè)塊。它們的地址分別為8000 0000h到8000 7FFFh和8000 8000h到8000 FFFFh。當(dāng)CPU的Side A和Side B或者DMA控制器同時(shí)使用不同塊時(shí),不會引起沖突。因此,同時(shí)訪問的數(shù)據(jù)位于不同塊時(shí),不需考慮它們的地址。整個(gè)片內(nèi)數(shù)據(jù)RAM分為五個(gè)部分:TS_Buffer(4K字節(jié))用來緩沖輸入的TS;V_PES_Buffer(16K字節(jié))用來存放視頻PES; A_PES_Buffer(8K字節(jié)) 用來存放音頻PES/ES; A_Buffer(32K字節(jié)) 用來存放解壓縮后的音頻數(shù)據(jù);剩余的部分用于緩存中間計(jì)。
算數(shù)據(jù)。每一部分Buffer又分成兩個(gè)塊,以乒乓方式使用。即一塊由CPU使用時(shí),另一塊可以同時(shí)進(jìn)行存貯或由DMA使用。
軟件整個(gè)系統(tǒng)解碼數(shù)據(jù)流圖如圖3所示。首先FIFO1接收到的TS數(shù)據(jù)到其存儲量的一半(2KB),發(fā)出中斷(INTa)激活DMA3。DMA3把FIFO1里一半的數(shù)據(jù)倒到C6701的片內(nèi)存儲器TS_Buffer中,并在傳輸完成時(shí)發(fā)出中斷(INTb),INTb的中斷服務(wù)程序發(fā)出信號semPES激活解復(fù)用任務(wù)。解復(fù)用任務(wù)從片內(nèi)存儲器中取出TS數(shù)據(jù)進(jìn)行相應(yīng)處理,然后把分離出的音視頻PES數(shù)據(jù)送回片內(nèi)存儲器,當(dāng)A_PES_Buffer填充一半時(shí),通過信號量semAudio激活音頻處理任務(wù)。音頻處理任務(wù)從A_PES_Buffer中取出音頻PES數(shù)據(jù),解碼后存到A_Buffer。當(dāng)A_Buffer中的數(shù)據(jù)積累到一定數(shù)量時(shí),激活DMA2。DMA2把解碼后的4KB音頻數(shù)據(jù)輸出給FIFO2,F(xiàn)IFO2的/FF信號(滿標(biāo)志)啟動(dòng)音
頻數(shù)據(jù)由FIFO2的讀出。音頻輸出FIFO2半空時(shí)會發(fā)出中斷INTc,激活DMA2。DMA2把A_Buffer中的數(shù)據(jù)再傳送2KB到FIFO2去,如此繼續(xù)下去。視頻PES數(shù)據(jù)由DMA0從V_PES_Buffer不斷地倒到片外SDRAM中,當(dāng)接到STi7000請求時(shí),激活DMA1,把SDRAM中緩存的的視頻PES數(shù)據(jù)輸出給STi7000,進(jìn)行解碼,然后,經(jīng)視頻后處理后輸出給顯示器。
解復(fù)用的功能包括:PSI分析,時(shí)鐘恢復(fù)以及對傳輸包拆包并傳給相應(yīng)的buffer(緩存器)。
視頻解碼的功能是對視頻PES進(jìn)行解壓縮,恢復(fù)出視頻流。在系統(tǒng)中,Video Driver的中斷的優(yōu)先級被設(shè)為最高。視頻解碼系統(tǒng)主要是通過中斷來觸發(fā)其它過程的進(jìn)行,中斷是視頻解碼主線,操縱著整個(gè)視頻解碼的過程。
音頻解碼的功能是對音頻PES進(jìn)行AC-3解壓縮,恢復(fù)出音頻流。音頻解碼從音頻PES包解碼開始,在6701片內(nèi)的數(shù)據(jù)存儲區(qū)中開辟A_PES_Buffer(由兩塊各4KB對稱的存儲區(qū)組成),解復(fù)用得到的音頻PES數(shù)據(jù)以乒乓方式存儲到這兩個(gè)區(qū)域。經(jīng)過拆包PES數(shù)據(jù)得到的ES數(shù)據(jù)直接覆蓋PES數(shù)據(jù)所處區(qū)域。然后開始音頻解碼的核心計(jì)算,將解碼輸出的PCM數(shù)據(jù)格式化后存儲到片內(nèi)數(shù)據(jù)存儲區(qū)中開辟的兩塊(各16K)PCM緩沖區(qū)中,利用DMA2將其中的數(shù)據(jù)輸出給片外的FIFO。
結(jié)語
本論文提出了一種基于通用DSP C6701的HDTV信源解碼器兩片解決方案。隨著技術(shù)的進(jìn)步,將來可能會提出HDTV信源解碼器單片解決方案。即在單個(gè)功能強(qiáng)大的芯片的基礎(chǔ)上,很多工作可以由軟件控制實(shí)現(xiàn)。本論文提出的HDTV信源解碼器解決方案對于下一代HDTV信源解碼器的研制具有重要的參考價(jià)值?!?
參考文獻(xiàn)
1 TEXAS INSTRUMENTS. TMS320C6000 CPU AND INSTRUCTION SET REFERENCE GUIDE, 2000
2 SGS-THOMSON MICROELECTRONICS, HIGH DEFINITION MPEG-2 VIDEO DECODER AND DISPLAY STi7000, PRELIMINARY DATA, JUNE 1999
評論