董 青,朱洪翔,祁晓鹏
(中国飞行试验研究院,西安 710089)
基于FPGA视频合成系统设计与实现
董青,朱洪翔,祁晓鹏
(中国飞行试验研究院,西安710089)
为实现将输入的六路BT656视频无失真地合并成一路BT1120视频输出,采用将FPGA技术和视频合成系统相结合的设计方法,用verilog语言设计完成有效视频数据的抽取、SRAM乒乓操作以及FPGA对于视频的拼接处理方法;该系统由视频输入解码模块、存储模块、输出解码模块、I2C模块以及时钟管理模块组成;经算法仿真和逻辑综合,该设计可以实现视频合成的基本功能,满足视频监控系统的实时性要求.综合结果表明该设计占用FPGA片上逻辑资源少,系统运行频率高。
FPGA;视频合成;Verilog;实时性
随着社会文明的不断进步,现代电子技术、计算机技术、网络技术以及通信技术的不断发展,数字视频监控系统已经逐步发展成为主导现代安全防范系统的核心技术[1]。其中视频合成系统是安全监控领域的核心。然而数字视频监控系统在经历了几年的突飞猛进般的发展之后,逐渐显示出了其自身的一个非常严重的弊端,那就是处理速度慢,很难满足视频监控图像的实时性要求,该现象在处理分辨率较大的视频图像时表现得尤为突出。通过分析数字视频监控系统的组成原理可知,影响数字视频监控系统运行速度的一个关键因素就是视频合成系统。现有的视频合成系统不是在处理速度上满足不了实时性要求,就是在具体实现上和资源花费上有很严重的弊端。FPGA(field programmable gate array,现场可编程门阵列)器件具有并行处理速度高、集成度高、设计灵活等特点[2],本文提出了一种将FPGA技术和视频合成系统相结合的设计方法。
本文采用FPGA实现一个最多将输入的六路BT656视频无失真地合并成一路BT1120视频输出的视频合成系统。整个系统划分为视频输入解码模块、存储模块、输出解码模块、I2C模块以及时钟管理模块,使用verilog语言完成各个模块的设计,并对整个设计进行了算法仿真和逻辑综合。
本设计是将最多六路视频输入合并成一路视频输出,整体架构如图1所示。
图1 视频合成系统整体架构
本设计中使用了一块tvp5154和两块tvp5150视频解码芯片分别将输入的4路和2个1路模拟视频信号转换成标准的BT656视频数字信号。
输入解码模块主要是对输入的BT656视频信号按照BT656视频图像帧的结构进行解码,得出其中的有效数据,并将这些数据以每路视频为单位输出;数据进入存储模块,该模块将输入解码模块输入的视频数据按照一定的格式存入DDR2 SDRAM存储器,之后根据输出编码模块的读操作请求控制信号将相应的数据从DDR2 SDRAM存储器中取出并输出,在输出编码模块中按照BT1120视频图像的格式对合成后的图像进行编码,添加同步信号等数据后输出,完成视频的合成[3]。
本设计选用Xilinx公司出产的Spartan6系列XC6SLX75T型号FPGA,主要完成结构中的输入解码模块、存储模块、输出编码模块、时钟管理模块和I2C模块。
系统组成分别是信号调理及滤波放大单元、电压交直流变换单元、实时记录单元、采集编码单元、射频调制及遥测发射单元。
在本设计中输入解码模块、存储模块、输出解码模块、I2C模块以及时钟管理模块是由FPGA完成的,其中存储模块是整个设计的核心部分。
2.1时钟管理模块
时钟管理模块是整个设计的效率核心,其主要是通过分析整个设计的带宽资源、外部晶振时钟、输入视频格式、输出视频格式等因素,确定本设计中所有模块所需要的时钟信号,如图2所示。
图2 时钟管理模块
其中外部晶振时钟是由FPGA片外晶振提供的基准时钟,clk_in为输入解码模块中处理
2.2视频输入解码模块
如图3所示,输入解码模块主要包含有有效数据解码模块、输入缓存模块以及输入仲裁模块。
图3 输入解码模块原理框图
有效数据解码模块主要是从tvp5154和tvp5150输入的BT656视频信号中取出有效的视频图像数据,也就是从输入的858*525的数据中取出有效的720*480个数据[4]。
输入缓存模块主要是对每路输入的视频进行一次深度较大的缓存,保证DDR2 SDRAM存储器在处于忙状态(正在进行读操作或者写操作)时,每路视频输入的有效数据都不会丢失[5]。输出仲裁模块主要是合理地为六路视频分配访问DDR2 SDRAM存储器的时间,保证所有路输入视频对DDR2 SDRAM存储器的访问机率和时间长度基本相同。
2.3存储模块
如图4所示,存储模块主要包含有拼接模块、写数据存储缓存模块、写数据地址计算模块、读数据存储缓存模块、拆分模块、读数据地址计算模块以及控制模块等。
图4 存储模块原理图
拼接模块主要是为了能够满足DDR2 SDRAM的存储需求,以及DDR2 SDRAM存储控制器的类型,对输入的数据进行拼接处理。
写数据存储缓存模块主要是将拼接后产生的数据进行一次缓存,以便DDR2 SDRAM可以进行burst操作,连续将多个数据写入到DDR2 SDRAM中。
写数据地址计算模块主要是产生DDR2 SDRAM存储器写操作需要的所有地址信号。
读数据存储缓存模块主要是用来缓存连续从DDR2 SDRAM中读出的有效数据。
拆分模块主要是将从DDR2 SDRAM存储器中读出的数据进行一次拆分,以便输出的数据可以满足输出编码模块的需要。
读数据地址计算模块主要是产生DDR2 SDRAM存储器读操作需要的所有地址信号。
控制模块主要是对读操作和写操作进行仲裁控制,以保证读写操作可以协调进行,既不会丢失输入的数据,又不会拖延输出的数据,并将数据结合正确的地址输出给DDR2 SDRAM存储控制器。
2.4视频输出编码模块
输出模块是整个视频拼接项目的最后一个部分。整体来看,输出模块所需要完成的任务是按照输出视频图像标准输出图像数据,并且是输出的视频图像数据是输入的六副图像数据按照固定的位置排列拼接成的,这也就是“视频拼接”的体现。整体输出模块的框架如图5所示。
图5 输出模块框架图
2.5I2C模块
I2C模块主要是产生一个I2C总线的从设备,以便外部处理器对本设计进行外部的控制。其基本原理如图6所示。
图6 I2C模块原理图
图6中,rst_sys信号为系统复位信号,clk_out为74.25MHz时钟,sda为外部处理器与I2C模块之间进行交互的数据线,scl为外部处理器输出给I2C模块的时钟信号,read_data[7:0]为处理器读内部寄存器的值,write_flag为处理器写内部寄存器的标志信号,write_data[7:0]为处理器写内部寄存器的值,sub_addr[7:0]为处理器写内部寄存器的地址信号,read_flag信号为处理器读内部寄存器的标志信号。
对本设计的仿真主要是将外部六路T656格式的视频源作为设计的输入,通过FPGA的处理之后在外部的ddr2 model中进行存储,之后再由FPGA部分将ddr2 model中的数据读出,并在经过处理之后输出BT1120格式的视频。下面是系统中各模块的仿真结果。
对输入仲裁模块的仿真如图7所示,将输入的六路视频数据都可以正常存入DDR2 SDRAM存储器中。
图7 输入仲裁模块仿真时序
对拼接模块的仿真如图8所示,实现将4个8位的数据拼接成一个32位的数据。
图8 拼接模块仿真时序
对控制模块读操作的仿真如图9所示,接收输入解码模块和输出编码模块传输的读写控制信号,进而正确地控制整个系统的读写操作。
图9 控制模块读操作仿真时序
对输出缓存模块的仿真如图10所示,仿真说明该模块的设计中将存储模块输出的数据进行一次深度较大的缓存的同时,将输出的数据由clk_sys时钟域转换到clk_out时钟域。
图10 输出缓存模块仿真时序
另外,对本设计进行仿真的时候,还将外部输入的六路视频数据按照顺序存储到6个外部文件中,等到将一帧图像输出完毕之后,将这几个外部文件通过文件比较工具进行比较,要保证这些文件相互之间在一定的规律下是相同。并且对最终的合成视频采用yuv工具进行播放,可以很直观地看到输入视频和经过合成产生的输出视频之间的关系。输入的一路BT656视频如图11所示。经本设计后输出视频如图12所示。
图11 输入的bt656视频图像
图12 仿真产生的bt1120视频图像
视频合成处理过程涉及到大量的数据交换,FPGA依赖其强大而灵活的逻辑控制功能和内部先进的快速通道互连,使其以超小的端端延时而在数据处理方面处于优势。系统在modelsim、QUARTUS II环境下进行仿真综合验证,实现了将六路BT656视频合成一路BT1120视频。对整个系统的逻辑综合后,该系统逻辑占用的片上资源小,运行频率可以达到233.809 MHz,满足设计的需要,保证对视频合成处理的实时性。
[1] 汪光华.智能安防—视频监控全面解析与实例分析[M].北京:机械工业出版社,2012.
[2] 胡瑶荣.基于FPGA的实时视频采集系统[J]电视技术,2005(2):81-83.
[3] 程治国.刘允才.多画面远程监控系统中关键技术的实现[J].微型电脑应用,2003,(19):14-16.
[4] 覃永新.陈文辉.章帆.实时视频数据采集的FPGA实现[J].电子技术应用,2009,31(9):46-48.
[5] 林辉.吴黎明.基于FPGA的实时视频处理平台设计[J].计算机测量与控制,2012,20(1): 196-201.
Design and Implementation of Video Synthesis System Based on FPGA
Dong Qing,Zhu Hongxiang,Qi Xiaopeng
(Chinese Flight Test Establishment,Xi′an710089,China)
The paper presents a design of compositing 6 channels of BT656 input video to one BT1120 output video undistorted by combining FPGA and video compositing system. Achieve the video data extraction,SRAM ping-pong operation and video splicing method by Verilog language. The video compositing system consists of video input decoding module,memory module,the output decoding module,I2C module and clock management module. After algorithm simulation and logic synthesis,the design can achieve the basic functions of video composition; meet the requirement of real-time video surveillance system. By the combined results we can know that this design occupied considerably less logic resources in the FPGA chip,and the entire design can run with very high frequency.
FPGA; video synthesis system; Verilog; real time
1671-4598(2016)04-0247-03DOI:10.16526/j.cnki.11-4762/tp.2016.04.071
TB114.3
A
2015-10-27;
2015-11-27。
董青(1988-),女,陕西西安人,硕士,工程师,主要从事飞行试验、测试系统方向的研究。
朱洪翔(1989-),男,江苏镇江人,硕士,工程师,主要从事飞行试验、测试系统方向的研究。