基于FPGA的视频监控.pdf

上传人:wj 文档编号:14655337 上传时间:2023-06-25 格式:PDF 页数:21 大小:763.76KB
下载 相关 举报
基于FPGA的视频监控.pdf_第1页
第1页 / 共21页
基于FPGA的视频监控.pdf_第2页
第2页 / 共21页
基于FPGA的视频监控.pdf_第3页
第3页 / 共21页
基于FPGA的视频监控.pdf_第4页
第4页 / 共21页
基于FPGA的视频监控.pdf_第5页
第5页 / 共21页
基于FPGA的视频监控.pdf_第6页
第6页 / 共21页
基于FPGA的视频监控.pdf_第7页
第7页 / 共21页
基于FPGA的视频监控.pdf_第8页
第8页 / 共21页
基于FPGA的视频监控.pdf_第9页
第9页 / 共21页
基于FPGA的视频监控.pdf_第10页
第10页 / 共21页
基于FPGA的视频监控.pdf_第11页
第11页 / 共21页
基于FPGA的视频监控.pdf_第12页
第12页 / 共21页
基于FPGA的视频监控.pdf_第13页
第13页 / 共21页
基于FPGA的视频监控.pdf_第14页
第14页 / 共21页
基于FPGA的视频监控.pdf_第15页
第15页 / 共21页
基于FPGA的视频监控.pdf_第16页
第16页 / 共21页
基于FPGA的视频监控.pdf_第17页
第17页 / 共21页
基于FPGA的视频监控.pdf_第18页
第18页 / 共21页
基于FPGA的视频监控.pdf_第19页
第19页 / 共21页
基于FPGA的视频监控.pdf_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于FPGA的视频监控.pdf

《基于FPGA的视频监控.pdf》由会员分享,可在线阅读,更多相关《基于FPGA的视频监控.pdf(21页珍藏版)》请在冰点文库上搜索。

基于FPGA的视频监控.pdf

基于FPGA的视频监控在工业系统中,很多仪器和设备都需要实时监控其运行状态,由于工业环境很多情况下并不适合人工长期现场值守,因此往往选择使用视频监控设备来将工业环境中的情况实时采集到监控室,由专人统一来监视,保证对工业环境中仪器设备运行情况的实时掌握。

目前,已有视频监控系统采用的方案主要分为4种,分别为采用ARM或X86处理器的方案、DSP数字信号处理器的方案、专用视频监控集成芯片方案和使用FPGA方案。

基于ARM或X86处理器架构的视频监控方案应用相对成熟,开发简单,使用灵活,尤其是使用ARM处理器的方案,系统结构简单,成本低廉。

但是,无论是基于ARM或X86的方案,都存在着性能瓶颈以及可升级性较差的问题。

无法实现高速的或多通道的数据采集和同步显示。

DSP数字信号处理器以其卓越的数据运算性能,在图像数据处理方面有很高的效率和灵活性。

适用于需要对图像数据进行处理变换的应用中,但是,DSP本身数据带宽有限,当需要处理的数据总量达到一定的程度后,DSP由于其串行运算的本质,其性能也会出现瓶颈。

另外,一般DSP芯片的片上外设大多固定,扩展性有限,即可升级性不强,而且,能够实现视频图像采集和处理的DSP芯片,成本都相对较高。

专用视频监控集成芯片专为视频监控应用而开发,在性能和成本上有非常大的优势,适合大规模的应用。

但是,由于是专用集成芯片,其功能单一,性能固定,因此扩展性和升级性较差,该方案主要适用于功能明确且成本敏感的应用。

采用FPGA的方案,拥有很高的数据带宽和扩展性。

另外,由于FPGA拥有强大的并行数据处理能力,在数据采集、处理、存储以及传输上都有非常高的实时性,而且,由于FPGA属于通用可编程逻辑器件,能够在不改变本身芯片硬件结构的情况下大幅度修改设计功能,因此具有非常高的扩展性和可升级特性。

从理论上,只要FPGA资源足够多,单颗FPGA芯片就能实现多通道的视频采集、存储和显示。

只是,相对于采用ARM的方案,FPGA方案成本更高一些。

