传统的电视业务一致采用单向广播模式运营,随着科技的进步,人们越来越希望在电视中实现双向交互功能,通过交互通信,运营商能够及时地得知用户的需求,而终端用户也可以改变以往单一被动的信息接收模式,更多地参与到业务运营中。近期iptv(网络电视)的出现,使这愿望成为可能,它作为电视和网络通信技术的融合,以ip为传送通道,能够向用户提供包括电视在内的更为广泛的多种交互式视音频服务。
在iptv的系统中,用户终端机顶盒是一个非常关键的设备,它不但是收看电视节目的终端,而且还是一个信息汇聚、交互的平台,被认为是构成未来家庭多媒体中心的重要组成部分,本文介绍一种基于em8620芯片的iptv机顶盒设计方案,该方案能够通过网络实现交互电视业务,支持mpeg2、mpeg4、vc-1(wmv9)、real等多种视频压缩标准解码,具有电视节目录制、数字版权保护、dvd播放等多种功能。
1 硬件设计
1.1 设计要求分析
通过为iptv业务特性的详细分析,总结出fpga机顶盒硬件设计方面的四项要求:
(1)具有网络接入功能,能够利用lan、dsl等方式接入到互联网、支持tcp/ip、ftp、rtp、rtsp、rtcp、igmp多种网络协议。
(2)支持多种视频压缩格式,目前mpeg2、mpeg4、vc-1等标准在iptv中都有使用,有些运营商甚至是在交叉使用,这与传统数字电视采用单一的mpeg2标准情况大相径庭。因此,设计的机顶盒能支持的压缩标准越多,业务开展就越灵活,产品的使用范围就越广泛。
(3)具有完善的增殖业务设计,其中包括视频点播、电子表决、互动游戏、网络浏览、网络游戏等,增殖业务是网络电视获取利润的关键,所以设计机顶盒时要充分考虑到各种增殖业务的扩展应用。
(4)选择低成本的专用硬件平台。机顶盒不同于通用计算机,他是一个嵌入式系统,低成本、低功耗和稳定性是硬件设计要遵循的原则,一些早期的iptv机顶盒设计方案采用了基于intel的高性能通用处理器架构,虽然性能很好,但是在功耗和成本方面最终很难被市场和运营商认可。
1.2 em8620硬件平台
设计方案中采用一个低成本但功能相对丰富的集成芯片--em8620作为硬件平台,它是sigma designs公司专门针对数字视频通信设计的最新一款多格式解码芯片、内嵌166mhz的32位rsic处理器,具有丰富的音视频接口,此外还包括pci总线控制器和ide总线接口,依托二者能够实现网络接入、usb外设和ide外设(如硬盘、光驱)访问等功能。图1是该芯片的逻辑单元框图,其主要功能和特点包括:
(1)能够同时支持两路标准清晰度电视节目解码,实现画中画。;
(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接口,能够连接光驱和硬盘设备,实现电视录像和程序存储;
(11)具有ntsc/pal复合视频及s-video分量输出,带有可选的macrovision防录制保护;
(12)具有ypbpr/rgb分量视频输出,带有可选的macrovision防录制保护;
(13)具有3路i2s串行数字pcm音频输出,实现5.1声道环绕声;
(14)具有spdif(iec60958)数字音频输出。
1.3 设计原理
遵循iptv机顶盒的设计要求,以em8620为核心的硬件设计原理框图如图2所示,它包括多个不同的数据处理模块。
1.3.1 pci总线
pci总线上连接有一个10/100m的以太网控制器(ctl8100)和一个usb2.0主控制器(vt6212)用于实现网络接入及usb设备接入功能。
1.3.2 10/100m以太网控制器
10/100m以太网控制器采用realtek公司的rtl8100,它是一个高度集成的低成本单片以太网控制器,该控制器具有acpi电源功能和网络唤醒功能,通过使用魔术包(magic packet)和唤醒帧的方式可以很方便地实现网络管理和维护,因此使用它可以实现非常理想的嵌入式网络解决方案,同时它还具有pci/mini-pci接口和10/100mhz网络带宽自适应功能,并兼容pci2.2和pc99/pc2001、pci存储空间或i/o空间映射数据传输等其他功能。
1.3.3 usb2.0主控制器
usb2.0主控制器采用威盛公司的vt6212,它是一个四端口usb2.0控制芯片,能支持高达480mbps的传输速度,并采用动态中止时序控制(dynamic stop clock control)降低功耗。vt6212利用主机端控制接口(enhanced host controller interface)方式提供高速数据传输,利用通过控制芯片接口(universal host controller interface)方式向下兼容低速的usb1.1数据传输,此外tv6212也支持32-bit卡总线模式、可搭配pcmcia接口作为usb 2.0集线器,增加外设的接入数量。
1.3.4 视频输出
em8620能够提供模拟和数字两种视频信号输出,模拟视频采用复合(cvbs)、分量(s-video和yprpb)方式直接输出,输出中都可采用macrovision技术进行防盗版录制保护。数字视频(24bit rgb)连接到dvi信号合成芯片(sil164),编码为dvd格式后输出。
1.3.5 dvi信号合成
dvi是目前使用非常广泛的数字视频接口,既可以适应于高/标清数字电视显示、也可以用于普通的电脑监视器显示。此处选择silicon image公司的sil164实现dvi信号合成和发送。sil164采用paneilink数字技术设计,支持从vga到uxga(640×480-1600×1200)的清晰度显示范围,数据速率范围为25-165mbps,具有12bit(半像素时钟沿)和24bit(真彩色支持)两种设计模式,同时支持i2c总线控制,具有热插拔特性,完全兼容dvi1.0规范。
1.3.6 音频输出
em8620可提供三路i2s和一路spdif等两种串行数字音频信号,其中每路i2s信号承载两个声道的pcm数据,三路i2s信号连接到音频dac后,转换为6路模拟音频,用于实现dolby ac3的5.1声道环绕声;spdif串行数字信号直接输出,可承载两路pcm音频或压缩的5.1 声道dolby ac3音频。
1.3.7 外设总线
外设总线上连接有ide硬盘、dvd光驱和flash存储器,ide硬盘用于实现个人录像机功能,用户可以将播放的电路节目方便地存储到ide硬盘,同时也可以用于存储通过增殖业务从网络上下载的各类其他数据;dvd光驱可使机顶盒实现dvd播放功能,flash存储器的作用非常重要,用于存储整个机顶盒的操作系统软件。虽然也可以将操作系统安装到ide硬盘,但是ide硬盘的稳定性远不如flash存储器,并且还会受到其他应用程序,特别是病毒的攻击,非常容易造成系统崩溃。
1.3.8 fp/vfd和红外信号接收
fp/vfd用于机顶盒的前面板控制和状态显示,红外信号接收用于接收遥控器发送的控制信号。
1.3.9 uart
虽然iptv具有双向业务通道,能够采用认证的方式实现节目的版权保护,但是考虑到目前数字电视中的条件接收到多采用智能卡方式,为保护系统的兼容性,此处仍然设计有基于uart的智能卡通信模块,用于支持使用智能卡进行密钥解密的工作方式。
2 软件设计
软件主要包括嵌入式的操作系统和各类驱动及应用软件。由于当前linux有着优良的可移植性和广泛的兼容性,因此在本方案中操作系统采用μclinux实现,而应用软件主要包括电子节目指南、数字版权保护和条件接收、浏览器、图形用户界面、软件解码模块等。
2.1 嵌入式操作系统
μclinux是面向mmu(内存管理单元)设计的嵌入式操作系统。内核由linux2.0 kernel发展而来,同标准linux相比,它继承了原有的工作稳定性强、网络功能强大等主要优点。此外,它具有占用空间小、执行效率高等特点,由于iptv机顶盒需要实现各种基于网络的增殖业务,因此对于网络通信协议的需求比较广泛,μclinux包括tcp/ip等多种网络协议,能够支持当前各种基于ip的业务,同时它还具有良好的开放性,任何新协议都可以很方便地加入到内核中,具备了持续升级的可扩展能力。
在使用μclinux进行软件设计时,一个需要着重考虑的问题是内存管理,由于em8620没有mmu管理存储器,因此μclinux不能使用虚拟内存管理技术,内存访问应采用直接寻址方式,所有程序访问的地址都是实际的物理地址,操作系统内存空间失去保护后,系统内各个进程实际上是共享同一个内存空间,因此在设计多进程任务时就需要特别注意进行内存保护,防止程序操作越界溢出。具体而言,就是在每个进程初始化时,μclinux会根据用户的申请分配一段连续的堆栈地址空间,而后该进程中所有的数据操作都在此内存空间内完成,所以开发人员必须对每个任务进程所需的最大内存空间做出正确估计和分配,一旦生成的数据空间大于所分配的内存空间,就会产生内存溢出,侵犯其他程序的地址空间,从而导致程序的运行异常,严重者将导致系统崩溃。
传统linux最大的缺点之一是,系统非正常关闭后,经常会产生硬盘碎片,使操作系统无法正常引导启动,此处,将μclinux编译后烧写到flash上采用flash内核启动方式,避免了上述缺点。
2.2 应用软件
2.2.1 电子节目指南
电子节目指南是用户获取电视节目播出信息的直接途径,从现有数字电视用户的调查中发现,电子节目指南是当前最受用户欢迎的功能,电子节目指南一般包括电视节目单、节目简介、当前节目信息显示、节目预定等多个环节,通常它的设计采用基于中间件或定制编写软件模块的方式实现,过程复杂、灵活度差。此处采用基于浏览器的电子节目指南设计,电视节目信息以html方式或xml方式传送,机顶盒接收后利用浏览器显示给用户观看,其风格和浏览方式都具有很强的灵活性,由于其他类型的增殖业务如网络浏览、电视购物等方式都需要浏览器,因此使用浏览器不会增加系统的额外开销。
2.2.2 数字版权保护
数字版权保护设计分为两种,一种是针对已录制节目的保护,另一种是针对实时播出节目的保护,由于机顶盒具有个人录像机功能,用户能够方便地将实时播出的电视节目录制到硬盘上,并通过usb接口拷贝出去进行散发。为防止这种盗版拷贝的情况发生,设计了严格的数字版权保护模块,当用户进行录像时,对存储到硬盘的节目进行加密处理,加密密钥由每个机顶盒特有的硬件信息生成,这样即使将节目拷贝到其他同类型机顶盒中也不能进行播放,从而实现了严格的版权保护功能,对于实时播出的加密节目,沿用了基于智能卡的工作方式,首先提取ip网络传送过来的密钥数据流,通过uart接口送到智能卡中进行解密,解密后控制字存储在内存中使用后即刻销毁,防止盗取和破解。
2.2.3 图形用户界面
为方便地对ide硬盘及其他接口进行操作,此处为用户提供了图形用户界面,它采用minigui引擎,界面启动后,用户可以通过遥控器或连接usb鼠标/键盘非常方便地进行操作。
除了上述应用软件外,还可支持各种java、flash程序运行,便于实现电视购物、在线游戏等功能,此外其包括wmv9、real等一系列多媒体播放程序,用于各种类型的网络音视频节目及本地的dvd光盘播放。
2.3 软件调试
软件调试分为内核调试和应用程序调试两个步骤。
2.3.1 内核调试
内核调试的一个简单方法是利用jtag烧写器直接将μclinux写入到flash中,这种调试过程需要反复擦写flash,过程较烦琐,而且浪费时间,为了克服上述缺点,此处为em8620编写了一个bootloader程序,通过以太网将μclinux下载到内存中运行。内核调试稳定后再烧写到flash,如此可以有效地简化整个调试过程,提高工作效率。
2.3.2 应用程序调试
应用程序的开发和调试采用两种方式,一种是对功能和消耗资源较少的程序,采用telnet方式通过以太网连接到机顶盒上直接开发调试。由于μclinux支持多用户工作方式,因此多个不同开发人员可同时登陆到系统内进行各自调试而互不影响,但是作为一个嵌入式处理器,em8620的运算能力毕竟有限,如果任务过多会影响调试速度,为此,消耗资源较大的应用程序需采用交叉编译的方法,即程序的调试和编译在速度较快的pc机上完成,然后利用gnu工具交叉编译为基于μclinux的目标代码,再通过以太网传送到机顶盒中运行。
当前,iptv的发展正如火如荼,各地电视和电信运行商都在加大力度进行iptv建设,未来几年对于iptv机顶盒的需求将迅速扩大,本文实现的这种基于em8620的iptv机顶盒,具有丰富的功能接口,并可支持高清及标清多种视频格式解码,符合未来iptv业务发展的技术要求,是一个可长期有效的解决方案。