随着信息技术的高速发展,通信技术、计算机技术、电视技术已进入了相互结合的新时代。方兴未艾的交互式电视(ITV)正是这种结合的具体体现。所谓交互式电视,是一种受观众控制的电视,在节目间和节目内观众能够作出选择和决定,是一种非对称双工形式的新型电视技术。数字机顶盒是其中的关键技术之一。作为ITV系统中的用户终端,它是普通电视与宽带传输网络之间的桥梁。通过STB,用户可在普通电视机上收看高清晰度(如MPEG 2标准)的图象;并且足不出户,就可享受到视频点播、家庭购物等一系列诱人的服务。
机顶盒指电视机顶上的盒子,是扩展电视机功能的一种家电。机顶盒根据接收的信号种类分为模拟机顶盒和数字机顶盒。模拟机顶盒接收模拟信号,数字机顶盒接收数字信号。数字机顶盒是一种多媒体终端,有类似于家用电脑的硬件体系结构和专用的实时操作系统及应用软件。用户将有线馈线接驳于数字机顶盒,在用AV连接线接入电视机AV输入端子,然后使用数字机顶盒遥控器,可以进行频道、节目的选择。数字电视在电视的AV节目中播出,收看时把电视节目转为平时播放影碟或录象的频道,所有数字电视节目都在AV频道中,选择时需使用机顶盒遥控器,根据菜单操作,其操作过程与播放DVD相似。如果不收看数字电视节目,按电视遥控器AV转换键,即回到原节目。机顶盒的内部结构主要分为视频信号处理与音频信号处理两大部分。其中,视频信号处理包括两部分:(1)视频信号自身解复用、解码和格式转换的处理;(2)视频信号与音频信号的同步。
1 系统结构
图1是笔者所设计的机顶盒的功能模块框图。
系统选用了VLSI公司的开发平台:VES2761评估板以及JumpStart ARM 3.3a开发软件。
前端部分接收有线电视电缆输出的信号,进行频率变换、QAM解码、解交织、解RS码、解扰等处理后,输出MPEG 2解复用前的标准码流,即传送码流。这部分主要由一片VES1820芯片完成。
解复用和中央处理器(主控CPU)集成在一片芯片VES2700上。MPEG 2传送码流被解复用为系统流、视频流和音频流三个部分。VES2700还提供IEEE 1394、IEEE 1284、RS232、Modem、I2C、智能卡和红外通信等接口。
芯片VES6100需要一片外部的SDRAM(至少2MB),就可以作为一个MPEG 2(MP@ML或者MP@SL)解码系统工作,并将解码后的数据流分音频信号和视频信号输出。音频信号再经过PCM解码、放大,可以直接作为扬声器的输入信号。经机顶盒输出的信号可以符合各种格式,如:RGB、Svideo、复合视频信号等,也可以是各种电视制式:NTSC、PAL、SECAM等。VES6100同时实现OSD(屏幕菜单显示)功能。
在上行信道,用户所发出的信息,例如选择的电视剧片名信息经过调制--通常是QPSK调制(QPSK抗干扰能力强)后,发送到电视台。
2 解复用单元
VES2700包括两个独立的微处理器:(1)用户化的RISC微处理器用于解复用,即传输解复用子系统;(2)ARM703_t Host负责操作系统和OSD,控制I/O操作等。这两个处理器并行工作,无资源竞争。ARM703的4K字节Cache,可以用单指令周期访问部分代码。的内存管理机制保证代码,如实时操作系统,保存在Cache中。
VES2700拥有4条独立高速总线,以防止瓶颈。4条总线分别为:(1)信道数据输入总线;(2)连接DRAM控制器的总线;(3)ARM703_t Host总线,这条总线与I/O总线及其外设接口;(4)连接各种外设的I/O总线。
VES2700提供专用硬件来支持多种软件功能,例如,CRC校验、传输滤波、IR控制等功能。ARM703_t微处理器提供的库可实现软件Modem功能。
传输/解复用子系统采用了用户化、高性能的RISC处理器,它有自己专用的128B指令SRAM和512B数据SRAM,以60Mb/s的速率处理MPEG2传输码流、PES,并解析成MPEG2包,将相应的数据传给视频、音频、电文、应用信息等队列(位于外部DRAM中),并支持CAS(Conditional Access System)管理、丢失包检测、PCR恢复、视频和音频的同步等功能。统一的内存结构满足了传输/解复用子系统和ARM703的需要。RISC支持32种不同队列。内存控制器通过队头、队尾指针来管理每个队列。MPEG 2解码器(VES6100)从这些队列中读取数据。
视频队列操作模型:为了将视频数据写入视频队列,RISC将"0"队列号及有效数据写入DRAM 缓存。当有相同队列号时,内存控制器将:(1)区分相关队列头指针;(2)将数据写入头指针所指的DRAM位置;(3)更新头指针。
在系统初始化时,ARM703-t从外部存储器(Flash Memory)微码到片内双口SRAM.RISC以40.5MHz的时钟速率执行SRAM中的微码。传输/解复用单元可同时处理32 PIds(Packet PIDs),支持运输包及其净负荷数据、PES包及其净负荷数据,输出程序流小包。
传输/解复用处理器和ARM703-t共享2个存储器,用于存储代码和数据表。RISC指令RAM(I-RAM)占用起始的1.25KB地址空间,ARM703对I-RAM可读写而传输/解复用处理器 RISC对I-RAM只可读不可写。RISC数据RAM(D-RAM)占512B.D-RAM是双口访问存储器,可被RISC和ARM703读写。这2个RAM映射到ARM703和RISC的地址空间。
代码和数据按下列步骤:
(1)启动后,通过设置RISC控制寄存器停止位暂停运行传输/解复用处理器,代码写入RISC SRAM,恢复停止位;(2)如果RISC在运行,先停止打包器,再停止RISC(设置停止位),然后将新代码写入RISC SRAM.
3 MPEG A/V解码器接口
VES6100需要外部SDRAM才能工作,多支持32Mbit SDRAM,其大小决定于分辨率和操作模式的需要,同时支持复合视频、S端子、立体声、模拟和数字IEC958音频输出。VES2700的A/V操作模式中,视频和音频可以选择为串行或并行。
系统中采用了串行视频串行音频模式,因为此时与外设接口为方便,而OSD的带宽。根据所选择的模式,在本设计中,A/V操作模式寄存器设置如下:
0x1C=0x1800
0x50=0x0040
0x70=0x0042
VES2700与VES6100的连接如图2所示。
4 VES6100对视频信号的处理
VES6100芯片是一种MPEG2解码器,其内部结构框图如图3所示。
该芯片包括3个子系统:
·MPEG1/2音/视频解码器;
·OSD子系统;
·NTSC/PAL/SECAM 编码器。
其中与视频信号密切相关的模块如下:
视/音频流处理器VASP
VASP解码视频和音频数据。在视频模式,VASP按照MPEG1/2语法,从视频流中有层次地解出定长码和变长码,然后将这些码翻译成指令和数据(8×8bit DCT数据块),传送给MSP.VASP也执行错误检测和掩蔽以及解码系数的反量化。
MPEG信号处理器MSP
作为VASP的从属单元,MSP接收反量化系数及VASP的一系列指令,执行与MPEG1/2解码相关的所有数字信号处理任务,包括:
·IDCT(反DCT变换);
·二维半象素滤波计算;
·块重建算法和运动补偿。
MSP的输出是4:2:0格式的象素数据,存储在外部SDRAM中,供显示之用。
视频图象处理器VGP
VGP对已完成解码的视频数据进行处理,例如4:2:0视频格式转换成4:2:2视频格式。它还执行图象重叠、OSD等功能。
VES6100作为微处理器(VES2700)的一个从设备工作。上电后,VES2700初始化VES6100和可编程寄存器,传输压缩视/音频数据到串口或8位宽并口。然后,VES6100在解码模式下独立地处理压缩视频流。微处理器控制设置寄存器以及响应中断,可通过读取状态寄存器获取VES6100的运行状态。
4.1 视频输入
MCB(内存控制器与微控制器接口)将压缩视频流从片内CDIF(Compressed Data Input FIFO)传送到VCDB(Compressed Data Buffer,位于SDRAM中)。当VCDB到达上限标志时,MCB发生上限标志中断,微处理器停止数据传输。MCB将压缩视频数据传给VASP.当VASP处理压缩数据时,MCB从VCDB中读入数据并将它写入CDOF(压缩数据输出队列)。如果VCDB低于下限标志,微控制器恢复传输数据。当VCDB到达下限标志时,MCB产生下限标志中断。
4.2 PES解析过程
在视频解码器提取头部信息之前,包括PTS(显示时间标签)、SCR(系统参考时钟)、压缩视频数据流,PES层数据解析模块已经完成定位。这个块由微处理器的解码控制寄存器控制。如果PES层解码模式无效,压缩数据直接存放到SDRAM.
4.3 起始码搜索
待匹配的块起始码位于VASP的前端,对压缩数据流一字节一字节地处理。当微处理器要求起始码匹配时,起始码匹配逻辑开始搜索起始码,直到匹配成功。典型的起始码包括序列起始码、组起始码和图象起始码。起始码搜索分为两种:块搜索与非块搜索。在非块搜索中,即使找到了起始码,视频解码器仍然继续解码;在块搜索中,一旦发现起始码便停止解码过程。当需要快速解码,例如信道切换模式或静止图象捕捉模式时,采用序列起始码搜索方式。
4.4 视频解码
VASP和MSP执行MPEG1/2解码操作,包括VLC解码、反量化、半象素滤波、块重建、将重建块写入SDRAM帧存中。解码必须与显示同步。
VES6100的一般解码过程如表1所示。处于同一列中的事件同时处理。由表可见,解码顺序与显示顺序并不一致。
表1 VES6100的一般解码过程
Time | t0 | t1 | t2 | t3 | t4 | t5 | t6 | t7 | t8 | t9 | t10 |
Field | T | B | T | B | T | B | T | B | T | B | T |
Decode | P3 | B1 | B1 | B2 | B2 | P6 | P6 | B4 | B4 | B5 | B5 |
Display | I0 | I0 | B1 | B1 | B2 | B2 | P3 | P3 | B4 | B4 | B5 |
4.5 视频输出
MCB将存储在SDRAM中的显示帧传送到视频处理器。视频处理器将4:2:0的解码格式转换成NTSC/PAL CCIR601格式。
4.6 视频流错误掩蔽
VES6100能检测出视频流中的下列错误:
·非法语法;
·8×8块中,系数数目大于64;
·数据流中的误码;
·宏块序号错。
VES6100一旦检测出这些错误,便采取掩蔽措施重建宏块(复制前一帧的相应宏块),直到检测到下一个片(slice)起始码或图象起始码。如果压缩数据流中有掩蔽矢量,它将作为重建宏块的参考,否则利用0值运动矢量。如果宏块序号错误,VES6100丢弃数据直至检测到图象起始码,继续正常解码。
5 音频和视频的同步
实现视频和音频同步的基本思想是从解码端恢复出一个与编码端一致的时钟。而视频的PTS和音频的PTS是基于同一时基的,所以,若视频PTS与系统时钟同步,音频PTS也与时钟同步的话,则视频和音频就同步。
VES6100从码流中获取PCR(程序参考时钟)信息,并用它们调整解码端的一个27MHz的压控晶振,得到与编码端一致的系统时钟。这个时钟被300分频后,作为一个90kHz的局部计数器的工作频率,并用得到的个PTS值作为这个计数器的初始值,在输出图象和声音时,这个计数器的值表示了当前帧的实际输出时间。这个时间可与期望的输出时间(PTS)相比,判断是否同步,确定同步措施。
VES6100有两种音频和视频同步模式:自动模式和手动模式。这两种同步模式都由内存控制块管理。同步算法基于MCB中的SCR(系统参考时钟)和PTS两个参量。SCR与PCR类似,也是将比特流本身的时序编码的时间标签,也可从同一道程序的视频和音频PTS值所用的共同时间基点推出。三个相关的寄存器是:PTS_audio、PTS_video和SCR,每个33位长,其中SCR可作为90kHz下的一个计数器使用。
自动模式又分为两种:
(1)以系统流作为同步基准时,SCR作为标准时钟,视频和音频的PTS和SCR进行比较。当PTS和SCR的差大于显示时间时,产生同步信号,跳过或重复当前单元(视频为1帧,音频为2×32样本/通道)。这是机顶盒的默认模式。
(2)以音频流作为同步基准时,音频的PTS作为标准时钟。视频PTS与音频PTS作比较,当这二个PTS之差超过一帧图象的显示时间时,产生视频同步信号。
手动模式:在这种模式下,音频和视频解码自由运行,直到微处理器发出skip/repeat命令或提供音频PTS和视频PTS以及PCR时,才停止工作。
自动模式和手动模式的不同点在于PTS的来源。在自动模式下,PTS从MPEG 2码流中提取出来或来自于外部时钟;在手动模式下,微处理器提供PTS.
6 软件设计
软件的编程用ARM公司的ARM ANSI C语言结合ARM汇编语言来完成。主要包括VES6100和VES2700中各个寄存器的设置,VES2700对各个外设的控制和协调,OSD的编写,大部分功能可以利用API函数来实现。软件的调试可以通过JTAG口进行,将硬件电路板与计算机连接起来,便可以在屏幕上观察到存储器的分配情况,寄存器的当前值,以及软件的执行情况。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。