傳統(tǒng)的電視業(yè)務一致采用單向廣播模式運營,隨著科技的進步,人們越來越希望在電視中實現(xiàn)雙向交互功能,通過交互通信,運營商能夠及時地得知用戶的需求,而終端用戶也可以改變以往單一被動的信息接收模式,更多地參與到業(yè)務運營中。近期iptv(網(wǎng)絡電視)的出現(xiàn),使這愿望成為可能,它作為電視和網(wǎng)絡通信技術的融合,以ip為傳送通道,能夠向用戶提供包括電視在內(nèi)的更為廣泛的多種交互式視音頻服務。
在iptv的系統(tǒng)中,用戶終端機頂盒是一個非常關鍵的設備,它不但是收看電視節(jié)目的終端,而且還是一個信息匯聚、交互的平臺,被認為是構成未來家庭多媒體中心的重要組成部分,本文介紹一種基于em8620芯片的iptv機頂盒設計方案,該方案能夠通過網(wǎng)絡實現(xiàn)交互電視業(yè)務,支持mpeg2、mpeg4、vc-1(wmv9)、real等多種視頻壓縮標準解碼,具有電視節(jié)目錄制、數(shù)字版權保護、dvd播放等多種功能。
1 硬件設計
1.1 設計要求分析
通過為iptv業(yè)務特性的詳細分析,總結出fpga機頂盒硬件設計方面的四項要求:
(1)具有網(wǎng)絡接入功能,能夠利用lan、dsl等方式接入到互聯(lián)網(wǎng)、支持tcp/ip、ftp、rtp、rtsp、rtcp、igmp多種網(wǎng)絡協(xié)議。
(2)支持多種視頻壓縮格式,目前mpeg2、mpeg4、vc-1等標準在iptv中都有使用,有些運營商甚至是在交叉使用,這與傳統(tǒng)數(shù)字電視采用單一的mpeg2標準情況大相徑庭。因此,設計的機頂盒能支持的壓縮標準越多,業(yè)務開展就越靈活,產(chǎn)品的使用范圍就越廣泛。
(3)具有完善的增殖業(yè)務設計,其中包括視頻點播、電子表決、互動游戲、網(wǎng)絡瀏覽、網(wǎng)絡游戲等,增殖業(yè)務是網(wǎng)絡電視獲取利潤的關鍵,所以設計機頂盒時要充分考慮到各種增殖業(yè)務的擴展應用。
(4)選擇低成本的專用硬件平臺。機頂盒不同于通用計算機,他是一個嵌入式系統(tǒng),低成本、低功耗和穩(wěn)定性是硬件設計要遵循的原則,一些早期的iptv機頂盒設計方案采用了基于intel的高性能通用處理器架構,雖然性能很好,但是在功耗和成本方面最終很難被市場和運營商認可。
1.2 em8620硬件平臺
設計方案中采用一個低成本但功能相對豐富的集成芯片--em8620作為硬件平臺,它是sigma designs公司專門針對數(shù)字視頻通信設計的最新一款多格式解碼芯片、內(nèi)嵌166mhz的32位rsic處理器,具有豐富的音視頻接口,此外還包括pci總線控制器和ide總線接口,依托二者能夠實現(xiàn)網(wǎng)絡接入、usb外設和ide外設(如硬盤、光驅)訪問等功能。圖1是該芯片的邏輯單元框圖,其主要功能和特點包括:
(1)能夠同時支持兩路標準清晰度電視節(jié)目解碼,實現(xiàn)畫中畫。;
(2)視頻支持mpeg2、mpeg4標清和高清解碼,支持vc-1和real的標清解碼;
(3)支持dvd格式信號解碼;
(4)音頻支持dolby ac3,mpeg1和mpeg2的層1、2、3,mpeg2的bc多聲道層1、2、3,mpeg2 aac,mpeg4 aac,windows wma;
(5)具有自適應去隔行功能;
(6)具有去閃爍濾波的osd功能,色彩支持32比特/像素;
(7)具有視頻、osd、子圖像和光標等4個圖像層;
(8)具有pci2.1的總線控制接口;
(9)采用2d圖形加速;
(10)具有ide接口,能夠連接光驅和硬盤設備,實現(xiàn)電視錄像和程序存儲;
(11)具有ntsc/pal復合視頻及s-video分量輸出,帶有可選的macrovision防錄制保護;
(12)具有ypbpr/rgb分量視頻輸出,帶有可選的macrovision防錄制保護;
(13)具有3路i2s串行數(shù)字pcm音頻輸出,實現(xiàn)5.1聲道環(huán)繞聲;
(14)具有spdif(iec60958)數(shù)字音頻輸出。
1.3 設計原理
遵循iptv機頂盒的設計要求,以em8620為核心的硬件設計原理框圖如圖2所示,它包括多個不同的數(shù)據(jù)處理模塊。
1.3.1 pci總線
pci總線上連接有一個10/100m的以太網(wǎng)控制器(ctl8100)和一個usb2.0主控制器(vt6212)用于實現(xiàn)網(wǎng)絡接入及usb設備接入功能。
1.3.2 10/100m以太網(wǎng)控制器
10/100m以太網(wǎng)控制器采用realtek公司的rtl8100,它是一個高度集成的低成本單片以太網(wǎng)控制器,該控制器具有acpi電源功能和網(wǎng)絡喚醒功能,通過使用魔術包(magic packet)和喚醒幀的方式可以很方便地實現(xiàn)網(wǎng)絡管理和維護,因此使用它可以實現(xiàn)非常理想的嵌入式網(wǎng)絡解決方案,同時它還具有pci/mini-pci接口和10/100mhz網(wǎng)絡帶寬自適應功能,并兼容pci2.2和pc99/pc2001、pci存儲空間或i/o空間映射數(shù)據(jù)傳輸?shù)绕渌δ堋?
1.3.3 usb2.0主控制器
usb2.0主控制器采用威盛公司的vt6212,它是一個四端口usb2.0控制芯片,能支持高達480mbps的傳輸速度,并采用動態(tài)中止時序控制(dynamic stop clock control)降低功耗。vt6212利用主機端控制接口(enhanced host controller interface)方式提供高速數(shù)據(jù)傳輸,利用通過控制芯片接口(universal host controller interface)方式向下兼容低速的usb1.1數(shù)據(jù)傳輸,此外tv6212也支持32-bit卡總線模式、可搭配pcmcia接口作為usb 2.0集線器,增加外設的接入數(shù)量。
1.3.4 視頻輸出
em8620能夠提供模擬和數(shù)字兩種視頻信號輸出,模擬視頻采用復合(cvbs)、分量(s-video和yprpb)方式直接輸出,輸出中都可采用macrovision技術進行防盜版錄制保護。數(shù)字視頻(24bit rgb)連接到dvi信號合成芯片(sil164),編碼為dvd格式后輸出。
1.3.5 dvi信號合成
dvi是目前使用非常廣泛的數(shù)字視頻接口,既可以適應于高/標清數(shù)字電視顯示、也可以用于普通的電腦監(jiān)視器顯示。此處選擇silicon image公司的sil164實現(xiàn)dvi信號合成和發(fā)送。sil164采用paneilink數(shù)字技術設計,支持從vga到uxga(640×480-1600×1200)的清晰度顯示范圍,數(shù)據(jù)速率范圍為25-165mbps,具有12bit(半像素時鐘沿)和24bit(真彩色支持)兩種設計模式,同時支持i2c總線控制,具有熱插拔特性,完全兼容dvi1.0規(guī)范。
1.3.6 音頻輸出
em8620可提供三路i2s和一路spdif等兩種串行數(shù)字音頻信號,其中每路i2s信號承載兩個聲道的pcm數(shù)據(jù),三路i2s信號連接到音頻dac后,轉換為6路模擬音頻,用于實現(xiàn)dolby ac3的5.1聲道環(huán)繞聲;spdif串行數(shù)字信號直接輸出,可承載兩路pcm音頻或壓縮的5.1 聲道dolby ac3音頻。
1.3.7 外設總線
外設總線上連接有ide硬盤、dvd光驅和flash存儲器,ide硬盤用于實現(xiàn)個人錄像機功能,用戶可以將播放的電路節(jié)目方便地存儲到ide硬盤,同時也可以用于存儲通過增殖業(yè)務從網(wǎng)絡上下載的各類其他數(shù)據(jù);dvd光驅可使機頂盒實現(xiàn)dvd播放功能,flash存儲器的作用非常重要,用于存儲整個機頂盒的操作系統(tǒng)軟件。雖然也可以將操作系統(tǒng)安裝到ide硬盤,但是ide硬盤的穩(wěn)定性遠不如flash存儲器,并且還會受到其他應用程序,特別是病毒的攻擊,非常容易造成系統(tǒng)崩潰。
1.3.8 fp/vfd和紅外信號接收
fp/vfd用于機頂盒的前面板控制和狀態(tài)顯示,紅外信號接收用于接收遙控器發(fā)送的控制信號。
1.3.9 uart
雖然iptv具有雙向業(yè)務通道,能夠采用認證的方式實現(xiàn)節(jié)目的版權保護,但是考慮到目前數(shù)字電視中的條件接收到多采用智能卡方式,為保護系統(tǒng)的兼容性,此處仍然設計有基于uart的智能卡通信模塊,用于支持使用智能卡進行密鑰解密的工作方式。
2 軟件設計
軟件主要包括嵌入式的操作系統(tǒng)和各類驅動及應用軟件。由于當前l(fā)inux有著優(yōu)良的可移植性和廣泛的兼容性,因此在本方案中操作系統(tǒng)采用μclinux實現(xiàn),而應用軟件主要包括電子節(jié)目指南、數(shù)字版權保護和條件接收、瀏覽器、圖形用戶界面、軟件解碼模塊等。
2.1 嵌入式操作系統(tǒng)
μclinux是面向mmu(內(nèi)存管理單元)設計的嵌入式操作系統(tǒng)。內(nèi)核由linux2.0 kernel發(fā)展而來,同標準linux相比,它繼承了原有的工作穩(wěn)定性強、網(wǎng)絡功能強大等主要優(yōu)點。此外,它具有占用空間小、執(zhí)行效率高等特點,由于iptv機頂盒需要實現(xiàn)各種基于網(wǎng)絡的增殖業(yè)務,因此對于網(wǎng)絡通信協(xié)議的需求比較廣泛,μclinux包括tcp/ip等多種網(wǎng)絡協(xié)議,能夠支持當前各種基于ip的業(yè)務,同時它還具有良好的開放性,任何新協(xié)議都可以很方便地加入到內(nèi)核中,具備了持續(xù)升級的可擴展能力。
在使用μclinux進行軟件設計時,一個需要著重考慮的問題是內(nèi)存管理,由于em8620沒有mmu管理存儲器,因此μclinux不能使用虛擬內(nèi)存管理技術,內(nèi)存訪問應采用直接尋址方式,所有程序訪問的地址都是實際的物理地址,操作系統(tǒng)內(nèi)存空間失去保護后,系統(tǒng)內(nèi)各個進程實際上是共享同一個內(nèi)存空間,因此在設計多進程任務時就需要特別注意進行內(nèi)存保護,防止程序操作越界溢出。具體而言,就是在每個進程初始化時,μclinux會根據(jù)用戶的申請分配一段連續(xù)的堆棧地址空間,而后該進程中所有的數(shù)據(jù)操作都在此內(nèi)存空間內(nèi)完成,所以開發(fā)人員必須對每個任務進程所需的最大內(nèi)存空間做出正確估計和分配,一旦生成的數(shù)據(jù)空間大于所分配的內(nèi)存空間,就會產(chǎn)生內(nèi)存溢出,侵犯其他程序的地址空間,從而導致程序的運行異常,嚴重者將導致系統(tǒng)崩潰。
傳統(tǒng)linux最大的缺點之一是,系統(tǒng)非正常關閉后,經(jīng)常會產(chǎn)生硬盤碎片,使操作系統(tǒng)無法正常引導啟動,此處,將μclinux編譯后燒寫到flash上采用flash內(nèi)核啟動方式,避免了上述缺點。
2.2 應用軟件
2.2.1 電子節(jié)目指南
電子節(jié)目指南是用戶獲取電視節(jié)目播出信息的直接途徑,從現(xiàn)有數(shù)字電視用戶的調查中發(fā)現(xiàn),電子節(jié)目指南是當前最受用戶歡迎的功能,電子節(jié)目指南一般包括電視節(jié)目單、節(jié)目簡介、當前節(jié)目信息顯示、節(jié)目預定等多個環(huán)節(jié),通常它的設計采用基于中間件或定制編寫軟件模塊的方式實現(xiàn),過程復雜、靈活度差。此處采用基于瀏覽器的電子節(jié)目指南設計,電視節(jié)目信息以html方式或xml方式傳送,機頂盒接收后利用瀏覽器顯示給用戶觀看,其風格和瀏覽方式都具有很強的靈活性,由于其他類型的增殖業(yè)務如網(wǎng)絡瀏覽、電視購物等方式都需要瀏覽器,因此使用瀏覽器不會增加系統(tǒng)的額外開銷。
2.2.2 數(shù)字版權保護
數(shù)字版權保護設計分為兩種,一種是針對已錄制節(jié)目的保護,另一種是針對實時播出節(jié)目的保護,由于機頂盒具有個人錄像機功能,用戶能夠方便地將實時播出的電視節(jié)目錄制到硬盤上,并通過usb接口拷貝出去進行散發(fā)。為防止這種盜版拷貝的情況發(fā)生,設計了嚴格的數(shù)字版權保護模塊,當用戶進行錄像時,對存儲到硬盤的節(jié)目進行加密處理,加密密鑰由每個機頂盒特有的硬件信息生成,這樣即使將節(jié)目拷貝到其他同類型機頂盒中也不能進行播放,從而實現(xiàn)了嚴格的版權保護功能,對于實時播出的加密節(jié)目,沿用了基于智能卡的工作方式,首先提取ip網(wǎng)絡傳送過來的密鑰數(shù)據(jù)流,通過uart接口送到智能卡中進行解密,解密后控制字存儲在內(nèi)存中使用后即刻銷毀,防止盜取和破解。
2.2.3 圖形用戶界面
為方便地對ide硬盤及其他接口進行操作,此處為用戶提供了圖形用戶界面,它采用minigui引擎,界面啟動后,用戶可以通過遙控器或連接usb鼠標/鍵盤非常方便地進行操作。
除了上述應用軟件外,還可支持各種java、flash程序運行,便于實現(xiàn)電視購物、在線游戲等功能,此外其包括wmv9、real等一系列多媒體播放程序,用于各種類型的網(wǎng)絡音視頻節(jié)目及本地的dvd光盤播放。
2.3 軟件調試
軟件調試分為內(nèi)核調試和應用程序調試兩個步驟。
2.3.1 內(nèi)核調試
內(nèi)核調試的一個簡單方法是利用jtag燒寫器直接將μclinux寫入到flash中,這種調試過程需要反復擦寫flash,過程較煩瑣,而且浪費時間,為了克服上述缺點,此處為em8620編寫了一個bootloader程序,通過以太網(wǎng)將μclinux下載到內(nèi)存中運行。內(nèi)核調試穩(wěn)定后再燒寫到flash,如此可以有效地簡化整個調試過程,提高工作效率。
2.3.2 應用程序調試
應用程序的開發(fā)和調試采用兩種方式,一種是對功能和消耗資源較少的程序,采用telnet方式通過以太網(wǎng)連接到機頂盒上直接開發(fā)調試。由于μclinux支持多用戶工作方式,因此多個不同開發(fā)人員可同時登陸到系統(tǒng)內(nèi)進行各自調試而互不影響,但是作為一個嵌入式處理器,em8620的運算能力畢竟有限,如果任務過多會影響調試速度,為此,消耗資源較大的應用程序需采用交叉編譯的方法,即程序的調試和編譯在速度較快的pc機上完成,然后利用gnu工具交叉編譯為基于μclinux的目標代碼,再通過以太網(wǎng)傳送到機頂盒中運行。
當前,iptv的發(fā)展正如火如荼,各地電視和電信運行商都在加大力度進行iptv建設,未來幾年對于iptv機頂盒的需求將迅速擴大,本文實現(xiàn)的這種基于em8620的iptv機頂盒,具有豐富的功能接口,并可支持高清及標清多種視頻格式解碼,符合未來iptv業(yè)務發(fā)展的技術要求,是一個可長期有效的解決方案。