《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 设计应用 > 基于FPGA的高清视频采集与显示系统设计
基于FPGA的高清视频采集与显示系统设计
来源:电子技术应用2011年第6期
左事君1,2,刘新朝2,何巧珍2,傅兴华1
1.贵州大学 理学院电子科学系,贵州 贵阳550025; 2.深圳市艾立克电子有限公司,广州 深圳518034
摘要: 介绍了一种基于FPGA的视频采集与显示系统的设计。系统以FPGA为核心,配合高分辨率CCD图像传感器、ADC模数转换、视频编码器等,实现了高清视频实时采集与显示。详细阐述了色彩插值与色彩空间转换算法和BURST传输的FPGA硬件实现。测试表明,该系统运行良好,能够满足高清视频实时监控要求。
中图分类号: TN911.73
文献标识码: A
文章编号: 0258-7998(2011)06-0056-03
Design of high definition video acquisition and display system based on FPGA
Zuo Shijun1,2,Liu Xinchao2,He Qiaozhen2,Fu Xinghua1
1.The Electronic Science Department of Science College, Guizhou University, Guiyang 550025,China; 2.Shenzhen SAE Electronics Co., Ltd, Shenzhen 518034,China
Abstract: A design of high definition video acquisition and display system based on FPGA is presented. The system uses FPGA as the main processor cooperated with the high definition CCD image sensor, ADC analog-digital convertor, video coder etc. The real-time high definition video acquisition and display system is realized. The FPGA implementation of the Bayer interpolation, color space conversion and BURST transmission are detailedly delivered. The test shows that the system works well, can satisfy the real-time video surveillance requirement.
Key words : FPGA;Bayer interpolation;color space conversion;BURST transmission;NIOS processor


 近年来,高清网络摄像机席卷视频监控市场,传统的模拟摄像机也在寻找新的出路提升图像质量,采用非压缩方案的高清模拟摄像机成为首选。一般来说,非压缩方案的硬件平台有DSP或ASIC或FPGA。它们各有优缺点,FPGA是现场可编程门阵列,兼顾了实时性与灵活性,而且还可以内嵌CPU,因此适合用来做图像处理。FPGA的最大缺点是功耗太大,但本文设计的不是便携式消费电子,功耗问题可以不考虑。
    本文在数据传输方式上进行了创新,一般的视频采集与显示方案均需要使用2个DMA通道和2片SDRAM做缓存,本文采用自行编写的BURST模块传输,仅需要一片SDRAM,节省硬件开销的同时降低了PCB板的复杂度。
1 系统总体设计
    系统结构如图1所示。FPGA是整个系统的核心,本文采用的FPGA是Cyclone系列的EP3C16,它内部集成了15 408个逻辑单元,56个18×18乘法器,4个锁相环,CCD是SONY的ICX274,其有效分辨率是1 600×1 200,像素时钟是36 MHz,并且逐行扫描。SDRAM是Micron的MT48LC2M32B2,容量是2 M×32 bit,完全满足本设计的需要。

    首先ADC驱动CCD,CCD输出模拟视频,经过ADC转换成数字图像数据,然后通过FPGA内部的BURST传输写到SDRAM,在SDRAM内部开辟三段数据空间,如图2所示。其中code区域存放NIOS软件代码,bufferA和bufferB作为图像数据缓存,当图像数据写入bufferA时,可以读bufferB用于显示,当一帧数据采集完后,切换BURST传输地址,写入bufferB,此时读bufferA用于显示,这样数据可以不间断地采集和显示,这就是所谓乒乓操作。FPGA输出的视频数据经过编码器编码后形成串行码流,即SDI数据,然后经过同轴电缆线传输到具有SDI接口的显示器显示。其中,FLASH用来保存NIOS软件和FPGA硬件配置信息。

 

 

    在FPGA内部实现的模块如图3所示。其中VIDEO IP是根据AVALON总线规范编写的用户自定义模块,其余的模块均是ALTERA提供的标准模块,只需要在SoPC Builder中调用即可,因此本系统的设计主要是VIDEO IP的设计。

2 硬件模块设计
    硬件模块也就是VIDEO IP模块,图4所示为VIDEO IP顶层模块,主要由色彩插值、色彩空间转换、FIFO三部分构成。基于成本与工程复杂度的考虑,本系统为单CCD系统,在CCD表面覆盖一层色彩滤波阵列(CFA),该滤波阵列采用Bayer格式,如图5所示。从图中看出,每个像素点只有一个颜色通道,为了实现彩色显示,每个像素点必须要有RGB 3个通道,要通过色彩插值才能获得其余两个通道。本文处理的视频数据都是YCbCr格式,因此还需要经过色彩空间转换将RGB格式转换成YCbCr格式。由于NIOS处理器的位宽是32 bit,而YCbCr(4:2:2)是16 bit,所以YCbCr必须经过FIFO,当FIFO半满时,通过BURST传输写数据到SDRAM。值得注意的是:写入FIFO之前,YCbCr的格式是4:4:4,为了方便显示,必须转换成4:2:2,本设计采取了最简单的处理方式,就是Cb和Cr间隔采样。实验表明,这种处理不影响显示效果。

