耿建平,何學良
(桂林電子科技大學,廣西 桂林 541004)
基于SMP8653芯片的高清播放機設計方案,能夠實現1080 p分辨力輸出,支持H.264,VC-1等視頻編碼標準和DTS,AC-3等音頻編碼標準及MKV等封裝格式,既可以播放本地儲存設備上的文件,也可以通過網絡實現視頻點播功能[1]。
通過對高清播放機的特點的詳細分析,并綜合目前國內外高清播放機發(fā)展的實際狀況,該設計的高清播放機滿足以下功能。
為了盡可能滿足需求,在媒體接口方面,支持HDMI數字輸出接口、CVBS接口、YPbPr分量接口、左/右聲道模擬音頻輸出接口、SPDIF數字音頻輸出接口。在外設接口方面,支持紅外接口,方便用戶通過遙控器對播放機進行文件播放、設置等相關操作;為實現本地播放功能,支持了SATA硬盤接口;為實現網絡播放功能,還支持了RJ45網絡接口;擴展了4個USB接口,實現與移動硬盤或U盤等儲存設備的通信,通過USB接口,可以外接無線網卡,實現WiFi無線上網。
高清播放機除了應擁有能輸出高清視頻圖像的能力外,還應擁有強大的高清音頻/視頻解碼能力。此播放機可以解碼 MPEG-1/2/4,VC-1,H.264,XVID 等視頻編碼格式和AC-3,AAC,DTS等音頻編碼格式及TS,MKV等封裝格式[2]。
根據高清播放機的功能需求,以SMP8653為核心的高清播放機硬件結構如圖1所示,主要分為4部分:處理器、存儲模塊、通信模塊、音視頻模塊。存儲模塊包括外圍總線接口(PBI)連接的Flash,本地存儲器接口(LMI)連接的SDRAM、E2PROM、硬盤及SD卡;通信模塊包括USB接口及網絡接口;音視頻模塊包括模擬音視頻輸出接口、數字音頻輸出接口及HDMI接口[3]。
圖1 硬件結構圖
系統(tǒng)工作原理圖如圖2所示,系統(tǒng)總線由多路傳輸分配器分配給各模塊使用,處理器從外圍輸入設備(硬盤、U盤)中讀取音視頻數據,根據不同的數據信息通過總線分配到音視頻處理單元中處理,調用高清視頻硬件解碼器,對解碼后的數據進行塊狀降噪、伽馬校正等處理后輸出視頻信號,音頻數據通過I2S接口送到DAC轉換器中轉換為模擬信號輸出。
圖2 系統(tǒng)工作原理圖
SMP8653是Sigma Designs于2009年推出的為IPTV與高清播放機而設計的高集成解碼芯片[4]。由主處理器模塊、視頻解碼子系統(tǒng),音視頻處理子系統(tǒng)、主接口模塊等專用處理模塊組成,各模塊間使用 G-Bus,M-Bus,V-Bus數據總線相連接。
2.2.1 主處理器模塊
SMP8653是一款32 bit RISC處理器,最高工作頻率為500 MHz,擁有32 kbyte的指令緩存和32 kbyte的數據緩存,3個中斷控制器,2個可編程定時計數器和3個通用異步接收/發(fā)送裝置和1個智能卡控制器。
2.2.2 視頻解碼、處理子系統(tǒng)
SMP8653包含有一個高性能的16 bit視頻解碼器,是一個基于處理器和硬件邏輯處理的解碼器,最高運行頻率為333 MHz,提供主要的視頻解碼算法,可解碼播放H.264等常見的高清視頻編碼格式。提供有2D硬件圖形加速,擁有優(yōu)質的顯示處理能力,可以高效地讀取與解碼圖形、視頻圖像信息,并根據接口類型作相應的信號輸出。擁有4個DAC模擬輸出接口和1個高清多媒體接口,可實現YPbPr,CVBS,HDMI輸出接口,所有接口可支持最高1080 p分辨力輸出。
2.2.3 音頻處理子系統(tǒng)
SMP8653集成有一個基于DSP的32 bit音頻處理子系統(tǒng),可為音頻信號的解碼提供處理算法及進行解碼工作,最高工作頻率為333 MHz,這種基于硬件算法的結構為系統(tǒng)提供了高效的執(zhí)行效率。此音頻處理系統(tǒng)可以解碼的音頻格式有 Dolby True-HD 7.1,MP3,AAC,DTS,AC-3等格式及常見的音頻格式,包含3個I2S輸出通道、1個S/PDIF輸出通道和1個立體聲I2S或S/PDIF音頻輸入通道。
2.3.1 存儲單元
SMP8653的存儲單元按其接口類型分為5類:PBI總線接口、LMI總線接口、I2C總線接口、SATA接口和SDIO接口。
在PBI總線上外接的NAND Flash采用三星公司的K9F1G08U0B-PCB0,如圖 3 所示,其中 D[7:0]為數據傳輸總線,/RE,/WE為數據讀寫允許,CLE,ALE為命令及地址鎖存允許引腳,R/B為空閑、忙輸出標志引腳。為系統(tǒng)擴展了128 Mbyte的程序存儲空間,主要用于存儲引導程序和應用程序代碼,其中應用程序代碼在系統(tǒng)啟動后通過引導程序由NAND Flash調入到SDRAM中運行,如圖3所示。
圖3 Flash連接圖
在LMI總線接口上外接兩片Hynix公司的HY5PS-1G1631CFP,每片容量為64 M×16 bit,為系統(tǒng)提供了容量為64 M×32 bit的DDR2外部存儲器,作為用戶程序運行過程中的程序代碼空間和系統(tǒng)各模塊運行中的數據存儲器,其連接圖及信號流向如圖4所示。
圖4 SDRAM連接圖
2.3.2 音頻輸出接口
采用AKM半導體公司的AK4420ET數模轉換器對數字音頻信號進行轉換,實現模擬立體聲左、右聲道輸出。AK2400ET包含一個24 bit D/A轉換器,采用AKM公司獨有的多位調制器結構,包含有開關電容器和連續(xù)時間濾波器,在采樣頻率范圍為8~192 kHz,既能改善諧波失真又能保持輸出的線性度。通過此數模轉換器,可將SMP8653輸出的音頻數字信號高品質地轉換為左/右聲道模擬信號輸出,其連接如圖5所示,其中GP1FA550TZ為光纖數字音頻輸出接口,BICK,SDTI為音頻數據串行時鐘數據輸入,MCLK為主時鐘輸入引腳,SMUTE為靜音控制。
圖5 音頻輸出連接圖
2.3.3 HDMI輸出
SMP8653集成HDMI v1.2音/視頻輸出接口,傳輸帶寬為165 MHz,此處外接1片Silicon公司生產的SLI10121A,支持HDMI v1.3輸出,可以高品質地傳送未經壓縮的高清視頻和多聲道音頻數據,最高數據傳輸速度達5 Gbit/s,輸出圖像分辨力最高為1080 p,連接圖如圖6所示,D[23:0]為視頻數據總線,MCLK為主時鐘輸入,BCLK和SDATA[3:0]為串行時鐘和串行數據輸入,VSYNC和HSYNC為垂直同步和水平同步信號線。
圖6 HDMI接口圖
2.3.4 USB控制模塊
SMP8653包含有1個獨立于系統(tǒng)總線運行的USB2.0控制器,支持高速、全速及低速傳輸,此處外接了1片Alcor Micro公司生產的AU6254芯片,達到了USB 2.0集線器規(guī)范的高速集線器要求,支持了4個USB下行端口,且每個下行端口都內置過電流檢測電壓控制開關,工作于高速模式并兼容了全速及低速傳輸,其連接圖如圖7所示,DM,DP是連接USB控制器的差分信號線,下游的4個USB接口與處理器間的通信都必須通過此信號線,TPS2052為雙電源分配轉換器,每個TPS2052可以為USB接口提供2路穩(wěn)定的5 V,500 mA的電源供USB設備使用。
2.3.5 網絡管理模塊
SMP8653包含有以太網MAC控制功能,只需外接物理層接口即可連接到互聯網,與RTL8201CP相結合,提供了連接互聯網的接入通道。RTL8201CP是Realtek公司的一款高集成的10/100 Mbit/s以太網控制器,具有物理層編碼子層、物理層介質連接設備、雙絞線物理媒介子層,其連接圖如圖8所示,TXD[3:0]和RXD[3:0]是發(fā)送與接收信號線,TXC,RXC為發(fā)送與接收時鐘線,TXEN與RXDV分別為發(fā)送允許和接收使能引腳。
圖7 USB模塊連接圖
圖8 網絡模塊連接圖
SMP8653支持Win CE和Linux兩大操作系統(tǒng),由于Linux具有源代碼開放、軟件可裁剪等特點,該設計采用Linux操作系統(tǒng)實現,主要應用軟件有圖形用戶界面、瀏覽器、播放器等模塊[5-6]。高清播放機的全部應用程序軟件都運行在實時操作系統(tǒng)上,系統(tǒng)架構如圖9所示,從下到上主要分為4個層次,分別為硬件層、核心層、中間層及用戶界面層。
圖9 系統(tǒng)架構圖
核心層主要包括嵌入式Linux操作系統(tǒng)、高清播放機硬件驅動,主要完成對硬件設備的控制,包括所有硬件的初始化、I/O接口操作、調用網絡協(xié)議等工作。
中間層包括系統(tǒng)抽象層、中間件及字庫等各種功能服務模塊,主要實現將用戶界面層傳遞下來的命令轉化為對底層驅動的控制操作,建立軟件模塊之間相互操作的機制,屏蔽底層環(huán)境的復雜性。
用戶界面層主要完成與用戶的交互通信工作,根據業(yè)務的規(guī)劃和實現邏輯的不同,可以分為駐留應用程序和下載應用程序兩種。通過界面程序,能方便地對存儲器和其他接口進行控制,啟動圖形用戶界面后,用戶可以使用遙控器進行相關操作。
開發(fā)環(huán)境的建立主要用到由芯片廠商Sigma Designs公司提供的軟件工具包,其建立過程如下[7]:
1)交叉編譯工具鏈的生成。在宿主機上使用“make”命令對toolchain開發(fā)包進行編譯,編譯生成的內容包括編譯工具GCC4.0.4,二進制工具合集binutils2.17,調試工具gdb6.5,C庫及內核頭文件,并創(chuàng)建環(huán)境文件“toolchain-path.env”。
2)Bootloader的編譯。對boot_loader工具包進行編譯,在“bin”目錄下生成二進制文件”zboot2.bin”,在這個文件中包括了Xenv及zboot2鏡像,在“tools/genxenv/configs”目錄下將配置信息文件更名為“xenv.config”。執(zhí)行“make yamon”命令,在“bin”目錄下生成二進制文件“zbimage-yamon”。
3)建立文件系統(tǒng)。編譯rootfs工具包,選擇busybox 1.2.2.1,在內核源代碼包中運行“source rootfspath.env”,從toolchain工具鏈中向根文件系統(tǒng)加入“runtime”共享庫。此時,根文件系統(tǒng)基本建立。
4)編譯內核。編譯kernel_source工具包,對linux-2.6.15內核文件進行預設置,使用“make modules_install”命令,在根文件目錄下生成編譯的內核模塊,再次在“rootfs”根目錄下執(zhí)行“make”命令,此時,內核模塊已集成到根文件系統(tǒng)中。編譯內核鏡像文件,在“./arch/mips/boot/directory”目錄下生成“zbimage-linux-xrpc”的 ROM文件系統(tǒng)鏡像。
開發(fā)環(huán)境建立后,在YAMON命令行下使用load命令可以將zboot、yamon或內核分別下載到目標板中,使用pflash命令將目標代碼燒寫到目標板中。
該高清播放機的應用軟件設計主要分為主控模塊,播放器模塊,瀏覽器,系統(tǒng)管理模塊,增值業(yè)務模塊,如圖10所示。主控模塊負責播放器、瀏覽器,增值業(yè)務、系統(tǒng)管理模塊的消息處理與分發(fā);播放器模塊主要負責音視頻文件的播放,運行和退出時都必須將其消息發(fā)送給主控模塊;系統(tǒng)管理模塊屬于瀏覽器的一個應用,通過系統(tǒng)管理模塊,可以查詢和設置用戶信息、網絡狀態(tài);增值業(yè)務模塊主要是實現下載或其他應用軟件功能,核心部分是JAVA虛擬機。這里主要對主控模塊和播放器模塊進行展開。
圖10 系統(tǒng)軟件功能模塊圖
主控模塊主要負責對播放器、瀏覽器、系統(tǒng)管理及增值業(yè)務進行消息處理與分發(fā),主控模塊與各模塊的關系如圖11所示。主控模塊需要向播放器、瀏覽器、增值業(yè)務模塊報告系統(tǒng)狀態(tài)和當前網絡狀態(tài)消息,并接收來自線程監(jiān)控等模塊的消息,調用線程監(jiān)控子模塊和按鍵事件子模塊,完成對線程的監(jiān)控和對按鍵事件的分發(fā)處理。在按鍵事件的處理過程中,主控需要訪問系統(tǒng)全局變量,用于確定事件的接管對象。
圖11 系統(tǒng)主控模塊與各模塊關系圖
播放器模塊分為播放管理模塊和播放通信模塊兩個主模塊。播放管理模塊包含播放器的消息管理、信息管理和狀態(tài)管理,實現對播放系統(tǒng)消息的集中管理和播放控制功能及系統(tǒng)狀態(tài)、緩沖狀態(tài)和視頻輸出狀態(tài)的維護等功能;播放通信模塊實現GUI消息通信和窗口管理,由消息接收單元接收GUI進程的消息,并完成消息分發(fā),決定消息由接收窗口處理還是提交給消息主控單元。當播放器接收到播放命令后,執(zhí)行的操作流程如圖12所示,主要包括系統(tǒng)初始化、判斷是否為音視頻文件、文件解析、設置硬件解碼器和音視頻解碼五個步驟,SMP8653集成了完善的音視頻硬件解碼器,只需將音視頻數據按要求送入解碼緩沖區(qū),解碼工作即可由硬件完成。
圖12 播放器播放流程圖
系統(tǒng)測試分為上電前檢查、電源測試、系統(tǒng)核心部分測試、外圍器件測試4個部分[6]。上電前檢查是檢查芯片和電解電容等有極性器件安裝方向是否正確,用萬用表測量電源與地、電源與電源之間是否有發(fā)生短路等故障。電源測試主要是用示波器測量各組電源的電壓及紋波,確保電壓輸出正常,測量各芯片的電源輸入,保證各芯片供電正常。系統(tǒng)核心部分測試主要是對處理器,Flash,SDRAM等系統(tǒng)核心器的測試,保證操作系統(tǒng)能正常加載與運行,利用交叉網線將高清播放機與PC相連,再通過交叉編譯工具將程序編譯成Linux的目標代碼,利用網絡下載到播放機中。外圍器件測試主要是對USB,SD卡等進行測試,主要測試各器件的時鐘、讀寫控制等關鍵信號。
通過用電視機做終端顯示測試,此高清播放機能實現網絡及USB接口連接,支持IEEE 802.3.x協(xié)議,可支持網絡遠程軟件升級,可以清晰流暢地播放H.264,VC-1,MKV,MP3等格式媒體文件,最大輸出分辨力可以達到1080 p,測試表明此高清播放機工作穩(wěn)定,輸出效果良好,設計達到高清播放機系統(tǒng)要求。
文章主要介紹了基于Sigma Designs的解碼芯片SMP8653的高清播放機設計,具有低功耗、可靠性高,功能強等特點,可實現高質量的音視頻輸出,支持以太網協(xié)議IEEE 802.3x,可接收音視頻流媒體數據,實現視頻點播、多媒體文件存儲播放等功能。隨著高清播放技術的成熟,高清播放機應該能得到廣泛的應用。
[1]沈宜.IPTV 機頂盒的設計與實現[J]. 通信技術,2009,42(7):145-146.
[2]殷月偉,鄭烇.基于SMP8654的MKV播放器設計與實現[J].電子技術,2010(6):46-48.
[3]張新安.基于STi7105的AVS IPTV機頂盒的設計與實現[J].電視技術,2009,33(7):34-37.
[4]Sigma Designs Company.SMP8652/3 datasheet[EB/OL].[2011-08-01].http://www.sigmadesigns.com.
[5]趙維亮.IPTV嵌入式流媒體播放器的設計與實現[D].北京:北京郵電大學,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機頂盒的設計與實現[D].成都:電子科技大學,2008.