严 飞,刘银萍,刘文娟,孔剑辉
(1.南京信息工程大学 信息与控制学院,江苏 南京 210044;2.南京信息工程大学 大气物理学院,江苏 南京 210044)
随着信息传输方式逐渐被视频取代,视频图像信息具有内容丰富,直观方便等特点[1-3]。由于视频传输要求的实时性高、图像容量大,对传输通道的带宽要求较高,因此传统的数据接口已无法满足高清视频传输的需求。而随着片上系统的应用,FPGA发挥着越来越重要的作用[4-5]。光纤视频传输[6-8]被广泛应用于道路交通安全、监控等方面。因此,在保证数据带宽的同时,利用光纤进行高质量的视频图像传输也显得尤为重要。
2013年,唐清善等人提出了一种基于FPGA的DVI视频光纤传输方案,在FPGA中实现了RGB和YUV的双向转换[9]。同年,廖加文针对大容量高清数字视频通过电缆实现远距离传输比较困难的缺点,提出了非压缩高清数字视频光纤传输设计方案[10]。2014年,孙风雷等人在研究视频图像传输技术的基本原理基础上,采用一种以FPGA为核心的高清视频图像光纤传输系统,通过HDMI接口输出高清视频图像[11]。与此同时,曾鹏飞采用信源编码技术,将行、场同步信号以及像素时钟信号编码插入到行消隐信号中发送,解决了需要大容量的外部SDRAM缓存的问题[12]。
综上所述,本文开展的基于FPGA的光纤视频传输系统设计,对高清视频的实时传输、信息显示、工业生产、安保监控等有着重要应用前景[13]。
本系统硬件组成如图1所示,主要包括带有GTP功能的FPGA、DDR3存储体、VGA接口、摄像头接口和常用通讯接口等[14-15]。GTP参考时钟为148.5 MHz,链路时钟取其20倍。VGA接口采用ADI公司的ADV7123芯片,内含3路10位D/A转换器,对输入的RGB数字信号进行模拟转换并输出VGA视频信号,最高支持1 080 p@60 Hz输出。
图1 系统硬件框图
光纤视频传输系统程序框图如图2所示,主要有摄像头选择模块,寄存器配置模块,图像采集模块,DDR读写模块,GTP数据发送收集模块,VGA显示模块等组成,这些构成了一个完整的光纤视频传输体系。
视频图像从摄像头传入FPGA后,图像先转换成16位的数据宽度,再存入到一个16位进32位出的FIFO中。当FIFO中的数据达到1行视频数据时,从FIFO 中取出数据后使用GTP的IP发送给外部的光模块1,光模1把电信号转换成光信号通过光纤传输到光模块2,光模块2又把光信号转换成电信号输入到FPGA的GTP接收,GTP接收到的数据需要做一个32位数据对齐之后,并解析出视频图像部分的数据,再把数据存入到32位进8位出的FIFO中。后面就是把图像传到DDR的缓存中,在DDR中经过帧缓存后,通过VGA接口在显示器上显示。
图2 光纤视频传输系统程序框图
摄像头采用OV5640,该芯片有上电时序的要求,在FPGA上电后等待一段时间,再使能配置OV5640寄存器,从而来满足OV5640这个时序的要求。OV5640的寄存器配置的程序在FPGA启动后调用I2C的通信程序对OV5640芯片的寄存器的进行参数设置, OV5640芯片输出为RGB565格式1280×720像素的图像。摄像头图像采集程序将从OV5640模组传来的8位图像转化为16位数据宽度产生 FIFO 的写信号。因为摄像头RGB565格式输出时,一个像数需要16位的数据(红5位,绿色6位,蓝色5位),需要分两8 bit输出,这样占2个时钟。所以如果是720 P的图像,一行数据需要有1 280×2个PCLK时钟。
图3 单板摄像头视频采集与显示框图
在利用光纤传输之前,首先要验证单板的视频显示程序,即从摄像头采集图像到VGA显示的整个数据通道的顺畅,如图3所示。在存储采集的视频图像到DDR之前或者从DDR读出视频图像到VGA显示模块的时候,需要缓存数据。所以在FIFO控制模块里实例化了两个FIFO,一个数据写FIFO,用来缓存从摄像头采集的数据;一个数据读FIFO,用来存储从DDR读出的数据。本实验中,向 DDR 写入的数据首先存放在写 FIFO中,从DDR中读出的数据首先存放在读FIFO中。
Xilinx公司的ARTIX-7系列FPGA(XC7A 100TFGG484)集成了四路GTP串行高速收发器,每通道的收发速度为500 Mbit·s-1~6.6 Gbit·s-1之间,本系统采用2.97 Gbit·s-1,经计算单路GTP收发器满足1 080 P高清视频的传输。
摄像头采集数据后,将接收到的视频图像存放到16位进,32位出的FIFO中,通过一个状态机来发送视频图像的数据。首先一帧图像开始传输前,GTP会发送帧同步信号;再判断这个FIFO中的数据量,如果FIFO内的数据还没有一行的视频数据,GTP则发送无用的数据,当FIFO内已经有一行视频的数据时,GTP会先发送行同步信号;然后再把这一行视频的数据通过GTP发送出去。一行数据发送完成,再重新判断FIFO内的数据量,FIFO数据量达到一行视频数据时,接着发送第二行视频图像。GTP数据发送一帧图像的流程如图4所示。
图4 一帧图像数据通过GTP发送的流程
所有的GTP发送的数据位数为32位,帧同步信号、行同步信号、无用数据定义如表1所示。
表1 GTP发送的数据定义
这些同步信号和无用数据的高24位数据是用户自己定义的,低8位"BC"是K28.5码控制字符。向GTP发送K28.5码控制字符时,需要拉高发送端控制信号的对应位,标示发送数据里的某个字节位为K码控制字。所以这里在向GTP发送同步信号和无用数据的时候,发送端控制信号信号设置为0001,发送视频数据的时候则置为0000。
GTP 收发器外部用户数据接口的宽度为32位,内部数据宽度为20位(8 B/10 B转换)。在实际测试过程中发现,发送的32位数据会有可能出现 16位的数据的移位,就是说发送的数据和接收到的数据会有16位的错位。因为在GTP发送同步信号和无用数据的时候加入了K码控制字,并且设置发送端控制信号为0001, 如果出现16位数据移位的情况,接收到的同步信号和无用数据时,K 码控制字也会跟着移位,发送端控制信号就会变成0100。所以在程序可以通过判断发送端控制信号的值来判断接收到的GTP数据是否移位,如果接收到的发送端控制信号为 0001,跟发送时一样,说明数据没有移位;如果接收到的为0100,说明存在数据移位,需要重新组合。
接收到的数据中只有一部分是视频图像的数据,其它则是帧同步,行同步和无用的数据,在解码时需要把视频图像的数据解析出来存入到一个32位进8位出的FIFO中。程序的一个功能是检测GTP数据中的行同步信号,如果接收到行同步信号,就把后面接收的一行视频数据存放到 FIFO中。程序的另一个功能是恢复视频图像的帧同步信号,如果接收到帧同步信号,则置位视频图像的帧信号。另外模块中会判断FIFO中存入的视频数据,如果FIFO内的数据量大于一行视频的数据,则产生FIFO的读使能信号,把FIFO的一行视频数据输出给外部接口模块。
系统验证时采用一路OV5640摄像头,FPGA为XC7A100T-2FGG484I,光模块采用SFP接口的HYM-P121-LID,光纤长度5 m,采集图像为摄像头前端场景,硬件连接如图5所示。视频大小为1280×800@60Hz,理论带宽B1约为1.025 Gbit·s-1,带宽计算如式(1)
B1=1 280×800×16 bit×60 Hz=1.025 Gbit·s-1
(1)
本系统中的单路串行链路带宽设置为2.97 Gbit·s-1,可以满足要求。实验结果如图6所示,表明该系统能够将摄像头采集到的图像,通过GTP高速收发器传输后在显示器上正常显示,满足视频图像光纤传输的要求。若将视频分辨率提高至1 920×1 080@60 Hz,按照式(2)计算,得其带宽B2约为1.99 Gbit·s-1,系统也满足要求
B2=1 920×1 080×16 bit×60 Hz=1.99 Gbit·s-1
(2)
综上所述,由于GTP高速收发器的最大带宽可以达到6.6 Gbit·s-1,在24位全彩高清1 080 P@60 Hz视频传输领域,该方案均可以满足。因为是无损传输,因此图像质量取决于前端视频采集的清晰度。
图5 硬件连接图
图6 实验结果
本文完成基于FPGA高速收发器的视频传输系统设计,采用光纤作为视频传输介质,将摄像头采集到的图像与视频,利用ARTIX7系列的FPGA进行视频的缓存、数据处理等操作,再通过FPGA的高速收发器进
行发送和接收,完成了将接收到的视频在显示器上显示的功能。该系统是利用单板GTP发送与接收进行测试,其稳定性还有待远距离的分离实验来测定。另外,从整个图像通道的传输质量和视频处理两方面入手,以提高最终图像的显示效果。
[1] 范文晶,王召利,王惠娟,等.基于FPGA的无损图像压缩算法实现[J].电子科技, 2016, 29(11):126-128.
[2] 常立博,王琨.图形处理器中图像处理单元的设计与实现[J].电子科技,2017,30(2):16-21.
[3] 马超,章明朝,李佩玥,等.基于FPGA的实时视频采集预处理系统设计[J].半导体光电,2015, 36(3):518-521.
[4] 杨帆,张皓,马新文,等.基于FPGA的图像处理系统[J].华中科技大学学报:自然科学版,2015(2):119-123.
[5] 任勇峰,张凯华,程海亮.基于FPGA的高速数据采集存储系统设计[J].电子器件, 2015(1):135-139.
[6] 李欣,管绍军,胡晓天.基于FPGA的光纤通信系统的设计与实现[J].电子设计工程, 2012,20(8):85-87.
[7] 王亚.基于FPGA的光纤式高速串行同步通信[J].淮海工学院学报:自然科学版, 2016,25(2):24-28.
[8] 沙启迪.基于FPGA的光纤通信数据传输技术研究[D].哈尔滨:哈尔滨工业大学,2015.
[9] 唐清善,李亚捷,郭丽莉.基于FPGA的DVI/VGA光纤传输系统设计[J].测控技术,2014,33(7):39-42.
[10] 廖加文.基于FPGA的高清视频光纤传输系统的研究与实现[D].西安:西安光学精密机械研究所,2014.
[11] 孙风雷,刘树昌,刘鹏,等.基于FPGA高清视频图像的光纤传输系统研究[J].吉林大学学报:信息科学版, 2014,32(2):125-130.
[12] 曾鹏飞.基于FPGA的光纤高清数字视频传输系统的研究[D].长沙:长沙理工大学,2014.
[13] 潘磊,葛中芹,庄建军,等.基于FPGA的HDMI视频流图像处理的系统设计[J].实验室研究与探索,2015,34(10):76-80.
[14] 明庭良,施展,涂宁.基于以太网的自动测试系统设计[J].电子科技,2017,30(1):126-130.
[15] 那彦,底鹏.音视频数据采集接口电路设计及实现[J].电子科技,2016,29(9):148-150.