考虑工业环境的视频监控主要目的是为了实时了解仪器设备的运行状态,对图像数据的处理并无较高要求。

另外作为仪器设备,可能工作在较高的速度,即设备动作较快,因此,要求能够通过摄像头快速采集图像数据,并实时显示。

而且,工业环境中,经常存在多台设备需要同时监控,即需要多通道图像数据同步采集和显示。

综合考虑,确定采用以FPGA作为监控系统处理器的方案。

FPGA历史与发展介绍,以及使用FPGA开发产品的优势,大约200字完整的FPGA开发流程包括方案确立、模块划分、设计输入、设计验证、板级调试等步骤。

其中,设计验证是整个FPGA系统开发中最为重要的一步,只有进行完整设的计验证,才能确保所设计系统的稳定可靠。

因此,本系统,也采用专业的fpga设计验证工具modelsim来进行设计验证。

modelsim历史发展与介绍,大约100到150字。

基于FPGA的视频监控系统方案设计:

一个简单的视频监控系统包括图像数据采集、图像数据存储和图像数据的显示。

而图像数据采集根据所使用传感器的不同,分为使用CCD图像传感器和使用CMOS图像传感器方案。

图像数据存储也根据数据量的大小和数据存储速度的快慢,可使用静态随机读写存储器(SRAM)、动态刷新随机存储器(SDRAM)和双速率动态刷新随机存储器(DDRSDRAM)。

图像数据的显示根据显示设备的不同,分为通用VGA接口显示器和LCD液晶显示器。

接下来,就通过分析对比各部分实现方案的特点,并结合本系统的实际需求,最终确定本视频监控系统的实施方案。

图像图像传感器传感器:

在视频监控系统中,图像传感器选择直接决定了系统的各方面性能。

而图像传感器根据成像器件的不同,主要可分为电荷耦合器件(CCD)和互补金属氧化物半导体(CMOS)两类。

其中,CCD摄像头发展较早,技术较为成熟。

CCD使用一种高感光度的半导体材料制成,能把光线转变成电荷,通过模数转换器芯片转换成数字信号。

CCD由许多感光单位组成,通常以百万像素为单位。

当CCD表面受到光线照射时,每个感光单位会将电荷反映在组件上,所有的感光单位所产生的信号加在一起,就构成了一幅完整的画面。

CMOS和CCD一样,也是一种可记录光线变化的半导体。

CMOS的制造技术和一般计算机芯片没什么差别,主要是利用硅和锗这两种元素所做成的半导体,使其在CMOS上共存着带N(带电)和P(带+电)级的半导体,这两个互补效应所产生的电流即可被处理芯片纪录和解读成影像。

CCD摄像头根据成像方式,又可分为线性CCD和矩阵式CCD,线性CCD用于高分辨率的静态照相机,它每次只拍摄图象的一条线,这与平板扫描仪扫描照片的方法相同。

这种CCD精度高,速度慢,无法用来拍摄移动的物体,也无法使用闪光灯,矩阵式CCD的每一个光敏元件代表图象中的一个像素,当快门打开时,整个图象一次同时曝光。

通常矩阵式CCD用来处理色彩的方法有两种。

一种是将彩色滤镜嵌在CCD矩阵中,相近的像素使用不同颜色的滤镜。

典型的有G-R-G-B和C-Y-G-M两种排列方式。

这两种排列方式成像的原理都是一样的。

在记录照片的过程中,相机内部的微处理器从每个像素获得信号,将相邻的四个点合成为一个像素点。

该方法允许瞬间曝光,微处理器能运算地非常快。

这就是大多数数码相机CCD的成像原理。

因为不是同点合成,其中包含着数学计算,因此这种CCD最大的缺陷是所产生的图象总是无法达到如刀刻般的锐利。

而CMOS摄像头成像速度快,且功耗低。

然而,CMOS的缺点就是太容易出现杂点,这主要是因为早期的设计使CMOS在处理快速变化的影像时,由于电流变化过于频繁而会产生过热的现象。

现在,随着CMOS技术工艺的不断发展,以及相关消噪技术的进步,CMOS摄像头的成像效果已经非常接近CCD摄像头了。

