基于Hi2011的DVB-C機頂盒設計與實(shí)現
關(guān)鍵字:Hi2011;DVB-C; 數字電視機頂盒;軟件體系結構
1.引言
本文引用地址:http://dyxdggzs.com/article/83498.htm數字電視機頂盒(Set Top Box, STB)是擴展電視機功能的一種新型家用電器,分為衛星數字電視機頂盒(DVB-S)、地面數字電視機頂盒(DVB-T)和有線(xiàn)數字電視機頂盒(DVB-C)三種。目前國內的DVB-C機頂盒普遍采用外國廠(chǎng)商提供的流媒體處理器和與其捆綁銷(xiāo)售的操作系統及在此系統上的開(kāi)發(fā)工具,國內廠(chǎng)商將很難做到自主開(kāi)發(fā),必須高度依賴(lài)國外廠(chǎng)商的技術(shù)支持。本文采用國產(chǎn)的流媒體處理器―Hi2011和開(kāi)源的嵌入式實(shí)時(shí)操作系統μC/OS-II進(jìn)行了DVB-C數字電視機頂盒的設計和研究。
2.硬件架構設計
STB硬件方面的主要單元可分為接收廣播信號,并將其轉換為數字傳輸串流的前端芯片,即調諧器和調變/解調變器;后端芯片包括電視解碼器/編碼器、MPEG-2 Transport、MPEG-2 MP@ML或HL解碼器、微處理器、繪圖芯片、音頻處理器、音頻DAC、視頻DAC;以及DRAM/SDRAM、Flash等存儲、電源元件及其他標準離散元件。有的STB高端產(chǎn)品還會(huì )整合安全芯片、調制解調器(modem)或家庭網(wǎng)絡(luò )芯片,以及可錄像的硬盤(pán)(HDD)。STB對數字電視信號的處理過(guò)程為:電視射頻信號經(jīng)Tuner(高頻頭)調諧,進(jìn)行模數轉換,輸出36MHz 的中頻數字信號送入OFDM解調模塊進(jìn)行解調之后,變成TS流后經(jīng)信道解碼得到MPEG-2 TS流,經(jīng)解復用模塊(集成解擾模塊)選出一路MPEG-2音視頻流和對應的數據信息,經(jīng)信源解碼后得到所選節目的數字信息。然后將數字信息轉換為模擬信號輸出給模擬電視。
Hi2011處理器是北京海爾集成電路有限公司研發(fā)的一款流媒體處理器,該處理器具有的特點(diǎn)是:采用QFP160封裝;低功耗、高集成度和低成本的系統方案;0.18μm工藝,工作頻率可達108MHz;三個(gè)脈寬調制輸出。同時(shí),該處理器集成了完全兼容51的CPU,工作時(shí)鐘13.5MHz至27MHz,四個(gè)時(shí)鐘的指令周期,完全兼容標準的8051指令;集成了DSP,可以實(shí)現16位乘/累加操作的協(xié)處理器,提高8051的運算性能。在該處理器上,還集成了MPEG解碼器、視頻播放、OSD和音頻播放等硬件模塊。
本系統硬件以Hi2011芯片為核心,配備一定的外圍設備和接口,構成DVB-C數據機頂盒的硬件部分。其硬件結構如圖1所示。
圖1 以Hi2011芯片為核心的DVB-C的主板結構圖
3.軟件體系設計
DVB-C軟件體系采用分層結構,首先對系統的軟件進(jìn)行分層,然后進(jìn)行模塊化的層次劃分。
3.1 軟件層次結構
按照機頂盒軟件系統中不同軟件功能和作用,將軟件系統按層次進(jìn)行劃分,可分為操作系統層、驅動(dòng)層、中間層和應用層,如圖2所示。
圖2 軟件層次結構圖
其中操作系統層主要包括操作系統內核、硬件平臺抽象和操作系統抽象;硬件平臺抽象又叫硬件抽象層,主要是將CPU的相關(guān)操作和功能部分進(jìn)行封裝,以提供給上層調用,從而避免直接與硬件直接相關(guān)性,同時(shí)為系統軟件的移植、操作系統的更換等帶來(lái)極大的方便;操作系統抽象主要是將與操作系統直接相關(guān)的操作進(jìn)行抽象化、模塊化,以提供給應用程序簡(jiǎn)單方便的接口,同時(shí)使軟件系統具有良好的可移植性。
在硬件平臺和軟件結構基本構建好以后,就選擇適合高效的多任務(wù)系統環(huán)境的嵌入式實(shí)時(shí)操作系統,而μC/OS-II采用基于優(yōu)先級的多任務(wù)搶占式調度策略;內核短小,實(shí)時(shí)性好,能進(jìn)行快速的上下文切換(小于5µs),效率高;內存要求低鑒于這些特點(diǎn),在本系統中,選擇嵌入式實(shí)時(shí)多任務(wù)操作系統為μC/OS-II,作為該機頂盒的操作系統,并將其移植于Hi2011系統上,同時(shí)設計操作系統抽象層,封裝操作系統與用戶(hù)相關(guān)的操作。
3.2 操作系統
在硬件平臺和軟件結構基本構建好以后,就選擇適合該系統的嵌入式實(shí)時(shí)操作系統。在選擇嵌入式實(shí)時(shí)操作系統(real-time operation system,RTOS)時(shí),應該具有以下特征的RTOS:基于優(yōu)先級的多任務(wù)搶占式調度策略;內核短小,實(shí)時(shí)性好,能進(jìn)行快速的上下文切換(小于5µs),效率高;開(kāi)放源代碼,并且支持一系列的處理器芯片;低的內存要求;具有可裁剪、可移植性。
因為這樣的RTOS是高效率的操作系統,能夠為DVB-C提供高效的多任務(wù)環(huán)境,包括任務(wù)調度管理、時(shí)鐘管理、內存管理、中斷處理、通過(guò)信號量實(shí)現同步和互斥、以及通過(guò)消息隊列實(shí)現消息通信等等。比如μC/OS-II、μCLinux、Vxworks、OS20等操作系統,都具有上述特征。
在本系統中,選擇嵌入式實(shí)時(shí)多任務(wù)操作系統為μC/OS-II,作為該機頂盒的操作系統,并將其移植于Hi2011系統上,同時(shí)設計操作系統抽象層,封裝操作系統與用戶(hù)相關(guān)的操作。
3.3 軟件模塊和任務(wù)的劃分
根據DVB-C硬件模塊的一致性可知,其軟件模塊主要包括初始化啟動(dòng)模塊、端口處理模塊、解復用模塊、解擾模塊、節目存貯模塊、Flash 模塊、音視頻操作模塊、用戶(hù)界面控制模塊、頻道轉換控制、系統升級模塊、EPG模塊、中文字體模塊和SDRAM模塊等。
依據DVB-C要實(shí)現的功能和模塊劃分,將系統的任務(wù)劃分為10個(gè)主要的任務(wù),并為每個(gè)任務(wù)分配不同的優(yōu)先級。每個(gè)任務(wù)都完成相應的功能,并將任務(wù)的調度交于操作系統實(shí)現。其中系統的初始化啟動(dòng)模塊和設備驅動(dòng)模塊在主函數中調用相應的函數來(lái)實(shí)現其對應的功能。具體劃分如下:Task2完成處理遠程電源管理、清屏、主菜單鍵和傳遞按鍵給鍵值處理模塊等功能;Task3完成系統的音視頻處理;Task4完成頻道更新;Task5處理頻道節目的編輯和刷新等;Task6調度開(kāi)機LoGo;Task7處理機頂盒各種顯示任務(wù);Task8調度游戲和日歷等;Task9處理各種表單,如節目單和解復用單等;Task10處理處理OSD和PMT。而Task1啟動(dòng)其他任務(wù)和開(kāi)機Logo。
3.4 數據庫構建
基于DVB-C的數字機頂盒的數據庫構建,主要構建本地臨時(shí)數據庫和數據庫管理兩個(gè)方面。其中本地臨時(shí)數據庫包括:節目表ProgramList、附加節目表TransponderList和節目數據結構,ProgramList和TransponderList的構建在搜臺時(shí)完成,當用戶(hù)作頻道管理時(shí),需要作相應的更新并寫(xiě)Flash即可。
數據庫管理主要是為管理和訪(fǎng)問(wèn)各數據庫里的數據,數據庫管理分為頻點(diǎn)數據庫管理、節目數據庫管理和系統數據庫管理三個(gè)方面。頻點(diǎn)數據庫管理主要是完成對頻點(diǎn)數據的管理,包括頻點(diǎn)信息單元和數據塊頭、鏈表兩個(gè)方面。節目數據庫管理主要管理節目信息單元和數據塊頭、鏈表,由于節目數據庫的數據量十分龐大,因此,在定義節目數據庫的結構時(shí),不能將節目信息置于一個(gè)結構中,以免超出編譯器的64KB的界線(xiàn)。
3.5 搜臺模塊
搜臺十分重要,不僅要找出頻道列表,還要解析出一定程度的各頻道的相關(guān)信息。搜臺算法分為手動(dòng)搜臺和自動(dòng)搜臺算法。因為自動(dòng)搜臺是通過(guò)手動(dòng)搜臺對頻率的for循環(huán)來(lái)實(shí)現的,所以研究手動(dòng)搜臺。在搜臺之前,首先搜索各種節目信息表,因此搜索各種表時(shí)的順序十分重要,這將影響到搜索節目的時(shí)間和效率。在搜臺時(shí),有以下幾種搜索表:PAT:提供PMT的pid,所以要先于PMT的搜索;PMT:提供每個(gè)節目(service_id)的包括音視頻pid等信息;SDT:提供節目的屬性信息,包括節目名字、節目運行狀態(tài)等屬性,在PAT之后搜索;NIT:提供網(wǎng)絡(luò )的信息,包括網(wǎng)絡(luò )標識號和網(wǎng)絡(luò )名稱(chēng),保存在頻點(diǎn)數據庫中;NIT還提供此網(wǎng)絡(luò )下其他頻點(diǎn)的參數信息,根據這個(gè)可以增加頻點(diǎn)數據庫。
采用搜索算法思想為:首先調用驅動(dòng)層封裝好的相應API,設定Tuner頻點(diǎn)、符號率等參數,根據數據更新的方式?jīng)Q定是否要清除ProgramList和TransponderList,然后搜索解析PAT表,PAT表解析完后對Program逐個(gè)解析PMT表和SDT表,所有的Program都完成后,解析NIT表獲得網(wǎng)絡(luò )信息,更新TransponderList,最后成功返回。其算法流程如圖3所示。
圖3 搜臺算法流程圖
3.6 系統主函數實(shí)現
μC/OS-II操作系統是使用標準C語(yǔ)言編寫(xiě)的,因此,整個(gè)系統軟件中,又且僅有一個(gè)main()函數。在本系統中,也只有一個(gè)main()函數。在實(shí)現main()時(shí),必須考慮系統的效率。在本系統設計中,采用了Task1來(lái)開(kāi)啟其他任務(wù)的方式,來(lái)減少主函數的代碼,提高主函數的運行效率。其代碼如下:
main()
{…
OSInit();//操作系統初始化
sys_init();//系統初始化
System_mail_Set = OSMboxCreate(0);//系統消息初始化
sysflag = OSFlagCreate(0x81, &err_main);//系統標志初始化
OSTaskCreate(task1, (void *) &Task1_Stk [TASK1_STK_SIZE - 1], TASK1_PRIO);//任務(wù)調度開(kāi)始
OSStart();//操作系統開(kāi)始
…}
4. 系統調試
本系統的調試按照嵌入式系統基本原理和DVB-C的基本特點(diǎn),將調試分為主板調試、系統軟硬件調試和系統軟硬件驗證等。
硬件方面,主要是驗證硬件電路與設計電路的一致性和電路的各個(gè)輸入/輸出口的電流、電壓特性,另外就是測試硬件的抗干擾能力和穩定可靠性。在調試時(shí),采用外加干擾源的方式,測試控制器的抗干擾能力。
軟件方面,主要是驗證軟件的正確性。將軟件下載到DVB-C的Flash中,并連接有線(xiàn)電視信號到DVB-C,再連接到模擬電視機上,然后觀(guān)看通過(guò)遙控器測試驗證軟件的正確性。
本文創(chuàng )新點(diǎn):
本文提出了DVB-C機頂盒軟件層次結構和軟件模塊層次結構,這些結構有效地提高了系統軟件開(kāi)發(fā)效率。通過(guò)基于Hi2011的DVB-C數字電視機頂盒研發(fā)項目的應用設計,研究實(shí)踐表明,本文從系統的軟件層次和結構、搜臺算法和數據庫構建的實(shí)現等方面給出了較優(yōu)的解決方案。
本項目應用后已累計有21萬(wàn)元的經(jīng)濟效益。
參考文獻
[1]ISO/IEC 13818-1.Information technology -Generic coding of moving pictures and associated audio:Systems [S], 1994
[2] 谷志奇,余松煜.機頂盒SI模塊的設計與實(shí)現[J].電視技術(shù),2004-3:51-53
[3] 徐登,鄭世寶,金薦.一種優(yōu)化的機頂盒SI引擎的設計與實(shí)現[J].電視技術(shù),2005-5:13-15
[4] 李海洋,李柏林,郭榮佐.正交軟件體系結構設計和演化方法應用研究[J].計算機應用研究,2007-1:78-80
[5] 柴晟.基于設計模式構建數據訪(fǎng)問(wèn)中間件[J].計算機工程與設計,2007-17:4102-4104
[6] 劉久富,孫德敏,楊忠,張志強.嵌入式軟件的動(dòng)態(tài)測試[J].微計算機信息,2006,1-2:82-84、248
評論