耿建平,何學(xué)良
(桂林電子科技大學(xué),廣西 桂林 541004)
基于SMP8653芯片的高清播放機(jī)設(shè)計(jì)方案,能夠?qū)崿F(xiàn)1080 p分辨力輸出,支持H.264,VC-1等視頻編碼標(biāo)準(zhǔn)和DTS,AC-3等音頻編碼標(biāo)準(zhǔn)及MKV等封裝格式,既可以播放本地儲(chǔ)存設(shè)備上的文件,也可以通過(guò)網(wǎng)絡(luò)實(shí)現(xiàn)視頻點(diǎn)播功能[1]。
通過(guò)對(duì)高清播放機(jī)的特點(diǎn)的詳細(xì)分析,并綜合目前國(guó)內(nèi)外高清播放機(jī)發(fā)展的實(shí)際狀況,該設(shè)計(jì)的高清播放機(jī)滿(mǎn)足以下功能。
為了盡可能滿(mǎn)足需求,在媒體接口方面,支持HDMI數(shù)字輸出接口、CVBS接口、YPbPr分量接口、左/右聲道模擬音頻輸出接口、SPDIF數(shù)字音頻輸出接口。在外設(shè)接口方面,支持紅外接口,方便用戶(hù)通過(guò)遙控器對(duì)播放機(jī)進(jìn)行文件播放、設(shè)置等相關(guān)操作;為實(shí)現(xiàn)本地播放功能,支持了SATA硬盤(pán)接口;為實(shí)現(xiàn)網(wǎng)絡(luò)播放功能,還支持了RJ45網(wǎng)絡(luò)接口;擴(kuò)展了4個(gè)USB接口,實(shí)現(xiàn)與移動(dòng)硬盤(pán)或U盤(pán)等儲(chǔ)存設(shè)備的通信,通過(guò)USB接口,可以外接無(wú)線(xiàn)網(wǎng)卡,實(shí)現(xiàn)WiFi無(wú)線(xiàn)上網(wǎng)。
高清播放機(jī)除了應(yīng)擁有能輸出高清視頻圖像的能力外,還應(yīng)擁有強(qiáng)大的高清音頻/視頻解碼能力。此播放機(jī)可以解碼 MPEG-1/2/4,VC-1,H.264,XVID 等視頻編碼格式和AC-3,AAC,DTS等音頻編碼格式及TS,MKV等封裝格式[2]。
根據(jù)高清播放機(jī)的功能需求,以SMP8653為核心的高清播放機(jī)硬件結(jié)構(gòu)如圖1所示,主要分為4部分:處理器、存儲(chǔ)模塊、通信模塊、音視頻模塊。存儲(chǔ)模塊包括外圍總線(xiàn)接口(PBI)連接的Flash,本地存儲(chǔ)器接口(LMI)連接的SDRAM、E2PROM、硬盤(pán)及SD卡;通信模塊包括USB接口及網(wǎng)絡(luò)接口;音視頻模塊包括模擬音視頻輸出接口、數(shù)字音頻輸出接口及HDMI接口[3]。

圖1 硬件結(jié)構(gòu)圖
系統(tǒng)工作原理圖如圖2所示,系統(tǒng)總線(xiàn)由多路傳輸分配器分配給各模塊使用,處理器從外圍輸入設(shè)備(硬盤(pán)、U盤(pán))中讀取音視頻數(shù)據(jù),根據(jù)不同的數(shù)據(jù)信息通過(guò)總線(xiàn)分配到音視頻處理單元中處理,調(diào)用高清視頻硬件解碼器,對(duì)解碼后的數(shù)據(jù)進(jìn)行塊狀降噪、伽馬校正等處理后輸出視頻信號(hào),音頻數(shù)據(jù)通過(guò)I2S接口送到DAC轉(zhuǎn)換器中轉(zhuǎn)換為模擬信號(hào)輸出。