通过以上分析,并结合本系统应用背景,因此选择成像速度快,分辨率高,控制简单的CMOS摄像头作为本系统的图像采集传感器,具体型号为镁光公司的MT9P001型500W像素CMOS图像传感器。

数据数据存储器存储器:

目前,常用的存储器主要分为静态随机读写存储器(SRAM)、动态刷新随机存储器(SDRAM)和双速率动态刷新随机存储器(DDRSDRAM)。

静态随机存储器采用CMOS技术来存储数据,因此存取速度快,数据在不断电的情况下能够长时间自我保持而不出现丢失。

但是,由于采用CMOS技术,每存储一位数据,需要6个晶体管,导致成本很高,且功耗很大。

因此,一般的静态随机读写存储器都具有高成本、低容量的缺点,不适用于图像数据存储这样需要大容量存储器的场合。

动态刷新随机存储器使用电容的充放电来存储数据,一个MN列的存储块,最少只需要2个晶体管和MN个存储电容即可实现,成本很低。

但是由于电容的自放电特性,每个电容存储的数据在经过一段时间的自放电以后,总是趋向于0。

因此,为了保证电容中存储的数据的正确性,必须在电容放电到达一定量之前,对电容进行读取和写回操作,该操作被称为刷新,因为刷新需要占用若干个工作周期,因此,SDRAM的读写效率相对SRAM要低一些。

在SDRAM中,数据在工作时钟的上升沿被锁定,因此,理论上工作时钟频率为Fclk,位宽为N的SDRAM一秒钟最多能够执行NFclk位的数据读写(不考虑读写潜伏期和动态刷新耗费的工作周期)。

再考虑上读写潜伏期和刷新周期,在很多应用中,这样的数据读写速度还是无法满足系统的要求,而双速率动态刷新随机存储器(DDRSDRAM)的出现正式为了解决SDRAM读写效率较低的问题。

所谓双速率动态刷新存储器,是指在DDRSDRAM工作时钟的上升沿和下降沿,都锁定数据。

因此,相对于SDRAM的只在时钟上升沿锁定数据,DDR通过在时钟的上升沿和下降沿均锁定数据,使数据读写速率提高了一倍。

因此,理论上工作时钟频率为Fclk,位宽为N的DDRSDRAM一秒钟最多能够执行2*NFclk位的数据读写(不考虑读写潜伏期和动态刷新耗费的工作周期)。

在本系统中,CMOS摄像头的工作时钟为50M,数据位宽为12bit,写入存储器所需总带宽约为600MB。

同时考虑能够实时显示图像数据,因此在存储器读取端,必须也需要有600MB的带宽,因此要求存储器的有效数据读写带宽至少为1200MB。

对于SDRAM,若工作时钟设定为100M,数据位宽选择32位,在不考虑读写潜伏期和刷新周期的情况下,理论带宽可达3200MB,远远高于CMOS摄像头数据写入带宽和显示器显示读取带宽之和。

考虑到DDRSDRAM的控制器设计较SDRAM的控制器设计要复杂的多,因此,在本设计中选用32位的SDRAM存储器,即可保证数据带宽,又可简化系统设计。

显示显示设备设备:

常用的显示设备包括模拟接口的VGA显示器和RGB数字接口的TFT液晶屏以及LVDS接口的高像素密度液晶屏,RGB数字接口的TFT液晶屏驱动原理与VGA接口的显示器,从FPGA驱动端来说,原理和时序非常相似,不同之处只是在于VGA接口传输的是模拟信号,只需要将RGB数字接口TFT屏的数据端口通过数模转换器(DAC)转换为模拟信号,即可接到VGA显示器上显示图像。

而LVDS接口则主要面向于分辨率大于或等于1024*768的数字接口屏。

在实际使用中,VGA接口通用性好,显示器可以和主机分开,之间通过线缆连接即可,因此这里选择使用VGA显示器来显示图像数据。

在驱动VGA进行图像数据显示的时候,就需要将FPGA端的RGB数字信号进行数模转换。

