基于FPGA的实时视频信号处理平台的设计
扫描二维码
随时随地手机看文章
摘要:提出一种基于FPGA的实时视频信号处理平台的设计方法,该系统接收低帧率数字YCbCr视频信号,对接收的视频信号进行格式和彩色空间转换、像素和,利用片外SDRAM存储器作为帧缓存且通过时序控制器进行帧率提高,最后通过VGA控制模块对图像信号进行像素放大并在VGA显示器上实时显示。整个设计使用Verilog HDL语言实现,采用Altera公司的EP2S60F1020C3N芯片作为核心器件并对功能进行了验证。
关键词:现场可编程逻辑门阵列;同步动态随机存储器;图像处理;视频图形阵列
一般视频处理后的实时显示终端不能脱离PC机的束缚,而且数字图像传感器输出的图像帧率也比较低,分辨率也随着半导体行业的发展有了很大的提高,因此为了输出的图像能直接在VGA显示器上显示,需要对图像进行帧率提升、彩色空间转换等处理。FPGA器件具有可重复编程的灵活性以及并行处理能力,并且随着微处理器、专用硬件单元、DSP算法以及IP核的嵌入使其功能越来越强大。本系统的设计是基于Altera公司的EP2S60系列的开发板,板上集成两片SDRAM存储芯片、视频输入接口和VGA输出接口。
1 系统方案
设计的实时视频信号处理显示平台总框图如图1所示。
CCD数字图像传感器口I输出分辨率为720×576,帧率为25 Hz的8位YChCr彩色空间信号,进入FPCA后,FPGA内部的图像处理模块将视频信号从YChCr信号转换成RGB空间信号,同时分辨率提升到1024*768,存储控制模块将帧数据存入SDRAM作为缓存,采用“乒乓”存储机制,然后通过同步VGA显示控制模块产生的60 Hz1024×768的行、场扫描时序把每帧图像的帧频从25 Hz提高到60 Hz并输出,经过DA和VGA接口后实时的显示在VGA显示器上。
2 系统内部模块设计
2.1 图像处理模块
图像处理部分内部功能模块如图2所示。
输入的8位图像信号以YCbCr(4:2:2)格式进入输入缓存FIFO,然后通过格式转换模块将8位的YCbCr信号转换为16位的YCbCr信号,方法为在连续两个时钟下读取两次8位的数据然后合并到一个16位寄存器中,接着将16位的YCbCr(4:2:2)格式信号采用临近差值算法生成24位的YCbCr(4:4:4)格式信号,再将24位的YCbCr格式信号根据CCIR-601标准转换到RGB(8:8:8)彩色空间,数字YCbCr彩色空间到RGB
彩色空间转换的公式为:
其中Y的取值范围是(16,240),Cb、Cr的取值范围是(16,235),所有运算均调用FPGA内部自带的乘法和实现。最后将24位的RGB彩色空间信号输出到缓存FIFO,供SDRAM存储使用。图像处理模块设计如图3所示。
2.2 存储控制模块
存储控制部分内部功能模块如图4所示。
写SDRAM存储模块判断缓存FIFO中的RGB信号即像素点数据长度满足720个时,向SDRAM控制器发出启动存储请求,然后SDRAM控制器从缓存FIFO中依次读取数据存入片外的SDRAM中,存576次后即为一帧图像的数据,在SDRAM的2个Bank中各存入一帧图像数据,采用乒乓存储机制进行对帧数据的读出操作。由于采集到的图像帧频为25 Hz,要提高到VGA显示的刷新频率60 Hz,因此时序发生器要控制读SDRAM存储模块对SDRAM的帧数据进行读出,平均每帧图像数据要读取的次数为2.4次,规定每5帧为一次循环,这5帧数据共读取12次,比例为2:3:2:3:2,同时,每帧的数据分576行次读出打入缓存FIFO,但每次均写入3行,此处是为后级帧放大做准备,只要FIFO中的数据为空时,就立刻打入帧图像的下3行数据。SDRAM控制器模块设计如图5所示。
2.3 VGA显示控制模块
VGA显示控制部分内部功能模块如图6所示。
VGA显示控制模块主要是产生满足分辨率为1 024x768的行频和场频,因此还要对720x576的分辨率进行放大,采用的方法是选择2个互质的整数m和n,使其比值m/n与给定的放大比例尽可能接近。720x7≈1 024x5,576x4≈768x3,因此水平方向的5个原始像素点放大为7个新像素点,垂直方向的3个原始像素点放大为4个新像素点,所以前一级每次存入缓存有3行数据,水平和垂直方向上的像素放大函数如下所示。
水平:f0=g0
f1=2/7 g0+5/7 g1
f2=4/7 g1+3/7 g2
f3=6/7 g2+1/7 g3
f4=1/7 g2+6/7 g3
f5=3/7 g3=4/7 g4
f6=6/7 g4+1/7 g5
垂直:f0=g0
f1=1/4 g0+3/4 g1
f2=2/4 g1+2/4 g2
f3=3/4 g2+1/4 g3
其中g表示原始输入的像素数据,f表示放大处理后输出的新像素数据。分辨率提高后的数据再写入下一级缓存FIFO,然后依次读入VGA控制模块,在像素时钟的同步下输出给DA进而通过VGA接口显示在屏幕上。VGA显示控制模块设计如图7所示。
2.4 视频输出效果图
图8所示为本系统采集处理后分辨率为1 024x768的视频图像截图。可以看出经FPGA处理后的图像比较清晰,可以满足一般的使用需求。
3 结论
本项目设计的基于FPGA的实时视频信号处理平台实现了输入图像的格式转换、彩色空间转换、帧率提高和像素放大等功能,整个数据流处理过程均在100 MHz的同步时钟下完成,达到了视频采集显示的实时性,且脱离了原始PC机的束缚,实现了系统的小型化,便于推广和应用。但是本设计也存在一些可以优化的方面,例如可以将图像输出分辨率设置成多种模式,通过外部按键根据用户使用需求来控制分辨率的大小,还可以将视频输入端改成多通道输入,对不同区域的视频信息进行切换显示或同时显示。