圖2 系統(tǒng)工作原理圖
SMP8653是Sigma Designs于2009年推出的為IPTV與高清播放機(jī)而設(shè)計(jì)的高集成解碼芯片[4]。由主處理器模塊、視頻解碼子系統(tǒng),音視頻處理子系統(tǒng)、主接口模塊等專(zhuān)用處理模塊組成,各模塊間使用 G-Bus,M-Bus,V-Bus數(shù)據(jù)總線(xiàn)相連接。
2.2.1 主處理器模塊
SMP8653是一款32 bit RISC處理器,最高工作頻率為500 MHz,擁有32 kbyte的指令緩存和32 kbyte的數(shù)據(jù)緩存,3個(gè)中斷控制器,2個(gè)可編程定時(shí)計(jì)數(shù)器和3個(gè)通用異步接收/發(fā)送裝置和1個(gè)智能卡控制器。
2.2.2 視頻解碼、處理子系統(tǒng)
SMP8653包含有一個(gè)高性能的16 bit視頻解碼器,是一個(gè)基于處理器和硬件邏輯處理的解碼器,最高運(yùn)行頻率為333 MHz,提供主要的視頻解碼算法,可解碼播放H.264等常見(jiàn)的高清視頻編碼格式。提供有2D硬件圖形加速,擁有優(yōu)質(zhì)的顯示處理能力,可以高效地讀取與解碼圖形、視頻圖像信息,并根據(jù)接口類(lèi)型作相應(yīng)的信號(hào)輸出。擁有4個(gè)DAC模擬輸出接口和1個(gè)高清多媒體接口,可實(shí)現(xiàn)YPbPr,CVBS,HDMI輸出接口,所有接口可支持最高1080 p分辨力輸出。
2.2.3 音頻處理子系統(tǒng)
SMP8653集成有一個(gè)基于DSP的32 bit音頻處理子系統(tǒng),可為音頻信號(hào)的解碼提供處理算法及進(jìn)行解碼工作,最高工作頻率為333 MHz,這種基于硬件算法的結(jié)構(gòu)為系統(tǒng)提供了高效的執(zhí)行效率。此音頻處理系統(tǒng)可以解碼的音頻格式有 Dolby True-HD 7.1,MP3,AAC,DTS,AC-3等格式及常見(jiàn)的音頻格式,包含3個(gè)I2S輸出通道、1個(gè)S/PDIF輸出通道和1個(gè)立體聲I2S或S/PDIF音頻輸入通道。
2.3.1 存儲(chǔ)單元
SMP8653的存儲(chǔ)單元按其接口類(lèi)型分為5類(lèi):PBI總線(xiàn)接口、LMI總線(xiàn)接口、I2C總線(xiàn)接口、SATA接口和SDIO接口。
在PBI總線(xiàn)上外接的NAND Flash采用三星公司的K9F1G08U0B-PCB0,如圖 3 所示,其中 D[7:0]為數(shù)據(jù)傳輸總線(xiàn),/RE,/WE為數(shù)據(jù)讀寫(xiě)允許,CLE,ALE為命令及地址鎖存允許引腳,R/B為空閑、忙輸出標(biāo)志引腳。為系統(tǒng)擴(kuò)展了128 Mbyte的程序存儲(chǔ)空間,主要用于存儲(chǔ)引導(dǎo)程序和應(yīng)用程序代碼,其中應(yīng)用程序代碼在系統(tǒng)啟動(dòng)后通過(guò)引導(dǎo)程序由NAND Flash調(diào)入到SDRAM中運(yùn)行,如圖3所示。

圖3 Flash連接圖
在LMI總線(xiàn)接口上外接兩片Hynix公司的HY5PS-1G1631CFP,每片容量為64 M×16 bit,為系統(tǒng)提供了容量為64 M×32 bit的DDR2外部存儲(chǔ)器,作為用戶(hù)程序運(yùn)行過(guò)程中的程序代碼空間和系統(tǒng)各模塊運(yùn)行中的數(shù)據(jù)存儲(chǔ)器,其連接圖及信號(hào)流向如圖4所示。

圖4 SDRAM連接圖
2.3.2 音頻輸出接口
采用AKM半導(dǎo)體公司的AK4420ET數(shù)模轉(zhuǎn)換器對(duì)數(shù)字音頻信號(hào)進(jìn)行轉(zhuǎn)換,實(shí)現(xiàn)模擬立體聲左、右聲道輸出。AK2400ET包含一個(gè)24 bit D/A轉(zhuǎn)換器,采用AKM公司獨(dú)有的多位調(diào)制器結(jié)構(gòu),包含有開(kāi)關(guān)電容器和連續(xù)時(shí)間濾波器,在采樣頻率范圍為8~192 kHz,既能改善諧波失真又能保持輸出的線(xiàn)性度。通過(guò)此數(shù)模轉(zhuǎn)換器,可將SMP8653輸出的音頻數(shù)字信號(hào)高品質(zhì)地轉(zhuǎn)換為左/右聲道模擬信號(hào)輸出,其連接如圖5所示,其中GP1FA550TZ為光纖數(shù)字音頻輸出接口,BICK,SDTI為音頻數(shù)據(jù)串行時(shí)鐘數(shù)據(jù)輸入,MCLK為主時(shí)鐘輸入引腳,SMUTE為靜音控制。