为了保证图像数据还原的可靠性,这里选择使用一片专用的视频转换DAC芯片ADV7123。

ADV7123是一片10bit三通道同步电流输出型DAC,最高可支持1600*1200100Hz的视频数据转换。

该芯片内部包含多个控制寄存器,通过配置寄存器,可以使其工作在不同的分辨率和帧速下,配置寄存器接口使用和CMOS图像传感器相同的IIC接口。

本系统结构本系统使用FPGA芯片,实现了CMOS摄像头的数据采集和存贮,并将视频数据通过VGA显示器实时显示出来,本系统成本低廉,性能稳定。

系统架构如下所示:

CMOScaptureRAW2RGBIICconfigurationMultportsdramVGAcontrolCMOSSensorVGADACSDRAMSDASCLMCLKPCLLVALFVALDATRGBVGA_HSVGA_VSDATADRVGA_VS其中,CMOSSensor为图像传感器,负责进行图像数据的采集,并将图像数据以Bayer格式输入FPGA中。

CMOScapture为图像数据的接收模块,负责解码图像传感器的数据传输协议并最终获得RAW格式的图像数据。

由于CMOS摄像头输出的数据为RAW格式,而最终VGA显示时的数据格式为RGB格式,因此需要对图像的数据格式进行RAW2RGB的格式转换。

因此,这里使用一个RAW2RGB模块实现两种数据格式间的转换。

multportsdram为多端口随机读取动态刷新存储器(SDRAM)的控制器。

该控制器负责将RAW2RGB模块输出的数据流写入外部大容量存储器SDRAM芯片中,以实现图像数据的存储。

VGAcontrol为VGA显示器控制器,该控制器执行将SDRAM中的数据读取出来并送入VGA输出DAC,以最终将图像数据显示在VGA显示器上。

IICconfiguration模块为基于IIC协议的外设寄存器配置模块,因为CMOSsensor和VGADAC内部都有若干个控制寄存器需要在使用之前进行配置,而为了简化系统设计,CMOSsensor和VGADAC都统一提供了标准的基于IIC协议的配置接口。

因此,这里使用了一个IIC配置模块来配置CMOSsensor和VGADAC内部的控制寄存器,以使这些模块能够工作在指定的工作模式下。

通过以上分析,确立了系统的架构和设计所采用的器件,接下来,就针对每个模块的需求,具体讲述设计原理和实现方法。

CMOSCMOSCaptureCapture模块模块设计设计:

本系统中,使用500W像素的CMOS数字图像传感器MT9P001来实现图像的采集。

MT9P001是镁光公司推出的一款高像素图像传感器,图像传感部分由2752列和2004行组成。

其中,第16列至第2607列(共2592列)和第54列至第1997列(共1944列)组成的矩阵中的像素为图像有效像素,其余像素为黑边像素。

其像素分布结构如下表所示:

ColumnPixelType09Dark(10)1015Activeboundary(6)162,607Activeimage(2592)2,6082,617Activeboundary(10)2,6182,751Dark(134)列像素分布表RowPixelType049Dark(50)5053Activeboundary(4)541997Activeimage(1944)1,9982,001Activeboundary(4)2,0022003Dark

(2)行像素分布表以上像素矩阵排布结构如下图所示:

在实际使用时,我们可以根据具体应用,灵活配置CMOS寄存器来选择性输出整个图像效数据的局部,例如,我们可以选择输出ActiveImage区域的第0到799列与第0到599行组成的矩阵的数据,这样,就能够较好的适配显示器分辨率,在保证数据清晰度的情况下,减小数据传输总量,以提升图像帧率。

在工业应用中,监控用显示器所使用的物理分辨率主要为800*600,而从实际对应关系上来说,显示器的每一个物理像素只能显示一个点,即虽然CMOS摄像头的像素为2592*1544,但是实际显示的时候,VGA显示器却只能显示其中的800*600个像素,因此,我们就没有必要全部读取摄像头中的有效图像数据,因为即使采集了所有数据,但在最终显示时,也不能全部显示。

所以,这里我们选择只读取CMOS中的800*600个点的数据。

这样,在保证图像清晰度的情况下,可以节约存储器占用,同时提高图像刷新速率。

