一种视频合成方法
扫描二维码
随时随地手机看文章
摘要:为了在接口有限的CPU中传输多路视频数字信号,介绍了一种视频合成方法,通过FPGA把4路BT.656标准D1格式的视频信号合成为1路BT.656 D1格式的视频信号。A/D转换以后的视频信号是标准D1格式的数字视频信号,FPGA产生读写信号控制双口RAM读写操作,先把D1格式的数字视频信号存进双口RAM,然后分时地读取4个RAM,把每路D1格式的数字视频信号缩小为CIF格式的数字视频信号,产生1个新的遵循BT.656标准的D1格式的视频信号。实践证明,此方法能有效地完成视频合成,达到设计要求。
关键词:视频合成;BT.656;FPGA;数字视频
在很多视频应用场景中,需要用到多路数字视频信号。一些视频微处理器的输入输出接口有限,无法传输多路数字视频信号,故对视频信号进行合成传输是一件十分有意义的事情,通用的做法是通过可编程逻辑器件进行合成。鉴于此,本文利用ITU—RBT.656特有的帧结构,论述了把4路ITU—R BT.656数字视频信号合成为1路ITU—R BT.656数字视频信号的方法。
1 系统设计方案
1.1 硬件框架
本设计通过FPGA实现4路ITU—R BT.656 D1格式的数字视频信号在1路视频通道中传输,在视频解码器(SAA7113)输出口与CPU的视频输入口之间增加了耦合合成逻辑,利用FPGA实现二者之间的耦合。硬件连接图如图1所示,FPGA与SAA7113通过双口RAM耦合,FPGA控制双口RAM的读写逻辑,分时地读取4个双口RAM中的数据,数字视频信号在FPGA里面进行合成。
SAA7113外部时钟源由24.768 M的晶体提供,内部PLL产生SAA7113所需要的工作时钟,VPO输出时钟频率是27 MHz。SAA7113的初始化由CPU通过两组I2C总线完成,每组的2个SAA7113使用不同的I2C从地址(通过设置RTS0)。4路模拟CVBS信号分别输入4片SAA7113的AI22.4片SAA7113的VPO总线分别连接到4个双口RAM的输入端,SAA7113的RTS0、RTS1、LLC连接到FPGA,FPGA根据视频同步信息控制双口RAM的读写时序,双口RAM的数据输出端以总线形式连接到FPGA。
1.2 主要器件选型
系统采用SAA7113作为A/D转换器件。SAA7113是一款视频解码芯片,通过配置内部寄存器可对4路模拟输入视频信号进行选择,输入信号可为4路CVBS或2路S视频(Y/C)信号,输出8位总线,为标准的ITU—R BT.656 YUV 4:2:2格式视频流,可以配置为10位模式。7113支持PAL、NTSC、SECAM多种制式,可在PAL、NTSC之间自动转换,自动检测场频(50 Hz或60 Hz)。对色度、亮度等的控制都是通过对相应寄存器写入不同的配置值来实现,寄存器的读写通过I2C总线进行。
本设计利用SAA7113 LLC时钟输出时钟信号27 MHz作为FPGA输入时钟源,利用片内PLL对其进行倍频,作为FPGA全局时钟使用,复位使用上电复位。
FPGA采用Xilinx公司的大容量、低成本、低功耗Spartan-3E系列XC3S250E。Spartan-3E家族优势主要是系统连接功能(包括物理并行I/O接口)和高带宽所需要的协议。Spartan-3E器件I/O管脚支持全部的SelectIO。支持18种通用I/O接口标准(PCI 64/66、PCI—X 100、RSDS和mini—LVDS等),以及普通DDR存储接口。提供每秒高达91亿次的乘累加(MAC)。内置18x18嵌入式乘法器可用来实现紧密的DSP结构(比如MAC引擎及自适应、全并行FIR滤波器)。SRL16移位寄存器逻辑和分布式存储器可用来实现高密度DSP结构,比如滤波器。其内核电压为12V和2.5 V,IO电压为3.3V。XC3S250E能提供25万个等效逻辑门,本产品选择PQ208封装,能够提供158个用户可用的输入/输出管脚。
在本设计中,XC3S250E的配置采用Slave Serial模式(M[2:0]=“111”),通过CPU把FPGA的配置数据通过同步串行接口写入FPGA。CPU使用GPIO管脚来模拟FPGA的串行配置时序。
为了方便FPGA的调试,在电路板上预留JTAG配置接口。
本设计需要对4路720x576的视频数据进行存储,每路存储空间为576行x720x2字节(在4:2:2的YCbCr信号中,一个点实际占用2字节(用亮度色差表示))。因此每路需要800 kB左右的存储空间。在设计中使用了4片1 MB容量的双口SRAM,用于缓存4路视频数据。
对FPGA模块,输入的5.0 V经1片TPS76833转换为3.3V,供FPGA VCCO使用。5.0V经1片RT8011变换后输出+2.6V/2A的电压,一路提供给XC3S250E的VCCAUX使用:另一路由RT9183 LDO变换为+1.2V/1.5A电压,为XC3S250E内核供电。输入的5.0V经一片TPS76833转换为3.3V,为其他器件供电。
2 视频合成描述
本文描述针对PAL制式,视频合成的具体实现思路为:4通道数据分别在水平方向/垂直方向各缩小1/2(由D1格式缩小为CIF格式):将4个CIF格式的数字视频流拼接成1个ITU—R BT.656数字视频流,和CPU(DSP)的视频口连接。通过FPGA对4路SAA7113输入数据的合成,可以同时传送4路352x288像素的视频信号。
模拟CVBS信号输入以后,经过相关处理(钳位、幅度放大、抗混叠滤波、A/D转换、YUV分离)电路之后,转换为BT.656 D的频数据流,从SAA7113输出的视频数据源是分辨率为720x576 D1格式的视频源。分辨率为720x576,每帧625行,每行1728个像素点。正好可以分割为4路252x288像素的视频源,多余空间通过数据8010来填充。
首先配置SAA7113相关寄存器,把RTS0、RTS1配置为HS、VS,FPGA根据HS、VS的时序关系并利用片内计数器对BT656数据流进行帧同步检测,找到准确的同步信息,确定定时信息。然后启动双口RAM写操作(写RAM地址与BT656的行场时序严格对应,约定一种映射关系,方便读操
作),再根据定时信息控制双口RAM读时序,把4路双口RAM读出端的数据线以总线方式连接在一起,FPGA分时地读取不同的RAM模块。4个RAM输给FPGA的数据是连续的,它们分时地来自不同的模块,填充到对应的区域,原来存放第一场数据的位置用来存放第1、第2路视频源,原来存放第二场数据的位置用来存放第3、第4路视频源,同时插入ITU—R BT.656帧格式的同步信息,其他位置插入固定数据8010,产生一路符合ITU—R BT.656标准的D1格式的数字视频流。
经过合成处理以后,FPGA可以为CPU提供1路符合ITU—R BT.656 D1格式的视频数据流。
3 实验分析及结语
对系统性能进行了较为完备的测试,通过视频编码器对输入合成视频数据进行测试。为了测试设计达到预定要求,选用了多种视频输入源进行测试,有测试运动快慢及剧烈程度的画面,有测试黑白图像效果的全黑与全白,还有测试亮度等级的阶梯图案等等。
实验结果表明,在4路D1图像输入时,平均信躁比达到33 dB以上,能实时地进行编码,解码图像画面清晰流畅,没有马赛克以及动画现象,色彩鲜艳,亮度分明。
本文论述了一种4路D1视频流合成1路D1格式视频流的方法,此设计完全能满足特定条件下的多路视频数据传输,符合实际应用场景,达到设计要求。