圖5 音頻輸出連接圖
2.3.3 HDMI輸出
SMP8653集成HDMI v1.2音/視頻輸出接口,傳輸帶寬為165 MHz,此處外接1片Silicon公司生產(chǎn)的SLI10121A,支持HDMI v1.3輸出,可以高品質(zhì)地傳送未經(jīng)壓縮的高清視頻和多聲道音頻數(shù)據(jù),最高數(shù)據(jù)傳輸速度達(dá)5 Gbit/s,輸出圖像分辨力最高為1080 p,連接圖如圖6所示,D[23:0]為視頻數(shù)據(jù)總線(xiàn),MCLK為主時(shí)鐘輸入,BCLK和SDATA[3:0]為串行時(shí)鐘和串行數(shù)據(jù)輸入,VSYNC和HSYNC為垂直同步和水平同步信號(hào)線(xiàn)。

圖6 HDMI接口圖
2.3.4 USB控制模塊
SMP8653包含有1個(gè)獨(dú)立于系統(tǒng)總線(xiàn)運(yùn)行的USB2.0控制器,支持高速、全速及低速傳輸,此處外接了1片Alcor Micro公司生產(chǎn)的AU6254芯片,達(dá)到了USB 2.0集線(xiàn)器規(guī)范的高速集線(xiàn)器要求,支持了4個(gè)USB下行端口,且每個(gè)下行端口都內(nèi)置過(guò)電流檢測(cè)電壓控制開(kāi)關(guān),工作于高速模式并兼容了全速及低速傳輸,其連接圖如圖7所示,DM,DP是連接USB控制器的差分信號(hào)線(xiàn),下游的4個(gè)USB接口與處理器間的通信都必須通過(guò)此信號(hào)線(xiàn),TPS2052為雙電源分配轉(zhuǎn)換器,每個(gè)TPS2052可以為USB接口提供2路穩(wěn)定的5 V,500 mA的電源供USB設(shè)備使用。
2.3.5 網(wǎng)絡(luò)管理模塊
SMP8653包含有以太網(wǎng)MAC控制功能,只需外接物理層接口即可連接到互聯(lián)網(wǎng),與RTL8201CP相結(jié)合,提供了連接互聯(lián)網(wǎng)的接入通道。RTL8201CP是Realtek公司的一款高集成的10/100 Mbit/s以太網(wǎng)控制器,具有物理層編碼子層、物理層介質(zhì)連接設(shè)備、雙絞線(xiàn)物理媒介子層,其連接圖如圖8所示,TXD[3:0]和RXD[3:0]是發(fā)送與接收信號(hào)線(xiàn),TXC,RXC為發(fā)送與接收時(shí)鐘線(xiàn),TXEN與RXDV分別為發(fā)送允許和接收使能引腳。

圖7 USB模塊連接圖

圖8 網(wǎng)絡(luò)模塊連接圖
SMP8653支持Win CE和Linux兩大操作系統(tǒng),由于Linux具有源代碼開(kāi)放、軟件可裁剪等特點(diǎn),該設(shè)計(jì)采用Linux操作系統(tǒng)實(shí)現(xiàn),主要應(yīng)用軟件有圖形用戶(hù)界面、瀏覽器、播放器等模塊[5-6]。高清播放機(jī)的全部應(yīng)用程序軟件都運(yùn)行在實(shí)時(shí)操作系統(tǒng)上,系統(tǒng)架構(gòu)如圖9所示,從下到上主要分為4個(gè)層次,分別為硬件層、核心層、中間層及用戶(hù)界面層。

