1.引言
数字电视机顶盒(SetTopBox,STB)是扩展电视机功能的一种新型家用电器,分为卫星数字电视机顶盒(DVB-S)、地面数字电视机顶盒(DVB-T)和有线数字电视机顶盒(DVB-C)三种。目前国内的DVB-C机顶盒普遍采用外国厂商提供的流媒体处理器和与其捆绑销售的操作系统及在此系统上的开发工具,国内厂商将很难做到自主开发,必须高度依赖国外厂商的技术支持。本文采用国产的流媒体处理器―Hi2011和开源的嵌入式实时操作系统μC/OS-II进行了DVB-C数字电视机顶盒的设计和研究。
2.
STB硬件方面的主要单元可分为接收广播信号,并将其转换为数字传输串流的前端芯片,即调谐器和调变/解调变器;后端芯片包括电视解码器/编码器、MPEG-2Transport、MPEG-2MP@ML或HL解码器、微处理器、绘图芯片、音频处理器、音频DAC、视频DAC;以及DRAM/SDRAM、Flash等存储、电源元件及其他标准离散元件。有的STB高端产品还会整合安全芯片、调制解调器(modem)或家庭网络芯片,以及可录像的硬盘(HDD)。STB对数字电视信号的处理过程为:电视射频信号经Tuner(高频头)调谐,进行模数转换,输出36MHz的中频数字信号送入OFDM解调模块进行解调之后,变成TS流后经信道解码得到MPEG-2TS流,经解复用模块(集成解扰模块)选出一路MPEG-2音视频流和对应的数据信息,经信源解码后得到所选节目的数字信息。然后将数字信息转换为模拟信号输出给模拟电视。
Hi2011处理器是北京海尔集成电路有限公司研发的一款流媒体处理器,该处理器具有的特点是:采用QFP160封装;低功耗、高集成度和低成本的系统方案;0.18μm工艺,工作频率可达108MHz;三个脉宽调制输出。同时,该处理器集成了完全兼容51的CPU,工作时钟13.5MHz至27MHz,四个时钟的指令周期,完全兼容标准的8051指令;集成了DSP,可以实现16位乘/累加操作的协处理器,提高8051的运算性能。在该处理器上,还集成了MPEG解码器、视频播放、OSD和音频播放等硬件模块。
本系统硬件以Hi2011芯片为核心,配备一定的外围设备和接口,构成DVB-C数据机顶盒的硬件部分。
3.软件体系设计
DVB-C软件体系采用分层结构,首先对系统的软件进行分层,然后进行模块化的层次划分。
3.1软件层次结构
按照机顶盒软件系统中不同软件功能和作用,将软件系统按层次进行划分,可分为操作系统层、驱动层、中间层和应用层
其中操作系统层主要包括操作系统内核、硬件平台抽象和操作系统抽象;硬件平台抽象又叫硬件抽象层,主要是将CPU的相关操作和功能部分进行封装,以提供给上层调用,从而避免直接与硬件直接相关性,同时为系统软件的移植、操作系统的更换等带来极大的方便;操作系统抽象主要是将与操作系统直接相关的操作进行抽象化、模块化,以提供给应用程序简单方便的接口,同时使软件系统具有良好的可移植性。
在硬件平台和软件结构基本构建好以后,就选择适合高效的多任务系统环境的嵌入式实时操作系统,而μC/OS-II采用基于优先级的多任务抢占式调度策略;内核短小,实时性好,能进行快速的上下文切换(小于5µs),效率高;内存要求低鉴于这些特点,在本系统中,选择嵌入式实时多任务操作系统为μC/OS-II,作为该机顶盒的操作系统,并将其移植于Hi2011系统上,同时设计操作系统抽象层,封装操作系统与用户相关的操作。
3.2操作系统
在硬件平台和软件结构基本构建好以后,就选择适合该系统的嵌入式实时操作系统。在选择嵌入式实时操作系统(real-timeoperationsystem,RTOS)时,应该具有以下特征的RTOS:基于优先级的多任务抢占式调度策略;内核短小,实时性好,能进行快速的上下文切换(小于5µs),效率高;开放源代码,并且支持一系列的处理器芯片;低的内存要求;具有可裁剪、可移植性。
因为这样的RTOS是高效率的操作系统,能够为DVB-C提供高效的多任务环境,包括任务调度管理、时钟管理、内存管理、中断处理、通过信号量实现同步和互斥、以及通过消息队列实现消息通信等等。比如μC/OS-II、μCLinux、Vxworks、OS20等操作系统,都具有上述特征。
在本系统中,选择嵌入式实时多任务操作系统为μC/OS-II,作为该机顶盒的操作系统,并将其移植于Hi2011系统上,同时设计操作系统抽象层,封装操作系统与用户相关的操作。
3.3软件模块和任务的划分
根据DVB-C硬件模块的一致性可知,其软件模块主要包括初始化启动模块、端口处理模块、解复用模块、解扰模块、节目存贮模块、Flash模块、音视频操作模块、用户界面控制模块、频道转换控制、系统升级模块、EPG模块、中文字体模块和SDRAM模块等。
依据DVB-C要实现的功能和模块划分,将系统的任务划分为10个主要的任务,并为每个任务分配不同的优先级。每个任务都完成相应的功能,并将任务的调度交于操作系统实现。其中系统的初始化启动模块和设备驱动模块在主函数中调用相应的函数来实现其对应的功能。具体划分如下:Task2完成处理远程电源管理、清屏、主菜单键和传递按键给键值处理模块等功能;Task3完成系统的音视频处理;Task4完成频道更新;Task5处理频道节目的编辑和刷新等;Task6调度开机LoGo;Task7处理机顶盒各种显示任务;Task8调度游戏和日历等;Task9处理各种表单,如节目单和解复用单等;Task10处理处理OSD和PMT。而Task1启动其他任务和开机Logo。
3.4数据库构建
基于DVB-C的数字机顶盒的数据库构建,主要构建本地临时数据库和数据库管理两个方面。其中本地临时数据库包括:节目表ProgramList、附加节目表TransponderList和节目数据结构,ProgramList和TransponderList的构建在搜台时完成,当用户作频道管理时,需要作相应的更新并写Flash即可。
数据库管理主要是为管理和访问各数据库里的数据,数据库管理分为频点数据库管理、节目数据库管理和系统数据库管理三个方面。频点数据库管理主要是完成对频点数据的管理,包括频点信息单元和数据块头、链表两个方面。节目数据库管理主要管理节目信息单元和数据块头、链表,由于节目数据库的数据量十分庞大,因此,在定义节目数据库的结构时,不能将节目信息置于一个结构中,以免超出编译器的64KB的界线。
3.5搜台模块
搜台十分重要,不仅要找出频道列表,还要解析出一定程度的各频道的相关信息。搜台算法分为手动搜台和自动搜台算法。因为自动搜台是通过手动搜台对频率的for循环来实现的,所以研究手动搜台。在搜台之前,首先搜索各种节目信息表,因此搜索各种表时的顺序十分重要,这将影响到搜索节目的时间和效率。在搜台时,有以下几种搜索表:PAT:提供PMT的pid,所以要先于PMT的搜索;PMT:提供每个节目(service_id)的包括音视频pid等信息;SDT:提供节目的属性信息,包括节目名字、节目运行状态等属性,在PAT之后搜索;NIT:提供网络的信息,包括网络标识号和网络名称,保存在频点数据库中;NIT还提供此网络下其他频点的参数信息,根据这个可以增加频点数据库。
采用搜索算法思想为:首先调用驱动层封装好的相应API,设定Tuner频点、符号率等参数,根据数据更新的方式决定是否要清除ProgramList和TransponderList,然后搜索解析PAT表,PAT表解析完后对Program逐个解析PMT表和SDT表,所有的Program都完成后,解析NIT表获得网络信息,更新TransponderList,最后成功返回。
3.6系统主函数实现
μC/OS-II操作系统是使用标准C语言编写的,因此,整个系统软件中,又且仅有一个main()函数。在本系统中,也只有一个main()函数。在实现main()时,必须考虑系统的效率。在本系统设计中,采用了Task1来开启其他任务的方式,来减少主函数的代码,提高主函数的运行效率。其代码如下:
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);//任务调度开始
OSStart();//操作系统开始
…}
4.
本系统的调试按照嵌入式系统基本原理和DVB-C的基本特点,将调试分为主板调试、系统软硬件调试和系统软硬件验证等。
硬件方面,主要是验证硬件电路与设计电路的一致性和电路的各个输入/输出口的电流、电压特性,另外就是测试硬件的抗干扰能力和稳定可靠性。在调试时,采用外加干扰源的方式,测试控制器的抗干扰能力。
软件方面,主要是验证软件的正确性。将软件下载到DVB-C的Flash中,并连接有线电视信号到DVB-C,再连接到模拟电视机上,然后观看通过遥控器测试验证软件的正确性。
本文创新点:
本文提出了DVB-C机顶盒软件层次结构和软件模块层次结构,这些结构有效地提高了系统软件开发效率。通过基于Hi2011的DVB-C数字电视机顶盒研发项目的应用设计,研究实践表明,本文从系统的软件层次和结构、搜台算法和数据库构建的实现等方面给出了较优的解决方案。
本项目应用后已累计有21万元的经济效益。