2017毕业论文-基于cpld,fpga的图像采集系统的设计与实现

2017毕业论文-基于cpld,fpga的图像采集系统的设计与实现

ID:33115690

大小:997.03 KB

页数:44页

时间:2019-02-20

上传者:U-25918
2017毕业论文-基于cpld,fpga的图像采集系统的设计与实现_第1页
2017毕业论文-基于cpld,fpga的图像采集系统的设计与实现_第2页
2017毕业论文-基于cpld,fpga的图像采集系统的设计与实现_第3页
2017毕业论文-基于cpld,fpga的图像采集系统的设计与实现_第4页
2017毕业论文-基于cpld,fpga的图像采集系统的设计与实现_第5页
资源描述:

《2017毕业论文-基于cpld,fpga的图像采集系统的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

武汉**大学毕业设计(论文)基于CPLD/FPGA的图像采集系统的设计与实现学院(系):专业班级:学生姓名:指导教师: 武汉理工大学毕业设计(论文)目录摘要IAbstractII1绪论11.1课题提出的背景和意义11.2设计研究的主要内容及预期目标21.3论文结构22系统方案设计32.1系统总体设计方框图32.2系统工作原理33系统硬件设计43.1系统整体硬件结构图43.2FPGA控制系统设计43.2.1主控芯片的选择43.2.2控制部分电源设计53.2.3时钟电路设计63.2.4复位电路设计63.3图像采集电路设计73.3.1图像传感器的选择73.3.2图像传感器MT9M011的工作原理73.3.3图像采集硬件电路83.4外部存储器电路设计93.4.1外部存储器的选择93.4.2SDRAM简介93.5D/A转换器电路设计103.5.1ADV7123简介103.5.2D/A转换硬件电路图设计114系统软件设计124.1图像传感器初始化程序设计124.1.1I2C控制程序设计124.1.2MT9M011初始化程序设计144.2图像数据采集模块154.2.1图像采集原理介绍154.2.2图像采集模块的设计与仿真16 武汉理工大学毕业设计(论文)4.3格式转换模块184.3.1格式转换原理介绍184.3.2模块程序的设计与波形仿真204.4SDRAM控制器的实现224.5VGA控制器234.5.1VGA接口介绍244.5.2VGA控制器的设计244.5.3VGA控制器的仿真与实现265系统调试与分析285.1系统实物图285.2系统调试285.2.1系统调试过程285.2.2系统调试中遇到的问题295.3系统调试的体会30结束语31参考文献32附录1图象采集部分源程序33附录2电路图36附录3实物图和采集图像39致谢40 武汉理工大学毕业设计(论文)摘要随着全球科技的不断发展,各种工业控制、模式识别以及计算机视觉对图像采集的要求越来越高。伴随着嵌入式系统的兴起和发展,设计一种价格合理、使用灵活的图像采集系统已成为可能,而这种图像采集系统的设计也有着十分重要的实际意义。本文详细介绍了一种基于嵌入式技术的数字图像采集系统的设计方案。该系统采用FPGA作为主控芯片,来完成对图像传感器、SDRAM存储器以及VGA显示器的时序控制。该芯片内部由I2C配置模块、图像采集模块、图像数据格式转换模块、SDRAM控制器模块以及VGA控制模块组成。本设计的创新点在于充分发挥了FPGA在数字信号处理高集成、高速度的优点,很好的解决了图像采集数据量大、处理耗时、信号复杂等技术难点。另外,该设计的图像采集、处理及显示均没有PC机的参与,较好的解决了传统图像采集体积大、成本高的缺点。本文首先分析了图像采集系统的研究现状和意义,简单介绍了系统的设计方案和工作原理,之后在论文的3、4章中,我分别对系统的硬件电路、软件程序进行了详细的原理介绍,并对各模块进行了设计和仿真。将每一部分的仿真结果都与理论结果进行了比较和分析,并在实物中进行了调试。在论文的第5章中,详细记录了调试中遇到的问题与自己的调试体会,并给出了实物调试结果。在实物运行中,系统能够实现图像的实时采集,且采集图像较为清晰,收到了预期的效果。关键字:FPGA;图像采集;VGA;SDRAM存储器I 武汉理工大学毕业设计(论文)AbstractWiththecontinuousdevelopmentofglobalscienceandtechnology,industrialcontrol,patternrecognitionandcomputervisionforimageacquisitionhavebecomeincreasinglydemanding.Accompaniedbytheemergenceofembeddedsystemsanddevelopment,todesignareasonableprice,theuseofflexibleimageacquisitionsystemshavebecomepossible,andthatthedesignofimageacquisitionsystemalsohasimportantpracticalsignificance.Thispaperdescribesatechniquebasedonembeddeddigitalimageacquisitionsystemdesign.ThesystemusesaFPGAchipasthemastertocompletetheimagesensor,SDRAMmemory,andVGAmonitorcontrolofthetiming.ThechipisbuiltupofinternalconfigurationmodulebytheI2C,imageacquisitionmodule,imagedataformatconversionmodule,SDRAMcontrollerandtheVGAcontrolmodule.TheinnovationofthisdesignistogivefullplaytotheFPGAdigitalsignalprocessinginhighlyintegrated,high-speedadvantagesofagoodsolutiontomanytechnicalproblemssuchasthelargeamountofimagedatacollection,processingandtime-consuming,complexsignals.Inaddition,thedesignofimageacquisition,processinganddisplaymachinesarenotinvolvedinPC,whichisabettersolutionofthebulkytraditionalimageacquisition,theshortcomingsofhighcost.Inthispaper,Ianalyzethestatusandsignificanceoftheimageacquisitionsystematfirst.Afterabriefintroductionofthesystemdesignandoperatingprinciple,Iintroducetheprincipleofthesystemhardwarecircuits,softwareprogramindetail.Atthesametime,IdesignthemodulesandsimulatetheminChapter3and4.Eachpartofthesimulationresultswiththetheoreticalresultsiscomparedandanalyzed,andin-kindinthedebugger.InthepaperinChapter5,Irecordtheproblemsencounteredintestingandmyownexperiencesindetail,andgivestheresultsofphysicaltesting.Inthephysicaloperation,thesystemcanachievereal-timeimageacquisition,theimageacquisitionisclear.Thissystemhasreceivedthedesiredresults.KeyWords:FPGA;imagecapture;VGA;SDRAMmemoryI 武汉理工大学毕业设计(论文)1绪论1.1课题提出的背景和意义人类有80%以上的信息来自于图像。随着全球工业化的不断深入,科学技术的不断提高,图像技术在众多科学研究领域和日常生活中得到了广泛的应用。图像技术包括图像采集、图像传输、图像存储、图像处理和图像分析等。其中图像采集是图像技术的基础和前提。高速的图像采集和传输应用需求,极大地推动了图像技术的发展。目前,图像采集系统广泛的用于国民经济、国防建设、科学研究等各个领域。在医学方面,如染色体分析以及超声、核磁共振和CT等技术,是利用图像系统对病人进行无痛安全直观地诊断和治疗;通讯方面的应用如可视电话、电视会议和新一代的手机功能;在卫星遥感方面,广泛用于土地测绘、资源调查、气象检查、环境污染监督、农作物估产、军事侦查和地形匹配等领域;在公安刑事侦察中的指纹识别、人脸组合与识别等;还有工业生产方面的产品无损检测等等。对于这些基于图像辨别而进行操作控制的应用系统,图像采集是它们不可或缺的前端设备。而多媒体通信、高清晰度电视以及图像处理、模式识别和计算机视觉等众多领域都对视频图像的采集与处理提出了越来越高的要求,显然图像采集技术的研究具有重要的现实意义。传统的数字图像采集、处理系统多采用计算机软件、单片机或专用DSP等来实现。这些方法要么处理速度较慢,无法满足现代图像处理系统的实时性要求;要么专业性太强,应用受限制。为了有效地提高各类图像采集速度和实现各类图像处理算法,许多用于视频图像采集和处理的芯片随之应运而生,芯片的处理功能也越来越强大,使用也越来越方便。而FPGA是一种较大规模的可编程逻辑器件,可以用于任何的数字逻辑系统[1],特别是实时处理方面,更有独特的优势[2]。FPGA本身的高性能(基于查找表LUT及逻辑模块结构)、高集成度(高达几十万甚至上百万个逻辑门)和低功耗的特点,己经使其具备了高速CPU的性能。用FPGA来做实时图像处理,由于可编程逻辑的大容量、灵活性,可以实现图像极大的并行处理能力,速度比PC机和数字信号处理芯片快,并可以实现SOPC系统[3]。如果采用FPGA结合外部存储器的方式,则它在处理像实时图像信号这样巨大的信息量时便显得游刃有余,满足系统对实时性的要求。如果将FPGA与一些现有的图像处理芯片结合起来,组成满足很多场合需求的嵌入式图像处理系统,这不仅能解决以上许多问题,还可以大大提高系统图像处理的性能[4]。38 武汉理工大学毕业设计(论文)综上所述,与其他实现方式相比,利用FPGA来实现图像处理有其独特的优越性;FPGA芯片的可编程性和强大的处理能力,使其可以灵活、高效的运行和分析各种图像处理算法;并且它的高集成度,使我们可设计出较小的系统。因此,深入研究基于FPGA进行实时图像处理系统,对开发出高性能的图像处理产品具有极其重要的现实意义!1.2设计研究的主要内容及预期目标本设计研究的主要内容是:依照图像采集原理及FPGA技术,完成图像采集系统的设计。使系统在FPGA的控制下,将图像传感器中的数据正确的读出,并传送至液晶显示屏显示出来,以检测所采集的图像数据的正确性。本设计所要完成的任务和预期目标是:(1)设计能够进行实时图像采集的图像采集系统的方案;(2)进行系统硬件电路的设计;(3)完成对FPGA的软件程序的编写并进行仿真调试;(4)在以上基础上进行实际调试,并能够在液晶屏上看到采集到图像。1.3论文结构基于以上的设计目标和任务,本论文分为以下几个方面进行阐述所设计的图像采集系统:(1)第1章绪论。主要概述图像采集系统的研究背景和意义;(2)第2章系统方案设计。介绍系统的设计方案;(3)第3章系统硬件设计。对系统的硬件电路进行分块设计;(4)第4章系统软件设计。运用VerilogHDL语言对FPGA进行编程,并对各模块进行波形仿真验证;(5)第5章系统调试。介绍了调试方法;(6)结束语对设计创新点进行了总结,并提出了设计的不足,对进一步的研究提出了展望。38 武汉理工大学毕业设计(论文)2系统方案设计2.1系统总体设计方框图外界图像FPGAD/A转换器图像传感器VGA接口SDRAM存储器本系统主要由图像传感器采集模块、SDRAM存储模块、FPGA控制模块、D/A转换模块组成,系统总体设计方框图如图1所示。图1系统总体设计方框图如图1所示,本系统使用的硬件芯片主要有以下4个:图像传感器、FPGA、SDRAM存储器以及D/A转换器。FPGA[5]选择ALTERA公司生产的具有大容量、低成本的CycloneIIEP2C70;图像传感器选择Micron公司生产的具有130万像素传感器的MT9M011;SDRAM选用4M×16位的IS42S8800;D/A转换器选用ADI公司生产的ADV7123。2.2系统工作原理如图1所示,本设计中FPGA为整个图像采集系统的控制核心,使用VerilogHDL[6]为编程语言。系统的工作流程主要有以下5个步骤:(1)FPGA通过I2C[7]协议对图像传感器芯片MT9M011的控制寄存器进行设置,设置它的工作方式(如曝光时间、工作模式等);(2)对MT9M011初始化完毕后,FPGA为图像传感器提供主时钟,读出图像传感器的行、场、帧同步信号以及图像数据信号;(3)在FPGA中使用行缓冲加流水线的处理方式将读入的行数据实时转换成标准的30位RGB数据;38 武汉理工大学毕业设计(论文)(4)将SDRAM数据端口仿真成四个虚拟的数据端口(2个写端口和2个读端口),对RGB数据进行存储;(5)在FPGA中产生VGA的同步信号,并从SDRAM中读出图像数据进行显示。3系统硬件设计3.1系统整体硬件结构图摄像头模块CMOS图像传感器DATAFVALLVALPCLKMCLKSDATASCLKFPGACMOS数据采集控制模块I2C控制器RGB数据转换模块VGA及AD转换控制器SDRAM控制器DA转换器、VGA接口DATAHSVSCLKSDRAMDATAADDRCTRL为了对系统的硬件结构有一个整体性的把握,下面对整个系统的硬件结构图进行讨论分析。图2系统硬件结构图由第2章的分析,可以得到系统硬件结构图如图2所示,硬件电路主要有FPGA控制电路、图像采集电路、SDRAM存储电路、D/A转换电路四个部分。系统上电后,FPGA内部的I2C控制器配置程序经过I2C总线引脚SDATA与SCLK传输至CMOS的寄存器中,使摄像头按照配置的模式工作,输出行场同步信号、像素时钟、图像数据。CMOS模块检测行场同步信号,生成写使能信号,在像素时钟的上升沿将数据采集到寄存器中,RGB数据转换模块将采集的原始RAW数据转换成RGB信号,通过SDRAM控制器模块将数据写入SDRAM。之后,FPGA产生行、场、帧同步信号,将数据通过DA转换器,将数据转换成VGA接口所需的模拟信号,输出至液晶屏上显示。下面就针对FPGA控制电路、图像采集电路、SDRAM存储电路、D/A转换电路四部分硬件电路进行详细介绍。3.2FPGA控制系统设计3.2.1主控芯片的选择38 武汉理工大学毕业设计(论文)由于本设计为图像采集系统,要处理大量的图像数据,其运算需要大量的逻辑资源。因此FPGA的片内LE要很丰富,且其管脚必须满足外部器件连接的要求,另外考虑到将来功能的扩展综合,选择ALTERA公司生产的CycloneⅡ系列EP2C70F896作为主控器件。EP2C70F896芯片参数[8]如表1所示。表1EP2C70F896芯片参数逻辑单元68416M4KRAM块(4K比特+512校验比特)105总比特数1152000嵌入式18x18位乘法器150PLLs4最多用户I/O管脚622差分通道200由表1知,此芯片资源丰富,对于本系统的需要,完全可以满足。3.2.2控制部分电源设计由于FPGA的工作电压为3.3V,而DA转换器等器件需要5V的电压。因此,电源需要两组:5V与3.3V。目前总的来说有三种电源解决方案,分别是线性稳压器电源(LDO)、开关稳压器电源、电源模块。由于开关稳压器电源较易实现且性能稳定,在本设计中选择该方法实现电源的设计,电源设计电路图如图3所示。图3电源设计电路图由于自己手上有一个9V38 武汉理工大学毕业设计(论文)的变压器,应此,对于220V电压到9V电压的转换在这里就不再设计。如图3所示,在该电源的设计中主要使用了78LS05及LM2676两个稳压管,实现了5V和3.3V电压的获得。3.2.3时钟电路设计目前在时钟电路设计中,一般选用晶振来作为时钟源,而晶振又分为有源晶振和无源晶振。无源晶振无源晶振是有2个引脚的无极性元件,需要借助于时钟电路才能产生振荡信号,自身无法振荡起来。它的信号电平是可变的,根据起振电路来决定,同样的晶振可以适用于多种电压,且价格通常也较低,无源晶振相对于有源晶振而言其缺陷是信号质量较差,通常需要精确匹配外围电路(用于信号匹配的电容、电感、电阻等),更换不同频率的晶体时周边配置电路需要做相应的调整。而有源晶振有有源晶振有4只引脚,是一个完整的振荡器,不需要外部振荡器,信号质量好,比较稳定,而且连接方式相对简单,不需要复杂的配置电路。由于本设计对时钟信号的精度要求较高,时钟信号的不稳定很容易造成图像采集和显示的失败。因此,综合考虑,在本设计中选择有源晶振作为系统时钟的发生器。时钟电路设计图如图4所示,分别将1、2、4脚对应接上电源和地之后,在3脚上就输出自己所要的时钟信号。由于DA转换器以及VGA接口电路的频率为50M赫兹,故此有源时钟选择50M赫兹。图4时钟电路设计图3.2.4复位电路设计38 武汉理工大学毕业设计(论文)为保证系统工作的稳定性,需要在电路设计中加入复位电路,它的基本功能是:在系统上电时提供复位信号直至系统上电稳定后撤消复位信号,以此防止在系统上电时,由于电平不稳而对系统器件造成的冲击。同时它还要用来时刻检测电源的状态,在电源失效时及时的复位系统,并且可以根据需要(如系统陷入不可知的错误运行状态时)手动的复位系统。一般常用的RC复位电路可以实现上述基本功能,但是解决不了电源毛刺和电源电压不足的问题,而且调整RC常数来改变延时会令系统驱动能力变差[9]。为此,本设计采用本系统中采用复位芯片SP70SS进行复位电路的设计,它可在上电时产生复位信号,也可使用复位按钮手动复位。在信号的连接设计中,SP70SS芯片的MR管脚为手动复位管脚,复位电路设计图如图5所示。输入低电平有效,当此管脚上的电平被下拉到低于LOW时产生有效低电平复位信号。RESET输出的有效复位信号一般持续200ms左右。图5复位电路设计图3.3图像采集电路设计3.3.1图像传感器的选择目前的图像传感器主要有CCD和CMOS两种。与CCD传感器相比,CMOS传感器不仅成本远低于CCD产品,而且CMOS传感器可轻松实现较高的集成度,另外CMOS传感器拥有超低功耗的优点。本系统图像采集用于监控领域,对于图像的质量要求不是非常高,而对传感器的功耗要求必须很低,因此本系统的图像采集部分选用了CMOS图像传感器。为了获得更好的效果,在设计中,我选用Micron公司生产的CMOS传感器MT9M011,它为1/3英寸的主动式数字图像传感器,其有效图像序列范围为1280×1024,结合了众多数码照相机具有的功能如行列跳跃、快照模式等等,可以通过一个两线的串口来实现可编程操作,并且具有功耗低的特点[10],帧有效和行有效信号将在特定的引脚上输出,并且还配有像素时钟同步响应的有效数据。3.3.2图像传感器MT9M011的工作原理图像传感器MT9M011内部原理框图[11]如图6所示,它包括一个1316×1048的图像采集阵列、一个模拟信号处理器、一个控制寄存器、一个时序控制器以及一路A/D转换器。38 武汉理工大学毕业设计(论文)1316×1048图像阵列模拟信号处理器控制寄存器时序控制器模数转换器I2C控制信号同步信号图像数据图6MT9M011内部原理框图FPGA通过I2C协议对图像传感器MT9M011的控制寄存器写入命令,对图像传感器MT9M011进行初始化。MT9M011初始化之后,按照控制寄存器所设定的工作方式启动时序控制器来控制MT9M011的各采样点对外界景象进行采样,并控制模拟信号处理器将采样到的数据以一定的方式通过模数转换器转化成数字信号输出。与此同时,时序控制器产生与采集数据对应的行、场、帧同步信号,来产生所采集图像数据的坐标,以便后续处理。3.3.3图像采集硬件电路图7MT9M011硬件电路图由3.2.2中介绍的MT9M011的工作原理,可以画出MT9M01138 武汉理工大学毕业设计(论文)硬件电路图如图7所示,SDATA与SCLK为I2C总线的数据和时钟线,CLKIN接主时钟25M赫兹,DOUT9-DOUT0为图像传感器的数据线,PIXCLK为像素时钟、LINE_VALID为行有效信号、FRAME_VALID为帧有效信号。由于MT9M011内部自带时钟发生器和ADC,因此只需通过SDATA与SCLK两条总线配置好MT9M011的控制寄存器之后,为MT9M011提供CLKIN时钟信号,其就可将采集到的图像数据连同像素时钟、行有效信号以及帧有效信号一起输出至FPGA。3.4外部存储器电路设计3.4.1外部存储器的选择本系统采集的一帧图像分辨率大小为640×480,色深是24位,采集时需要在存储器中缓存[12]两帧,因此存储器的容量至少为:640×480×3×2=1.8432MByter由于需要的容量太大,不可能存放在芯片内部的RAM中,所以必须使用外部存储器来解决。从系统时钟来考虑,系统时钟为50M赫兹,对于SRAM、SDRAM和DDRSDRAM,这个时钟都可以满足,所以,时钟的限制可以忽略。从成本来考虑,在同等容量的存储器中,SRAM的成本要比DRAM的成本高很多[13]。从器件体积考虑,单片SRAM的容量很小,需要多片来组合,这样体积就比采用DRAM的要大很多。从控制的复杂度来考虑,SRAM的控制最简单,不需要刷新操作,其次是SDRAM,它的控制难点在于需要刷新操作,控制最复杂的是DDRSDRAM,它在时钟的上升沿和下降沿都要进行数据传输。综上所述,从单片容量、时钟、体积、控制复杂度等几方面综合考虑,SDRAM是最佳选择。它的优点是成本低,速度和体积也完全可以满足我们的要求。虽然控制比SRAM要复杂一些,但现在都有成熟的解决方案,况且价格比SRAM便宜很多,可以有效的降低设计成本。因此设计选用SDRAM。对于SDRAM的型号,选用ISSI公司的IS42S16400A,存储容量大小4Mbit(1Mbits×16bits×4Banks),运行时钟为166、133或100MHz,可编程的突发长度及突发方式,可编程的/CAS等待时间(2或3周期)。3.4.2SDRAM简介随着数据处理技术的进一步发展,对于存储器的容量和性能提出了越来越高的要求,SDRAM(SynchronousDynamicRandomAccessMemory)即同步动态随机存储器,同步是指Memory工作需要步时钟,内部命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是由指定地址进行数据读写。38 武汉理工大学毕业设计(论文)3.4.3SDRAM硬件电路设计SDRAM硬件电路设计图如图8所示,FPGA输出信号DRAM_D[0..15]为图像数据信号,将其直接接至SDRAM的数据端口D0-D15;FPGA输出信号DRAM_A[0..11]为FPGA的地址信号,将其分别接至SDRAM的地址端口A0-A11;另外FPGA根据图像传感器传来的各类时序信号产生SDRAM的控制信号来控制SDRAM的读写。图8SDRAM硬件电路设计图3.5D/A转换器电路设计由于FPGA输出的图像信号为数字信号,而我的显示屏为VGA接口,其需要的信号为模拟信号。因此,在FPGA与液晶屏之间就需要一个数模转换器,在本设计中选择ADI公司的ADV7123[14]作为图像数字信号的D/A转换器。3.5.1ADV7123简介ADV7123最高可以支持100HZ刷新频率时1600×1200像素的分辨率。ADV7123内部含三路最高可达240MS/S的10位视频D/A转换器,时钟频率为50MHZ。38 武汉理工大学毕业设计(论文)ADV7123原理框图如图9所示,ADV7123由完全独立的3个10位高速的D/A转换器组成,RGB数据分别从R9-R0、G9-G0、B9-B0输入,在CLOCK的上升沿锁存到数据寄存器中,然后经高速D/A转换器转换成模拟信号,3个独立的视频D/A转换器都是电流型输出,可以接成差分输出,也可以接成单端输出,在此设计中接成单端输出。为满足工业要求,在模拟输出端使用75欧电阻接地。消隐及同步逻辑控制输出信号的同步和消隐,低电平有效的BLANK信号是复合消隐信号。当BLANK信号为低电平时,模拟视频输出消隐电平,此时从R9-R0、G9-G0、B9-B0输入的所有数据被忽略。同样是低电平有效的SYNC信号是复合同步信号,控制输出信号的同步。BLANK与SYNC信号都是在CLOCK的上升沿被锁存的。图9ADV7123原理框图3.5.2D/A转换硬件电路图设计D/A转换硬件电路图如图10所示,FPGA输出的图像数据信号VGA_R[0..9]、VGA_G[0..9]、VGA_B[0..9]分别接至ADV7123的R0-R9、G0-G9、B0-B9引脚。同时FPGA为ADV7123提供消隐信号VGA_BLANK以及同步信号VGA_SYNC。ADV7123输出三图10D/A转换硬件电路图38 武汉理工大学毕业设计(论文)路模拟信号IOR、IOG、IOB至15脚的D-sub接口作为VGA接口的数据输出,同时FPGA直接输出水平同步信号VGA_HS以及垂直同步信号VGA_VS至D-sub来控制VGA显示的基本时序。4系统软件设计由第2章中系统整体工作流程,可知整个系统的程序设计应分为以下5个部分:I2C控制部分、CMOS摄像头采集控制部分、RGB格式转换控制部分、SDRAM控制器部分和VGA控制部分。4.1图像传感器初始化程序设计由3.3.2中MT9M011的工作原理可知,若要图像传感器MT9M011正常工作,需要先对MT9M011的控制寄存器进行配置,而该配置过程主要通过I2C总线来完成。本设计在FPGA中通过编写硬件描述语言来模拟I2C总线时序,从而配置MT9M011的寄存器。在本章中,对I2C控制器进行了程序设计并在此基础完成了对MT9M011的初始化。4.1.1I2C控制程序设计I2C总线时序图[15]如图11所示,由时序图,我们可以看到I2C总线为串行数据传输总线,由SCLK信号的升降沿和SDATA信号的高低电平来控制数据传输的开始与结束。其具体工作流程为:在I2C总线开始信号后,送出的第一个字节数据用来选择从器件地址,其中前7位为地址码,第8位为方向位(R/W)。方向位为“0”表示发送,即主器件把信息写到所选择的从器件;方向位为“1”表示主器件将从从器件读信息。开始信号后,系统中的各个器件将自己的地址和主器件送到总线上的地址进行比较,如果与主器件发送到总线上的地址一致,则该器件即为被主器件寻址的器件,其接收还是发送信息则由第8位(R/W)确定。图11I2C总线时序图I238 武汉理工大学毕业设计(论文)C总线上每次传送的数据字节不限,但每一个字节必须为8位,而且每个传送的字节后面必须跟一个认可位(第9位),也叫应答位(ACK),应答位是数据接收方收完一个字节的数据后向数据发送方提供的是否正确接收数据的答复信号。当主器件发送完一个字节的数据后,接着发出对应于SCL线上的一个时钟(ACK)认可位,在此时钟内主器件释放SDA线,一个字节传送结束,而从器件的响应信号将SDA线拉成低电平,使SDA在开始将SCL和SDA置高发送起始条件S从器件地址成功?功?发送寄存器地址读还是写?发送数据接收数据产生结束信号结束成功?功?成功?功?成功?功?N写N读NNYYYY图12I2C总线程序流程图38 武汉理工大学毕业设计(论文)该时钟的高电平期间为稳定的低电平,从器件的响应信号结束后,SDA线返回高电平,进入下一个传送周期。当从器件由于某种原因不产生应答信号或全部数据传送结束后,主控器可重新产生一个开始信号来开始新的数据传输。由以上时序分析,可以画出I2C总线程序流程图如图12所示。根据图12的流程图,可用使用VerilogHDL语言实现I2C总线时序控制器的程序设计。在QuartusII中生成的I2C控制器模块顶层结构图如图13所示。图13I2C控制器模块顶层结构图4.1.2MT9M011初始化程序设计有了以上I2C控制器,就可以通过I2C总线对MT9M011内部控制寄存器进行配置了。MT9M011寄存器设置值如表2所示。表2MT9M011寄存器设置值寄存器地址复位默认值设置值说明05H018CH0088H水平消隐B06H0032H0019H垂直消隐B09H0432H0600H快门宽度20H0200H0001H读模式B2BH0020H00B0H绿1增益2EH0020H00B0H绿2增益2CH0020H00CFH蓝增益2DH0020H00CFH红增益在具体程序设计中,对照表2,将配置数据存储在查找表LUT_DATA中,LUT_DATA数据为16位,包括了MT9M011的寄存器地址和寄存器数据,共对40个寄存器的内容作配置,配置时逐个写入寄存器的值,寄存器索引代码为LU_INDEX。每个寄存器的配置分为3步,用状态机来实现。第1步准备数据,将8位的从设备地址与LUT_DATA合并为24位数据mI2C_DATA,并将mI2C_GO置1,启动I2C传输,第2步检测传输结束信号,如果检测到传输结束(mI2C_END38 武汉理工大学毕业设计(论文)),但ACK信号不正常,返回第1步,重新发送数据;如果检测到传输结束且ACK信号正常,则进入第3步,将寄存器索引LU_INDEX加1,准备下一个数据的传输。MT9M011配置流程图如图14所示。I2C初始化参数计数器清零I2C传送数据是否完成一次配置计数器加1计数器是否大于24I2C配置完成YYNN开始结束图14MT9M011配置流程图4.2图像数据采集模块4.2.1图像采集原理介绍由于MT9M011芯片内部自带时序发生器和ADC,因此对MT9M011的寄存器配置后,只需输入时钟信号,图像数据便随同行有效信号、场有效信号、像素时钟依照时序关系一同发出。而FPGA读入图像数据的同时,也将消隐期的图像数据读入。因此,需要此图像采集模块要在读取数据的同时,检测CMOS摄像头输出的行场同步信号,来判断出有效信号和消隐信号并读出有效的图像信号,同时对像素时钟计数,产生该有效信号的坐标,将有效数据采集到FPGA中。38 武汉理工大学毕业设计(论文)为了正确的读出有效数据,需要对MT9M011数据的输出原理进行学习。MT9M011输出时序图如图15所示,其中FRAME_VALID为帧有效信号,高电平期间表示一帧有效图像数据;LINE_VALID为行有效信号,高电平期间表示一行有效数据;PIXCLK为像素时钟,与有效像素同步,上升沿数据有效,下降沿数据更新。若MT9M011此时的分辨率为640×480,那么LINE_VALID有效期间共有640个PIXCLK时钟周期,每个PIXCLK时钟周期输出一个有效的图像数据。而FRAME_VALID有效期间共有480个LINE_VALID有效信号,每个LINE_VALID有效信号期间输出一行有效数据。在LINE_VALID与FRAME_VALID同为高电平时输出的数据便是有效数据,因此,可以通过判断LINE_VALID与FRAME_VALID的高低电平来判断图像数据的有效性。同时,可以在LINE_VALID为高电平期间,对PIXCLK进行计数,来确定读出的那个有效数据的列数;在FRAME_VALID为高电平期间对LINE_VALID进行计数,来确定读出数据的行数。且行有效信号可以用来产生存储器使能信号,使得图像有效数据在像素时钟的上升沿存入存储器。图15MT9M011输出时序图4.2.2图像采集模块的设计与仿真根据上一节中对摄像头输出数据及控制信号时序分析,可以画出图像采集模块程序流程图如图16所示。其工作流程为:通过检测FRAME_VALID的上升沿,来判断一帧图像的开始,当FRAME_VALID有效时,行计数Y_Cont=0清零;在LINE_VALID有效的情况下,列计数器X_Cont开始对像素时钟计数,记满640为一行数据,此时列计数器清0,行计数器加1,行计数器记满480后清零,此时一帧图像传输完毕。通过以上步骤,图像数据就可以在像素时钟的上升沿,有序的传输至图像采集模块的寄存器中。而此时帧有效信号和行有效信号相与所产生的数据有效信号,可用作为存储器的写使能信号。而该写使能信号与行列计数信号,以及有效图像数据信号作为图像转换模块的输入信号。38 武汉理工大学毕业设计(论文)FVAL有效Y_Cont=0LVAL有效?X_Cont=0Y等待NX_Cont=X_Cont+1写入数据X_Cont>640?NY_Cont=Y_Cont+1Y图16图像采集模块程序流程图由以上流程图可以使用VerilogHDL硬件描述语言,在QuartusⅡ开发软件中完成图像采集模块的程序设计。在QuartusⅡ中生成的图像采集模块顶层结构图如图17所示。图17图像采集模块顶层结构图在QuartusⅡ中进行时序仿真[16],可得到图像采集模块仿真波形如图18所示。在仿真中,为了方便检验结果,将程序中的行和列数由原来的640和480改为2和4。如下图18,当iFVAL和iLVAL均为高电平时,采集模块在每输出一个图像数据的同时,oX_Cont在加1,表示此时输出的数据为有效的图像数据,此时的oX_Cont的值便是该数据在整帧图像中的列数。当oX_Cont加至04时,oX_Cont变为00,oY_Cont38 武汉理工大学毕业设计(论文)变为01,表示此时第1行数据传输完毕,下一个将传输第2行的数据。当第2行传输完毕后,iFVAL变为低电平,oY_Cont变为00,表示此时一帧图像传输完毕。通过波形图,我们容易看出,本图像采集模块与预期波形完全一致,设计成功。图18图像采集模块仿真波形4.3格式转换模块4.3.1格式转换原理介绍一般CMOS摄像头由三个单色CMOS分别获得彩色图像的R、G、B,每个CMOS只采集对应图像的一种颜色,这样需要的CMOS数量非常大。为了较低成本,MT9M011摄像头采用单CMOS通过彩色滤波阵列(CFA)获得图像的彩色信息[17]。而这样的采集方法在每个像素的位置上只有一种颜色分量可以获得,所以要复原另外两种缺少的颜色分量,这个转换过程就由图像格式转换模块来完成。MT9M011使用一组红色和绿色滤镜以及一组绿色和蓝色滤镜,其中绿色像素个数占总像素的1/2,红色和蓝色则占1/4。这是因为绿色占据了可见光谱中最重要且最宽的位置,使得人眼对绿色最为敏感,能分辨更多的细节。MT9M011输出的图像数据为Bayer格式[18],Bayer颜色结构示意图如图19所示,数据输出的顺序为从左到右、从上到下。GRGRGBGBGBGRGRGBGBGBGRGRG图19Bayer颜色结构示意图38 武汉理工大学毕业设计(论文)由图19,我们可以看到MT9M011输出的图像数据偶数行只包括绿色和红色像素,奇数行包括蓝色和绿色像素。而显示器的显示格式为RGB,所以要看到采集到的正确的图像,需要将图像格式进行转换。本设计使用的算法原理是以每个像素位置上的4个领域点计算出该点位置处的RGB数值。在图19中各象素点的排列方式共有4种,其排列方式与所求象素点所在行列的奇偶性有关。颜色结构的4种排列方式如图20所示,其4个位置分别取自偶行奇列、偶行偶列、奇行奇列、奇行偶列。位置1RGB的计算方法为G为两个G的大小之和,而R与B则为其中的R与B的值,其他位置与此相似,具体如下。位置1RBGRGGBGBGGRGGRB位置2位置3位置4图20颜色结构的4种排列方式位置1:该位置为偶行奇列,对于的RGB数值,该位置计算公式如下所示:(4-1)位置2:该位置为偶行偶列,其计算公式为:(4-2)位置3:该位置奇行奇列,其计算公式为:(4-3)位置4:对于该位置位于奇行偶列,其计算公式为:38 武汉理工大学毕业设计(论文)(4-4)4.3.2模块程序的设计与波形仿真通过上一节所介绍的图像格式的转换原理,可以知道只要正确判断出各传输数据的具体行列的奇偶性,以及其邻域的各象素点的数值,便可算出其RBG各数值。在程序中的具体实现方法,是行缓冲和流水线的处理方式,调用基于RAM的移位寄存器IP核ALTSHIFT_TAPS[19],其数据的输入和时钟使能信号由CMOS模块提供。将间隔为1280(每隔1280为一行)的两个数据作为输出,就可同时取到两行同一列的两个数据,如此,将各邻域中的4个数据存入寄存器中,从而得到2×2的邻域数据。其中前一行的两个数据存入mDATAd_0、mDATAd_1两个寄存器中,将后一行的两个数据存入mDATA_0、mDATA_1中。根据配置模块提供的行列计数的最低位来判断一该邻域中间点所在行和列的奇偶性,从而计算出不同的RGB值。对照上述原理及公式,具体转换程序如下所示:(1)当像素位于奇行偶列时:if({iY_Cont[0],iX_Cont[0]}==2'b01)beginmCCD_R<=mDATA_0;mCCD_G<=mDATAd_0+mDATA_1;mCCD_B<=mDATAd_1;end(2)当像素位于偶行偶列:elseif({iY_Cont[0],iX_Cont[0]}==2'b00)beginmCCD_R<=mDATAd_0;mCCD_G<=mDATA_0+mDATAd_1;mCCD_B<=mDATA_1;end(3)当像素位于奇行奇列时:elseif({iY_Cont[0],iX_Cont[0]}==2'b11)beginmCCD_R<=mDATA_1;mCCD_G<=mDATA_0+mDATAd_1;38 武汉理工大学毕业设计(论文)mCCD_B<=mDATAd_0;end(4)当像素位于偶行奇列时:elseif({iY_Cont[0],iX_Cont[0]}==2'b10)beginmCCD_R<=mDATAd_1;mCCD_G<=mDATAd_0+mDATA_1;mCCD_B<=mDATA_0;end该模块在QuartusⅡ中生成的图像格式转换模块顶层图如图21所示。其中,iX_Cont为行计数信号、iY_Cont为列计数信号、iDATA为输入图像数据、iDVAL为数据有效信号。图21图像格式转换模块顶层图在QuartusⅡ中进行时序仿真,可得到图像格式转换模块波形仿真图如图22所示。在仿真中,为了方便的观察结果,我将一行的数据由原来的1280改设为5。图22图像格式转换模块波形仿真图在图22中,我们易看出,再数据信号位iDVAL为高电平时,每隔5个时钟信号,移位寄存器便形成一个4位数据的邻域,然后根据iY_Cont[0]和iX_Cont[0]38 武汉理工大学毕业设计(论文)的奇偶性计算输出RGB的数据。输出波形与理论计算结果相符,设计成功。4.4SDRAM控制器的实现由于图像采集与显示的时钟频率不同,两者之间的工作速度不同。为了完成二者之间的速度匹配,输出一帧完整的画面,需要使用SDRAM作为帧缓冲器[20]。该SDRAM控制器主要用来产生SDRAM的读写控制信号,来正确的进行一帧图像数据的存储与输出。由于目前对SDRAM的控制研究比较成熟[21],自己在设计主程序中直接调用了ALTERA公司开发的SDRAM控制模块。下面对该控制器的实现方法进行简单的介绍。为减少I/O引脚数量,SDRAM复用地址线,通常一个SDRAM中包含几个BANK,每个BANK的存储单元是按行和列寻址的。由于这种特殊的存储结构,对于SDRAM的控制需要经过以下几个步骤:(1)SDRAM的初始化:SDRAM在上电100~200us后,必须由一个初始化进程来配置SDRAM的模式寄存器,模式寄存器的值决定着SDRAM的工作模式。(2)访问存储单元:为减少I/O引脚数量,SDRAM复用地址线,所以在读写SDRAM时,先由ACTIVE命令激活要读写的BANK,并锁存行地址,然后在读写指令有效时锁存列地址。一旦BANK被激活后只有执行一次预充命令后才能再次激活同一BANK。(3)刷新和预充:SDRAM的存储单元可以理解为一个电容,总是倾向于放电,因此必须有定时的刷新周期以避免数据丢失。刷新周期可由(最小刷新周期÷时钟周期)计算获得。对BANK预充电或者关闭已激活的BANK,可预充特定BANK也可同时作用于所有BANK,A10、BA0和BA1用于选择BANK。(4)操作控制:SDRAM的具体控制命令由一些专用控制引脚和地址线辅助完成。CS、RAS、CAS和WR在时钟上升沿的状态决定具体操作动作,地址线和BANK选择控制线在部分操作动作中作为辅助参数输入。由于特殊的存储结构,SDRAM操作指令比较多,不像SRAM一样只有简单的读写。SDRAM控制器的状态转移流程图如图23所示,系统上电后,SDRAM处于空闲状态(Idle),在对存储器进行读写操作之前,需要先对其进行初始化。初始化的过程中,将设置突发长度,突发类型,CAS潜伏期等参数。SDRAM的初始化有一个固定的步骤,错误的操作将导致SDRAM进入不确定状态。在控制器中使用了一个专门的初始化状态机来对SDRAM进行初始化。初始化完之后便可对SDRAM进行读、写或其他操作。在执行读(写)命令之前,先要激活(Active)将要读(写)的页和行,之后便可对该行进行突发读(写)。在控制器的设计中,所有的读写命令都是不带预充电的,因此,某一行被激活之后将一直处于激活状态,直到用户发送突发终止(BurstStop)命令,此时控制器将自动产生一个预充电(Precharge)命令来关闭当前行。这样,某一行被激活之后用户便可进行连续的突发读(写)操作,从而节省了每次突发读写所需要的激活时间,提高了系统的数据吞吐率。38 武汉理工大学毕业设计(论文)图23SDRAM控制器状态转移流程图控制器同时提供了一个自动刷新(AutoRefresh)计数器,每隔一定的时间间隔(即SDRAM的刷新周期,根据所使用的存储器而定,可在控制器中设定tREF),便会产生一个刷新请求。如果此时SDRAM处于空闲状态,控制器便会发出一个自动刷新命令来对SDRAM进行刷新;如果此时SDRAM正在进行读(写)操作,控制器将会等到当前的读(写)操作完成之后再发送刷新命令。在刷新过程中,用户如果有读(写)请求,控制器将在当前刷新周期完成之后再响应用户的请求。正常的操作过程中,当SDRAM处于空闲状态时,用户还可以根据实际的需要来重置存储器的控制寄存器,重新设定存储器的突发长度、突发类型、CAS潜伏期等参数。4.5VGA控制器为了较直接简便的检测采集系统采集图像的正确性,我在图像采集系统中添加了液晶显示屏来实时显示所采集的图像。而液晶显示屏的接口,我选择了多数液晶屏通用的VGA接口。在本章中主要介绍VGA接口显示的相关原理,根据其显示原理进行了VGA接口控制器的程序设计并在QuartusⅡ软件中对该控制器进行了波形仿真,对仿真波形进行了正确性分析。38 武汉理工大学毕业设计(论文)4.5.1VGA接口介绍VGA(VideoGraphicsArray)接口,也叫D-Sub接口,是目前大多数计算机与外部显示设备连接的通用接口。它共有15个引脚,VGA接口示意图如图24所示,VGA引脚定义见表3。图24VGA接口示意图在表3各信号中,本设计仅使用了RED、GREEN、BLUE、HSYNC、VSYNC信号。其中RED、GREEN、BLUE为图像数据信号,由于VGA使用信号均为模拟信号,故该三组信号均由DA转换器输出。HSYNC、VSYNC为VGA时序控制信号,由FPGA直接产生输出至该接口。表3VGA引脚定义引脚名称描述1RED红色视频信号(75欧,0.7V)2GREEN绿色视频信号(75欧,0.7V)3BLUE蓝色视频信号(75欧,0.7V)4ID2显示器ID号BIT25、6、7、8GND、RGND、GGND、BGND地、红地、绿地、蓝地10SGND同步信号地9KEY11ID0显示器ID号BIT012ID1/SDA显示器ID号BIT113HSYNC水平同步、垂直同步14VSYNC15ID3/SCL显示器ID号BIT34.5.2VGA控制器的设计38 武汉理工大学毕业设计(论文)VGA接口是对图像数据的还原显示,因此,该模块的控制方法与前面图像采集模块的控制方法是相通的。只需对照VGA的时序图,通过控制HSYNC、VSYNC两组信号的输出来产生VGA所需要的时序[22]。完成该控制器的关键是在程序中正确写出VGA显示的时序图,同时正确读出图像数据并确定其具体的坐标位置。VGA显示的基本时序如图25所示,垂直和水平的时间周期都可以分为4个区间:同步脉冲a、同步脉冲结束与有效图像数据信号之间的间隔即后沿b、有效图像数据信号c以及有效图像信号与同步脉冲开始之间的间隔即前沿d。有效图像数据显示区间c同步信号RGB数据同步a后沿b前沿d图25VGA显示的基本时序对于不同的VGA配置,水平同步时间参数和垂直同步时间参数的设置均不同,具体的垂直、水平同步时间参数如表4所示。表4垂直、水平同步时间参数分辨率区间640×480800×6001024×768垂直同步a246垂直同步b332329垂直同步c480600768垂直同步d1013水平同步a3.8us3.2us2.1us水平同步b1.9us2.2us2.5us水平同步c25.4us20us15.8us水平同步d0.6us1us0.4us表中垂直同步单位为时钟个数,而时钟频率为25MHZ,由此可以计算出水平同步各区间所占的时钟个数。由于自己使用的为分辨率是640×480的显示器,故此时的垂直同步各区间所占时钟个数分别为:2、33、480、10,而水平同步各区间所占时钟个数X可以使用公式X=T×f来计算(其中f=25MHZ,T为上表中水平同步各区间所对应的时间)。由此,可算得水平同步各区间所占的时钟个数分别为:95、48、640、15。其在Verilog38 武汉理工大学毕业设计(论文)HDL中的实现语句如下所示://HorizontalParameter(Pixel)parameterH_SYNC_CYC=95;parameterH_SYNC_BACK=48;parameterH_SYNC_ACT=640;parameterH_SYNC_FRONT=15;parameterH_SYNC_TOTAL=800;//VirticalParameter(Line)parameterV_SYNC_CYC=2;parameterV_SYNC_BACK=33;parameterV_SYNC_ACT=480;parameterV_SYNC_FRONT=10;parameterV_SYNC_TOTAL=525;在以上各式中,变量后缀CYC、BACK、ACT、FRONT、TOTAL分别表示区间a、b、c、d、总数。而水平、垂直同步信号的各a、b区间之和分别是水平和垂直坐标的开始位置,即:parameterX_START=H_SYNC_CYC+H_SYNC_BACK;parameterY_START=V_SYNC_CYC+V_SYNC_BACK;设置好了以上各参数,就可以由这些参数来判断有效区间的开始结束时间,以在此区间内将图像数据输出给VGA,同时由此参数来产生VGA的行场同步信号。4.5.3VGA控制器的仿真与实现为了检验所编写程序的正确性,在QuartusⅡ进行运行仿真,其VGA控制器顶层结构图如图26所示。图26VGA控制器顶层结构图由于QuartusⅡ38 武汉理工大学毕业设计(论文)波形仿真窗口大小有限,为了更好的观察输出波形,较精确的判断输出波形的正确性,我该变了上节表4中所设的值。将水平、垂直同步信号个区间的值设均为1、1、3、1,得到VGA控制器仿真波形图如图27所示。图27VGA控制器仿真波形图在图27中,我们可以清楚的看到在水平同步信号oVGA_H_SYNC变成经历1个时钟周期(与a的值一致)的低电平时,产生同步信号;其变成高电平后的1个时钟信号内(与b的值一致),oRequest信号为低电平,此时图像数据无输出;之后的3个时钟周期(与c的值相等),oRequest信号为高电平,此时图像数据输出;1个时钟周期之后,oRequest信号为低电平,此时图像数据无输出,之后oVGA_H_SYNC又变成了低电平,表示一行图像数据传输完毕。同样的原理,垂直同步信号在仿真中也出现了与此一致的结果,与理论分析完全一致。38 武汉理工大学毕业设计(论文)5系统调试与分析经过以上各模块的软硬件设计和波形仿真,整个系统的理论设计已经完成。下面的工作就是要将程序下载至FPGA中进行调试,来完成系统的设计。5.1系统实物图系统硬件由DE2开发板、12V直流电源、液晶显示器以及CMOS摄像头组成,系统实物图如图28所示。图28系统实物图5.2系统调试5.2.1系统调试过程整个系统的调试过程是复杂而漫长的,在系统的调试中,自己采用的逐步检验、分块测试的方式,具体测试过程如下所示。(1)开发板上电后,应先检测开发板是否完好。ALTERA公司在制作DE2开发板的同时开发了很多针对DE2的测试程序,将其中一个完整的测试程序下载至DE2中。发现七段LED数码管循环闪烁,彩色LED进行流水线循环闪烁,将VGA接口输出接至液晶屏显示器,显示器上显示出ALTERA公司的图像。由以上检测,该开发板各硬件电路正常,可以使用。38 武汉理工大学毕业设计(论文)(2)开发板测试正常之后,还要对CMOS摄像头进行检测,以确定其是否正常工作。先测量摄像头MT9M011的管脚14,其为摄像头的时钟输入信号,由FPGA提供,经测量为25M赫兹时钟信号,正常。有了这个时钟信号,摄像头就可以工作了,测量MT9M011的管脚13,其为图像像素时钟信号,若正常工作,该引脚必会输出25M赫兹的时钟信号。上电后,使用示波器测量该引脚,得到25M赫兹的时钟信号,工作正常。(3)FPGA各模块的调试,对于该部分的调试,主要是各模块分别进行波形仿真,将仿真波形与理论波形仔细核对。这部分工作在前面软件设计的时候已经完成,各模块均工作正常。(4)在各部分都调试正常后,将摄像头连接至FPGA、VGA接口连接至液晶屏显示器,通过USB接口下载线将程序生成的sof文件下载至FPGA运行,在显示器上得到正确的图像采集结果如图29所示。图29图像采集结果5.2.2系统调试中遇到的问题在整个系统调试的过程中,我深深的体会到了理论和实际的差距是很大的,明明在理论上正确的程序却在实际中总得不到想要的结果。由于自己的经验有限,在调试中遇到了很多问题,现总结如下。(1)在波形仿真的时候,要先进行功能仿真,再进行时序仿真。自己在调试程序设计的图像采集模块时,仿真的波形先是始终出不来,后来波形与理论相差甚远。在网上大量资料搜索与学习之后,才发现原来自己在该模块仿真时,输入的iFVAL没有上升沿,而程序设置的为上升沿触发,故没有仿真波形的输出。而后来的仿真波形为时序仿真,考虑了内部信号的延迟,与理论波形不同。自己将仿真设置成功能仿真后,发现与理论波形完全一致。(2)引脚配置的时候,引脚要依据实际的硬件电路正确分配。调试摄像头的时候,使用I2C总线对摄像头进行配置后,对摄像头输入时钟信号,摄像头13脚却始终不输出图像时钟信号。仔细分析研究程序和电路图后,才发现开发板上的电路与手上的电路图有出入,主时钟输入引脚与I2C的配置引脚调换了位置,导致摄像头不能工作。38 武汉理工大学毕业设计(论文)(3)引脚配置文件中的引脚名称区分大小写。将摄像头部分调试完毕后,把整个系统连接起来进行调试,发现显示器上无输出图形,全是绿色。将主程序检查几遍后,发现并无问题,此时使用示波器测量SDRAM的各引脚,发现SDRAM未工作。检查SDRAM的程序和仿真波形,并无问题,初步断定是SDRAM部分的硬件电路出了问题。但是将开发板上的电路与电路图对照,并没发现什么问题。后来才发现,在引脚配置的时候,自己直接调用的引脚配置文件中的SDRAM的CS等命令信号脚为大写,而自己在程序中的引脚名称却为小写,导致SDRAM的控制引脚没有分配。将大小写改正后,结果正常。5.3系统调试的体会经过一个星期的时间,终于将系统调试成功。在这一个星期的时间里,我在苦闷和迷茫的同时,深深地体会到了解决问题的乐趣,也在一遍遍调试和试验的同时总结和学习了很多的调试方法。在图像采集模块和VGA控制器波形仿真的时候,因为实际中的一行图像就有1280个数据,共有1024行。这就给自己的检验带来了困难,因为我要检验一帧图像的完整采集波形,就必须在仿真中传输1280×1024个数据,这几乎不可能实现。后来,自己才想到可以在仿真的时候将程序的行列数据都改小,将列改成5,行改成2。这样就可以在很少的时钟信号中观察到整帧图像传输过程中的各有效信号,来判断其输出的正确性。在实物调试中,我更是总结出了一套自己的检验方式和方法,形成了自己良好的调试习惯。由于自己在大部分调试时间中,缺少示波器等工具,而对于个引脚的输出信号又必须检验,我就将要检验的信号输出到发光二极管上,检验结果一目了然。在调试中,我了解了很多与图像采集有关的知识;在遇到问题的时候,在网上学习了大量的软硬件调试技巧。总之,这次实物制作,自己不仅学习掌握了理论知识,更加锻炼自己解决问题的动手能力。38 武汉理工大学毕业设计(论文)结束语本设计在充分了解了国内外图像采集系统现状及发展趋势的基础上,结合图像采集系统的原理和FPGA技术特点,提出了以FPGA为控制核心,利用硬件加速代替软件实现全硬件的高性能的视频采集系统的思想,根据系统功能和FPGA设计方法进行总体设计,确定系统方案,进而根据视频流的处理过程完成功能模块划分,利用QuartusII软件完成模块设计和功能验证,集成各功能模块,完成系统调试分析。本文主要完成了以下的工作:(1)充分利用了FPGA在图像采集中的并行性和可编程性的优势,确定了系统的整体设计方案;(2)在FPGA最小系统的基础上,在理论上完成了图像采集部分以及VGA显示部分相关硬件电路的设计。仔细分析了图像信号在各时期的模数状态,设计了数模转换器;(3)对FPGA进行了模块化设计,分别针对各个模块,在QuartusII开发软件中进行了程序设计和波形仿真,讨论了仿真结果;(4)利用QuartusII开发软件将程序下载至实物中,在实物上完成了系统的调试,分析了调试结果。本课题的创新点在于:(1)系统以FPGA高速的并行处理和硬件加速代替传统视频采集系统以单片机/DSP读取指令的低速实现形式,大幅度的提高了系统的性能。以单SDRAM替代双SRAM,在减小设计成本的同时提高了采集的速度;(2)在图像采集、处理、显示期间都没有PC机的参与,在降低设计成本的同时,减小了系统的体积。通过理论分析和结果验证,本论文提出的方案合理,可行。同传统的技术相比,FPGA技术在视频采集系统中的引入是一次全新的尝试,该方案具有性能优越、体积小、成本低以及功能可扩展和硬件可升级等众多优势,具有很强的应用潜力。虽然自己完成了设计,但由于自己能力有限,在本设计中,仍有有一些问题需要解决和讨论:(1)在图像采集中,曝光度较高的情况下,显示器中存在噪点,目前还没有找到解决办法;(2)在曝光度较高较高的情况下,系统的采集速度较低,不能实现实时采集,采集系统的采集速度有待提高;(3)图像压缩、控制器与上位机之间的通讯、多路采集以及在该系统中使用人机接口来实现对采集图像的实现,这些问题有待进一步学习与研究。38 武汉理工大学毕业设计(论文)参考文献[1]王磊.基于FPGA的嵌入式系统设计(硕士学位论文).哈尔滨:哈尔滨工程大学,2006.[2]褚振勇,翁木云.FPGA设计及应用.西安:西安电子科技大学出版社,2002.[3]张志刚.FPGA与SOPC设计教程.西安:西安电子科技大学出版社,2007.[4]祝长锋.基于FPGA的实时图像检测技术的研究(硕士学位论文).江苏:江苏大学,2008.[5]吴继华,王诚.AlteraFPGA/CPLD设计(基础篇).北京:人民邮电出版社,2005.[6]夏宇闻.VerilogHDL数字设计与综合.北京:电子工业出版社,2004.[7]路永坤.用VerilogHDL实现I2C总线功能.电子技术应用,2004.[8]AlteraCorporation.QuartusⅡHandbook.AlteraCorporation,2004.[9]王力,张伟.电路设计与制版ProtelDXP库元器件手册.北京:人民邮电出版社,2003.[10]PChalimbaud,FBerry.DesignofanimagingsystembasedonFPGAtechnologyandCMOSimagerProeeedings.2004IEEEInternationalConfereneeonField-ProgranunableTechnology,2004.[11]闫飞.基于SOPC的运动目标检测系统设计(硕士学位论文).哈尔滨:哈尔滨理工大学,2008.[12]冯宏志.基于ARM处理器的新电信号处理系统设计(硕士学位论文).吉林:吉林大学,2006.[13]杨奇,杨莹.基于SRAM/DRAM的大容量FIFO的设计与实现.EDN电子设计技术.2007.[14]张志刚.FPGA与SOPC设计教程DE2实践.西安:西安电子科技大学出版社,2007.[15]肖铁军.基于FPGA的实时图像检测技术(硕士学位论文).江苏:江苏大学,2008.[16]AlteraCorporation.QuartusⅡDevelopoentSoftwareHandbook,2005.[17]杨莉珺,刘铁根.基于CMOS图像传感器的嵌入式图像采集与格式转化.电子产品世界,2008.[18]胡志海.基于FPGA的嵌入式图像监控系统设计(硕士学位论文).大连:大连理工大学,2009.[19]周毅.基于SOPC的无线多媒体传感器节点研究(硕士学位论文).广西:广西大学,2008.[20]刘斌兵,刘云海.用FPGA实现高速大图像采集系统.电子技术,2006.[21]曹华,邓彬.使用Verilog实现基于FPGA的SDRAM控制器.今日电子.2005.[22]李成奇.基于FPGA技术的视频采集系统的设计与实现(硕士学位论文).哈尔滨:哈尔滨理工大学,2008.38 武汉理工大学毕业设计(论文)附录1图象采集部分源程序moduleCCD_Capture(oDATA,oDVAL,oX_Cont,oY_Cont,oFrame_Cont,iDATA,iFVAL,iLVAL,iSTART,iEND,iCLK,iRST);input[9:0]iDATA;inputiFVAL;inputiLVAL;inputiSTART;inputiEND;inputiCLK;inputiRST;output[9:0]oDATA;output[10:0]oX_Cont;output[10:0]oY_Cont;output[31:0]oFrame_Cont;outputoDVAL;regPre_FVAL;regmCCD_FVAL;regmCCD_LVAL;reg[9:0]mCCD_DATA;reg[10:0]X_Cont;reg[10:0]Y_Cont;reg[31:0]Frame_Cont;regmSTART;assignoX_Cont=X_Cont;assignoY_Cont=Y_Cont;38 武汉理工大学毕业设计(论文)assignoFrame_Cont=Frame_Cont;assignoDATA=mCCD_DATA;assignoDVAL=mCCD_FVAL&mCCD_LVAL;//设置复位、开始、结束控制按键always@(posedgeiCLKornegedgeiRST)beginif(!iRST)mSTART<=0;elsebeginif(iSTART)mSTART<=1;if(iEND)mSTART<=0;endend//图像有效数据判断、采集以及行列技术模块always@(posedgeiCLKornegedgeiRST)beginif(!iRST)beginPre_FVAL<=0;mCCD_FVAL<=0;mCCD_LVAL<=0;mCCD_DATA<=0;X_Cont<=0;Y_Cont<=0;endelsebeginPre_FVAL<=iFVAL;if(({Pre_FVAL,iFVAL}==2'b01)&&mSTART)//判断iFVAL上升沿mCCD_FVAL<=1;elseif({Pre_FVAL,iFVAL}==2'b10)mCCD_FVAL<=0;mCCD_LVAL<=iLVAL;38 武汉理工大学毕业设计(论文)mCCD_DATA<=iDATA;if(mCCD_FVAL)//数据的行列坐标记录beginif(mCCD_LVAL)beginif(X_Cont<1279)X_Cont<=X_Cont+1;elsebeginX_Cont<=0;Y_Cont<=Y_Cont+1;endendendelsebeginX_Cont<=0;Y_Cont<=0;endendendalways@(posedgeiCLKornegedgeiRST)beginif(!iRST)Frame_Cont<=0;elsebeginif(({Pre_FVAL,iFVAL}==2'b01)&&mSTART)Frame_Cont<=Frame_Cont+1;//记录帧的个数endendendmodule38 武汉理工大学毕业设计(论文)附录2电路图(1)图像采集及存储部分电路图38 武汉理工大学毕业设计(论文)(2)VGA显示部分电路图38 武汉理工大学毕业设计(论文)(3)电源部分电路图38 武汉理工大学毕业设计(论文)附录3实物图和采集图像(1)实物图(2)采集图像38

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

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

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