《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 基于T-DMB的手機(jī)電視開發(fā)要點(diǎn)
基于T-DMB的手機(jī)電視開發(fā)要點(diǎn)
摘要: 本文討論的是能夠接收符合T-DMB規(guī)范(各種標(biāo)準(zhǔn)的接收終端的差別很小)手機(jī)電視信號(hào)的嵌入式手持設(shè)備的軟硬件設(shè)計(jì)概述,,這種設(shè)備使用戶可以不經(jīng)過(guò)移動(dòng)通信網(wǎng)絡(luò)直接獲得數(shù)字電視信號(hào),,能夠滿足人們隨時(shí)隨地對(duì)信息的需求,。在實(shí)際的開發(fā)過(guò)程中的主要硬件問(wèn)題是電磁兼容,軟件是音視頻的同步和H.264的解碼效率問(wèn)題,。軟件開發(fā)的難點(diǎn)集中在MPEG-2的解復(fù)用和Direct Show應(yīng)用框架的設(shè)計(jì),。
Abstract:
Key words :

  本文概括性地討論手機(jī)電視這種嵌入式手持設(shè)備的軟硬件開發(fā)要點(diǎn):如何設(shè)計(jì)硬件,實(shí)現(xiàn)音視頻同步,,提高H.264解碼速率,,并防止DMA緩沖溢出等。

  硬件設(shè)計(jì)

  硬件設(shè)計(jì)概述

  硬件配置的選擇要綜合考慮,,如CPU的處理功能關(guān)系到最終的解碼顯示效果,。當(dāng)然,選擇一些高檔通用處理器,,或者是專用的媒體處理器都能夠達(dá)到較好的效果,,但卻增加了硬件的成本??梢栽谧罱K顯示效果和硬件的選擇上采取折中方案,。目前,能接收T-DMB和DVB-H標(biāo)準(zhǔn)的芯片還不是很多,,可以選擇市場(chǎng)上的一些主流芯片,。本文討論的這款產(chǎn)品的硬件配置為:S3C2440A(400MHz),64MB的SDRAM,,apollo fs1110, kino2efs1026,。基本可以滿足手機(jī)電視對(duì)硬件的需求,。通過(guò)天線接收到的射頻信號(hào)送給射頻前端的RF調(diào)諧芯片APOLLO FS1110,,主要作用是把射頻信號(hào)解調(diào)為IF(Intermediate Frequency)信號(hào)。這款芯片是目前市場(chǎng)上的主流產(chǎn)品,,可以接收多個(gè)標(biāo)準(zhǔn)的信號(hào),,而且體積小(5.0mmx5.0mmx0.9mm),功耗低(80mW),擁有三個(gè)低噪聲前端放大器,,涵蓋 L-Band,、BandⅡ和BandⅢ三個(gè)頻段。apollo fs1110把IF信號(hào)送給kino2 efs1026,,完成信源碼解碼輸出MPEG2-TS數(shù)據(jù),。kino2是一款高度優(yōu)化的基帶處理器,體積小(10mm×10mm×1.3mm),,功耗低(100mW),,可以提供各種DMB碼率,最高可以達(dá)到1.8Mbps,,片上含有R-S解碼器,,可以實(shí)現(xiàn)較佳的移動(dòng)信道性能。kino2把信源碼TS碼流送給CPU,,由CPU完成TS流的解復(fù)用,、解碼和顯示,。硬件設(shè)計(jì)框圖如圖1所示。

  

 

  圖1 硬件設(shè)計(jì)框圖

  硬件各功能模塊描述

  手機(jī)電視終端最終要做到支持多標(biāo)準(zhǔn),、多頻段,,這也是市場(chǎng)的需求。由于現(xiàn)在開展手機(jī)電視業(yè)務(wù)的三地所采用的頻段不太一樣,,如北京和廣東采用了VHF Band 3,,而上海采用了L- Band,因此,,同一手機(jī)電視終端如果要在國(guó)內(nèi)不同地區(qū)接收手機(jī)服務(wù),,需要支持多頻段。本文討論的T-DMB采用的工作頻段是VHF 3波段和L波段,,因此,,要使用FS1110的BandⅢ和L-Band;而BandⅡ主要用于FM廣播。FS1110的3個(gè)高頻輸入都可以使用,,頻段選擇可以由FS1026通過(guò)IIC接口來(lái)控制,,同時(shí),F(xiàn)S1110內(nèi)部寄存器的初始化也是通過(guò)此接口來(lái)完成的,。

  下游的FS1026基帶處理器模塊接收RF調(diào)諧器送過(guò)來(lái)的IF信號(hào),,最終完成信源解碼。輸出的MPEG2-TS數(shù)據(jù)支持并行和串行兩種格式,。串行數(shù)據(jù)可以通過(guò)SPI接口和CPU直接連接,。基帶模塊還可以通過(guò)SCP(Serial Control Port)接口和CPU進(jìn)行控制信息的交換,,SCP接口和IIC接口是完全兼容的,。還可以用串口(UART)和CPU進(jìn)行通信。由于有的商業(yè)DMB節(jié)目經(jīng)過(guò)服務(wù)商加擾(經(jīng)過(guò)加密),,智能卡模塊可完成解擾功能,。

  CPU的功能是通過(guò)SPI接口接收TS數(shù)據(jù),完成音頻和視頻的解碼后顯示,。數(shù)據(jù)可以通過(guò)DMA進(jìn)行緩存,,然后就可以從DMA中讀取數(shù)據(jù)進(jìn)行解復(fù)用。DMA方式為一種高速的數(shù)據(jù)傳輸操作,,允許在外部設(shè)備和存儲(chǔ)器之間直接讀寫數(shù)據(jù),,既不通過(guò)CPU,也不需要CPU干預(yù),。整個(gè)數(shù)據(jù)傳輸操作在DMA控制器的控制下進(jìn)行,。CPU除了在數(shù)據(jù)傳輸開始和結(jié)束時(shí)做一點(diǎn)處理外,在傳輸過(guò)程中,CPU可以進(jìn)行其它工作,。這樣,,在大部分時(shí)間里,CPU和輸入/輸出都處于并行操作狀態(tài),。因此,,可以大大提高整個(gè)系統(tǒng)的效率,。在WinCE平臺(tái)下,,對(duì)DMA的操作相當(dāng)方便,驅(qū)動(dòng)開發(fā)難度不大,,讀取數(shù)據(jù)就像操作普通文件一樣,。只有一點(diǎn)區(qū)別,就是要防止DMA溢出,。因?yàn)槠胀ㄎ募淖x取完全可控,,而這里處理的是一種“實(shí)時(shí)”流,有可能發(fā)生溢出,。溢出包括上溢(數(shù)據(jù)讀取過(guò)慢)和下溢(讀取過(guò)快),。和MPEG的解碼器接收端防止數(shù)據(jù)溢出的原理是一樣的,主要是由于圖像編碼的格式不一樣,,發(fā)送的解碼器前端的數(shù)據(jù)速率并不是恒定的,。MPEG采用流速反饋控制來(lái)控制數(shù)據(jù)溢出,使得到達(dá)音視頻解碼器的數(shù)據(jù)速率趨于恒定,。對(duì)DMA的控制就簡(jiǎn)單些,,用專用的一個(gè)線程讀取數(shù)據(jù),解復(fù)用線程依據(jù)數(shù)據(jù)的多少,,可以丟棄某些幀或者放慢解碼速度,。不過(guò)一般還是丟幀的情況多。

  硬件設(shè)計(jì)注意事項(xiàng)

  設(shè)計(jì)硬件電路時(shí)的主要問(wèn)題就是高頻和電磁兼容,,一般的方法是加屏蔽罩,,可以把APOLLO FS1110加屏蔽罩,以減少模塊的空間干擾,。當(dāng)然也可以把APOLLO FS1110,、KINO2EFS1026做成外置式模塊。還可以通過(guò)優(yōu)化原理圖的設(shè)計(jì)來(lái)減少高頻的影響,。因?yàn)樵韴D的好壞直接影響布局,、布線的難度,以及以后板子性能的好壞,。為了布局布線時(shí)能清晰地進(jìn)行分區(qū)設(shè)計(jì),,以減少各個(gè)功能模塊之間的影響,設(shè)計(jì)原理圖時(shí)應(yīng)把數(shù)字,、模擬和RF電路分開,。但是,,由于手持設(shè)備體積較小,屏蔽罩一般是必不可少的,。

  軟件設(shè)計(jì)

  T-DMB標(biāo)準(zhǔn)概述

  T-DMB采用H.264 視頻壓縮標(biāo)準(zhǔn),,音頻采用專利費(fèi)較低的MPEG-4 比特分片算術(shù)編碼BSAC(Bit-Sliced Arithmetic Coding)或者AAC+(歐洲T-DMB采用),圖像格式為CIF(Common Intermediate Format)(352×288),,把這些音頻和視頻碼流加上一些用戶數(shù)據(jù),,經(jīng)過(guò)MPEG-4 SL(Sync Layer)同步層打包和MPEG-2 TS(Transport Stream)復(fù)用后,交給調(diào)制器調(diào)制為適宜在信道上傳播的信號(hào)發(fā)射出去,。各種標(biāo)準(zhǔn)的接收端除信道解碼有較大差別,,信源的解碼很相近。T-DMB系統(tǒng)發(fā)送端編碼器結(jié)構(gòu)如圖2所示,。

  

 

  圖2 T-DMB發(fā)送端編碼框圖

  其中的MPEG-4 OD/BINFS發(fā)生器產(chǎn)生視聽對(duì)象,、場(chǎng)景時(shí)空關(guān)系信息和視聽對(duì)象的描述符信息。IOD發(fā)生器產(chǎn)生視聽對(duì)象的初始信息:場(chǎng)景描述和對(duì)象描述信息,。分段發(fā)生器主要收集SLP和IOD數(shù)據(jù)信息,,用于產(chǎn)生和節(jié)目解復(fù)用相關(guān)的參考信息PSI(Program Specific Information)。在T-DMB的數(shù)據(jù)流中,,可以通過(guò)解析PMT中的描述字段得到IOD_descriptor ,由IOD_descriptor可以得到場(chǎng)景,、對(duì)象描述信息。由對(duì)象描述可以得到ES_ descriptor等信息,。SL同步打包器主要負(fù)責(zé)視聽對(duì)象和輔助數(shù)據(jù)的同步,。SL包經(jīng)PES打包之后,再把PES包打?yàn)門S包發(fā)送給調(diào)制器,。