2.1 色彩插值算法
    考虑到本文设计的系统主要用于视频监控,因此采用最简单的插值算法,即双线性正交法。该算法的原理是在每个像素的领域取8个像素构成3×3阵列,该阵列中心的像素为待插值像素,其中一个色彩通道直接使用该像素的数据,另外两个色彩通道通过计算领域的2个或4个像素的平均值获得。从图6中看出,不同位置的像素四周情况不同,根据待插值像素所处位置总结出4种情况,如图6所示(设待插值像素坐标为(X,Y))。

    (a)R(X,Y)=[R(X,Y-1)+R(X,Y+1)]/2;
        G(X,Y)=G(X,Y);
        B(X,Y)=[B(X-1,Y)+B(X+1,Y)]/2;
    (b)R(X,Y)=[R(X-1,Y-1)+R(X+1,Y-1)+R(X-1,
                Y+1)+R(X+1,Y+1)]/4;
        G(X,Y)=[G(X-1,Y)+G(X,Y-1)+G(X+1,Y)+
                G(X,Y+1)]/4;
        B(X,Y)=B(X,Y);
    (c)R(X,Y)=R(X,Y);
        G(X,Y)= [G(X-1,Y)+G(X,Y-1)+G(X+1,Y)+
                G(X,Y+1)]/4;
        B(X,Y)= [B(X-1,Y-1)+B(X+1,Y-1)+
                B(X-1,Y+1)+B(X+1,Y+1)]/4;
    (d)R(X,Y)=[R(X-1,Y)+R(X+1,Y)]/2;
        G(X,Y)=G(X,Y);
        B(X,Y)= [B(X,Y-1)+B(X,Y+1)]/2
    由于要形成3×3阵列,因此FPGA硬件实现时,如图7所示为色彩插值模块,采用3个双口RAM分别保存3行数据,其中A、B、C、D、E、F表示寄存器,CCD的数据是在行场同步控制下从左到右、从上到下输出,在行场同步下先把第一行数据写到RAM1,写完第一行再切换到第二行,写完第二行再写第三行,第三行写完第3个数据即可读出RAM和各寄存器的数据做色彩插值,当第三行写完以后,第四行数据再写到RAM1,以此类推,一直循环直到一帧数据处理结束。值得注意的是:3×3阵列各行的数据是循环切换的,当RAM1保存的是3×3阵列的第一行数据时,3×3阵列第一行数据从左到右依次为B、A、RAM1,第二行数据从左到右依次D、C、RAM2,第三行数据从左到右依次为F、E、RAM3;当RAM2保存第一行数据时,第一行是D、C、RAM2,以后各行循环切换,不再赘述。

    3×3阵列的数据进入多路选择器,根据当前的位置以及所需的颜色通道选出4个像素进行相加求和运算。4个像素的获得方法是:当是1个像素时,复制3次;得到4个像素,当是2个像素求平均时,每个像素各复制1次;当是4个像素求平均时,不用复制。
    本文采用的CCD为SONY的ICX274,其有效分辨率为1 600×1 200,而用于显示的分辨率为1 280×720(720P),因此需要截取1 600×1 200为1 282×722进行插值,增加两行两列是为了做边界处理。
2.2 色彩空间转换
    本文采用的转换关系如下:
    Y=0.257×R+0.504×G+0.098×B+16
    Cb=-0.148×R-0.291×G+0.439×B+128
    Cr=0.439×R-0.368×G-0.071×B+128
    在FPGA实现时,以上转换关系要调用乘加单元,图8所示为乘加单元。其中为了保持数据的稳定,增加处理速度,增加了三级流水线,由于系数为小数,因此先左移8位,取整数后分别与R、G、B相乘,再右移8位输出,最后与整数相加输出YCbCr格式数据。

2.3 突发传输模块
    经过上述两步处理以后的视频数据即可用于显示,本文采用的突发传输方案如图9所示。视频数据首先经过FIFO缓冲,然后经过突发传输写到SDRAM,数据从SDRAM读出也是采用突发传输,读出的数据再经过另外的FIFO缓冲以后即可用于显示。突发(BURST)传输一次进行多个数据单元的传输,而不仅仅是把每个数据单元作为一次单独的传输。这样便提高了从端口的数据吞吐量,在主端口一次处理多个数据单元时,可以达到极高的效率。要使用突发传输就必须严格按照突发传输的规范设计AVALON总线接口。限于篇幅,本文不再详述AVALON总线接口。

3 测试结果
    本系统使用了48%的逻辑单元和40%的存储器,还有剩余的资源可以给系统增加更多的功能。该系统运行良好。
    本文设计的基于FPGA的高清视频处理系统,能在FPGA硬件设备中高速、高质量地对CCD传感器采集的Bayer图像进行色彩插值和色彩空间转换,经过SDI编码后能够实时显示。在本设计的基础上可以增加更多的功能以改变图像质量,例如3A算法(自动曝光,自动白平衡,自动聚焦)。

参考文献
[1] 周荣政.数码相机处理器设计及系统集成研究[D]:(博士学位论文).上海:复旦大学,2004.
[2] 孟楠.基于FPGA的彩色CCD图像信号处理技术的研究[D]:(硕士学位论文).西安:中国科学院西安光学精密机械研究所,2009.
[3] 梁海军,赵建.基于NIOSII的高分辨率图像采集系统设计[J].中国测试技术,2008,35(5).
[4] ITU-R BT.1120-7建议书.高清晰度电视演播室信号数字接口.国际电联无线电通信全会,2007.
[5] 王刚,张潋.基于FPGA的SOPC嵌入式系统设计与典型实例[M].北京:电子工业出版社,2009.

此内容为AET网站原创,未经授权禁止转载。