基于SAA6752HS的嵌入式视频监控和传输系统设计

2010-12-20 15:04:07 来源:半导体器件应用网
引言
人类接受信息中有70%是视频信息。相对于语音和文字信息来说,视频信息更直观,信息量更大,处理和传输技术也更为复杂。视频监控系统作为视频技术的一个应用领域,在军事安全等领域发挥着重要的作用。目前视频监控系统主要采用模拟和数字两种技术。数字视频技术不仅能减少视频传输引起的失真,还能对视频信息进行分析、识别及有效信息提取。因此随着数字技术的进步,数字视频监控将成为今后的发展方向。
数字视频监控的一项核心技术是视频压缩技术。视频信号包含大量的数据信息,通过压缩手段把信息数据量压下来,以压缩形式存储和传输,既紧缩了存储空间,又提高了通信干线的传输效率,同时也使计算机实时处理音频、视频信息,以保证播放出高质量的视频、音频节目成为可能。MPEG-2标准是运动图像专家组于1995年正式公布的。它的用处在于可以使运动视音频数据作为一种计算机可处理的数据形式,并且可以存储在各种存储媒体上,可以在现存或未来的网络上发送、接受,并且可以在现存或未来的广播信道上传播。本文讨论的就是一种采用MPEG-2压缩标准的数字视频监控系统。
MPEG-2视频数据压缩原理
MPEG-2图像压缩的原理是利用了图像中的两种特性:空间相关性和时间相关性。利用离散余弦变换(DCT)编码技术降低空间数据相关性;运动估计和预测技术降低邻近帧像素的时间相关性来实现帧间数据压缩。MPEG-2基本编解码模型如图1所示。图中虚线上半部分完成视频编码功能,虚线下半部分完成视频解码功能。
编码器中的预处理器对原始图像中的噪声进行过滤,并将图像分割成宏块。对于帧内编码,宏块经过DCT变换、量化和变长编码后输出压缩的视频数据;对于帧间编码,运动估计对宏块的运动进行估测和补偿来减少图像的时序冗余;图像预测器根据参考帧来预测当前帧,两者之间的差值经过DCT变换、量化和变长编码后输出,由于差值较小可以使编码所需比特数减少很多;逆量化和IDCT的目的是为了完成参考帧的重现。解码器中变长解码、逆量化和IDCT重构帧内编码的图像,图像预测器根据参考帧和运动矢量完成帧间编码图像的重现。
系统设计
系统硬件设计
系统总体结构
系统主要由两个部分组成:一是模拟视频数据解码和数字视频数据编码子系统。二是视频码流以太网传送子系统。此外还有电源子系统、JTAG调试子系统等,这里不做详述。系统的基本结构图如图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:作为系统参考时钟信号;
c、行同步信号XRH和场同步信号XRV:当输出为行同步信号和场同步信号时,这两个信号有效;
d、XDQ作为输出数据有效指示;
e、XTRI控制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中的移位寄存器、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的工作方式。所谓流量I/O方式曾经是为磁盘与处理器接口而设计的,它比ISA的DMA 方式具有更高的效能而且能更方便的使用。LAN91C111对数据的处理能力也很强,其理论上最大数据处理能力为320Mbit/s = 40MB/s。由于LAN91C111具有MMU功能使得整个系统具有较高的网络性能和较低的系统开销。
由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为软件系统框图。
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里写,依次轮流切换。
SAA6752的输出采用DIO主模式,其输出端口的时序如图7所示,每个数据包包含188 个字节,这是MPEG2传输流分组的特性。在MAX+PLUSII下设计其逻辑,运行正常。
结束语
本文针对数字视频压缩及网络传输作了较为深入的研究,并针对嵌入式网络视频服务器的设计和实现作了初步而有益的探索,其中既有经验也有教训。由于时间及其它因素的限制,研究工作留有许多需要完善的地方。Non-PCI结构网络接口性能的优化和客户端软件的具体实现及形成嵌入式网络视频服务器原理样机是我们下一步的目标。
转载自《舰船电子工程》
本文为哔哥哔特资讯原创文章,未经允许和授权,不得转载,否则将严格追究法律责任;
Big-Bit 商务网

请使用微信扫码登陆

x
凌鸥学园天地 广告