圖9 系統(tǒng)架構(gòu)圖
核心層主要包括嵌入式Linux操作系統(tǒng)、高清播放機(jī)硬件驅(qū)動(dòng),主要完成對(duì)硬件設(shè)備的控制,包括所有硬件的初始化、I/O接口操作、調(diào)用網(wǎng)絡(luò)協(xié)議等工作。
中間層包括系統(tǒng)抽象層、中間件及字庫(kù)等各種功能服務(wù)模塊,主要實(shí)現(xiàn)將用戶(hù)界面層傳遞下來(lái)的命令轉(zhuǎn)化為對(duì)底層驅(qū)動(dòng)的控制操作,建立軟件模塊之間相互操作的機(jī)制,屏蔽底層環(huán)境的復(fù)雜性。
用戶(hù)界面層主要完成與用戶(hù)的交互通信工作,根據(jù)業(yè)務(wù)的規(guī)劃和實(shí)現(xiàn)邏輯的不同,可以分為駐留應(yīng)用程序和下載應(yīng)用程序兩種。通過(guò)界面程序,能方便地對(duì)存儲(chǔ)器和其他接口進(jìn)行控制,啟動(dòng)圖形用戶(hù)界面后,用戶(hù)可以使用遙控器進(jìn)行相關(guān)操作。
開(kāi)發(fā)環(huán)境的建立主要用到由芯片廠(chǎng)商Sigma Designs公司提供的軟件工具包,其建立過(guò)程如下[7]:
1)交叉編譯工具鏈的生成。在宿主機(jī)上使用“make”命令對(duì)toolchain開(kāi)發(fā)包進(jìn)行編譯,編譯生成的內(nèi)容包括編譯工具GCC4.0.4,二進(jìn)制工具合集binutils2.17,調(diào)試工具gdb6.5,C庫(kù)及內(nèi)核頭文件,并創(chuàng)建環(huán)境文件“toolchain-path.env”。
2)Bootloader的編譯。對(duì)boot_loader工具包進(jìn)行編譯,在“bin”目錄下生成二進(jìn)制文件”zboot2.bin”,在這個(gè)文件中包括了Xenv及zboot2鏡像,在“tools/genxenv/configs”目錄下將配置信息文件更名為“xenv.config”。執(zhí)行“make yamon”命令,在“bin”目錄下生成二進(jìn)制文件“zbimage-yamon”。
3)建立文件系統(tǒng)。編譯rootfs工具包,選擇busybox 1.2.2.1,在內(nèi)核源代碼包中運(yùn)行“source rootfspath.env”,從toolchain工具鏈中向根文件系統(tǒng)加入“runtime”共享庫(kù)。此時(shí),根文件系統(tǒng)基本建立。
4)編譯內(nèi)核。編譯kernel_source工具包,對(duì)linux-2.6.15內(nèi)核文件進(jìn)行預(yù)設(shè)置,使用“make modules_install”命令,在根文件目錄下生成編譯的內(nèi)核模塊,再次在“rootfs”根目錄下執(zhí)行“make”命令,此時(shí),內(nèi)核模塊已集成到根文件系統(tǒng)中。編譯內(nèi)核鏡像文件,在“./arch/mips/boot/directory”目錄下生成“zbimage-linux-xrpc”的 ROM文件系統(tǒng)鏡像。
開(kāi)發(fā)環(huán)境建立后,在YAMON命令行下使用load命令可以將zboot、yamon或內(nèi)核分別下載到目標(biāo)板中,使用pflash命令將目標(biāo)代碼燒寫(xiě)到目標(biāo)板中。
該高清播放機(jī)的應(yīng)用軟件設(shè)計(jì)主要分為主控模塊,播放器模塊,瀏覽器,系統(tǒng)管理模塊,增值業(yè)務(wù)模塊,如圖10所示。主控模塊負(fù)責(zé)播放器、瀏覽器,增值業(yè)務(wù)、系統(tǒng)管理模塊的消息處理與分發(fā);播放器模塊主要負(fù)責(zé)音視頻文件的播放,運(yùn)行和退出時(shí)都必須將其消息發(fā)送給主控模塊;系統(tǒng)管理模塊屬于瀏覽器的一個(gè)應(yīng)用,通過(guò)系統(tǒng)管理模塊,可以查詢(xún)和設(shè)置用戶(hù)信息、網(wǎng)絡(luò)狀態(tài);增值業(yè)務(wù)模塊主要是實(shí)現(xiàn)下載或其他應(yīng)用軟件功能,核心部分是JAVA虛擬機(jī)。這里主要對(duì)主控模塊和播放器模塊進(jìn)行展開(kāi)。

圖10 系統(tǒng)軟件功能模塊圖
主控模塊主要負(fù)責(zé)對(duì)播放器、瀏覽器、系統(tǒng)管理及增值業(yè)務(wù)進(jìn)行消息處理與分發(fā),主控模塊與各模塊的關(guān)系如圖11所示。主控模塊需要向播放器、瀏覽器、增值業(yè)務(wù)模塊報(bào)告系統(tǒng)狀態(tài)和當(dāng)前網(wǎng)絡(luò)狀態(tài)消息,并接收來(lái)自線(xiàn)程監(jiān)控等模塊的消息,調(diào)用線(xiàn)程監(jiān)控子模塊和按鍵事件子模塊,完成對(duì)線(xiàn)程的監(jiān)控和對(duì)按鍵事件的分發(fā)處理。在按鍵事件的處理過(guò)程中,主控需要訪(fǎng)問(wèn)系統(tǒng)全局變量,用于確定事件的接管對(duì)象。