在具体接收CMOS图像传感器发送的数据时,需要依照CMOS数据流的传输格式来进行接收,下图为CMOS图像传感器传输图像数据的控制时序:

由图可知,数据总线D上的数据只有在帧数据有效信号(FVAL)和线数据有效信号(LVAL)同时为高时才有效。

因此,我们在实际接收时,只需要将CMOS摄像头的相关寄存器配置好后,在像素时钟PIXCLK的节拍下,依次读取FVAL和LVAL信号都为高时的数据总线上的数据,即为有效数据图像数据。

同时,因为图像的数据内容输出也是有先后顺序的,因此,我们必须将每一个点对应的坐标也输送出去,这样方便我们能够将采集到的每一个点都与其位置一一对应上。

根据以上分析,设计图像传感器数据捕获模块如下图所示:

CMOS_CaptureiCLKiRSTiENDiSTARTiLVALiFVALiDATA11:

0oDATA11:

0oDVALoX_Cont15:

0oY_Cont15:

0oFrame_Cont31:

0每个端口的功能如下所示:

端口名端口功能iCLK像素时钟,所有数据同步于该时钟信号iRST系统复位,低电平则该数据捕获模块进入复位状态iSTART开始采集信号,当该信号为高时,使能系统捕获图像数据iEND停止捕获数据信号,当该信号为高时,系统停止捕获图像数据iLVAL线数据有效信号iFVAL帧数据有效信号iDATA11:

0输入CMOS图像传感器数据线oDATA11:

0输出捕获到的图像数据oDVAL输出数据有效标志oX_Cont15:

0输出数据的列数据oY_Cont15:

0输出数据的行数据oFrame_Cont31:

0已捕获数据帧数量实现行列计数的相关代码如下图所示:

