一种面向DVB-C的单片MPEG-2解码方案
扫描二维码
随时随地手机看文章
进入21世纪,全世界的数字电视发展相当迅速,欧洲的DVB视频广播已经相当成熟,日本和美国也都开始了高清晰度节目的播出,并制定了数字电视广播全面代替模拟电视广播的时间表。在我国,由于各省市已有三十多套节目以MPEG-2方式压缩并通过卫星传输,DVB-S已经形成了较为成熟的市场。国内目前有多家厂商自主开发DVB解码套片,生产并销售DVB-S,价格也降到了用户可以承受的水平。反观DVB-C,同样有多家厂商推出样机,但由于功能上不能完全满足电视台和用户的需要以及源端设备改造需要较长过程,目前还没有形成明显的市场。
目前,DVB-C除了完成基本的音视频解码还必须增加以下几个功能才能真正被市场接受。第一,提供对CA(条件接收)系统的支持。有线电视台需要通过CA系统来实现对节目的加密和对用户的管理、收费。CA系统要求在接收端,机顶盒应该支持IC-Card接口与SmartCard进行通讯,并且提供标准的DVB数据流解扰模块。第二,实现对TS流的存储。这个功能现在有两个趋势:一种是由机顶盒提供硬盘接口(比如IDE接口),将TS流存在硬盘里供用户回放,实现数字录像机的功能;另一种是机顶盒提供USB或者1394这一类的高速通用接口,将TS流通过它们存入计算机中,用户再通过计算机进行处理。第三,实现局域网网络接口。这样机顶盒可以接收从局域网传来的TS流,实现局域网上的视频播放。第四,实现Web浏览功能。用户可以通过机顶盒浏览网页,当然这需要现有电视分辨率的适当提高和专门网站的提供。
针对DVB-C机顶盒的这些要求,选择了Fujitsu公司的单片MPEG-2解码方案,这套方案较好地支持了各种接口和功能模块,且成本较低,以下是芯片的简介,然后介绍整套方案的软件和硬件。
1 芯片介绍
MB87L2250是由Fujitsu公司出品的单片MPEG音频和视频解码器,它同时还有解传输复用功能并且集成了一片32位的RISC处理器。它为数字电视机顶盒提供了一种高性价比、高集成度的解决方案。在芯片设计中,MPEG解码和解复用都由硬件完成,而片内集成的工作频率为54MHz的处理器则主要用于运行客户应用程序,例如实现图形界面。由于MB87L2250采用了2.5帧体系结构,因此仅需要16M位 SDRAM用于MPEG解码、OSD菜单以及数据缓存。整个芯片具有以下特点:
·32位RISC微处理器 ·1K字节的指令Cache
·2.5帧体系结构 ·仅需要16M位SDRAM
·支持32路不同的PID包 ·针对PID和Section的硬件过滤器
·红外接收器 ·DVB标准解扰
·减少图片内存的 ·图文电视的VBI方式插入内存节省模式
·16:9与4:3格式转换 ·电影格式转换
·IIC总线 ·两个SmartCard接口
·2、4、6或8位OSD ·16个可编程I/O口
·自动时钟恢复
图1是MB87L2250的芯片结构图。
1.1 32位RISC处理器
这个片内集成的ARC处理器是采用了4层流水线技术的RISC微处理器,它的工作频率为54MHz。ARC内部集成了一个256×32位的指令cache。ARC的存储控制器包括了SRAM和SDRAM控制器,其中SRAM的控制器包括一个可编程的等待状态产生器,用于和相连的不同速率的存储介质保持同步。而MPEG解码器位于辅助地址空间,通过一个主机接口可以访问所有的ARC寄存器和处理器的整个地址空间。这个特性主要用于调试,但是也可以用于基于FLASH系统的第一次启动。芯片还有一种休眠状态,此时ARC的工作频率为13.5MHz。
1.2 传输流解复用和系统解码
完成这部分功能的是传输系统解码器(TSD)。通过TSD,主芯片可以接收8位的并行或串行数据流。TSD提供基本的同步和错误检测功能,但它的主要功能是作为PID分析器把唯一的一路PES流从TS流里最大32路PES流中鉴别出来。TSD选出相应的有效数据和系统信息并把它们送给解码缓存。另外,TSD还提供分段(Section)类型数据的分析比较。
TSD中主要包括频道解码器(Channel Decoder)、PCR存储(Program Clock Reference Store)、PID分析器(PID parsing engine)、分段数据过滤器(Section Filter)等。为了支持有线广播中的CA系统,TSD还包括一个标准的DVB解扰器。这个解扰器能够在TS层和PES层进行解扰,可以并行处理八路不同的流,因此需要存储八对控制字。解扰器可以自动找到相应的控制字。传输流解复用和系统解码的流程图如图2所示。
1.3 视频解码及输出
整个视频解码和视频显示过程由VD_VUM(Video Unit Management)管理和监控。在它以下主要分为三个部分。其中,视频解码和参考图像的内存分配由VUM_VDM(Video Decoder Manager)管理;图像显示由VUM_VOM(Video Output Manager)控制;B帧图像的缓存管理则由VUM_MIM(Memory Interface Management)负责。
视频输出主要由视频输出接口来完成。视频输出接口从本地SDRAM中读入解压后的视频数据,然后以Y、Cb、Cr格式输出。它同时还提供数字视频输出,数字视频输出的设计是用于直接和视频DAC连接的。这个模块还包括专门的硬件模块来支持OSD(OnScreenDisplay)和以VBI方式插入teletext。视频输出接口中还包括行场同步过滤器,用来支持一些视频格式转换,包括色度信号变换和高清格式转换。
1.4 各种接口
MB87L2250支持的接口较多,除了一般性的Debug口、串口,还支持IC-Card接口和一个Host接口。IC-Card接口提供了两个独立的支持ISO 7816 IC-Card的接口,它们只支持异步的IC-Card。这个接口直接由CPU的主接口控制,所以不会影响音视频解码。在某一时刻,只有一个接口可以被激活,另一个则保持它上一次的状态。这个接口主要包括一个串行转并行和并行转串行的转换器,它需要时钟和逻辑控制的支持。CPU提供需要传输的完整数据帧给IC-Card,并从IC-Card接收所有的数据帧。IC-Card接口监控接口时钟并支持数据帧、数据时钟和错误处理,而CPU负责实现通讯协议和帧的打包。Host接口是用来外接其他CPU而不使用集成的ARC处理器,也可用来扩展RAM或外接硬盘等。它支持的CPU有三种:FR30(最大25MHz),Motorola68xxx(最大33MHz),SPARClite 系列(最大40MHz)。
2 方案介绍
2.1系统原理图及外围芯片简介
整个系统由射频、主芯片、存储器、输出共四个部分组成。以下将介绍除主芯片部分以外的其他三个部分。图3是系统原理简图。
(1) 射频部分
射频部分主要包括高频头和解调芯片,分别进行射频的变频和信道解码。在本系统中选用的高频头是THOMSON公司的DCF8910,解调芯片是ST公司的STV0297。系统工作时,先由高频头将RF频段的数字调制信号进行下变频,再进行正交解调变成两路IQ信号。然后将数字基带信号输入STV0297,进行数模转换和信道解码,形成数字信号给后级,其中包括DaM[0..7]、出错信号DErM、数据有效DvLM、 帧同步PsyM、时钟信号ClkM。对高频头和STV0297的读写操作均通过IIC总线完成。
(2) 存储器部分
存储器部分包括两片512K×16Bit的FLASH,一片2×512K×16Bit的SDRAM,一片64Kbit的EEPROM和一块挂在Host接口上的IDE硬盘。两片FLASH用来存储一般无需更改的数据,一片为启动FLASH,用于存储系统的应用程序;另一片为用户FLASH,用于存储较大的位图。SDRAM作为应用程序运行时的内存空间,其地址线包括行选地址线a0...a11、列选地址线a0...a7及Bank选择线a11,总的地址空间为2M字节。FLASH与SDRAM共用数据总线和地址总线,为不发生冲突,需要使用74LS138译码器来进行片选。EEPROM选用24C64,通过串行IIC总线对它进行读写。
(3)输出部分
输出部分由音频输出、视频输出和串口输出组成。视频部分选用视频编码芯片SAA7128/29,它将送出来的数字视频格式进行数模转换,经过视频矩阵编码成模拟的视频信号。它可输出cvbs,y、c和R、G、B三种信号。该芯片工作在Slave模式下,即数据时钟由主芯片供给,SAA7128/29利用此时钟对数字信号进行锁存。控制信号有Hs行同步、Vs场同步,主芯片通过IIC总线对它进行控制。
音频部分使用PCM1723对主芯片送出的PCM数字音频进行数模转换,其时钟包括左右时钟和位时钟。PCM1723是通过主芯片产生的27MHz信号来实现同步的:它用将27MHz信号经过分频而得到的超采样时钟来锁存数字信号,同时将超采样时钟送回主芯片的音频输出部分进行同步,因而使得音频数字信号的输出与它的锁存同步。音频数模转换后再经过模拟放大(如LM6142)就可以送给发声部分了。
2.2 软件模块和功能介绍
为了丰富DVB-C机顶盒的功能,除了实现音视频解码及控制和基本的DVB-C功能外,还编写了以下几个软件模块:
(1)基于嵌入式系统的GUI(Graphic User Interface)。
美观、简洁、功能强大的图形界面对于DVB-C机顶盒是十分重要的,因此编写了一个基于嵌入式系统的GUI。在本系统中,GUI主要完成了三部分的功能:第一,封装图形设计API。在OSD的驱动程序中基本的图形原语均已实现,其中包括点、线、矩形、填充等基本操作和汉字字库的存储、显示。但为了适应应用层的调用,在GUI中还要将这些原语封装成API;第二,提供图形控件(Control)机制。Windows9x中图形控件的概念符合面向对象程序设计的思想,使用起来简单灵活,维护和修改也十分方便。在GUI的设计中,仿照Windows9x实现了控件机制;第三,进程间通信及消息传递的管理。在一个多进程实时系统中,GUI也必然包含一个进程来接收其它进程发给用户界面的消息。
(2) EEPROM上的文件系统
EEPROM中主要存储的是用户信息。随着功能的不断丰富,用户会有越来越多的信息需要存储,因此就需要一套简单有效的文件系统来组织各种不同的信息。同时,文件系统还要尽量克服EEPROM读写时间较长、不允许读写时断电等缺点。这套文件系统主要完成三部分功能:第一,建立一套与流行操作系统基本相同的文件目录机制。规定32个字节为一个文件块(BLOCK),一个文件由一个或多个文件块组成。文件采用树状结构组织,同层文件均以双向链表机构进行衔接,并且写入信息时,不会对指针进行操作,保证了安全性;第二,设计EEPROM读写时机和策略。每次开机时在SDRAM中开辟一块与EEPROM同样大小的区域作为镜像。所有读操作均在镜像中进行,这样将大大提高读操作的效率,而写操作将对EEPROM和镜像同时操作,保证镜像和EEPROM中信息完全一致;第三,提供强大的断电保护功能。在对EEPROM进行写操作前,先将需要进行的操作过程记录下来,并清空操作完成标志;如果在操作过程中断电,下次开机时根据操作完成标志可知EEPROM在操作过程中发生了断电,按照记录下来的操作过程恢复操作。
(3) CA系统接收端的实现
CPU复位后,首先轮询读SmartCard,以检查SmartCard是否存在。如果SmartCard存在,则根据读出的控制字判断其是否是对本机顶盒合法的SmartCard。进行这样的读机制主要是为了防止一卡多机(一张SmartCard驱动多个机顶盒)的非法情况出现。当SmartCard合法后,机顶盒从TS流中提取ECM段和EMM域,其中EMM域的PID在CAT的ca description中,ECM段的PID在PMT的ca description中。经过简单的私有加密算法加密后,这些信息被送往SmartCard。然后,CPU再次轮询读SmartCard,以检查是否有控制字输出。以上过程中CPU和SmartCard的交互均通过IC-Card接口实现。机顶盒不断重复以上过程,若ECM或EMM版本号已更新,则将新版本送往SmartCard解密。获取到正确的控制字后,机顶盒就可以利用硬件解扰模块进行解扰。
3 实现结果
目前已经按照这套方案做出了DVB-C样机。根据这套方案实现的DVB-C机顶盒具有功能多、主板面积小、成本较低、可扩充性好等特点。在样机的基础上还可以在实时操作系统的支持下,实现网络接口和Web浏览等功能。