基于fpga的嵌入式图像监控系统设计

基于fpga的嵌入式图像监控系统设计

ID:33697841

大小:6.01 MB

页数:80页

时间:2019-02-28

上传者:U-6858
基于fpga的嵌入式图像监控系统设计_第1页
基于fpga的嵌入式图像监控系统设计_第2页
基于fpga的嵌入式图像监控系统设计_第3页
基于fpga的嵌入式图像监控系统设计_第4页
基于fpga的嵌入式图像监控系统设计_第5页
资源描述:

《基于fpga的嵌入式图像监控系统设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

大连理工大学硕士学位论文基于FPGA的嵌入式图像监控系统设计姓名:胡志海申请学位级别:硕士专业:电路与系统指导教师:王德君20081201 大连理工大学硕士学位论文摘要传统的数字视频监控系统大多基于PC平台,采用的是专用采集卡和存储设备,导致整机价格昂贵,体积庞大,往往局限于特定领域的应用。而嵌入式图像监控系统以其价格低、便携式等特点在普通家居安防、临时性作业等场所得到了越来越广泛的应用。本文针对基于FPGA的嵌入式图像监控系统进行研究,重点研究了动体检测和图像存储的开发方法。通过将开运算方法应用于动体检测,并结合人体信号检测,有效降低了检测的误判率。另外还针对FPGA平台研究了将采集数据转换成图像文件并保存到SD卡的方法。硬件板载电路采用FPGA作为主控制器,负责系统的调度控制。外接图像传感器、热释电红外传感器、SDRAM、SD卡、环境光亮检测器、RS232等器件,实现了图像的自动采集、检测、配置和存储。FPGA内部逻辑电路采用Verilog语言和原理图混合设计的方法,采用了结构化模块设计,包括图像采集和转换模块、帧缓存模块、动体检测模块、Nios系统模块以及显示模块。最后通过嵌入式C语言实现系统的Nios系统软件控制,并完成SD卡的驱动程序以及图像文件生成程序的设计。本文利用quartusII和modelsim对逻辑电路进行仿真,调试过程中利用在线逻辑分析仪Signaltap系统进行了严格的测试,保证了系统的可靠性。本系统采集速度达到60帧/秒,SD存储速度为3.7秒/帧,检测响应的仿真时间为120ms,检测的拒真率小于1%。由于采用FPGA单芯片控制方案,系统具有高集成度、可靠性及灵活性的特点。同时由于体积小、功耗低,可在很多应用场合替代传统基于PC的图像监控方案。关键词:动体检测;FPGA;嵌入式;图像监控 基于FPGA的嵌入式图像监控系统设计DesignofEmbededImageSurveillanceSystemBasedonFPGAAbstractMostofdigitalsurveillancesystemsareonthebasisofonPCplatforms,andduetoadoptingspecificacquirisitoncardaswellasstoragedevice,thewholesystemhashighpriceandlargesize.Soitisonlyappliedtosmalldistrict,bank,andsupermarket.ComparedwithPC-basedimagesurveillancesystem,theembededimagesurveillancesystemhasalreadyobtainedthemoreandmorewidespreadapplicationindomainssuchascommonhomesecurity,temporarycircumstancebecauseofitscheapnessandportability.Tllisthesispresentsasolutionofembededimagesurveillancesystem,especiallyfocusonmethodofmotiondetectionandimagesaving.ThepossibilityofmotiondetectionmisjudgementCanbereducedbyadoptingthebodydetectionandopenoperationtothemethod.FortheFPGAplatform,themethodofconversionofdatatoimageandimagesavingtoSDcardisdeveloped.FPGAiSadoptedasthemaincontrollerinthehandwarecircuitandisresponsibleformaintainingofthewholesystem.TheboardisconnectedtoCIS,PIR,SDcard,RS232,andlightdetectdevice.Thefunctionisrealizedofimagecollectingandconversion,motiondetectionandimagesaving.舢1circuitsisdesignedbyinbothVeriloglanguagecodeandschematicdiagram.T【lissytenlconsistsofimageacquirisitonmodule,framebuffer,motiondetection,bodysignaldetection,sdcard,Niossystemanddisplaymodule.AtlastthecontrolofNIOSandthedriverofSDcardaswellasimagecreatingprogramarerealizedinclanguage.ThelogiccircuitsCanbesimulatedinquartusIIandmodelsim,thetestisresortedtosignaltaptoensuretherobustnessofthesystem.Therateofacquisitioncarlreachto60framesbypersecond,TherateofSDstoragecarlreachto3.7framesbypersecond,ThesimulationresponsetimeofmotiondetecionCanreachat120ms.thepercentofdetectionrefusaliSsmallerthan1%.DuetothemaincircuitbeingintegratedintoaFPGAchip,thesystemischaracteristicofhighintegration,robustnessandflexibility.Becauseofitslowpowerdissipationanssmallsize,itCanreplacetheconventionalPC-baseedsurveillancesolutioninmanyfield.KeyWords:MotionDetection;FPGA;Embedded;Imagesurveillance—II— 大连理工大学学位论文独创性声明作者郑重声明:所呈交的学位论文,是本人在导师的指导下进行研究工作所取得的成果。尽我所知,除文中已经注明引用内容和致谢的地方外,本论文不包含其他个人或集体已经发表的研究成果,也不包含其他已申请学位或其他用途使用过的成果。与我一同工作的同志对本研究所做的贡献均已在论文中做了明确的说明并表示了谢意。学位论文题目:丝主秤崮囱纵.毋睡鉴缒;{毯氆茸作者签名:未姻日期:边年。羔月“一日 基于FPGA的嵌入式图像监控系统设计大连理工大学学位论文版权使用授权书本学位论文作者及指导教师完全了解“大连理工大学硕士、博士学位论文版权使用规定",同意大连理工大学保留并向国家有关部门或机构送交学位论文的复印件和电子版,允许论文被查阅和借阅。本人授权大连理工大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,也可采用影印、缩印或扫描等复制手段保存和汇编学位论文。作者签名:盘硅翩虢丑么!垄:丝 大连理工大学硕士学位论文1绪论1.1课题研究的背景与意义传统的图像监控系统大多只能在现场进行模拟电视监视,视频信息存储到录像带上,如果是监控的地点比较多,要求录像的数据保存时间长,录像带的数量就会惊人,整个查询、检索工作很复杂,管理运营成本增加,而且还会出现录像带时间长了或转录次数多了图像质量变差的问题。随着编解码技术的发展,越来越多的用户采用了数字图像监控系统,录像信息以数字形式存放在硬盘上。但是典型的数字图像监控系统通常由CCD摄像头、采集卡和计算机组成,这种结构的系统由于要采用计算机以及视频采集卡来对采集的视频信息进行处理,因此在某些应用场合中暴露出成本高、体积大等缺点,而嵌入式的数字图像监控系统则可以很好的解决这~问题n3。基于嵌入式技术的图像监控系统不同于PC机的工作模式,而是把监控摄像机与图像处理器一体化,置于外界现场进行图像处理的本地终端实时检测和控制。其优点是:无需人工干预,实时性能强,检测结果准确性高。由于这种系统的硬件结合紧密、功能专一,是专门设计的独立设备,不像插卡系统那样受通用计算机系统中的其他软硬件的影响,因此性能上更稳定,且便于安装和维护,易于实现系统的模块化设计,便于管理和升级。同时嵌入式系统具有体积小、低功耗、低成本等特点,另外由于嵌入式图像监控系统移动方便,可以应用临时性的作业场所和普通家庭安防。还可做为一个智能部件“嵌入’’到各种应用系统中。如将其配上网络接口接上计算机系统,即可构成一个监控网络系统,是一种相对独立的OEM部件。目前,基于嵌入式技术的数字图像监控芯片在我国仍没有成熟的产品,大部分基于嵌入式技术的数字图像监控芯片都是基于PC的,系统成本很高。为此,开发嵌入式图像监控尤其具有自动处理图像功能的芯片具有自己的市场空间,有广阔的应用前景。目前大部分基于嵌入式技术的数字图像监控都是基于ARM和DSP平台的。优点是具有丰富的外部接口,便于采集控制;ARM系统上带有操作系统,这样可以大大减少用户的产品开发周期。缺点就在于设计不灵活、升级困难瞳3。现在许多高端工作站为提高系统性能而增加DSP模块,采用DSP作为协处理器。但是从根本上讲,DSP只是对某些固定的运算提供硬件优化,其体系仍是串行指令执行系统,并且这些固定优化运算并不能够满足众多算法的需要,使它的使用受到限制。采用FPGA进行监控系统的设计主要有以下几点优势o¨: 基于FPGA的嵌入式图像监控系统设计(1)速度快,采用FPGA方式可以达到60帧/秒的速度,基本上就是视频源的速度,这是一般的CPU不能达到的。(2)集成度高,许多可以用逻辑实现的电路可以在FPGA内部实现,而ARM等单片机必须附加专用芯片来完成同样的功能.所以系统的集成度高,产品的小型化在嵌入式系统中是非常重要的。(3)开发周期短,通过HardCopy技术,可以将FPGA器件上的SOPC系统向ASIC转化,实现FPGA与ASIC的无缝转化,而SOPC的设计周期不超过20周,比ASIC的开发周期要短很多。(4)可重载性,FPGA是可编程的逻辑阵列,程序通过下载电路可以无限次的加载入FPGA.所以如果发现设计有错误,只要将修改后的设计重新编译下载,FPGA内的电路就会自动更新。随着大规模FPGA芯片的问世,几乎大多数电子系统都可以在一块芯片上实现。使用FPGA的好处不仅表现在设计的初级阶段,即使在电子系统设计完成之后,甚至在投入实际使用的过程中,还可以根据实际需要添加功能。一般采用大容量FPGA做为载体,在一片FPGA中实现软核微处理器,也可以嵌入ARM等硬核处理器,使FPGA具有嵌入式系统的可编程能力。通过这种技术,SOPC平台即可以拥有微处理器系统丰富的软件资源和出色人机交互能力,同时又具备FPGA系统的快速硬件逻辑特性,实现了软件系统和硬件系统的互补,不仅提高了设计的性能,又加快开发周期。‘另外由于嵌入式系统的处理、传输和存储数据的资源有限,如果将所有的图像信息不加过滤的进行保存,势必会大大耗费嵌入有限的硬件资源,从而降低实时采集速度。在多数情况下,一般只需要采集保存有人体活动的外界场景图像。1.2国内外研究概况及发展状况目前图像监控系统大多采用PC和视频采集卡作为系统主要部分,但是到目前为止,基于嵌入式技术的图像监控系统设备在我国刚刚起步,没有成熟的产品应用。这一现状的根本原因就是我国在开发这类产品时,没有统一的开发标准和共用的开发平台,而且没有可靠的功能和性能测试标准,各个企业的开发技术力量分散,极大的影响了该类产品开发的效率和可靠性。而制造出来的产品同国外同类产品相比,功能相差太大,没有竞争力,因此市场基本上被国外公司所占领。开发一个该类嵌入式系统势在必行。 大连理工大学硕士学位论文目前嵌入式图像监控系统大多采用ARM作为主控芯片,DSP作为图像处理芯片H1。在图像处理方面,美国TI(德州仪器)公司的DSP芯片在世界市场上处于主导地位蹄1。聊S320DM640系列以及即将推出的DaVinci系列处理器,针对特别高端市场的是Cradle技术多处理器DSP,均被多家国内外大公司采用。在国内如闻亭的通用图像监控系统,西南物理研究所的视频跟踪警戒装置和中科院沈阳自动化研究所的视频跟踪系统都采用了TI的DSP芯片。DSP的优点在于具有强大的数据处理能力和较高的运行速度。另外在微型图监控领域,精工爱普生(Epson)[]像控制器Ic的$2S65A00能够同时存储、传输2个摄像头所拍图像的以及配备4个视频输入通道的I-P转换芯片S2S65P10。如果用这些IC制成芯片组,最多可控制8个摄像头组件(摄像头模块及NTSC/PAL解码器)。控制器芯片$2S65A00在现有的网络摄像头控制器芯片Sl$65010的基础上,除分别增加了2个摄像头接口和JPEG硬件编码器外,还内置了CompactFlash、SD卡、USB2.0接口,并内置了用于连接各种模拟传感器的8通道AD转换器。CPU内核为ARM720T,能对每秒30帧的VGA视频进行JPEG编码;配备对16区域的动作进行检测的动体检测功能;音频接口采用12S。除此之外,串行接口配备了i:c、UART、SPI。通过CF接口还可支持无线LAN(IEEE802.11b/g)。这款芯片集成比较常见的功能接口,不过针对的是模拟摄像头和USB摄像头,市场售价较高。在国内,台湾凌阳公司的图像识别芯片(SPCA563),能识别颜色、形状和障碍物,但是图像识别的像素只有30万,远远不能满足现行的主流标准。基于FPGA的嵌入式系统属于SOPC领域,是一种正处于研究和发展中的新型技术,由于成本和开发工具等方面存在缺陷,SOPC技术还未达到成熟应用的阶段,更多是在国内外高等学院中研究和试验。与此同时,在SOPC领域处于领先地位的Altera公司在中国、韩国、印度等国家和地区举办大学生NiosII处理器系统设计竞赛,以大赛形式推广SOPC技术。经过几年的推广及应用,SOPC系统在数字通信、信号处理、自动控制、模式识别等领域都有了较为完菩的解决方案,而且表现出色御。1.3系统设计要求与主要工作本课题来源于大连市IT优秀教师专项资金项目《基于SOPC的嵌入式图像监控和处理系统的设计和实现》。本课题研究的主要任务是设计一种嵌入式图像监控系统。实现图像采集、动体检测和SD卡存储完整解决方案。整体结构采用FPGA单芯片控制的方法,使系统具有高集成度、可靠性及灵活性的特点。系统设计要求为:图像采集时钟频率为25MHz,NiosII时钟频率为100M.Hz、每帧图像分辨率为320×240像素。系统 基于FPGA的嵌入式图像监控系统设计采集速度在60帧/秒左右。通过仿真动体检测的响应时间在120ms左右,拒真率小于1%,SD卡保存单帧图像时间为3.7秒(每帧图像数据量是153600字节)。本文完成的主要工作包括:(1)分析了图像采集和处理方式的原理和特点,设计了图像采集和处理硬件电路的原理图和PCB板,并对硬件电路进行了调试验证。(2)在QuartusII环境下用verilog编写了图像传感器控制、图像采集、SDRAM读写控制等程序,实现了FPGA对图像的采集存储和显示功能。(3)根据FPGA内部硬件电路的特点,选定了适合本系统的动体检测算法,并对算法进行了优化,仿真证明该算法能满足图像快速检测的需要。(4)利用SOPCBuilder完成Nios处理器软核及其外设的创建和配置,并在Nios处理器上实现了SD的图像文件存储,完成了一个完整的图像检测和存储过程。 大连理工大学硕士学位论文2系统总体方案和基本工作原理2.1系统总体方案为了实现自动图像报警和图像采集,本文设计了动体检测算法,这是因为绝大多数情况下我们只对监控区域中运动的物体感兴趣,这样可以过滤掉只包含静态背景的图像,从而降低了对有限的嵌入式硬件资源的消耗。由于活动物体大多是人,而且这也是图像监控的目标,为此加入了人体信号探测器,用以辅助动体检测,以达到降低图像报警误报率的目的。本系统主要集成了图像采集、控制和存储等器件或芯片,组成了以FPGA为控制核心的实时图像监控系统。系统的总体方案图如图2.1所示。人体信号探测器液晶屏驯l坠!!!=!坚_|lSDRAM}l控制器fJ}_—————广一ReadFIF02J—陌屈萄弼霭厂矧LCM器JP10ID黹卜oNIosIlAvALoN总线I篇止!纠也二到图2.1图像监控系统结构图Fig.2.1Diagramofimagesurveillancesystem时钟芯片环境光亮检测器系统工作流程为:系统上电后,FPGA从外部EEPROM自动加载程序,12C模块对CIS进行初始化工作参数配置。CIS向FPGA输入图像数据信号,FPGA将采集的原始数据(RAW)转换成RGB格式,帧缓冲模块(FrameBuffer)每次将相邻两帧图像数据写入SDRAM,然后比较这两帧图像的差值,如果差值大于设定的阈值,并且人体探测器输出高电平,就认为检测到了外界场景的运动,系统会自动将捕获的图像输出到SD卡进行存储。图2.2给出了FPGA芯片内部的工作流程。 基于FPGA的嵌入式图像监控系统设计图2.2FPGA内部工作流程图Fig.2.2FlowchartofworkflowinFPOAchip2.2基础理论分析2.2.1动体检测算法在数字视频图像监控系统中,系统对视频图像序列自动进行动体检测,一旦发现运动物体(绝大多数是以人为目标)的位置和方向满足一定条件,就发出报警信号来通知监视人员及时有效处理,这可在很大程度上减轻监视人员的视觉负担。数字监控系统绝大多数都有存储模块,可对监控场景图像数据进行连续存储。然而由于数字监控系统的工作时间长,数据存储量相当庞大,给存储容量提出了较高的要求。存储监控图像的目的几乎都是记录监控场景中的动作,如果长时间记录无运动图像,存储的信息量极少,就失去了存储的意义。这也需要有一个动体检测算法判断监控图像的全部或部分有无运动的发生,控制存储模块的动作,有效地节省存储数据,减少不必要的回放。由此可见, 大连理工大学硕士学位论文图像序列的运动检测和报警算法在数字视频监控系统中有较强的实用价值。目前应用较为广泛的动体检测算法有光流法、背景法和帧间差分法。(1)光流场法光流场的计算最初是由美国学者Horn和Schlmek提出的。1981年Horn等人在相邻图像之间的间隔时间很小,且其图像中灰度变化也很小的前提下,推导出灰度图像光流场计算的基本公式,奠定了光流场计算的基础。光流(Opticalflow)反映了在某一时间间隔dt内由于运动而引起的图像的变化,光流场是一个二维的速度场。光流法检测运动目标的基本原理是:给图像中的每个像素点赋予一个速度矢量,这就形成了一个图像运动场,在运动的某一个时刻,图像上的点与三维物体上的点一一对应,这种对应可由投影关系得到,根据各个像素点的速度矢量特征,可以对图像进行动态分析。如果图像中没有运动目标,则光流矢量在整个图像区域是连续变化的,当物体和图像背景存在相对运动时,运动物体所形成的速度矢量必然和邻域背景速度矢量不同,从而检测出运动物体的位置。总的来说,光流法的优点是能够检测独立运动的对象,不需要预先知道场景的任何信息,并且可用于摄像机运动的情况,但是由于噪声、多光源、阴影、透明性和遮挡性等原因,使得计算出的光流场分布不是十分可靠和精确。而且多数光流法计算复杂、耗时多,除非有特殊的硬件支持,否则很难实现实时检测。(2)背景减除法背景减除法是常用的动体检测方法之一,它利用当前图像与背景图像的差分来检测运动区域的一种技术,它一般能够提供完全的目标数据。背景减除法的基本思想是:首先用事先存储或者实时得到背景图像序列为每个像素进行统计建模,得到背景模型。其次将当前每一帧图像和背景模型相减,计算出在一定阈值限制下图像中偏离背景模型值较大的那些像素,判定此像素出现在运动目标上,图像相减操作后得到的结果直接给出了目标的位置、大小、形状等,从而得到较完整的目标信息。此外模型还要进行周期性的背景更新以适应动态场景变化。背景减除法在实际应用中有两个最基本问题需要解决:背景模型的获取和背景模型的更新。背景图像的获取的理想情况是在场景没有运动目标的情况下进行,但是实际应用中一幅“纯净”的背景图像总是不容易得到的,外界光线的变化、背景中含有轻微扰动的对象,如树枝、树叶的摇动等,这些都会增加获得背景的难度;另外长时间的视频监视,而背景图像总不会是“一成不变”,所以需要在一段时间后重新更新背景图像,以适应背景的变化。在实际硬件电路设计中这两个问题的解决有一定的难度。(3)帧间差分法 基于FPGA的嵌入式图像监控系统设计帧间差分法是在动体检测中使用得最多的一类算法,其基本原理是将连续的两帧或几帧的图像对应的像素值相减,在环境亮度变化不大的情况下,如果对应像素值相差很小,可以认为此处景物是静止的,如果图像区域某处的像素值变化很大,可认为这是由于图像中运动物体引起的。帧间差分法就是利用视频序列中连续的两帧或几帧图像的差异来进行目标检测,图2.3显示了帧间差分法的基本过程。图2.3帧间差分法原理图Fig.2.3Diagramofframedifference对于检测图像区域,运动报警的判定条件为:MaxlSc(X,f)一Se(X,t一垃)I>Tf2.】1其中Sc(x,t)为亮度图像序列在t时刻,点X处的灰度值。T为某个灰度闭值,灰度闭值的大小决定了运动报警检测的灵敏程度。这种方法简单快速,也容易实现心肌。2.2.2腐蚀与膨胀通常形态学图象处理表现为一种邻域运算形式,一种特殊定义的邻域称之为“结构元素”(StructureElement),在每个像素位置上,它与二值图象对应的区域进行特定的逻辑运算,逻辑运算的结果为输出图象的相应像素。形态学运算的效果取决于结构元素的大小、内容以及逻辑运算的性质。常见的形态学运算有腐蚀(Erosion)和膨胀(Dilation)。二值图像是指图像的灰度只由O和1构成。传统的图像处理一般称图像中对象的灰度值取l,背景灰度值取0。记所有灰度值为1的点组成的集合为x。数学形态学图像处理主要是对集合X,选择适当的结构元素进行形态学处理。在数学形态学中,设X为(x,y)平面上一目标区域,B为指定大小和形状的结构元素,定义位于坐标(x,y)上的结构元素B所表示的区域为B(x,y),那么对于X的腐蚀结果可以表示为: 大连理工大学硕士学位论文{(x,y)l(x,y)∈X,B(x,y)cXj(2.2)在图像处理中上式可理解为定义一个结构元素B,从图像左上角开始,按顺序移动结构元素的位置,当结构元素位于某坐标上时,且此时结构元素完全处于目标区域内部,则保留此坐标上的像素点,否则删除此坐标上的像素点。腐蚀在数学形态学运算中的作用是消除物体边界点,如果结果元素取3*3的结构,那么腐蚀将使物体的边界沿周边减少一个像素。腐蚀可以把小于结构元素的物体去除,这样选取不同大小的结构元素,就可以去掉不同大小的物体。如果两个物体之间有细小的连通,那么当结构元素足够大时,通过腐蚀运算可以将两个物体分开。X口B图2.4腐蚀示意图Fig.2.4Diagramoferosion‘⋯‘⋯一⋯⋯●。⋯⋯。●●,⋯⋯⋯⋯⋯J,⋯⋯J●,●●---_-·-------⋯·_··o----⋯····--·····。.●腐蚀处理可以将粘连在一起的不同目标物分离,并可以将小的颗粒噪声去除。如图2.4所示,腐蚀的方法是拿B的中心点和X上的点一个一个地对比,如果B上的所有点都在x的范围内,则该点保留,否则将该点去掉;右边是腐蚀后的结果。可以看出,它仍在原来X的范围内,且比x包含的点要少,就象X被腐蚀掉了一层示。在实际操作中,可以将结构元素用模板的形式定义。矩形模板中属于结构元素的部分用1表示,不属于结构元素的部分可以标记为O。在腐蚀处理过程中,只要对图像的每个位置都用模板进行检验,如果对于所有模板中为1的位置,源图像上都存在指定像素,那么就保留模板所在位置的像素点,否则就清除模板所在位置的像素点。在数学形态学中,设x为(x,y)平面上一目标区域,B为指定大小和形状的结构元素,定义位于坐标(x,y)上的结构元素B所表示的区域为B(x,y),那么对于X的膨胀结果可以表示为:.{x,Y)I(x,y)∈X,B(x,y)nX≠矽j(2.3) 基于FPGA的嵌入式图像监控系统设计在图像处理中上式可理解为定义一个结构元素B,从图像左上角开始,按顺序移动结构元素的位置,当结构元素位于某坐标上时,且此时结构元素与目标图像存在交集,则保留此坐标上的像素点,否则删除此坐标上的像素点。膨胀是将与目标区域的背景点合并到该目标物中,使目标物边界向外部扩张的处理。膨胀处理可以将断裂开的目标物进行合并,便于对其整体的提取。X口B图2.5膨胀示意图Fig.2.5Diagramofdilation如图2.5所示,膨胀的方法是拿B的中心点和X上的点及X周围的点一个一个地对,如果B上有一个点落在X的范围内,则该点就为黑;右边是膨胀后的结果。可以看出,它包括X的所有范围,就象X膨胀了一圈似的。像图像腐蚀处理一样,用模板表示结构元素的形状,则图像的膨胀处理可以描述为:移动模板使之遍历目标图像的每一个像素,当模板处于坐标(x,y)处时,若模块中任意为l的位置对应的像素存在,则膨胀结果中坐标(x,y)对应位置的像素存在,否则(x,y)对应位置的像素不存在。膨胀与腐蚀运算对目标物的后处理有着非常好的作用,但是腐蚀和膨胀运算的一个缺点是改变了原目标物的大小。为了解决这一问题,考虑到腐蚀与膨胀是一对逆运算,将膨胀与腐蚀运算同时进行,由此便构成了开运算与闭运算。先腐蚀后膨胀称为开运算。一般来说,开运算能够去除孤立的小点,毛刺和小桥即连通两块区域的小点,而总的位置和形状不变。这就是开运算的作用。 大连理工大学硕士学位论文3系统硬件设计与实现图像监控系统处理的数据量较大,同时还要满足实时性要求,因此板载电路需要选用容量较大,速度较快的器件。本系统采集的一帧图像分辨率大小为640*480,色深是24位,检测时需要在SDRAM缓存两帧,因此SDRAM的容量必须大于1.8M字节(640*480*3*2=1843200字节),由于每个像素位宽为24位,同时NIOS是32位的处理器,所以SDRAM的位宽最好是32位。外部提供给FPGA的晶振频率必须大于CIS的像素时钟25MHz。考虑到检测算法需要较多的逻辑资源,因此FPGA的片内LE要很丰富,另外FPGA的管脚必须要满足外部器件连接的要求,在本系统中要实现所有器件的IO口相连,FPGA的IO管脚必须大于150个。3.1主控制芯片电路本系统选用的Cyclone系列FPGA器件的具体型号是EPlCl2Q240C8。逻辑资源达12060个逻辑单元(LE,LogicElements),片内RAM的容量为239616bits。完全可以满足图像采集的设计要求。其内核供电采用1.5V,0.13um工艺,功耗较低。Cyclone器件支持各种单端I/O接口标准,如3.3V、2.5V、l-8V、LⅥrrL、LVCMOS、SSTL。Cyclone器件具有两个可编程锁相环(PLL)和八个全局时钟线,提供健全的时钟管理和频率合成功能,实现最大的系统性能。Cyclone器件具有高级外部存储器接口,允许设计者将外部单数据率(SDR)SDRAM,双数据率(DDR)、SDRAM和DDRFC洲器件集成到复杂系统设计中,而不会降低数据访问的性能。Cyclone系列FPGA器件基于一种全新的低成本架构,从设计之初就充分考虑了成本的节省,因此可以为价格敏感的应用提供全新的可编程的解决方案。3.2电源电路一般而言,FPGA器件出于芯片设计、多电平接口的需要,电源都分为两组:VCCINT和VCCIO,即内核电源和I/O电源,随着芯片内部连线尺度的逐渐减小,核心电源电压和接口电压也越来越低。本设计中EPlCl2器件的VCCINT为1.5V,VCCIO为3.3V。目前总的来说有三种电源解决方案,分别是线性稳压器电源(LDO),开关稳压器电源,电源模块【71。LDO线性稳压器适用于降压变换,具体效果与输入/输出电压比有关。从基本原理来说,LDO根据负载电阻的变化情况来调节自身的内电阻,从而保证稳压输出端的电压不变。其变换效率可以简单地看作输出与输入电压之比。 基于FPGA的嵌入式图像监控系统设计由于采用线性调节原理,LDO本质上没有输出纹波。与LDO相比,DC/DC调整器输出纹波电压较大、瞬时恢复时间较慢、容易产生电磁干扰(EMI)。系统电源输入电压为5V,3.3V电压供电部分采用了ASl084:此外,对于FPGA的PLL工作需要的1.5V电源部分,采用AMSl117.1.5LDO来实现。时钟设计是FPGA设计中的核心问题之一,时钟系统的不稳定和不合理,往往不能发挥器件的全部功能和潜力,严重时还会导致系统失败。对于多时钟、多速率系统,如何做到全局同步设计、保证时延特性、达到设计速率等,对系统成功都是极为关键的【8】。在本设计中,FPGA的系统时钟为50MHz,在时钟电路设计中,需要外接一个晶振频率为50MHz的外部有源晶振作为驱动时钟,然后把产生的系统时钟SYSCLK信号连接到FPGA芯片的外部时钟输入管脚CLK。EPlCl2器件内有两个PLL(锁相环),锁相环电路具有时钟合成功能。‰●V“.■uk口a埘tt怍夕鼍鲫三1.一姆k。J—一—_COln加岫z≈轴玎口.1崾,:POlCp02+凹n+C,l●一I.时眦加咖O.1旺’’rL功,=卜、N西脚17瑚∞守a∞图3.1系统电源电路原理图Fig.3.1Schematiccircuitdiagramofthepowersection由于Altera的PLL是模拟电路实现的,其对电源噪声比较敏感,所以在设计PCB的时候,对给PU的供电部分要做一些特殊的处理。即使在设计中没有用到PLL也必须给其供电。 大连理工大学硕士学位论文锁相环的电源和地管脚分别是VCCAPLL和GNDPLL。在给VCCAPLL供电的时候,不要将其直接连接到数字电源上,由于数字电源的噪声比较大,需要将VCCA和数字电源隔离开,防止数字电源上的噪声串入模拟电源VCCA而影响PLL稳定的工作。要隔离VCCA有几种方法,最好的方法是给模拟电源一个单独的电源平面,把所有VCCA管脚接到该电源平面上。不过增加PCB层数会增加其成本,考虑到此问题还可以采用电源岛的方式给VCCA供电。但由于单板的限制无法实现电源岛,我们采用的方法是从供电电源层通过磁珠对VCCA供电,同时还要对VCCA进行滤波和去耦。其中磁珠和2.2uF的电容用来滤出一些外部的噪声,防止其进入模拟电源中。而0.1uF,0.01uF,0.001uF电容用来对PLL本身产生高频噪声旁路,防止其进入模拟电源。这三个小电容应尽量靠近VCCA的管脚。本系统中选用的EPlCl2F400C8芯片的输入输出接口电压为3.3V,内核电压降低到1.5V,这样可以降低功耗,有利于系统的稳定,但也给电源供电和其它芯片的选择带来了麻烦,系统中其它芯片的接口电压必须为3.3V,至少也要兼容3.3V,电源设计中需要考虑的主要问题是功率是否满足的问题。3.3复位电路图3.2电源监控复位电路图Fig.3.2h11pedanceandresetckeuitdiagram复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分合过程中引起的抖动而影响复位。RC复位电路可以实现上述基本功能图,但解决不了电源毛刺和电源缓慢下降(电池电压不足)等问题,而且调整RC常 基于FPGA的嵌入式图像监控系统设计数改变延时会令驱动能力变差【91。监控电路必须保障上电时能正确地启动系统,当电源失效或电压降到某一电压值以下时复位系统。本系统中采用复位芯片SP708S进行复位电路的设计,它可在上电时产生复位信号,也可使用复位按钮手动复位。在信号的连接设计中,SP708S芯片的MR管脚为手动复位管脚,如图3.2所示。输入低电平有效,当此管脚上的电平被下拉到低于LOW时产生有效低电平复位信号。RESET输出的有效复位信号一般持续200ms左右。3.4时钟电路PCF8563是Philip公司推出的一款带12C总线且具有极低功耗的多功能时钟/日历芯片,具有四种报警功能和定时功能;包括内部时钟电路、内部振荡电路,内部低电压检测部分并采用两线值12C总线通信方式,不但使外围电路简洁,而且增加了芯片的可靠性。?图3,3时钟芯片电路图Fig.3.3Diagramofclockchipcircuit10K-scLjD^ 大连理工大学硕士学位论文如图3.3所示,PCF8563的SCL为时钟输入端,数据随时钟信号同步输入器件或从器件输出。SDA为双向引脚,用于串行数据的输入/输出。INT是中断信号输出端,可通过设置报警寄存器按指定时间在该脚产生报警信号。SDA、SCL、INT均为漏极开路,必须连接上拉电阻。OSCl、OSC2分别为反相放大器的输入、输出端,可在OSCl、OSC2两端接入32.768KHZ的石英晶振Y1,配置成片内振荡器。3.5配置电路FPGA器件与CPLD器件的工艺不同,掉电后不能保留原来的设计,因此需要把设计内容存储在器件外部的EEROM或者FLASH中,这就是配置系统的来源。配置系统首先要解决的是配置方式的选择。CycolneEPlCl2FPGA芯片总共有三种配置方式:AS(Activeserial)主动串行配置方式、PS(Passiveserial)被动配置方式和基于JTAG的配置方式【10】。在本设计中,同时使用了AS和JTAG两种混合配置方式。图3.4AS和JTAG配置原理图Fig.3.4SchematiccircuitdiagramoftheASconfigurationandJTAGconfiguration 基于FPGA的嵌入式图像监控系统设计AS主动串行配置方式电路AS主动配置方式中,需要使用串行配置芯片EPCS4。EPCS4是Altera公司专门用于在AS主动配置方式下配置其Stratix、Cyclone系列FPGA芯片的而推出的新型低功耗串行配置芯片,内置有容量131KB且可重复擦写一万次以上的存储器,用于存放配置文件,工作电压3.3V,具有4个引脚的数据接口,分别是串行时钟输入(DCLK)引脚、串行数据输出(DATA)引脚、AS配置时钟(ASDI)引脚和片选信号(nCSO)引脚,分别和FPGA芯片相应引脚及专用数据下载线ByteBlasterlI接口相连接。AS配置电路如图3.4所示,U1B为FPGA芯片特殊功能引脚部分,CONl0A为AS配置接口10针插座,通过ByteBlasterlI下载线和计算机并口相连,以实现相应的下载和配置功能。UCl为FPGA配置芯片,分别和AS配置插座和FPGA芯片的相应的功能引脚相连接。由于AlteraCyclone系列FPGA器件支持JTAG标准测试访问端口和边界扫描结构,所以也可以通过JTAG方式进行对FPGA芯片的配置,JTAG配置方式接口电路如图3.4所示。JTAG配置方式最大的特点就是不需要额外的配置芯片,只需要将CycloneFPGA器件所提供的4个JTAG引脚:测试数据输入(TDI)引脚、测试数据输出(TDO)引脚、测试模式选择(TMS)引脚、测试时钟输入(TCK)分别和ByteBlasterII下载线10针插座接口相连接既可。JTAG配置方式可以对FPGA芯片进行在线的配置,配置完成后既可以正常工作。但当FPGA芯片掉电后就无法正常工作,所以这种配置方式只适用于程序功能调试初期使用。3.6SD卡接口电路在各种存储设备中,sD卡不仅小巧,而且功耗很低,另外市面上常见SD卡的容量可达到2GB以上,因此非常适合用于对体积和功耗要求严格的嵌入式图像存储。如图3.5所示,SPI的两个数据线DAT0、CMD分别接上拉电阻,这是为了使本电路可以与MMC卡的接口兼容。卡的供电采用可控方式,这是为了防止SD/MMC卡进入不确定状态时,可以通过对卡重新上电使卡复位而无需拔出卡。可控电路采用P型MOS管,由FPGA的GPIO口SDPC进行控制,当SDPC输出高电平时,MOS管关断,不给卡供电;当SDPC输出低电平时,MOS管开通,VCC3V3电源给卡供电。考虑管子开通时,漏极与源极之间的压降要足够小(保证SD/MMC卡的工作电压在允许范围内),管子允许通过的电流也要满足卡的要求,一般一张SD/MMC卡 大连理工大学硕士学位论文工作时的最大电流通常为45mA左右,所以选用的MOS管要求允许通过100mA左右的电流。采用2SJ355的目的是当它开通时,管子上的压降比较小。0l2SJ3j5垃墨!兰里量兰垒!C量五D,吐0Sr10t心't10V|)ATO^缸S0DATlDAT2j:.SDm图3.5SD卡电路原理图Fig.3.5SchematiccircuitdiagramofSDcardCD,DAT3CSC五dDDICLKSCLKDATDDODATlDA髓卡检测电路包括两部分:卡是否完全插入到卡座中和卡是否写保护。检测信号由卡座的两个引脚以电平的方式输出。当卡插入到卡座并插入到位时,SDIN(第10脚)由于卡座内部触点连接到a旧,输出低电平;当卡拔出时,该引脚由于上拉电阻R2的存在而输出高电平,该输出由FPGA的输入引脚来检测。卡是否写保护的检测与卡是否完全插入到卡座中的检测原理是一样的。3.7人体信号检测器电路人体都有恒定的体温,一般在37度,所以会发出特定波长10微米左右的红外线,人体信号检测电路就是靠探测人体发射的10微米左右的红外线而进行工作的。信号检测电路主要由人体信号检测探头和信号处理电路组成。本系统的检测探头采用热释电红外传感器RE200B。RE200B是一种新型敏感元件,它由高热电系数材料配以滤光镜片和阻抗匹配用场效应管组成,能以非接触方式检测出来自人体的红外辐射,并sD强铭vM,s铝Ⅸ粥啪一一如刚刚∞咄吼弼●一2一;一●一5—6一,一0一,一加一n—U一玲 基于FPGA的嵌入式图像监控系统设计将其转化成电信号输出。在PIR的辐射照面通常覆盖有特殊的菲涅尔滤光片,其作用有两个:一是聚焦作用,即将热释电红外信号折射(反射)在P取上;第二个作用是将警戒区内分为若干个明区和暗区,使进入警戒区的移动物体能以温度变化的形式在PIR上产生变化热释红外信号,这样PIR就能产生变化的电信号。在红外探测器的警戒区内,当无人体移动时,热释电红外感应器感应到的只是背景温度,当人体进人警戒区,通过菲涅尔透镜,热释电红外传感器感应到的是人体温度与背景温度的差异信号。因此红外探测器的红外探测的基本概念就是感应移动物体与背景物体的温度的差异。BISS0001是一款具有较高性能的传感信号处理集成电路。它内含运算放大器、电压比较器、状态控制器、延时定时器及参考电压源,可以和热释电红外传感器以及少量外接元器件便可构成被动式热释电红外检测器。BISS0001的内部原理框图如图3.6所示。BISS0001是一种由运算放大器、电压比较器、状态控制器、延迟时间和封锁时间定时器及参考电压源等构成的数模混合集成电路。运算放大器OPI将热释电红外传感器的输出信号作第一级放大,然后由C3耦合给运算放大器OP2进行第二级放大,再经由电压比较器COPl和COP2构成的双向鉴幅器处理后,检出有效触发信号Vs去启动延迟时间定时器,输出信号Vo经晶体管T1放大驱动继电器去接通负载。Fig.3.6SchematiccircuitdiagramofBISS0001 大连理工大学硕士学位论文图3.7人体信号检测电路原理图Fig.3.7Schematiccircuitdiagraraofhumambodysignaldetecion人体信号检测电路原理图如图3.7所示,R03为光敏电阻,用来检测环境照度。SWl是工作方式选择开关,当SW1与1端连通时,红外开关处于可重复触发工作方式;而当SW1与2端连通时,红外开关处于不可重复触发工作方式。R06可以调节放大器增益的大小实际使用时可用3K,以提高电路增益改善电路性能。输出延迟时间TX由外部的R09和C07的大小调整,触发封锁时间Ti由外部的R010和C6的大小调整,R09/R010可以用470欧姆,C06/C07可以选O.1U。3.8图像传感器电路图像的输入端的采集模块是CMOS图像传感器,与CCD传感器相比,CMOS传感器不仅成本远低于CCD产品。而且CMOS传感器可轻松实现较高的集成度(比如CMOS被广泛用于拍摄手机的微型摄像头),另外CMOS传感器拥有超低功耗的优点。本系统图像采集用于监控领域,对于图像的质量要求不是非常高,而对传感器的功耗要求必须很低,而且可以直接输出系统需要的数据格式,因此本系统的图像采集部分选用了CMOS图像传感器。 基于FPGA的嵌入式图像监控系统设计6HDl磐呸SD&T——R182SCLK型—‰、1一%RESETl一I。村咖—焉脚西l醴婴!磐,砰疆T1匠Y江CL二K二一II孔∞l;C103D70.1I粕l元恧豇F—D6婴窆≥·.丝IfD5’=:=c102车BCl02))3loJo.1J】)聿——1两——一y姗1面——一在本设计中采用美光科技公司的MT9M011型号CMOS图像传感器(ImageScilsor),MT9M011是一块SXGA(superextendedgraphicsarray,超大扩展图像阵列)制式的,1/3英寸的主动式数字图像传感器,其有效图像序列范围为1280X1024,结合了众多数码照相机具有的功能如开窗取景、行列跳跃、快照模式等等,可以通过一个两线的串口来实现可编程操作,并且具有功耗低的特点【11】。片载A/D转换器将提供每像素IO位的输出精度,帧有效和行有效信号将在特定的引脚上输出,并且还配有像素时钟同步响应的有效数据。CMOS摄像头的系统组成框图如图3.8所示。3.9环境亮度检测电路环境亮度检测电路主要是光敏电阻和555定时器接成的施密特触发器构成,如图3.9所示。光敏电阻是一种由具有光电效应的半导体材料构成的无极性电阻器件。它的作用机理就是基于半导体的光电效应。当无光照时,电阻值远大于10K,2端的电平远小于1/3VCC,输出端3则输出高电平(约为3.6V);当受到一定波长范围的光眦一一一一一~一~~一∞一抛~所一%m肚∞Ⅸm加●一:一3一。一,一。一,一。一。一m—n一船一B—M—u一坫一"一坩一璩一∞一孔一船一拈一抖m图“一二一点一躺&一l图粥 大连理工大学硕士学位论文照后,其阻值会急剧变小,2端的电平大于2/3VCC,输出端3则输出低电平(约为O.2V);在输出端利用可变电阻分压,以匹配FPGA的IO端口电平特性。图3.9环境亮度的电路原理图Fig.3.9Schematiccircuitdiagramofenvironmentluminance3.10SRAM和SDRAM电路本系统采用SRAM作为软核NiosII的程序内存。SRAM不用刷新,只要不断电,SRAM内数据就会一直保持,所以访问速度很快。SRAM的芯片的片选信号要注意用一个上拉电阻上拉。同时在设计PCB的时候,因为芯片的读写速率很快,要注意数据线和地址线的等长原则。在设计的过程中要人为的控制连线的长度。本系统采用的是ISSI公司的IS64LV51216芯片。本系统采用SDRAM作为图像缓存,这是在各种随机存储器件中,SDRAM器件价格低、容量大非常适合用于数据量较大的图像缓存【12】。如图3.10所示,SDRAM的CS信号需要用上拉电阻拉高,以保证电路的正确读写操作。设计中采用两片SDRAM采用位扩展方式,组成32位宽的图像缓存。 基于FPGA的嵌入式图像监控系统设计SDR怂耍——士■鼍匕_—士—_]、::工:工工丁:‘、r图3.10SDRAM的电路原理图Fig.3.10SchematiccircuitdiagramofSDRAM3.11PCB设计和系统抗干扰措施在布线过程中的几点心得体会:(1)尽量加宽地线和电源线的宽度,最好地线比电源线宽。面积许可的话,使用大的地平面以减少地线阻抗。因为导线粗会使得导线上的电阻变小,这样电源功率在导线上的消耗就会变小,减少了功率的浪费。(2)在和芯片等模块外围,尽量采用平行布线,走线间隔至少为线宽的一倍,减小串扰。(3)当走线在转弯处应该有一个角过渡,而不应该采用直角转弯,减少信号受到的干扰布线的时候,尽量先不要连接地线,因为地线一般情况下很多,先连接起来可能会使其它部件的连线变得困难。尽量在布线的时候,对一些关键信号电源、地、控制信号等加一些过孔。在板子的空余区域,这样会方便以后的调试工作。 大连理工大学硕士学位论文4FPGA内部功能模块设计本设计采用Alt贸a公司提供的FPGA/CPLD开发集成环境QuartusII,在QuarmsII上可以完成设计输入(DesignEntry)、综合(Synthesize)、布局布线(Place&Route)适配、仿真(Simulation)(包括功能仿真和时序仿真)、配置下载(Configuration)整个流程。设计输入主要有原理图输入和HDL输入两种方式,但基于可移植性和规范化方面的考虑,绝大部分深入FPGA设计和ASIC设计的工程师最终都将统一到HDL平台上来。整个系统使用Vcrilog高速硬件描述语言,构架按照结构化,模块化的编程方式,按系统功能划分为采集模块,帧缓冲模块,动体检测模块、Nios模块。下面将分别介绍各个子模块的设计。4.1采集模块4.1.1配置模块MT9M01l芯片内部自带时序发生器和ADC,使用时只需输入一个时钟信号(本设计采用25MHz),图像数据便随同行有效信号(LINE_vALID)、场有效信号(FRAME_VALID)和像素时钟(Pixelclock)依照时序关系一同发出。MT9M01l上集成了12C接口,其工作参数由内部的IzC总线来配置,通过编写硬件描述语言来模拟12C总线时序,从而配置各寄存器,其中在本设计需要配置的寄存器如表l所示。表4.1寄存器设置值Tab.4.1Setvalueofregister寄存器地址复位默认值设置值说明05H018CH0088H水平消隐B06H0032H0019H垂直消隐B09H0432H0600H快门宽度20H0200H0001H读模式B2BH0020H00BOH绿1增益2EI-/0020HOOBOH绿2增益2CH0020H00CFH蓝增益2DH0020H00CFH红增益 基于FPGA的嵌入式图像监控系统设计12C总线时序如图4.1所示,具体过程如下:In兀九n几兀『1丌nnn丌丌n几几一『1『1nf】兀f1肿n丌nnnn兀兀’丌兀几几丌兀兀n。n丌丌丌『1几玎nn厂]nnn厂]n.厂—]几.丌n—.0xBAAI)DRgegOa09∞∞001口—n埔AADDer一Re口Oxiq—10∞01∞ST^盯^a‘ACK图4.112C总线协议上的数据传输过程Fig.4.1TimingDiagramShowingadatatransfer01112Cbus在12C总线开始信号后,送出的第一个字节数据是用来选择从器件地址的,其中前7位为地址码,第8位为方向位(刚W)。方向位为”0”表示发送,即主器件把信息写到所选择的从器件;方向位为“1”表示主器件将从从器件读信息。开始信号后,系统中的各个器件将自己的地址和主器件送到总线上的地址进行比较,如果与主器件发送到总线上的地址一致,则该器件即为被主器件寻址的器件,其接收还是发送信息则有第8位(列W)确定。在12C总线上每次传送的数据字节不限,但每一个字节必须为8位,而且每个传送的字节后面必须跟一个应答位(ACK),应答位是数据接收方收完一个字节的数据后向数据发送方提供的是否正确接收数据的答复信号。当主器件发送完一个字节的数据后,接着发出对应于SCL线上的一个时钟(ACK)认可位,在此时钟内主器件释放SDA线,一个字节传送结束,而从器件的响应信号将SDA线拉成低电平,使SDA在该时钟的高电平期间为稳定的低电平,从器件的响应信号结束后,SDA线返回高电平,进入下一个传送周期。当从器件由于某种原因不产生应答信号或全部数据传送结束后,主控器可重新产生一个开始信号来开始新的数据传输【13】,其流程如图4.2所示。控制器中使用了一个6位计数器SDCOUNTER对传输周期计数,配置数据存储在查找表LUTDATA中,LUTDATA数据为16位,包括了MT9k1011的寄存器地址和寄存器数据,共对40个寄存器的内容作配置,配置时逐个写入寄存器的值,寄存器索引代码为LUTINDEX。每个寄存器的配置分为3步,用状态机来实现。第一步准备数据,将8位的从设备地址与U丌DATA合并为24位数据m12CDATA,并 大连理工大学硕士学位论文将m12C—GO置1,启动12C传输,第2步检测传输结束信号,如果检测到传输结束(m12C_END=I),但ACK信号不正常,返回第1步,重新发送数据;如果检测到传输结束且ACK信号正常,则进入第3步,将寄存器索引LUT—INDEX加1,准备下一个数据的传输。图4.2I"C总线接口控制软件流程Fig.4.2Flowof12Cinterfacecontrol4.1.2图像数据采集模块图像数据采集模块用于实现图像数据的捕捉,根据图像传感器MT9M011输出数据时序,当视频捕捉开始键按下时,该模块开始接收数据,在获得有效像素数据的同时也 基于FPGA的嵌入式图像监控系统设计接收了消隐期的图像数据,所以设置了输出数据有效信号,用以在接下来的RAW2RGB模块把有效数据和非有效数据区分开来。MT9M011默认输出的分辨率为1280×1024。MT9M011芯片的输出信号:LINEVALID是行有效信号,PIXCLK是像素时钟信号,DOUT9一DOUT0是10位的图像数据,FRAMEVALID是帧有效信号。LINEVALID有效期间共有1280个PIXCLK时钟周期,FRAMEVALID有效期间共有1024个LINEVALID有效信号,如图4.3所示。默认情况下图像数据从第1行第1列开始在PIXCLK信号的上升沿顺序输出。MT9M011输出的图像格式是RGBBayer类型。Bayer模式被广泛应用于CCD和CMOS摄像头。它允许从一个单独平面中得到彩色图像。MT9M011输出图像的过程是一种渐进式的扫描。有效图像信号被行和列的消隐信号所包围。水平消隐信号通过0x05和0x07两个寄存器编程控制,纵向的消隐通过0x06和0X08两个寄存器编程控制。MT9M011的数据输出与PIXCLK像素时钟同步,当行有效信号为高电平时,在每个时钟周期输出10位的像素数据。由于像素时钟与主时钟反相,因此可以允许像素时钟用于锁存数据,并且在消隐时段同样有效。MT9M01l可以通过编程实现像素时钟和数据传输之间有0到3.5个主时钟的延迟,步进值为0.5个时钟周期。具体的像素输出时序图,如图4.3所示。m晖V/.厂———————一⋯——LuNE--d.ID—————一L-—一一=[型3』∑2坐⋯[型望.曼::竺:!上⋯。一。。。..翌翌12竺:三!巍。。。⋯o。。。。。。一。⋯。。i璧竺型憩.●__--‘____‘___‘-_o-■■-o-__‘_-hh_--■o●__■■_。_H-__■_■-■■o●H-_·__‘H-‘¨’_o■‘__-o__■●o■■_■■蚺●_■■■_--■***■■■√-●■o__■__■_“‘_‘-‘-⋯■_o_~Dgu,9·o删][=∑盈3巴匿工受3][匾⋯叠蟊翌互z二,渊e—v姗——厂—一⋯——⋯一一一一’L一雌。删D;n⋯r··n厂];{l§I;l{I}.!l{l{l●M。。h一。;:,川诎。乍2’■‘’百~。。’下2—r气■1-t凡ur咄'ero千惴豫rci诎s’PAQAQAP‘图4.3像素输出时序图Fig.4.3TimingExampleofPixelData 大连理工大学硕士学位论文由图43可以看出,帧同步信号是用来检测一帧图像的开始和结束,行有效信号可以用来产生存储器使能信号,使得图像有效数据在像素时钟的上升沿存入存储器。所以根据对摄像头输出数据及控制信号时序分析,CISCapture模块的设计思路为:检测FRAMEVALID的上升沿,判断一帧图像的开始,行计数清零。在LINEVALID有效的情况下,列计数器开始对像素时钟计数,记满640为一行数据,列计数器清0,行计数器加1。图像数据在像素时钟的上升沿,打入CISCapture模块的寄存器,作为对下一模块的输出。同样作为帧有效信号和行有效信号相与所产生的数据有效信号,作为存储器的写使能信号,还有行列计数信号。这些输出信号作为图像格式转换模块的输入信号。圈44和图45分别为CISCapture模块的顶层结构图和仿真图。圈44像素输出时序图Fig.44TimingExampleofPixelData图4.5像素输出仿真图Fi945SimulationofPLxelDataOutput410格式转换模块CMOS数字相机是由三个单色CMOS分别获得彩色图像的R、G、B分量,每个CMOS只对应获得所采集图像的一种颜色,但这样相机成本较高,为了降低成本,相机设计者设计了单CMOS数字相机。这种单CMOS相机通过彩色滤波阵歹FJ(CFA)获得图像的彩色信息。而这样采集的图像在每个像素的位置上只有一种颜色分量可以获得, 基于FPGA的嵌入式图像监控系统设计所以要复原另外两种缺少的颜色分量,就必需通过相邻像素来估算,这个过程叫CFA插值。BayerCFA是其中最为经典的阵列,应用最为广泛,它交替使用一组红色和绿色滤镜以及一组绿色和蓝色滤镜,其中绿色像素个数占总像素的1/2,红色和蓝色则只占1/4。因为绿色占据了可见光谱中最重要和最宽的位置,使得人眼对绿色最为敏感,能分辨更多的细节【14】。coltlmnreadoutdirectionroWreadoutdirectionblackpixels-Pixel。(26,8)R86BRBGRB8图4.6Bayer颜色模式结构示意图Fig.4.6DiagramofbayerColorPatternDetailMT9MOll输出的图像数据为Bayer格式,偶数行只包括绿色和红色像素,奇数行包括蓝色和绿色像素偶数列包括绿色和蓝色像素,奇数列只包括红色和绿色像素,具体结构如图4.5所示。这种格式的图像数据要在显示器上显示,必需将8位Bayer格式图像数据通过插值滤波为24位RGB真彩色图像数据。在插值滤波中,是用一点像素的相邻点像素R、G、B值进行插值计算,得到此点的R、G、B像素值。要想在显示屏上显示,必须将Bayer格式通过CFA插值滤波为RGB图像数据。本模块采用了双线性插值算法(BilinearInterpolation),与高阶B-spline和cubic—spline等插31、函数算法相比,图像的像质相差不大。但Bilinear的算法要简单得多,不仅消耗的硬件资源相对要少,而且易于硬件实现,同时又克服了最邻近插值方法(NearestInterpolation)的ZIPPER效应。其算法原理是每个像素位置上缺少的彩色分量由3X3邻域内具有相同颜色分量的像素平均值获得|1引。 大连理工大学硕士学位论文在本系统中由CMOS图像传感器输出原始图像数据的格式如图4.6所示。彩色图像的合成是将传感器所获得的灰度图像根据每个像素的位置关系,利用插值算法来补全各个像素的颜色,使得每一点都拥有RGB三种颜色。从图中的排列可以看出,在不同位置上,像素周围所拥有的颜色以及该种颜色所占的比重各不相同。因此,在不同的位置上必须分别讨论其算法,R、G、B相对相邻的元素共有四种不同的位置,如图4.7所示。位置1位置知Rt;|{(;劈乏;lt6R位置3位置4一图4.7Bayer颜色模式四种排列位置Fig.4.7FourtyperelativepositionDiagramofbayerColorPattern在对这些像素进行色彩还原时,也需要考虑这四种位置情况。在色彩合成时,计算时遵循这样一个原则,即以某一位置上原有的颜色仍作为处理后的颜色,没有的颜色则由其周围像素的颜色插值得到。以下公式中R.G,B表示像素点的三个分量,它们的下脚标(I,J)表示像素点的位置坐标。位置1:在1的周围有4个绿颜色灰度值和4个蓝颜色灰度值,根据位置1处的RGB颜色可由下面的公式求得:R=R,,.,G:里生=!±里!:』±!±里,二!:』±g!±!:』4(4.1)B:皇三!::』:!±星!=!::!±!±竺生堕=!±竺!±!::!±! 基于FPGA的嵌入式图像监控系统设计位置2:由于位置2原来的颜色为绿色,因此不用考虑它周围的四个绿色值,的红色和蓝色分量由其周围的两个红色和蓝色灰度值求得,计算公式如下:R:墨!:』:!±墨型±12G=G,,/-1B:竺!=!::!±墨生!::12:位置3:如图图26位置3所示。这个位置周围的颜色与位置2大致相同,的红色和蓝色位置互换,因而可用下面的公式求得这一位置的RGB颜色值:p—R,w+R,+l,/尺=—三生,一——坐这一位置(4.2)只是原来G=G“一1(4.3)曰;坠二立塾±12位置4:这个位置四周围有4个红色灰度和4个绿色灰度,这一位置的RGB三色灰度可以用下面公式求得:R=墨,二!:』=!±墨『二世±!±墨生丝=!±墨!±!::』±14G=鱼£坠崞啦型五(4.4)斗B=B,..,边界处理:可以看出,在四个边界上各像素的位置关系跟上面四种位置关系略有不同,例如在(0,0)处,其周围有两个G像素,一个B像素,不满足位置一的条件。由于边界的位置只占整个图像的很小一部分(两行两列),每个边界点仍然使用上面的公式,对于公式中下标越界的元素用O表示,分母则用括号中不等于O的元素个数来处理。具体实现方法是:在FPGA采用行缓冲和流水线的处理方式,设计中调用基于RAM的移位寄存器IP核ALTSHIFTTAPS。ALTSHIFTTAPS不仅比常规的移位寄存器能节省大量的逻辑单元和布线资源,而且能方便的设置taps的距离和位数。ALTSHIFTTAPS的工作原理和配置界面分别图4.8所示。 大连理工大学硕士学位论文图4.8移位寄存器配置图FigA.8configurationofShiftRegister设计将间隔为640的三个输出数据(每隔640为一行),将这三个数据存入寄存器分别作两次缓存延迟,从而得到3×3的邻域数据,根据配置模块提供的行列计数的最低位来判断该邻域中间点所在行和列的奇偶性,从而计算出不同的RGB值。至此每点图像数据量变为原来的3倍。为了便于在液晶屏进行图像显示的验证和SDRAM的缓存,在本模块将RGB数据进行了抽样处理,采用隔点隔行采样使得每帧图像分辨率降为320X240像素。在格式转换时,用9个量mDATAl1、mDATAdl2、re.DATAl3、mDATAd21、mDATA22、mDATAd23、mDATA31、mDATAd32、mDA,rA33分别表示。当像素位于奇行奇列:if({iY_Cont[0],iX_Cont[0]}----2"011)oRed臼mDATA22;oGreen<=(mDATA21+mDATA23+mDATAl2+mDATA32)/4;oBlue<--(mDATAl1+mDATAl3+mDATA31+mDATA33)/4;当像素位于奇行偶列:elseif({iHCont[0],iX_Cont[0]}=2“010)oRed☆(mDATA21+mDATA23)/2;oGrecn<-mDATA22;oBlueQ(mDATAl2+mDATA32)/2;当像素位于偶行偶列:elseif({iY.-cont[o],iXCont[O]}w一-2'b00)oRed<-(mDATAl1+mDATAl3+mDATA31+mDATA33)/4;oGreen<=(mDATA21+mDATA23+mDATAl2+mDATA32)/4;oBlue<-mDAT.A22:当像素位于偶行奇列:elseif({iYCont[O],iX_Cont[O])=2'b01)oRed<=(mDATAl2+mDATA32)/2;一31— 基于FPGA的嵌入式图像监控系统设计oGreen《=mDATA22;oBlue<=(mDATA21+mDATA23)/2;如图4.9为本模块的顶层结构图:RAV|Ill2RG日:u4Ctk帕铺吐ODV.o.LlROTo^÷dp.qI《-co)lpo.q∞,曲Ip.日Ir,:'o)1110闽。鲫ep.日I口‘T鱼p.日图4.9格式转换模块顶层图Fig.4.9Moduleofcolorconvert系统时钟为25MHZ时,在quart-us仿真波形如图4.10所示:IdasterTimeBar:l18.075m列P。№c:卿.51mInterⅢ;卿.4SusStart:i驴i.43ugilt.}7m981.,st-aJ981.乒Ⅱ981.}g口‘∞曩一e芝h,iC墟l广1广1n广]广]厂1nn广]广]nn厂]广]广]几厂]门几f2一田iD^I^E多iDWL渺i嚣l’拶团ix-c*nat移田iT-c眦吧》oIn坤|L广]厂]广]广]广]移固oRId!!奠兰!)(i墼X!塾)《i塑)(2塑)(踅!×i墼X!壑X!墅X翌◇固oGr_n移囝胡1m图4.10格式转换模块仿真图Fig.4.10Simulationofcolorconvert4.2缓存模块(rame—Buffer)FrameBuffer模块是由Sdram控制器,3个FIF0以及一些控制电路组成。SDRAM控制器负责外部SDRAM的读/写操作。3个FIF0是调用Altera公司提供的IP核,一个用来输入,二个用来输出,容量均为512,位宽设为32bit,位宽和外部的SDRAM位宽有关。输入的RGB信号位宽为24bit,输入到输入FIF0,输入FIF0的输出端向SDRAM控制器送数据,SDI洲控制器根据控制电路产生的地址,将数据写入SDI洲。输出时,数据由SDRAM控制器从SDRAM读出,根据控制电路产生的地址,送到输出FIF0的输入端。一32— 大连理工大学硕士学位论文4.2.1SDRAM控制器SDRAM控制逻辑复杂,命令种类多样,需要周期性刷新操作、行列管理的等多重操作。SDRAM首先要进行初始化操作。在上电后等待lOOns,至少执行1条空操作,然后对所有页执行预充电操作,接着向各页发出两条刷新操作指令,最后执行SDRAM工作模式的设定LMR命令用来配置SDRAM工作模式寄存器【l61。SDRAM工作寄存器可以根据具体应用的需要进行设置。初始后的SDRAM在得到了RAS、CAS、WE的值后开始执行相应的命令。在对SDRAM进行读、写过程中,必须要先进行页激活ACT操作,保证存储单元是打开的,以便从中读取地址或者写入地址,然后通过预充电命令来实现关闭存储单元【171。在进行写操作时,内部的列地址和数据都会被寄存,而进行读操作时,内部地址被寄存,数据的存储则发生在CAS延迟时间(通常为1~3个时钟周期)后。最后操作终止。当SDRAM顺次的进行读、写操作后,当到达到突发长度或者突发终止指令出现时,SDRAM将终止其操作【l81。SDRAM控制器应实现的功能有:为SDRAM提供刷新控制以保持SDRAM中的数据;对主机的命令进行仲裁,将下一步要执行的命令翻译成可与SDR.AM连接的信号【1明。因此,根据SDRAM的指令操作特点将SDRAM控制器划分为接口控制模块、命令生成一模块两个主要模块,如图4.11所示。系统控制接口模块用于接收系统的控制信号和相关的存储地址,进而产生不同的CMD命令组合:CMD命令模块用于接收地址和CMD命令并解码成操作指令,并产生SDRAM的操作动作。命控制接口模块命令模块命令请求.令响应《命令接口。响应地址。地址。命令生成仲裁器器请求.刷新控制。响应图4.11SDRAM控制器结构图Fig.4.11DiagramofstuctureofSDRAMcontroller 基于FPGA的嵌入式图像监控系统设计接口控制模块主要实现的功能是将CMD[2:0]翻译成接口指令和对刷新计数器的控制指令。接口模块在工作过程中首先通过要通过状态机来完成对CMD[2:0]的翻译。传送已经解码的NOP,WRITEA,READA,REFRESH,PRECHARGE和LOADMODE命令和ADDR给命令模块,LOADREGl和LOADREG2命令解码后,同ADDR~起装入内部的REGl和REG2寄存器,如图4.12所示。另外SDRAM需要周期性刷新操作以保持数据。在模块的程序设计中,刷新周期的控制通过一个计数器来完成,到达规定的计数周期数时,接U1模块通过REFREQ信号向SDRAM发出刷新请求。直到SDRAM完成刷新操作,发出刷新应答信号,计数器才重新赋值,开始下一次的计数。接口控制模块内含了初始化机制。初始化机制不仅要完成对SDRAM的初始化配置,还要完成对控制器的初始化配置,使控制器与外部SDRAM的工作模式一致。其过程如下:由计数器控制在系统上电200ns左右后,先进行SDRAM的初始化配置工作,由一个Prechargeallbank指令完成对所有BANK的预充,接着是多个Refi'esh指令,然后是模式配置指令LOADMODE完成SDRAM的工作模式设置。之后进行控制器的初始化配置工作,先发出指令LOADREGl给控制器载入模式字,再发出LOADREG2指令载入控制器的刷新计数器值,完成控制器初始化配置。图4.12系统接口工作原理图Fig.4.12Diagramofcontrollerinterface 大连理工大学硕士学位论文命令生成模块实现对输入的SDRAM指令请求进行仲裁判断的功能,并将仲裁后要执行的指令解码成SDRAM需要的RAS、CAS等信号,从而实现指令对SDRAM的控制。仲裁机制是SDRAM控制器设计不可或缺的一个环节。经过仲裁判断后,指令将传入命令生成器。命令生成器不仅要把指令解码成SDRAM需要的RAS、CAS等信号,同时还要对命令执行的时间进行控制。当SDRAM的writea和reada指令到来时,将引发一系列指令的执行,和其它指令相比需要更多的附加时间。所以,在这种情况下需要声明一个移位寄存器rwshift来完成这两个指令的附加时间的实现。rwshift的位数需根据读、写的时间来决定。移位寄存器oeshift用来为数据通道生成数据输入输出使能信号OC,如图4.13所示。图4.13命令模块工作原理图Fig.4.13Diagram&commandmodule在modelsim6.0中测试SDRAM模块仿真波形图如图4.14所示。 基于FPGA的嵌入式图像监控系统设计ⅥmnⅥmn肌n1眦nnlnnnnnnlnn|LIUutJ———’—]r————]r————]r●——一]r——]__—]r_]厂叩甄0亘:二皿11I[2]壶[]l匠,&茏础皿3∞:DCOCO图414SDR^^J控制器仿真图Fi9414SimulationofSDRAMContmn盯422帧存分时切换机制使用异步FIFO进行数据缓冲是解决在异步时钟域之间传输数据的一种常用方法。异步FIFO使用一个双端口存储器存放数掘,数据发送方在一端写入数掘,接收方在另一端读出数据,能够协调好两个时钟域的工作o“。访问时仅需要读写线和控制信号线,而不需要地址线,因此利用实现采集数据的缓存具有接口简单、读写方便的优点。本设计中选用QuartusII软件提供的lpmfifo来构成异步FIFO。WriteFIFO和ReadFIF01和ReadFIF02都是32bit位宽,而SDRAM只有32bit的数据位宽,3个FIFO都要访问SDRAM,这就涉及到相互竞争的问题,在同一时刻只能有一个访问SDRAM。为此需要设计一个分时切换机制。由于sDRAM的操作时钟为1009Hz,而采集像素时钟为25MHz,经过抽样后时钟频率更是大大降低。在一次采集局期内,SDR6.M完全可以和三个FIF0的接口轮流切换,从而币会影响采集的速度。圈415分时切换机制示意图Fi9415Diagramoftimesllifiemechanism如图415所示,其工作过程为: 大连理工大学硕士学位论文(1)图像经格式转换模块输出,写入Write_FIFO的输入端口。(2)当控制电路检测到Write—FIFO中读出端的数据量大于256(三个FIFO容量均为512字)时,产生写命令,并拥有写互斥锁。SDRAM控制器接到命令,以IOOMHz时钟将256个数据写入SDRAM。(3)Write..FIFO输出256个数据后,读出端的数据量小于256并且由于Read_FIFOI中初始状态的输入端数据小于256,Read_FIFOI拥有读互斥锁,产生读命令,SDRAM控制器接到命令,以IOOMHz时钟将256个数据读出,并写入Read_FIF01。(4)当Read—FIF01收到256个数据,其输入端数据大于256,并且由于Read_FIF02中初始状态的数据小于256,Read—FIF02拥有读互斥锁,产生读命令,SDRAM控制器将256个数据读出,并写入Read—FIF02。一一广—、一∞#”,∞州吩一I■l————·一h,“"n0—J“_爿i习.————t——/l‘一wd:e_fi;I::罱产CKEuhl_|NRI=O⋯⋯一II壁CLI。?蛐n‘ao蒹eoommandIl五书隅帅绣}.—C“;ll—P簖耵牲P肝;Cl—oI__l和:·PC鞲‘Cl—-一BAIl:们PE:口‘’..£__—一?:PfrE,Cl基~三震iz薷一一rEFP职HP铭¨‘IPPe:HoP6£·:‘£“Ilo,。p。静’口芒t—毫-“】一⋯⋯:.篡一二:Ill订9参:一铂【”‘r⋯‘llu)产㈣一j:淼二习l一!翌.寸:。P‘‘”谚。豫r=弗l”i”一柚口e#筠’H一。-“fl碍;。。。”。}re,p毪..fl羁}一csN[1:Ol∞m’1|lIoommandt图4.16动体检测模块RTL图Fig.4.16RTLofmotiondetectmodule(5)这样就完成了一次操作,之后就是循环操作。地址信号也是由控制电路产生,每经过一次读写,地址增量为256,这样就可以保持信号的连续性。(6)WriteFIFO在一定周期内向SDRAM中连续写入两帧连续的图像,Read—FIF01根据SDRAM中的地址读取其中的一帧图像数据,而Read—FIF02读取另一帧图像数据。通过这个机制,3个FIFO中始终都有数据,不会发生读空、写满情况,使得存储器两端的数据读/写方便,只要在Write—FIFO的输入端和Read—FIFOI、Read—FIF02的输出端进行操作就行了,在时钟的上升沿将数据写入或输出,实现了异步方式。在SynplifyPro8.1综合后的部分RTL图如图4.16所示: 基于FPGA的嵌入式图像监控系统设计4.3动体检测模块在实时监控和目标识别系统中人们更热衷于使用背景减法及帧差法来获得期望的结果【2¨。而背景法的背景更新,也可以通过将图像求平均的方法获得背景,然后对背景进行自适应更新,从而检测出运动物体。由于本系统的缓存容量有限,不能同时容纳多帧图像,另外同时提取多帧图像大大降低了图像处理速度。帧间差分法简单,速度快,易于硬件电路实现,对背景或者光线的缓慢变化一般不太敏感,能够适应各种动态环境,稳定性较好,对目标运动的检测灵敏度高【22】。≥阈值骂I否.是>闽值一1否>函值"是-tl否相或■·_H.-_P-·⋯·_⋯-_⋯-_·--.。,·-·⋯_‘-h‘⋯⋯.-_~,p.⋯^_‘_._。.-_.‘__‘·⋯_··-·_*·‘图4.17动体检测示意图Fig.4.17Diagramofmotiondetection本模块采用帧间差分法,设计中对相邻两帧图像每个像素RGB分量分别取绝对差值,当绝对差值大于阈值时(这里取经验值16),就认为存在差异,如果做比较的两个像素~肘一一籼一~射一~鄹一一|耍一一黜 大连理工大学硕士学位论文的RGB分量只要有一个分量有差异,则就令此点的数值为1,这样就得到一幅320×240像素大小的二值差值图像。然后传统处理方法是统计值为l的点的个数,如果其数量超过预设值,就认为两幅图像有差异。这种方法设计简单,但是由于噪声的存在导致准确率还不够高,为此本设计提出了一种改进的算法,引入了腐蚀和膨胀对差值图像进行再处理。对上述二值图像进行开运算处理,可以消除小颗粒的噪声的干扰,从而尽可能降低误判和漏判【251,实现过程是:只需要比较两幅图的差异即可取11×11像素的单元图块,(taplO个,代表lO行,每个tap有11个像素)。设计流程如图6所示,通过调用ALTSHIFT-TAPSIP核,并利用输出TAPS,构建一个11×11像素大小的图块作为结构元素,然后腐蚀:(1)用11×1l的结构元素,扫描图像的每一个像素:(2)用结构元素与其覆盖的二值图像做“与"操作:(3)如果都为1,结果图像的该像素为1,否则为0。接着再将上述结果作为第二个ALTSHIFT_TAPS的输入,再次构建11×11个像素的结构元素,然后进行膨胀处理:(4)用11×11的结构元素,扫描图像的每一个像素:(5)用结构元素与其覆盖的二值图像做“或”操作:(6)如果都为0,结果图像的该像素为O,否则为1.最后得到运动判定信号DETECT,并用这个信号控制数据写入过程,一旦判定信号为1,就启动后续的图像存储过程。在quartus6.0仿真图如图4.18所示:图4.18动体检测仿真图Fig.4.18Simulationofmotiondetection 基于FPGA的嵌入式图像监控系统设计4.4NiaSlI系统的硬件设计4.4.1NiaSlI系统架构NiosII软核是Altera公司新近推出的第二代FPGA嵌入处理器,其处理能力超过200MIPS。NiosII系统采用Avalon交换架构,每个总线主机均有自己的专用互联,总线主机只需抢占共享从机,而不是总线本身。每当系统加入模块或者外设接入优先权改变时,SOPCBuilder利用最少的FPGA资源,产生新的最佳Avalon交换架构【26】。包括数据通路的复用、地址译码、等待状态产生、外设地址对齐(包括支持原始总线和动态总线大小调整)、中断优先级的指定等。整个过程由SOPCBuilder自动完成,所以用户可以很容易地迅速修改他们的系统,以提高性能或者增加功能。各组件添加完成后需分配地址及中断号,设定复位地址,最后生成系统并集成到QuartusII的工程中,将系统模块与外围模块如锁相环相连接,然后添加相应的端口,最后根据FPGA的芯片配置相应的管脚,编译成为一个完整的系统。生成的系统原理图如图4.19所示。NiosII系统包括NiosII软核、DMA控制器、SD卡控制接口、SRAM接口、eli—flash、uart、数据通道接口(datainfifo)以及数码管led等外设。MISOt:o..tl'ta_spLOouLport_from_tlqs—SD—CSI卜-elkout_port_fromjhs—sD—P帆『RI卜-fpgaWR—CLKto_the_datan_fifobcLfrom_ths_uart_0I卜-fpga_WR_to..the_aatain_fgowrfull_ffam_the—datain..flfoI卜一in..port...tO_the_detactout_pan-们m.Jhe_led[17。口】l卜。resst_noBE00_自'omthe—sa97一display[B.-o】lI_。r=_to_me—UatooSE01..fromthe_se97_display[6,剐卜。fpga_DATAtothe—datainJdo[15。o】oSE02._fromthe_se97一display[5..D】I卜。图4.19NiosII系统结构图Fig.4.19DiagramofNiosIIsystem用SOPCBuilder软件从NiosII处理器内核和NioslI开发套件提供外设列表中选取合适的CPU、存储器以及外围器件,并订制和配置他们的功能。NiosII系统中的NiosCPUCORE中有三个成员组成,它们是NiosII/e(经济型)、NiosII/f(快速型)、NiosII/s(标准型)。经济型具有最小逻辑的优化,快速型具有高性能的优化,标准型在逻辑和高性能优化方面性能集中【27】。在本系统中选择NiosII/f,能够满足系统设计要求,并可以有效的对系统进行高性能的优化。 大连理工大学硕士学位论文4.4.2数据通道接口(datainfifo)NiosIl系统支持用户加入自定义的Avalon总线外设,用于支持片内处理器与外设的连接,构成SOPC系统。为了适应不同的外设要求,Avalon总线拥有多种传输模式,在自定义图像数据采集与处理组件中,该模块作为从外设,可以在单总线外设之间进行数据传输。其中clk为时钟输入端,oDATA[31..0]为读数据,是32位写输入端,iRD\iCS、iRSTN,分别为读使能信号、片选信号、复位信号,分别为读使能输入端、片选输入端、复位输入端,其余的输入、输出端口为外部信号。具体接口示意图如图4.20所示。CLKl“一~,{CLK、三,iRDl—gIiDATAiFIFO。I》oDATA’《,,≯一iCSh1.:j’_WR'“’豸‘÷!:图4.20数据通道接口示意图Fig.4.20DiagramofdatachannelDATAIN—FIF0写端口的时钟信号、写请求信号同步于SDRAM控制模块的Read,而的读端口的时钟、读请求信号则由控制。以上信号除了_FIFOIDATAINFIF0CPUwaitrequest之外,都由Avalon交换结构自动产生和控制。waitrequest信号可以直接连接到异步FIFo的rdempty输出,当FIFO读空之后,waitrequest有效,插入等待周期,一直到从端口的数据准备好才输出readdata。开始和结束采集控制信号由DETECT信号和DMA中断信号决定,确保采集到的数据剐好为一帧320×240图像。 基rFPGA的嵌^式幽像监控系统设计p^b⋯1#d‘}l蛐B帆eg州T't!oe”^曲mE6m—t坶自j口.cLH自¨hL$¨』州n:1∞u·{冉aVm自”啪—幽啃』:r钟od’IJr州:。f封a』ATA_r咖jh”』岬。n16]呷Ⅱ‘晌D*帅jb岭j,∞d』11‘ⅢⅡ。ODAT“*■∞—shve』㈣1川!iiRST.HmLsh"J7esd_n7’Inpt。㈣’Ⅲ—m"』Ⅻn1⋯r☆砷∽¨帅jb”Ejw曲e"n}E“鲥图421元件设置对话框Fi9421DiMogboxofIPcO砧setup巴!一一一一一一一一一一一It—ERi嘶一lllrl一一一.匠跬韪妊量]&娃娃|}圭I:亡I乏芒跬最量砬i=娃悬陆妊i:娃图422数据通道接口仿真圈Fi9422SimulationofDa*ainfifo在NiQslI系统中加入』丰j户自定义组件是通过创建组什向导完成的,在HDLFiles中添加顶层文件DATAINFIFO文件。顶层文件添加完毕后,需要对模块接口信号类型逆行设置.iRD设置为read型,itS设置为chipse]ect型,iCLK设置为clk型,oDATA设置为readdata型,其余信号为外部信号设置为export型,配置正确后.该模块按照AvalOYl总线的协议与总线连接起来,可以在CPU的控制下,与其余外设进行数据通信。元件设置对话框如图421所示,仿真图如图422所示。43DMA模块的配置对IO设各的访问除了由软件控制的查询方式和中断控制方式外,还有由硬件控制的DMA方式。DMA(DirectMcrnoryAccess)的出现.把CPU从繁重的数据传送工作甲 大连理工大学硕士学位论文解放出来,使得CPU更专注于数据处理工作。在DMA数据传输方式下,DMA控制器接管了总线的控制权,并以中断的方式向CPU报告传送操作的结束。当DMA控制器执行数据传输任务时,主控制器可以自由执行其他并行的任务。DIVIA控制器将数据从源地址空间传输到目的地址空间。数据源或者目的地可以是Avalon从控制器外设(一个固定地址)或存储器中的一段地址范围。DM.A控制器具有连接数据流处理能力,允许固定或可变长度的数据传输。当DMA操作结束后,DNLE控制器发出一个中断请求(IRQ)。在NiosII系统的IP组件中,一个DMA控制器具有3个Avalon总线接口,分别是一个Avalon读主端口,一个Avalon写主端口,一个Avalon从端口,可用于读和写【281。两个主端口都是用于DMA的传输通道,从端口用于DMA控制相关寄存器的读写,具体的外设组成如图4.22所示。图4.23DMA外设组成Pig.4.23StructrueofDMAcontroller典型的DMA传输过程如下【29】:(1)CPU通过写控制端口配置DMA控制器用于数据传输;(2)DMA控制器向CPU发出HOLD信号请求使用总线:(3)CPU响应DIVLA控制器,并将总线让出,DIvIA控制器获得总线控制权;(4)DMA控制器读端口从读地址(可能是存储器或外设)读数据,写端口向目的地址(可能是存储器或外设)写数据,读写端口间利用FIFO缓存数据。每读写一个字节,地址寄存器加1,字节寄存器减1:(5)当传输完指定的数据,或数据包结束信号有效时,DIMA传输结束。传输结束时,DMA控制器发出中断请求(mQ)(需通过CPU设置DMA控制器是否能申请中断); 基于FPGA的嵌入式图像监控系统设计(6)CPU响应DMA数据传输完成事件后,DMA控制器撤销HOLD信号,归还总线控制权。数据传送结束后,CPU可通过读DMA控制器的状态寄存器来得知当前发生的事件由于该IPCore作为NiosII的一个外设挂在Avalon总线上,所以必须具备Avalon总线从接El逻辑。Avalon总线接口结构和时序如图4.22所示。在比较中断电路的方式后,在传送端的部分.虽然可用软件传送的方式从电路中的FIFO读出数据,但浪费太多时间在传送数据的行为上。因此为了改善传送数据的时间缺失,可以利用Altera提供的DMA模块.加速数据传递速度,Avalon总线从接口采用流传输模式就是用来实现DMA流传输。结合实际,在系统中以Avalon流传输模式来实现流模式主设备(自定义DATAINDATA)和从流模式(SRAM控制器)之间建立一个开放的信道以提供连续的数据传输。这个信道使得只要存在有效数据便能在主从端口之间流动,主设备不必为了确定从端口是否能够发送或接收数据不断地访问从设备的状态寄存器。流传输模式使得主从端口两者之间的数据吞吐量达到最大,同时避免了从设备的数据上溢或下溢。也就是说,在实际的DMA控制器只需要包含简单的流控制信号和一个计数器,就能在一个从外设和一个存储器之间连续地传输数据。通过在DMA控制器的作用下,以Avalon流模式方式,在采集FIF0和SRAM之间建立一条传送通道,让硬件来完成像素信息的自动读取。设计时,实现此部分功能主要有采集控制FIF0存储器以及AvalonStreamingPort接口等。+_++~●¨“⋯⋯J自⋯⋯^、。、。一⋯一^’1‘h。‘⋯⋯-1‘⋯。、1日cpu』;图4.23DMA数据传输示意图Fig.4.23DiagramofDMAdamtransfering 大连理工大学硕士学位论文为了保证上述DMA传送的正确进行,需要在NiosⅡ系统中加入一个自行设计的FIFO控制接口。当采集控制信号“key"有效时,当FIFO存储的数据达到设定的容量阈值(通常为容量的一半,本文所用的时,FIFO控制接口的dataavaible有效信号经由Avalon总线向DMA控制器提出传送请求。DMA控制器接受请求后,就直接控制数据从FIFO控制接口的Writedata端口写入SRAM。在FIFO控制接口设计完成后,作为用户自定义的IP核,需要通过连接NiosII系统的Avalon总线才能使其功能有效u”。,这部分工作是在SOPCBuilder环境下完成的。在DMA传输过程中,首先通过中断由CPU对DMA进行初始设置,打开DMA传输通道,使DMA在没有CPU干预的情况下进行传输。然后DMA直接将中的DATA_FIFO图像数据读到SRAM中,直到一帧图像数据传输完成。在这个系统中,SRAM与DKA之间是通过writemaster相连,DATAIN_FIFO则是通过Avalon总线与DMA的read_master相连,这样存储图像数据的SRAM与DATAIN之间就建立了通道。_FIFODMA4.4.4UART模块的配置UART是通用异步收发器,用于在两个设备之间进行串行数据通信。本系统加入UART,主要是为了方便调试。SOPCBuilder中提供的UARTIPCore,实现基于FPGA的嵌入式系统与外部器件之间的串行符号流通信。UART核实现了RS232协议,提供可调用的波特率、检验、停止/数据位以及可选的RTS/CTS控制信号,用户可以根据需要配置UART。UART核提供一个简单的寄存器映射Avalon从端口,它允许Avalon主外设通过读写这些控制/数据寄存器实现与UART的通讯。本系统中RS232用于开发板与PC的数据通信。UART核提供到内部寄存器文件的Avalon从模式接口,其用户接口包括6个16位寄存器:control、status、rxdata、txdata等,Avalon主模式通过访问这些寄存器来控制UART核,并通过串行连接传输数据。UART实现了RS-232异步发送和接收逻辑,通过TXD发送,通过RXD接收串行数据。由于FPGA的I/0缓冲不能接收RS一232电平,如果直接连向RS-232端口将损坏器件,因此需要使用电平转换缓冲器,将RS一232电平转换成FPGA端口能接收的电平。在SOPCBuiide中添加UART将至少生成两个I/O端口:RXD输入和TXD输出。本系统不需要流控制,因此无需增加CTS输入和RTS输出的两个I/O端口。UART核可实现任何标准RS-232的标准波特率。值得注意的是,波特率是根据提供到Avalon接口上的时钟频率计算出来的,如果在SOPCBuilde中更改了系统时钟频率,需要重新生成UART核硬件。在系统UART中,考虑到数据通讯的速度和数据传输的位数,可在UART设置选 基于FPGA的嵌入式图像监控系统设计项标签中按照自己的需求选择相应得选项,将波特率设置为115200ps,将数据位设为8位,停止位设为1位[3l】。4.4.5sD卡图像存储模块SD卡图像存储模块在NiosII中完成。SD卡的接口可以支持两种操作模式:SD卡模式和SPI模式。由于NiosII系统提供了成熟的SPI接口,所以设计中采用SPI总线协议模式来读写SD卡。SPI的时钟频率最大值小于或等于25MHz[321。表4.2SD卡的SPI接口信号Tab.4.2SPISignMofSDcard信号线功能描述CS主机向卡发送的片选信号CLK主机向卡发送的时钟信号DataIn主机向卡发送的单向数据信号Dataout卡向主机发送的单向数据信号 大连理工大学硕士学位论文5NiOS系统软件设计及实现本系统的软件设计是以C语言形式在利用Altera公司的软件集成开发工具IDE所提供的硬件配置模块(HAL)的函数支持下来完成编写的。系统启动后,进行初始化工作,初始化程序主要完成初始化DMA通道及清FIFO控制接口的FIFO缓冲器等。随后系统进入主循环状态,并检测按键。当检测到DETECT时,启动FIFO控制接口开始保存数据,当检测到data_avaible有效时,启动一次DMA传输。如此循环,直到检测到SAVE_DONE为止,就实现了图像数据的采集功能。5.1DMA传输程序设计在DMA传输过程中,初始化DMA是关键,其初始化流程如图5.1所示。初始化DMA⋯一-I启动I◆定义指向DMA寄存器结构体的指针,把它设置为SOPC中DMAflnp_dmacontrol皇O:pdma->np_dmastatus=O:pdma一>np—dmalength=320木240:pdma一>np_dmareadaddress=(int)Sdram_address;pdma->npdmawriteaddress=(int)na_cmos_cont;pdma->np_dmacontrol=np_dmacontrol—go_masknp_dmacontrol—i—en—mask}np_dmacontrol_byte_masknp_dmacontrolreen_masknp_dmacontrol_rcon_masknp—dmacontrol—leen_mask;5.2UART传输程序设计uart传输程序主要是将图像数据传输到电脑进行显示,用于调试。在PC端,通过串口接收工具和matlab将图像显示出来。NiosII系统中,可以通过ANSIC文件操作的标准库函数来执行UART传输(uart0),即将UART作为文件来处理。执行过程为:打开外设UART并获得外设旬柄——fopen();向外写入数据——fWrite():关闭外设一一fclose()。5.3SD存储卡的程序设计SD卡程序设计包括驱动程序和文件系统两部分设计。两部分通过文件系统的接口函数相连接。驱动程序包括硬件配置模块和命令应用模块。硬件配置模块包括访问SD卡的硬件环境配置、SPI接口实现通讯的基本函数、内存变量初始化以及SPI中断的处理。命令应用模块提供访问SD卡的读数据函数和写数据函数。5.3.1SD卡底层驱动程序5.3.1.1SD卡初始化sD卡上电复位后,默认的模式是SD模式。为了使卡进入SPI模式,必须将CS置低(至少延迟74个CLOCK)『3却并通过SPI总线发送CMDO使卡复位,同时激活卡进行内部初始化处理,使卡退出空闲状态。退出空闲状态后,就可以发送其他命令来操作卡。初始化函数主要完成以下工作:复位卡,激活卡内部进行初始化处理,使卡进入SPI模式;查询卡是否支持3.3V供电;调试SPI时钟频率到最大值(不超过25MHz)f34]:设置读/ 大连理工大学硕士学位论文写的块数据长度,读写操作以设置的长度为单位;初始化全局变量(包含卡中块的数量、卡的块长度、读/写超时时间)。初始化的流程图如图5.2所示:图5.2SD卡初始化流程Fig.5.2FlowofSDinitialization5.3.1.2SPI卡接口协议及SpI单字节传输程序根据SD卡协议,访问SD卡的不同功能,由不同的命令实现。所有的命令都由主机主动发出,SD卡根据不同的命令做出不同的响应,响应分为两种:命令+响应令牌;命令+响应令牌+数据块令牌+数据。在接收到命令响应令牌后,经过一段延迟后,还跟着1字节的数据块令牌,该令牌表示数据传输的开始,或者表示某种错误。如果数据块令牌表示传输的开始,那么由Nios或者卡发送数据。在SPI模式下,主机发送的命令长度为6字节.”01”(命令中字节1的最高2位)为命令的起始位,”1”(命令中字节6的最低位)为命令的结束位。命令号占用6位,需要执行命令的数字代号。命令参数长度为4字节,根据不同的命令,命令参数有不同的取值。SPI字节传输命令包括NIOS向SD卡发送一字节和从SD卡读取一字节的基本函数.程序通过向SPI内核的发送寄存器写数据和从接收寄存器读数据来实现通讯的,通过读取状态寄存器来检查SPI操作,如下所示:intavalon_spi—send—byte(alt_u32write—length,constalt_u8*盯ite_data){altu32status: 基于FPGA的嵌入式图像监控系统设计alt_u32i:volatilealt_u32read_data:for(i=O;i=SD_CMD_TIMEOUT){SPI—CS—Deassert0:returnSD_ERR_CMD_TIME叫T:)for(i=rlen一1:i>=0:i一){’resp[i]=trap;tmp=SPI_RecByte():)SPI_CS_Deassert0:returnSD__No-ERR;5.3.1.4SD卡写操作程序CS瞻fa粕DamOutlHL●●■■●*●●●●●t●●●●t●●LILIL}L|LLHIHIH|L|L}LLI|<-NCp><.N^{·J‘.Nz:.’c·N:5->Ix}HHH融riteComn'andIHlH.DamB:c:klHlHIH|HHXxlxHIH}H川}厶N:扣>z}zHl⋯⋯“lHCarlRespHH跏laResp}Bust,L}zzlz}Bust,HI图5.4SD卡的写操作时序图Fig.5.4TimingofSDwriteprocess初始化的时候已经设置了块的长度。写操作必须以块为单位。具体实现步骤是:Nios向卡发送写多块命令,SD卡响应(RI格式);NIOS向卡发送块写起始令牌,接着向卡发送要写入的数据块;NIOS等待接收来自卡的数据响应,该响应表示卡是否正确收到了数据,然后卡进入写状态,即时序图的忙状态。 基于FPGA的嵌入式图像监控系统设计返回错误返回错误N写地址是否超出容量飞写多块命令等待8个时钟SD卡是否有响应\皇数据开始令牌—了一发送数据SD卡是否正确收到数据、\<-T进入写状态(忙)正确结束图5.5SD卡的写操作流程图Fig.5.5DiagramofShiRRegisterChainN.1返回错—叫误N.I返回错叫~影’N.1返回错—.1误每写一块,主机都要等卡忙完以后,重复向卡发送数据起始令牌、数据块。调用函数waitbusy查询卡是否仍在忙着。写入数据,NIOS等待写入完成是有时间限制的。一旦超时,则返回错误码。写入多块以后,主机需要发送停止数据传输命令瞄副,表示主机没有数据发往卡了。卡收到该令牌后,又要再忙一段时间。写操作的时序图如图5.4所示,流程图如图5.5所示。SD读操作函数仅限于SD卡测试用,由于flash容量有限,实际使用时去除此函数以减少代码量,限于篇幅,不再详述。5.3.2SD卡文件系统设计要使写入SD卡的数据在装有Windows或其他操作系统的上位机中得到正确访问,需要在SD卡上创建它们支持的文件系统。FATl6和FAT32是目前还在广泛使用的两种版本FAT(FileAllocationTable)文件系统。与FATl6文件系统相比,FAT32文件系统能够支持2GB以上分区。同时由于采用了更小的簇,FAT32文件系统可以更有效率地保存信文等 大连理工大学硕士学位论文息。考虑到2GB以上的SD卡已较为普及,所以本文设计的文件系统只支持FAT32,并且将整个卡作为一个分区处理。5.3.2.1FAT32文件系统结构FAT32文件系统在结构上延续了FAT文件系统的基本结构,如表5.1所示,主要由以下三部分组成:(1)DBR(引导扇区):包括跳转指令、厂商标志、OS版本号,BPB(BiosParameterBlock)、扩展BPB、引导程序和结束符。(2)FAT表区:实际数据存储空间的映射表,FATl和FAT2完全一致,后者作为前者的备份;FAT32的文件系统中有两份完全相同的文件分配表FATl和FAT2,每份占用空间的大小可从BPB表中查得。文件在磁盘上以簇为单位存储,但是同一个文件的数据并不一定完整地存放在磁盘的一个连续的区域内,往往会分成若干簇,FAT表就是记录文件存储中簇与簇之间连接信息的,这就是文件的链式存储。FAT32文件系统采用32位字长的分配表,最多可以管理2TB个基本存储单元。(3)数据区:相比FATl6,从第2簇开始不再有专门的根目录空间,而是把根目录也当作一个特殊的文件来处理㈣3,起始簇是第2簇。表5.1Fat32的组织形式Tab.5.1ConceptionandscopeofLogisticsl扇区31个扇区实嚣取同FATl第2簇数据区不足一簇5.3.2.1FAT32文件系统实现NIOS对SD卡底层的读写驱动完成后,为了按照FAT32格式对SD卡上数据进行操作,根据系统的实际需要,本文在SD卡上实现了创建文件(CreateFile)等部分文件系统功能。1.初始化此函数的功能找到DBR所在的扇区,然后根据DBR区中BPB(BIOSParameterBlock,BIOS参数块)得到或计算需要的参数用于其后的程序操作。例如:FAT表起始扇区、FAT表所占空间;每簇所占扇区数。 基于FPGA的嵌入式图像监控系统设计2.文件的创建向SD中写入一个文件,首先要做的就是在根目录下建立文件的文件目录项,查找一个空闲簇,并找到准备写入文件表项的空闲位置,然后分配一个空闲簇作为文件数据的入口簇号,将文件的文件名(8.3格式)、文件入口首簇号、文件长度等信息写到刚才找到的写文件表项的位置。写文件时首先判断写位置是否超出范围,然后根据注册信息计算数据所在的扇区,从文件起始簇开始写入数据,当文件占用多个簇时,要先找到一个空闲簇,并在FATl表中建立一个簇链,然后在分配的空闲簇写上数据。如果是分配给文件的最后一簇,需要在FATl表中写上结束标志,以便读取文件,同时备份FAT2。当磁盘已满时,采取了覆盖最旧的文件的办法,由于采用时间作为文件名,只需要找到最小的那个文件名将其所占用的空间释放就可以了。流程图如图5.6所示。开始l+查找SD卡启动扇区0l在启动扇区中查找根目录及FAT表等信息◆在根目录中建立文件项◆向相应的数据扇区写入数据0在FAT袭中填写FAT链表图5.6文件创建流程图Fig.5.6Exampleofheadersserialnumber5.3.3BMP图像文件创建程序Windows中普遍使用的BMP文件格式将图形文件划分为四个主要部分:位图文件头,位图信息头以及颜色表及位图数据。由于本系统实现24位真彩色位图,因此没有颜色表项。在创建信息头和文件头后,紧接着启动DMA传输数据,由于传输时是将RGB合成32位数据一起传输,因此,在图像合成时必须将其分离,为提高程序运行速度, 大连理工大学硕士学位论文并考虑到本系统的实际需要,程序只实现了写BMP图像文件功能。以下是位图信息头和文件头的部分程序。unsignedcharheader[54]={‘0x42,Ox4d,0,0,0,0,0,0,0,0,54,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,1,0,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}:header[2]=(unsignedchar)(file_size&OxOOOOOOff):header[3]=(file_size>>8)&OxOOOOOOff;header[4]=(file_size>>16)&OxOOOOOOff:header[5]=(file_size>>24)&OxOOOOOOff:headerE183=width&OxOOOOOOff;header[19]=(width>>8)&OxOOOOOOff:header[20]=(width>>16)&OxOOOOOOff:header[21]=(width>>24)&OxOOOOOOff:图5.7保存图像文件流程图Fig.5.7DiagramofShiftRe#sterChain一57— 基于FPGA的嵌入式图像监控系统设计图5.7是系统的软件工作主要流程图。在主程序中,系统启动后,先进行初始化操作,包括中断初始化、文件系统初始化和SD卡底层驱动的初始化。随后系统进入主循环等待状态,~旦检灏,tJNDETECT电平的变化就暂停数_PIOSDRAM据写入,以防SDRAM缓存的图像数据被覆盖,同时根据当前的时间创建一个BMP格式的文件,然后往里填写文件头和文件信息头,随后连续写一帧RGB数据。文件创建完毕后系统继续处于检测等待状态,并恢复SDRAM数据写入。 大连理工大学硕士学位论文6系统调试与测试图像监控板是分块设计的,调试也是分开进行的。调试过程需要用到万用表、下载电缆、变压器和安装了和以及带有串口和并口的主机。调试过程分为部分图像监控板测试和FPGA内部模块调试。图像监控板测试包括物理测试和功能性测试,前者主要检测各管脚的电平情况后者检测各部分的功能实现情况。首先,在未上电时,用万用表对电源、地、各主要信号管脚和各电容、电阻进行连通性测试,查看是否与设计图一致。之后进行上电测试,利用万用表对各主要信号电平进行测试,查看其电压状态是否符合设计要求。在这部分的调试中,串口的电源与地接反,这是由于Protel软件中定义的封装和系统所使用元件的物理封装不一致,FLASH的一个管脚接错,这个是电路图设计时的错误。在实际操作中,为了有利于快速找到故障点,我们采用边焊元器件边测试。其次,在系统上电后,应检查电路工作有无异常,芯片在工作时有一定的发热是正常的,但是如果有芯片特别发烫,则一定有故障存在,需断电检查、排除故障后方可继续通电调试。6.1电源测试用万用表测量所有芯片的电源端,对照电路图,看起是否达到电路设计原理图中的设定的数值。+5V、+3.3V、+1.5V等电源模块的电压偏差不应超过O.2V,且电源纹波较小。6.2FPGA主芯片测试FPGA主芯片EPICl2功能测试需要在QuartusII和NiosIIIDE环境下进行测试程序的编写、编译和下载运行。分部件进行测试在排除错误的过程中十分有用,有助于尽快定位错误。下面描述各部件的测试过程。(1)EPICl2主芯片和JTAG接口测试由于有拨动开关、2个按键和发光二极管连接到了EPlCl2的外部10,所以可以编写小程序,通过拨动开关和按键的状态变化点亮相应的发光二极管,利用JTAG接口把程序下载到主芯片中,检测是否能正常工作。(2)EPCS配置芯片和AS接口在上面的测试完成后,就可进行程序的固化,即把测试程序写入到FPGA的配置芯片EPCS中,以后每次上电,程序就可自动运行。具体步骤:断掉图像监控板的电源,拔下UseBlaster下载电缆与5TAG接口的连接,将其连接在图像监控板的AS接口上。打开上 基于FPGA的嵌入式图像监控系统设计面提到的测试程序的下载页面,选择ActiveSerialProgramming方式。图像监控板断电后再次上电,即可观察到测试程序己经自动运行口71。串口、FLASH部分的测试需要在NiosIIIDE环境下进行,测试程序的编写与普通C语言的编写类似。6.3存储芯片测试FLASH测试程序首先以文件方式打开FLASH,如果无法打开,程序结束,直接返回;如果打开成功,指定起始地址,将待写入的内容写入FLASH。写入操作会返回一个操作码,如果写入成功,接着将写入的内容读出到字符数组中,然后显示出来,否则关闭FLASH。以下是部分程序代码:fd=alt_flash_open_dev(”/dev/extflash”);//打开FLASHif(fd){printf(”flashopensuccess\n”):ret_code=alt_write_flash(fd,0,source,BUF-SIZE):if(!ret—code){printf(”datawritetoflashSuccess.\n”):retcode=air_read_flash(fd,0,dest,BUF_SIZE)://将写入的内容读出到destif(!ret—code){printf(”datareadSuccess\n”):printf(”datareadis:”):printf(”%s\n”,dest)://显示从FLASH读出的内容printf(”flashtestsimpleend\n”):})all』ashesclose_dev(fd);//关闭FLASHSDRAM的测试程序调用了SDRAM控制器,并用拨动开关作为外部数据激励,将结果输出到数码管和led上进行显示。SDRAM控制器有一个重要的端口,当DONE为O时,进行读/写准备(自动运行的,不需要人工干预),当DONE为1时,进行读/写操作(人工操作)。 大连理工大学硕士学位论文具体编程过程是(状态机编写);(i)首先确定是进行读还是写操作,如果DONE为0.则读设置WR=O,RD=I;写设置WR-1,RD=0;(2)当DONE变为i时,进行读/写操作。如果是写操作,这时应输入要写入的数据(在DONE变为i时写入数据一定能成功,如果不管DONE,在任意时间写入数据都不会成功);如果是读操作,可以把输出数据赋值给所设置的寄存器。(3)读/写操作后,把WR=O,RD=O。虽然这步不是必需的.但是如果使WR-O,RD-O.能够以确保DONE能及时变为0。(4)返回(1)(即第一步)64采集电路的测试在图像传感嚣的引出管脚端,首先测量MTgMOll的管脚13,此管脚为图像像素时钟信号,该信号来至CIS,正常频率应为25脏Iz。然后测量MTgMOll的管脚14,此管脚为CIS工作的时钟信号,该信号来至系统核心FFGA,正常频率也应为25,咖z。最后分别测量管脚16、15分别代表帧有效信号和行有效信号,其频率分别为60Hz和30KEz,测试如图6.1所示:图61采集电路翘0试圈Fig61Testofacquisitioncircuit 基于FPGA的嵌入式图像监控系统设计65环境光亮电路和人体信号检测电路测试环境光亮检测电路属于相对比较完整的模块,我们就可以测试一下其分别在强光和弱光下的输出电压值,看是否满足设计要求。而对于人体信号检测电路也采用类似的办法,分别在场景甲有人和场景中没人的两种情况下进行测试,有人在场景中出现,榆测电路向FPGA输出开关高电平33V,否则输出低电平((o2V)。6sD存储卡读写模块测试sD存储卡调试可通过NIOS向sD卡发送有规律的数据(比如依玖递增的计数),再回读,将可读的数据通过7TAGUART输出到NTOSIDE的控制台显示。在sD建立文件系统后,还可以将sD卡直接放到读卡器在Pc显示数据。调试结果如图62所示。?’”Ⅷr%,一0-≯⋯?赛黑糍等桊*;.鲁爵高≯⋯。i,Ⅺx5lD口O⋯⋯b00⋯⋯Ox5●⋯⋯x⋯⋯’⋯I;c-nI,⋯⋯z,●~5⋯5⋯⋯⋯⋯⋯⋯⋯’*~⋯Ll’⋯E’5o⋯⋯⋯‘sD·‘·~7⋯⋯⋯⋯⋯⋯’‘F‘H‘“_。,I“‘crrr9ox⋯口⋯⋯口’一oK'-⋯rpr-oz03'⋯E。“.“⋯叫h⋯⋯∞B’OzII⋯’⋯⋯xnzjox'_~⋯⋯‘口一⋯o佃⋯⋯nl’⋯5n⋯rr⋯l⋯noxD⋯"J⋯14j圈62NIOS调试图Fig6.2DebugofNIOS·lL⋯⋯5"I7∞‘∞。$D.1a^‘I●ll"‘】一‘⋯*⋯n日Ⅱtm一6⋯【¨’L●■j蛳.-r“ura。3i’r±⋯ck【】,·’叫⋯m⋯“一jL⋯IocⅫ:”⋯‘∞.I.¨自1∞tcJ一⋯Ⅲ】一⋯⋯一4⋯l*",I±Id-o一‘0】⋯I~f【、n’j-67FPGA内部各模块调试对于FPGA内部信号,用示波器测试很不方便,因此采用quartusll中的SignalTapII嵌入式逻辑分析仪捕获和显示信号的状态,SignalTapII对FPGA的引脚和内部的 人连理工大学硕士学位论文连线信号进行捕获后,将数据存储在一定的RAM块中。因此需要用于捕获的采样时钟信号和保存被测信号的数据的R州块。。⋯⋯⋯a蚓20==—=—======二话五一⋯㈣3—!!一㈣㈣I-一“㈣^●iⅡⅢi—一口jn⋯-tqo*』is“ca^一㈣⋯等笔麓冀.门!!!!一⋯“∞h’#m⋯一一■■———=,⋯.幽63signalTap醍置界面Fig6.3controlpanelofSignalTap本系统中我们运用SignalTapII检测系统中$DRAM控制器信号,测试结果如下图64SDRAM控制器测试结果Fig6.4Resultoftestfor$DRAMcontroller对采集模块内部信号的姐0试结果如下一才嚣蓉蓍一i~瓣嚣一茹蘸匪 基于FPGA的嵌入式图像监控系统设计图65采集模块SignalIapⅫ』试结果Fig65ResultofSignalTaptest如racquisiuonmodule68联机调试经过以上的各个步骤的调试,基本上可以确定系统的硬件良好,各部分功能模块基本正确。接弋来可以进行图像采集存储的联机调试。先对图像采集缓存电路进行测试,方法是将帧缓存模块的输出端口连接到LCM上。我们采用了一款型号为TD036THEAl的TFT液晶屏,该液晶屏采用18MHz的时钟信号驱动,能够显示320*240的真彩色图像.为此编写了显示程序,部分程序如下所示:always@(posedgelcLKornegedgeiRSTN)b。目“if(fiRST-N)begmMOD3(;2"000;PreMOD3<=2'bOO;mDATA_REQ(2Ib0I“G11m000;mY<一11_11000;maxX<=11m000;end 大连理工大学硕士学位论文elsebeginif(reX>max_X)maxX<_mX:PreMOD3<=MoD3:if(HCont>H_SYNCBACK-2&&H_Cont<(H_SYNC_TOTAL-H_SYNC_FRONT-2)&&也cont>眨sYNC—BACK+I&&眨cont<(V_SY'NC_TOTAL-眨SYNC_FRONT+I))beginif(MOD一3<2'b10)MOD3<=MOD3+1'b1;elseMOD3<=2"000;if((MOD_3—2"001)&&(Pm_MOD_3—2"000))mDATA_REQ<=I'b1;elsemDATAR.EQ<=I'b0;if((MOD3一----2’b10)&&(Pre_MOD_3—2"001))mX<=mX+l'b1;end接下来FP6A采集缓存的数据能否正确传输到NIOS中,测试方法是先将通道接口处出来的数据发送到NIOS,通过串口向PC发送的图像数据,然后通过串口调试助手显示文件数据,再将数据导入到matlab进行图像合成。部分程序如下:为了调试方便,将下述代码转化为C程序,可脱离matlab独立运行。temp---textread(’rgb.饮tt,’%d’);I---reshape(temp,320,240);al=bitget(I,1);a2=bitget(I,2);a3--bitget(I,3);a4=bitget(I,4);a5=bitget(I,5);blue=(al+2木a2+4"a3+8木a4+16"aS)牛8;a6=bitget(I,6);a7--bitget(I,7);a8=bitget(I,8);a9=-bitget(I,9);al0=bitget(I,1o);一65— 基于FPGA的嵌人式图像监控系统设计green2(a6+2+a7+4+a8+8+a9+16。alOP8:all_bitget(1,11):a12=bitgeffI,12);a13-bitget(1,13);a14=bitget(I,14);a152bitget(I,15);red=(a11+2+a12+4+a13+8+a14+16+a15P8.测试前先才前端采集模块用计数器产生递增数列,并代替实际的图像数据源,并用NIOSIDE的控制台显示出来,在调试中,发现控制台显示的数据经常丢数据,后来经调试发现是数据通道接口缺少等待(waitrequest)信号,添加此控制信导后数据传输正常。但是在图像台成时出现倾斜问题,如图6.6所示。经过反复仔细检查和调试,后来证明是NIOS的接收数据的速率要略小于缓存模块发送的速率,因为测试的数据量比较小,所以问题没有暴露出来。后来降低了帧缓存模块发送数据的速率,才解决了图像倾斜的问题。但是图像分割的问题仍在,如图67所示,这四块图像实际上一幅完整的图像,但却分割开了,后来查明从SDRAM取图像每次并不都是从图像存储的起始地址开,通过采用控制同步的方法解决这个问题,如图68所示。鬣霭圈66图像倾斜Fig6.6Inclineofimage 大连理工大学硕士学位论文图68正常图像Fig68Thenormalimage 基于FPGA的嵌入式图像监控系统设计结论本论文主要完成了嵌入式图像监控系统的设计。在查阅相关可靠文献的理论依据下,本文完成的主要工作包括图像监控系统的板载电路设计,用数字逻辑电路实现了动体检测算法,利用Nios处理器SD的图像文件存储,完成了一个完整的图像检测和存储过程。本系统克服了模拟图像监控技术具有的弊端。它有很强的应用前景,在普通家庭、临时性作业场所等方面应用领域中。这些领域一般对视频传输指标的要求不一定很高,但要求便于携带,同时功耗较小(例如临时性场合等),具有体积小、功耗低、成本低、速度快、稳定性好等特点,可以有效地克服传统的基于计算机的监控系统的缺点。可做为一个智能部件“嵌入”到各种应用系统中,如将其配上网络接口接上计算机系统,即可构成一个监控网络系统,是一种相对独立的OEM部件。本设计在自制核心实验板上进行了软、硬件仿真和调试,调试环境参数设定如下:采集时钟频率为25MHz,NiosII时钟频率为100M_Hz、每帧图像大小为320X240像素。调试结果如下:系统采集速度在60帧/秒左右。通过仿真动体检测的响应时间在120ms左右,SD卡保存单帧图像时间约为3.7秒(每帧图像数据量是153600字节),连续工作一个星期无任何故障发生。由于核心处理器采用单芯片方案,采集系统比较稳定,同时其功耗大大低于多芯片方案。‘由于时间仓促,还没有对SD卡的文件系统做进一步的优化,SD卡存储速度方面还可以进一步提高;另外本系统检测部分还不能区别人和动物的活动,只能通过调节安装位置以降低认假率。 大连理工大学硕士学位论文参考文献[1]李明.基于SOPC的网络视频监控系统的设计与实现.硕士学位论文.大连:大连理工大学,2006[2]于枫,张丽英,廖宗建.ALTERA可编程逻辑器件应用技术.北京:科学出版社,2004.[3]GomesL,CostA.Teachingformalmethodswithinsystem—on—a-programmable—chipdsign.MicroelectronicSystemsEducation。2005。(MSE’05).Proceedings.2005IEEEInternationalConferenceon12—14June。2005,(5):105—106[4]肖儿良.可编程视频输入处理芯片SAA7111及其在图象多媒体中的应用.电子技术应用,1999,8(4):71-72[5]彭启琼,李玉柏,管庆.DSP技术的发展与应用.北京:高等教育出版社,2002[6]潘松,黄继业.SOPC技术实用教程.北京:清华大学出版社,2005[7]杨小川.ProtelDXP设计指导教程.北京:清华大学出版社,2003.[8]AlteraCorporation.QuartusllDevelopoentSoftwareHandbook,2005[9]王力,张伟.电路设计与制板ProtelDXP库元器件手册.北京:人民邮电出版社,2003.[103王俊雄.基于FPGA及Nios的嵌入式系统应用研究:(硕士学位论文).成都:西南交通大学,2006.[11]PChalimbaud,FBerry.DesignofanimagingsystembasedonFPGAtechnologyandCMOSimager.Proceedings.2004IEEEInternationalConferenceonField—ProgrammableTechnology,2004:407~411[12]段晓晨.实时视频SDRAM控制器的FPGA设计与实现.太原理工大学学报,2006,12(5):6-8[13]苏吉文.基于SOPC的一种数码相机的设计方案,(硕士学位论文).重庆:重庆大学,2005[14]J.E.Adams.Designofpracticalcolorfilterarrayinterpolationalgorithmsfordigitalcameras.Proc.SPIE,RealTimeImaging.1997:117—125[15]CollinsRetal.”Asystemforvideosurveillanceandmonitoring’,VSAMfinalreport.CarnegieMeltonUniversity,TechnicalReport.2000,卜25[163刘杰,周建华.基于SDRAM的视频处理器设计与实现.电子元器件应用.2006,14(7):51—54[17]吴皓,刘鹏.视频采集系统SDRAM控制器的FPGA实现.中国有线电视.2003,28(22):57—60[18]徐红,叶丰,孟利民.基于图像处理的SDRAM通用接口设计.现代电子技术.2006,29(16):67—69[19]刘斌兵,刘云海.用FPGA实现高速大图像采集系统.电子技术.2006,2(1):60—63[20]唐跃平,韩存兵.双口RAM与FIFO芯片在数据处理系统中应用的比较.微机与应用,2000,8(9):27-28.[213PanosG.Michalopoulos.”Vehicledetectionvideothroughimageprocessing”.TheAutoscopesystemIEEETransactiononVehiculartechnology.2001,14(1):21—29[223刘虹,黄涛.基于FPGA的高速图像采集系统的研究与实现.工业控制计算机.2004,12(8):18-19[23]黄爱民,安向京.数字图像处理与分析基础.北京:中国水利水电出版社.2005[24]RafaelC.Gonzalez,数字图像处理,阮秋琦译.北京:电子工业出版社.2004—69— 基于FPGA的嵌入式图像监控系统设计[25]PChalimbaud,FBerry.DesignofanimagingsystembasedonFPGAtechnologyandC^IOSimager.Proceedings一2004IEEEInternationalConferenceonField—ProgrammableTechnology,2004,9(3):407-411[26]DalayB.AcceleratingsystemperformanceusingSOPCbuilder。System—on—Chip,2003.Proceedings.InternationalSymposiumon19—21Nov.2003,22(4):3-5[273方茁,彭澄廉.基于Nios的SoPC设计.计算机工程与设计,2004,25(4):504-507[283张攀登,李小强,吴效明.基于NiosII软核处理器和USB2.0的医学图像压缩和传输.中国医学物理学杂志,2008,(2):582-585[293袁海林.基于NiosII的高速图像采集系统的设计.电子器件,2007,30(4):1330—1336[303方苗,陈泽文,彭橙廉.SOPC设计中的用户自定义逻挥,计算机工程,2004,6(9):142—147[31]GhozziF,NottelP,MarchegayP.VideoacquisitionandmemorisationonExcalibur—system.ElectricalandComputerEngineering,2003.I髓ECCECE2003.CanadianConferenceonVolume2,4-7May2003,5(15):1275-1278[32]SDGroup.SDmemorycardspecifications,2001.[333吴作勇,韩新沽,孟宪尧.基于FPGA和ARM的彩色图像处理系统.自动化技术与应用,2007,26(4):67-69[34]D.Seguine.Justaddsensor—Integratinganaloganddigitalsignalconditioninginaprogrammablesystemonachip,Proc.IEEESensors,2002,7(6):665—668[35]StephaneSimard,RachidBeguenane,FricLarouche,LucMorin.A2005reviewofFPGAarithmetic.A锄/SIG璐ThirteenthACMInternationalSymposiumOnFieldProgrammableGateArrays-FPGA,2005,16(7):276-288[36]王建国,吴书铭.基子SOPC技术的硬盘扇区读写.微计算机信息,2007,15(102):100一i01[373D.Seguine.Justaddsensor—Integratinganaloganddigitalsignalconditioninginaprogrammablesystem0nachip,Proc.IEEESensors,2002,20(6):665—668—70一 大连理工大学硕士学位论文附录A图像监控系统采集板电路原理图虹一.H:。:篮.÷兰:::===;器;.已====:=鬈..1.一%∞勰Ⅳ”_广—一■===淼.2:’’兰2’tn‘^—P———一:悄。叫。;:三三琴;L一二:。=2誊—芒中8i,==:≯j=二~#o——————一,0】z蕊#再?i塞嚣;’羔芝::蚤孽≥附录B图像监控系统核心板电路原理图:哆2≥’≥譬苫篓2’一~;;:。一:;;厶:≤;盘叠于:毒楚点⋯篓二叠~☆甜一i曩磊4罨■了“:⋯;一.j⋯Z^r一~:⋯:⋯:⋯j⋯≈2{岂哮譬t,“,二⋯■⋯..;蠹一71—770“,^_膏州0r————1趣r善』L⋯==爹筹=:=蒸fn。≥;:?署::j’⋯一+、=“醉弘?。”≯::萼?l÷二:÷菇≥ji二:j一,三㈧藩囊r中∥.~}E~鞋~曩 基于FPGA的嵌入式图像监控系统设计附录CFPGA内部RTL结构图0:‘。德:(乏i‘ik^繇●j—j|律{,f潞Xt二i一,。7ZI—.——⋯一一一一一—。.~一一———.一一⋯..——。一..——一一—。一。f~_』一..1⋯。l苣专鞫瞌!;妊.L女.予:≮:b.磷峰峙‘士,艺t罐‘砖。嘻o一《·峰·堪.L●.kel彦b凼;:忆专;曩}:l:々。·,’≮j‘?!●,^?∥●,l-.■。嚣潦甲±}恕埘i崩阐fll{立;;蚓一ni旷1。黪彰。1。。i。《}:。}Ijli}m⋯m:《忻B岜—⋯产量一广f十产一.L。4j}鹾臻蚋剥川nⅢ盯耳牟”一“1㈣——-f;}弗部。;|{ll-:昝j确寸·瞅!{!£2IIO#褰载!四一72— 大连理工大学硕士学位论文附录D图像监控系统实物图 基于FPGA的嵌入式图像监控系统设计攻读硕士学位期间发表学术论文情况《基于FPGA的嵌入式图像监控系统设计》作者:胡志海,王德君刊物名称:大连理工大学研究生院网络学刊主办单位:大连理工大学攻读硕士学位期间专利申请情况发明专利名称:一种自感知便携式图像无线监控设备及使用方法(正在申请)发明人:王德君,胡志海申请号:200810228474.6主办单位:大连理工大学 大连理工大学硕士学位论文致谢时光飞逝,岁月无痕,随着论文的最后完成,我的研究生生活也进入了尾声。在论文完成过程中,我始终得到了导师王德君教授的悉心指导,他严谨的治学态度,求实的工作作风,使我受益匪浅,感受良深。三年来,王老师不仅在学术上给予具体的指导和把握研究方句,而且在生活上关心和帮助作者,并身体力行的教会了作者许多为人的道理。在我所获得的每一点成绩中都凝结着他的辛劳,在此我首先向他表示诚挚的感谢。此外,感谢大连市IT优秀教师专项资金项目《基于SOPC的嵌入式图像监控和处理系统的设计和实现》的支持,另外还要感谢郭兰兰同学的帮助,论文的顺利完成离不开她的帮助和建议。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