057always(posedgeiCLKornegedgeiRST)058begin059if(!

iRST)060begin061Pre_FVAL=0;062mCMOS_FVAL=0;063mCMOS_LVAL=0;064065X_Cont=0;066Y_Cont=0;067end068else069begin070Pre_FVAL=iFVAL;071if(Pre_FVAL,iFVAL=2b01)&mSTART)072mCMOS_FVAL=1;073elseif(Pre_FVAL,iFVAL=2b10)074mCMOS_FVAL=0;075mCMOS_LVAL=iLVAL;076if(mCMOS_FVAL)077begin078if(mCMOS_LVAL)079begin080if(X_Cont(COLUMN_WIDTH-1)081X_Cont=X_Cont+1;082else083begin084X_Cont=0;085Y_Cont=Y_Cont+1;086end087end088end089else090begin091X_Cont=0;092Y_Cont=0;093end094end095end对于列计数来说,只要帧有效信号和线有效信号为高电平,则每来一个像素时钟信号,列计数加一即可,如第76行至第81行所示。

当列计数计满设定的值以后,则行计数加一,从而实现行列的准确统计,如第80行至第85行所示。

此像素行列计数的值即可作为图像数据存储到存储器中的地址,从而实现图像数据与存储器地址的一一对应,避免像素内容在存储过程中出现地址偏移。

捕获模块在输出数据时,当输入的iFVAL和iLVAL信号不全为高时,输出数据是没有意义的,因此这些数据不能被使用和存储,为了正确告知下级模块数据是否有效,这里设置了一个输出数据有效标志信号oDVAL,当oDVAL为高时,则表明数据输出口上的数据有效,此时,这些数据可以被用来计算和存储。

CMOSCMOSCaptureCapture模块仿真验证模块仿真验证:

对于CMOSCapture的仿真,只需模拟CMOS图像传感器正常输出图像数据时的信号,提供iFVAL和iLVAL激励,观察CMOSCapture模块的5个输出信号是否与预期一致,则可验证模块设计的正确性。

下图为使用modelsim对CMOSCapture模块的仿真结果:

CMOS_Capture模块仿真整体效果上图为CMOS_Capture模块仿真整体效果,由图可知,只有iFVAL和iLVAL全部为高电平时oDVAL为高电平,每一个iFVAL的上升沿到来时,帧统计计数器oFrame_Cont加1,每个iLVAL的下降沿,oY_Cont加1。

oX_Cont变化的仿真结果如下图所示:

CMOS_Capture模块仿真局部效果由图可知,在iFVAL和iLVAL信号全部为高时,每个iCLK信号的上升沿,oX_Cont值加1,与设计预期一致。

通过以上仿真可知,CMOS_Capture设计时序与预期相符,因此能够正确的实现图像数据的捕获。

图像数据的正确捕获为系统的可靠性提供了保障,是整个系统设计的基础。

RAW2RGBRAW2RGB模块模块设计设计以上通过对CMOS_Capture模块的设计,实现了CMOS摄像头数据的正确采集。

MT9P001图像数据是以Bayer格式输出的。

所谓Bayer格式,即奇数行间隔输出绿色和红色分量,偶数行间隔输出绿色和蓝色分量,奇数列间隔输出绿色分量和蓝色分量,偶数列间隔输出红色分量和绿色分量,其输出数据格式如下图所示。

因此,在实际颜色提取时,需要通过数据转换,将相邻四个像素的数据通过插值算法合并为一个RGB像素颜色,此种转换算法名为RAW2RGB,这里取左上角四个像素点的数据为例,具体颜色转换算法如下所示:

G1RBG2保留相邻四个像素中的红色和蓝色分量,而对两个绿色分量求平均,得到新的绿色分量,此三种颜色分量组成一个新的RGB格式的像素,新的像素色彩组成如下所示:

R(G1+G2)/2B转换过程总述:

采用移位寄存器来实现行缓冲,CMOS_Capture模块接收到的Bayer格式的数据(bayercolorpattern),实时转换成标准的30位RGB数据并进行适当的下采样,以便于后继的图像处理及显示。

为了实现行数据缓冲,这里调用了一个altshift_taps的megafunction,altshift_taps可以作为数据移动寄存器组,对输入的数据实时进行移位缓存。

采集进来一系列像素点数据,因为需要同时对2行像素点同时进行处理时,因此需要共2个taps,每个taps数据宽度为图像每行像素点的个数(800)。

在格式转换时,通过读取当前数据的行列位置,从而获知该像素具体对应了G1、G2、R、B中的哪一个,然后将该值存入对应的寄存器,最后统一拼接后输出即可。

依据以上分析,设计模块如下所示:

RAW2RGBiCLKiRST_niData11:

0iDvaliMIRRORiX_Cont15:

0iY_Cont15:

0oDvaloRed11:

0oGreen11:

0oBlue11:

0模块的每个端口意义如下表所示端口名端口功能iCLK像素时钟,所有数据同步于该时钟信号iRST_n系统复位,低电平则该数据捕获模块进入复位状态iData11:

0来自CMOS_Capture模块捕获到的有效图像数据iDval来自CMOS_Capture模块图像数据有效标志信号iMIRROR图像镜像请求,为高则表示对图像进行镜像处理iX_Cont15:

0图像数据的列坐标iY_Cont15:

0图像数据的行坐标oDval转换后的结果输出有效标志信号oRed11:

0转换得到的RGB图像的红色分量oGreen11:

0转换得到的RGB图像的绿色分量oBlue11:

0转换得到的RGB图像的蓝色分量通过此模块,就能够实现将CMOS_capture模块输出的RAW格式的图像数据流转换为RGB格式,以便于进行存储和显示。

依据像素数据坐标将数据提取到相应RGB寄存器中的代码如下所示:

049Line_BufferL1(050.clken(iDval),051.clock(iCLK),052.shiftin(iData),053.shiftout(),054.taps(wData0,wData1)055);056057always(posedgeiCLKornegedgeiRST_n)058if(!

iRST_n)059dval_ctrl1)061dval_ctrl=1;062else063dval_ctrl=0;064065always(posedgedval_ctrlornegedgeiRST_n)066if(!

iRST_n)067dval_ctrl_en=0;068else069dval_ctrl_en=1;070071assignoDval=dval_ctrl_en?

rDval:

1b0;072073assigndata_control=iY_Cont0,iMIRROR?

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2