圖11 系統(tǒng)主控模塊與各模塊關(guān)系圖
播放器模塊分為播放管理模塊和播放通信模塊兩個(gè)主模塊。播放管理模塊包含播放器的消息管理、信息管理和狀態(tài)管理,實(shí)現(xiàn)對(duì)播放系統(tǒng)消息的集中管理和播放控制功能及系統(tǒng)狀態(tài)、緩沖狀態(tài)和視頻輸出狀態(tài)的維護(hù)等功能;播放通信模塊實(shí)現(xiàn)GUI消息通信和窗口管理,由消息接收單元接收GUI進(jìn)程的消息,并完成消息分發(fā),決定消息由接收窗口處理還是提交給消息主控單元。當(dāng)播放器接收到播放命令后,執(zhí)行的操作流程如圖12所示,主要包括系統(tǒng)初始化、判斷是否為音視頻文件、文件解析、設(shè)置硬件解碼器和音視頻解碼五個(gè)步驟,SMP8653集成了完善的音視頻硬件解碼器,只需將音視頻數(shù)據(jù)按要求送入解碼緩沖區(qū),解碼工作即可由硬件完成。

圖12 播放器播放流程圖
系統(tǒng)測(cè)試分為上電前檢查、電源測(cè)試、系統(tǒng)核心部分測(cè)試、外圍器件測(cè)試4個(gè)部分[6]。上電前檢查是檢查芯片和電解電容等有極性器件安裝方向是否正確,用萬(wàn)用表測(cè)量電源與地、電源與電源之間是否有發(fā)生短路等故障。電源測(cè)試主要是用示波器測(cè)量各組電源的電壓及紋波,確保電壓輸出正常,測(cè)量各芯片的電源輸入,保證各芯片供電正常。系統(tǒng)核心部分測(cè)試主要是對(duì)處理器,F(xiàn)lash,SDRAM等系統(tǒng)核心器的測(cè)試,保證操作系統(tǒng)能正常加載與運(yùn)行,利用交叉網(wǎng)線(xiàn)將高清播放機(jī)與PC相連,再通過(guò)交叉編譯工具將程序編譯成Linux的目標(biāo)代碼,利用網(wǎng)絡(luò)下載到播放機(jī)中。外圍器件測(cè)試主要是對(duì)USB,SD卡等進(jìn)行測(cè)試,主要測(cè)試各器件的時(shí)鐘、讀寫(xiě)控制等關(guān)鍵信號(hào)。
通過(guò)用電視機(jī)做終端顯示測(cè)試,此高清播放機(jī)能實(shí)現(xiàn)網(wǎng)絡(luò)及USB接口連接,支持IEEE 802.3.x協(xié)議,可支持網(wǎng)絡(luò)遠(yuǎn)程軟件升級(jí),可以清晰流暢地播放H.264,VC-1,MKV,MP3等格式媒體文件,最大輸出分辨力可以達(dá)到1080 p,測(cè)試表明此高清播放機(jī)工作穩(wěn)定,輸出效果良好,設(shè)計(jì)達(dá)到高清播放機(jī)系統(tǒng)要求。
文章主要介紹了基于Sigma Designs的解碼芯片SMP8653的高清播放機(jī)設(shè)計(jì),具有低功耗、可靠性高,功能強(qiáng)等特點(diǎn),可實(shí)現(xiàn)高質(zhì)量的音視頻輸出,支持以太網(wǎng)協(xié)議IEEE 802.3x,可接收音視頻流媒體數(shù)據(jù),實(shí)現(xiàn)視頻點(diǎn)播、多媒體文件存儲(chǔ)播放等功能。隨著高清播放技術(shù)的成熟,高清播放機(jī)應(yīng)該能得到廣泛的應(yīng)用。
[1]沈宜.IPTV 機(jī)頂盒的設(shè)計(jì)與實(shí)現(xiàn)[J]. 通信技術(shù),2009,42(7):145-146.
[2]殷月偉,鄭烇.基于SMP8654的MKV播放器設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù),2010(6):46-48.
[3]張新安.基于STi7105的AVS IPTV機(jī)頂盒的設(shè)計(jì)與實(shí)現(xiàn)[J].電視技術(shù),2009,33(7):34-37.
[4]Sigma Designs Company.SMP8652/3 datasheet[EB/OL].[2011-08-01].http://www.sigmadesigns.com.
[5]趙維亮.IPTV嵌入式流媒體播放器的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2010.
[6]DENG Feng,HU Jianliang,QI Xiangdong,et al.An embedded system design for high definition media player[C]//Proc.ICCSNA 2010.Hong Kong:IEEE Press ,2010:1-4.
[7]張勇.IPTV機(jī)頂盒的設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2008.