關(guān)鍵字:T-DMB 手機(jī)電視

 

  軟件的功能描述

 

 

  軟件的主要任務(wù)是TS流的解復(fù)用,、H.264和AAC+的解碼,采用微軟的Direct Show技術(shù)開發(fā),,可以降低開發(fā)難度和開發(fā)周期,。Direct Show技術(shù)是微軟提供的Windows平臺(tái)多媒體開發(fā)包,以COM為基礎(chǔ),。Direct Show使用Filter Graph的模型來(lái)管理整個(gè)數(shù)據(jù)流的處理過(guò)程,。參與處理的各個(gè)功能模塊叫Filter,按功能分3類:Source,、Transform,、Rendering Filter 。Source Filter主要負(fù)責(zé)獲取數(shù)據(jù)和前期的處理;Transform Filter負(fù)責(zé)數(shù)據(jù)格式的轉(zhuǎn)換和傳輸,,主要是負(fù)責(zé)解碼;Render Filter負(fù)責(zé)顯示,。各個(gè)Filter和應(yīng)用程序的交互靠事件通知機(jī)制來(lái)完成:Filter狀態(tài)改變時(shí)發(fā)出一個(gè)事件,由Filter Graph Manager處理或發(fā)給應(yīng)用程序。整個(gè)軟件可以分為5大功能模塊,,如圖3所示,。TS解復(fù)用器模塊屬于Source Filter,作用是從DMA緩沖中獲取數(shù)據(jù),,然后從TS流中解析PAT(Program Association Table)和PMT(Program Map Table),,得到相關(guān)節(jié)目的音頻和視頻數(shù)據(jù)TS包的PID(Packet Identifier)之后,就可以組合PES(Packetized Elementary Stream)包,,同時(shí)還可以得到和音視頻同步相關(guān)的參數(shù):PCR(Program Clock Reference),、CTS(Presentation Time Stamp)、DTS(Decoding Time Stamp),,最后把PES包去包頭后的ES(Elementary Stream)數(shù)據(jù)發(fā)給下游的解碼Filter,。H.264和AAC+解碼模塊屬于Transform Filter,主要功能是把從上游獲取的音頻和視頻數(shù)據(jù)進(jìn)行解碼,,把解碼得到的PU(Presentation Unit)重新排序(只有用到雙向預(yù)測(cè)時(shí)需排序),送給下游的生成器,。視頻生成器和音頻生成器模塊屬于Rendering Filter,,主要完成顯示功能。如果數(shù)據(jù)格式需要轉(zhuǎn)換,,可以在解碼器和生成器之間加一個(gè)具有轉(zhuǎn)化功能的Transform Filter,。

  

 

  音頻和視頻的同步

  軟件設(shè)計(jì)中的關(guān)鍵技術(shù)是解決音視頻同步的問(wèn)題。音視頻同步主要在 TS解復(fù)用器中解決,。要想做到音頻和視頻的同步,,需要用到這幾個(gè)參數(shù):PCR、DTS,、PTS,。可以在TS包的調(diào)整域中得到PCR,從PES包中得到PTS,。PES包中的數(shù)據(jù)是SL包,,可以從SL包頭中得到DTS。DTS是解碼時(shí)間,,PTS是顯示時(shí)間,。PCR是對(duì)編碼器90K時(shí)鐘的計(jì)數(shù),它的作用是在解碼器切換節(jié)目時(shí),,提供對(duì)解碼器PCR計(jì)數(shù)器的初始值,。PTS、DTS最大可能和PCR達(dá)到相同的時(shí)間起點(diǎn),,即對(duì)解碼器提供一個(gè)公共的時(shí)鐘參考,,以便準(zhǔn)確地進(jìn)行音視頻的同步。PCR捕捉到和DTS數(shù)值相同的時(shí)刻,就可以進(jìn)行音視頻解碼,。因?yàn)橐曨l編碼的時(shí)候用到了雙向預(yù)測(cè),,一個(gè)圖像單元被解出后并非馬上顯示,可能在存儲(chǔ)器中留一段時(shí)間,,作為其余圖像單元的解碼參考,,在被參考完畢后才顯示。由于聲音沒(méi)有用到雙向預(yù)測(cè),,它的解碼次序就是它的顯示次序,,故對(duì)它MPEG只提出PTS的概念,PTS就是音頻的DTS值,。即:

  DTS=PTS (1)

  如果得不到PTS,,那么按下式計(jì)算:

  PTS=PTS_pre +Xms (2)

  其中,PTS_pre表示前面一個(gè)AU的PTS,,X是ACC+一幀的時(shí)間間隔,,以ms為單位。

  一般視頻對(duì)象分為I-VOP,、B-VOP,、P-VOP三種編碼類型。假設(shè)在解碼器端的VO(Video Object)輸入次序?yàn)椋?/p>

  1 2 3 4 5 6 7 8 9 10………

  I B B P B B P B B P B B P B B I B B P........

  由于視頻對(duì)象編碼時(shí)用到雙向預(yù)測(cè),,解碼器的實(shí)際解碼次序?yàn)椋?/p>

  I P B B P B B P B B P B B I B B P B B ........

  顯示次序同解碼器的輸入次序,。假設(shè)知道I幀的PTS和DTS。那么得到關(guān)于P幀:

  PTS_P4=PTS_I +33.67ms * 3 (3)

  DTS_P4=DTS_I +33.67ms (4)

  B1幀:PTS_Bn=PTS_I +33.67ms * 2 (5)

  DTS_Bn=DTS_I +33.67ms (6)

  B2幀可以參考上面的兩個(gè)式子,。其中,,33.67ms為視頻幀時(shí)間間隔。

  軟件開發(fā)注意事項(xiàng)

  關(guān)于H.264的解碼效率問(wèn)題,。軟件解碼部分采用開源工程ffmpeg中的H.264解碼器,,它效率高,方便移植,,其中,,關(guān)鍵運(yùn)算,如IDCT,、運(yùn)動(dòng)補(bǔ)償?shù)冗€在幾種不同平臺(tái)上用匯編進(jìn)行實(shí)現(xiàn),。把H.264解碼器移植到ARM平臺(tái),對(duì)于IDCT和運(yùn)動(dòng)補(bǔ)償匯編代碼,,只需仿照其它平臺(tái)的代碼就可實(shí)現(xiàn),,其開發(fā)難度并不大。音頻解碼部分可以參考FAAC和FAAD開源工程,。

  結(jié)語(yǔ)

  本文討論的是能夠接收符合T-DMB規(guī)范(各種標(biāo)準(zhǔn)的接收終端的差別很小)手機(jī)電視信號(hào)的嵌入式手持設(shè)備的軟硬件設(shè)計(jì)概述,,這種設(shè)備使用戶可以不經(jīng)過(guò)移動(dòng)通信網(wǎng)絡(luò)直接獲得數(shù)字電視信號(hào),,能夠滿足人們隨時(shí)隨地對(duì)信息的需求。在實(shí)際的開發(fā)過(guò)程中的主要硬件問(wèn)題是電磁兼容,,軟件是音視頻的同步和H.264的解碼效率問(wèn)題,。軟件開發(fā)的難點(diǎn)集中在MPEG-2的解復(fù)用和Direct Show應(yīng)用框架的設(shè)計(jì)。

 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。