引言
人类接受信息中有70%是视频信息。相对于语音和文字信息来说,视频信息更直观,信息量更大,处理和传输技术也更为复杂。视频监控系统作为视频技术的一个应用领域,在军事安全等领域发挥着重要的作用。目前视频监控系统主要采用模拟和数字两种技术。数字视频技术不仅能减少视频传输引起的失真,还能对视频信息进行分析、识别及有效信息提取。因此随着数字技术的进步,数字视频监控将成为今后的发展方向。
数字视频监控的一项核心技术是视频压缩技术。视频信号包含大量的数据信息,通过压缩手段把信息数据量压下来,以压缩形式存储和传输,既紧缩了存储空间,又提高了通信干线的传输效率,同时也使计算机实时处理音频、视频信息,以保证播放出高质量的视频、音频节目成为可能。MPEG-2 标准是运动图像专家组于1995 年正式公布的。它的用处在于可以使运动视音频数据作为一种计算机可处理的数据形式,并且可以存储在各种存储媒体上,可以在现存或未来的网络上发送、接受,并且可以在现存或未来的广播信道上传播。本文讨论的就是一种采用MPEG-2 压缩标准的数字视频监控系统。
MPEG-2 视频数据压缩原理
MPEG-2 图像压缩的原理是利用了图像中的两种特性:空间相关性和时间相关性。利用离散余弦变换(DCT) 编码技术降低空间数据相关性;运动估计和预测技术降低邻近帧像素的时间相关性来实现帧间数据压缩。MPEG-2 基本编解码模型如图1 所示。图中虚线上半部分完成视频编码功能,虚线下半部分完成视频解码功能。
编码器中的预处理器对原始图像中的噪声进行过滤,并将图像分割成宏块。对于帧内编码,宏块经过DCT 变换、量化和变长编码后输出压缩的视频数据;对于帧间编码,运动估计对宏块的运动进行估测和补偿来减少图像的时序冗余;图像预测器根据参考帧来预测当前帧,两者之间的差值经过DCT变换、量化和变长编码后输出,由于差值较小可以使编码所需比特数减少很多;逆量化和IDCT的目的是为了完成参考帧的重现。解码器中变长解码、逆量化和IDCT重构帧内编码的图像,图像预测器根据参考帧和运动矢量完成帧间编码图像的重现。
图1 MPEG-2 编解码模型图
系统设计
系统硬件设计
系统总体结构
系统主要由两个部分组成:一是模拟视频数据解码和数字视频数据编码子系统。二是视频码流以太网传送子系统。此外还有电源子系统、JTAG调试子系统等,这里不做详述。系统的基本结构图如图2 所示。
图2 系统原理图
系统首先通过模拟摄像机将外部的信号转换为PAL 制的复合视频信号,然后模拟视频解码和数字视频编码子系统将模拟摄像机的PAL 制式复合视频信号压缩为MPEG-2 格式视频流,最后,DSP 控制器将视频流封包通过以太网传送子系统以百兆的带宽传送出去。
模拟视频解码和数字视频编码子系统
模拟视频解码部分的任务是对输入的PAL 制视频信号进行采样量化编码后,转换成标准数字视频信号。我们选用的PHILIPS 公司的SAA7114 芯片。SAA7114 是一种高性能的单片NTSC/PAL/SECAM复合视频解码器,低功耗、低价格、具有卓越的三线自适应梳状滤波器能克服传统滤波器的人工痕迹而保证全屏视频分辨率,具有灵活的像素端口,并具有外围电路简单和易于编程等优点。
在系统中, SAA7114将模拟信号解码后得到的信号转换为ITU-RBT.656 数字视频格式,可以与SAA6752 直接相连,如图3所示。系统中采用SAA7114的视频输出口为X-port作为数据输出口。X-port的信号分为以下几类:
a、数据信号XPD7-XPD0 :输出解码后的数据值;
b、时钟信号XCLK:作为系统参考时钟信号;
图3 SAA7114 与SAA6752 的接口
c、行同步信号XRH 和场同步信号XRV :当输出为行同步信号和场同步信号时,这两个信号有效;
d、XDQ 作为输出数据有效指示;
e、XDRI 控制X-port 是作为输入口还是输出口。
RTS0 输出奇数场或偶数场的标志位。
MPEG-2 视频编码部分是整个系统的关键部分,它将ITU-RBT.656格式的数据编码压缩为ISO/IEC 13818的MPEG2传输流(TS) 。这一部分选用的是PHILIPS 公司的SAA6752HS 芯片。它是一款高集成度低成本的单芯片音视频编码芯片,可以执行全部的视频编码、噪声滤波和运动估计的功能。另外,通过I2C 总线就能实现对SAA6752HS 控制,因此SAA6752HS 只需要从主控制处理器的I2C总线上传输少量设置编码的参数就可以使SAA6752HS 开始编码工作。SAA6752 与TMS320VC5502 主控DSP 的连接如图4 所示。
SAA6752 的输出接口各引脚功能如下:
a、PDO[7. . 0 ]输出数据;
b、PDIOCLK输出参考时钟,可以设为9MHz 或6. 75MHz ;
c、PDOAV 信号表示输出的是视频数据还是音频数据;
d、PDOVAL 信号表示输出的数据是否有效;
e、PDOSYNC 表示输出的是数据包的第一个字节。
图4 SAA6752HS 与TMS320VC5502 的连接图
需要说明的是,图4 中的移位寄存器、FIFO、计数器(模4) ,计数器2 (模47) 是用FPGA 实现。DSP 控制器我们选用的是TI 公司中的TMS320VC5502(‘5502) 芯片,它的核心电压只有1.2V ,功耗仅0. 05mW/MIPs ,性能达600MIPS。这款芯片尤其适合于数据速率高,运算量大,又要求低功耗的系统。同时TMS320VC5502 集成了丰富外围设备,比如32 位的外部内存接口(EMIF) ,可以与系统中的网卡连接;内部集成的I2C 总线接口,便于对Philips 的视频芯片进行控制。另外,它还对外提供JTAG口,这使系统的调试可依靠JTAG仿真器和TI 公司最新的DSP 开发平台CCS 而变得更为方便。
视频流以太网传送子系统
以太网接口部分主要用来将打好包的数据传到远程主机上, 我们使用的是SMSC 公司的LAN91C111 芯片,它是一块高性能非PCI 接口的10M/100M以太网接口的芯片。LAN91C111 采用的是一种流量I/O 的工作方式。所谓流量IO 方式曾经是为磁盘与处理器接口而设计的,它比ISA 的DMA 方式具有更高的效能而且能更方便的使用。LAN91C111 对数据的处理能力也很强,其理论上最大数据处理能力为320Mbit/s = 40MB/s。由于LAN91C111 具有MMU 功能使得整个系统具有较高的网络性能和较低的系统开销。
图5 LAN91C111 的接口图
由LAN91C111 组成的网络接口如图5 所示。LAN91C111 通过局部总线接口把CPU 传过来的数据,通过内部的MAC 控制器进行数据的封装,物理层收发器(PHY) 将数据传输到脉冲变压器上,这样由噪声产生的错误可以降至最低,保证数据的正确传输。同时,LAN91C111 的物理层收发器还能接收网络上的数据包,并且MAC 可以进行载波侦听、碰撞检测协议和CRC 校验功能;此外LAN91C111 还具有大的缓冲区可以提高整个电路的效率,LED控制器可以标识网络接口的状态。LAN91C111 的主机端的接口比较灵活,它可以支持异步或同步方式的传输,还可以支持非触发方式和触发方式(Burst mode) 的传输。为了提高系统的吞吐率,由DSP 向网卡传送数据时,通过DSP 的EMIF 接口,采用同步触发传输方式,并且使用直接32 位数据传输,数据不通过BIU ,直接写入网卡FIFO ,这样更为合理地实现TMS320VC5502 与LAN91C111 高速连接。
系统软件设计
本系统的软件包括两大部分,一是硬件驱动程序,二是控制逻辑设计。下面分而述之。
系统驱动程序设计
环境下进行的。CCS 界面简单明了,操作方便,功能强大,大大降低了开发的难度。系统的驱动程序由TMS320VC5502 初始化程序,SAA7114A ,SAA6752HS 和LAN91C111 的配置程序、数字视频MPEG2 码流接收存储封包程序、MPEG2 码流以太网发送程序和系统主控程序等多个模块组成。图6 为软件系统框图。
图6 软件系统框图
TMS32VC5502 的初始化程序完成对‘C5502 的堆栈和运行状态位,中断使能位的设置,以及DSP内核频率的设置。SAA7114 和SAA6752HS 的配置程序通过‘C5502 的I2C 接口完成对其的设置,使其能正常地进行模拟解码和数字编码。LAN91C111 的初始化程序完成对该芯片的一些寄存器设置,使其能正常运转起来。数字视频MPEG2 码流接收存储封包程序是通过‘C5502 将SAA6752HS 传过来的数据按照RTP 协议标准打成网络上的数据包,然后再通过MPEG2码流以太网发送程序将数据包发送出去。数据传输时都是使用的DMA 传输方式,这样可以节省大量的时间,提高系统运行的效率。
在整个驱动程序设计当中,时序的把握是十分关键的。比如SAA7114 的配置程序,当中需要用到I2C 总线,而I2C 总线对时序要求是相当严格的,如果在发出START 命令之后,不加上一定的时延,而立即传送数据,由于DSP 的速度太快,可能会造成前后数据的覆盖,导致程序出错。另外,由于系统是进行实时处理的,中断程序设计是必不可少的。在程序设计时有几个问题需要注意:
第一, 当外部中断信号不稳定时,比如波形前后跳动、毛刺过多等,都有可能造成能检测到中断,但无法进入中断服务程序的情况。
第二, 若将程序单步执行,这样会造成仿真器出错,无法检测到中断。
第三, 在修改两个中断矢量指针IVPD 和IVPH 之前,应确信:
a、禁止所有的可屏蔽中断( INTM= 1) 。这可以在修改中断矢量指针,使之指向新中断矢量之前,防止产生一个可屏蔽中断。
b、每个硬件非屏蔽中断对新旧IVPD 值分别有一个中断矢量和一个中断服务程序。这样在修改IVPD 过程中,产生一个硬件非屏蔽中断时,可以防止非法指令代码。
FPGA 逻辑设计
该系统中使用了一块Altera 公司的ACEXEP1K30QC208-3Q 型号的FPGA ,主要利用该FPGA实现SAA6752 与TMS320VC5502 之间的接口。如上SAA6752HS 与TMS320VC5502 的连接图4 所示,移位寄存器负责将SAA6752HS 输出的8 位数据方式扩展成32 位宽度,以提高数据的吞吐效率。通过时钟信号PDIOCLK、有效位信号PDOVAL 和音视频标志位PDOAV 来控制移位寄存器的工作。FIFO是一个宽度为32 位的缓冲器,TMS320VC5502 通过片选信号CE3 和读信号ARE/SRE/SDRE 控制对FIFO 数据的读操作。
当SAA6752HS 采用传送流的数据结构时,每读完4 个数据包(每个数据包为188个字节) , 计数器2 就会产生一次中断,TMS320VC5502 从FIFO 中读入这些数据包,完成信道编码后向网络上传输。FPGA 逻辑正是依据这一思想设计的。为了提升系统的稳定性,避免累积错误,该逻辑中采用了一种双FIFO 轮流切换的方法。在系统开始运行,只往FIFO1 里写,当写完4 个数据包,产生一次中断,通知DSP 来读数据;接下来,系统自动切换到往FIFO2 里写,此时DSP 同时在读FIFO1里的数据,直到往FIFO2 里写完4 个数据包(由于DSP 读数据的速度远远快于SAA6752 往FIFO 里写数据的速度,故此时FIFO1 已被读空) ,便又产生中断;接下来,DSP 读FIFO2 里的数据,同时往FIFO1里写,依次轮流切换。
图7 DIO 主模式下输出传输流分组的时序图
SAA6752 的输出采用DIO 主模式,其输出端口的时序如图7 所示,每个数据包包含188 个字节,这是MPEG2 传输流分组的特性。在MAX+PLUSII 下设计其逻辑,运行正常。
结束语
本文针对数字视频压缩及网络传输作了较为深入的研究,并针对嵌入式网络视频服务器的设计和实现作了初步而有益的探索,其中既有经验也有教训。由于时间及其它因素的限制,研究工作留有许多需要完善的地方。Non-PCI 结构网络接口性能的优化和客户端软件的具体实现及形成嵌入式网络视频服务器原理样机是我们下一步的目标。