基于FPGA的OV7670图像传感器图像采集系统设计

基于FPGA的OV7670图像传感器图像采集系统设计 
本设计的创新在于尽可能发挥FPGA在数字信号处理高集成、高速度的优点,解决图像采集数据量大、处理耗时、信号复杂等技术难点。在视频图像采集及处理系统中,FPGA为最主要的的控制芯片,它的任务是获取外部视频解码芯片输入的的图像数据以及负责数据存储。设计中采用VerilogHDL作为编程语言并运用了乒乓设计思想和同步有限状态机的设计方法。本视频采集系统中,为了I2C总线的实现,共用了两种方法:硬件描述语言VerilogHDL和当下最流行的嵌入式软核Nios Ⅱ。201908061908903
接下来我将先分析图像采集系统的研究现状和意义,简单介绍下系统的设计方案和工作原理,实物在运行中,系统完全能够实现图像的实时采集,并且采集图像较为清晰,收到了预期的效果。
关键字:OV7670 ,FPGA;图像采集;Nios Ⅱ
2.3.1 FPGA设计的指导性原则
这一部分主要介绍FPGA设计的指导性原则,如FPGA设计的基本原则、基本设计思想、基本操作技巧、常用模块等。FPGA设计的基本原则、思想、技巧和常用模块是一个非常大的问题,在此不可能面面俱到,只能简单的大致提到下。FPGA设计的基本原则包括:面积和速度的平衡与互换;硬件原则;系统原则;同步设计原则。FPGA的基本设计思想有:乒乓操作;串并转换;流水线操作;数据接口的同步方法。FPGA设计常用模块有RAM、全局时钟资源与时钟锁相环、全局复位置位信号、高速串行收发器。
2.3.2 FPGA芯片结构
1.可编程输入输出单元
I/O 单元是可编程输入输出单元的简称,外界电路与芯片的接口部分是I/O 单元,用来完成不同的电气特性下对输入和输出信号的驱动以及匹配要求。FPGA内的I/O 是按照组来分类的,每组都可以独立支持不相同的I/O 标准。经过软件配置,可以适配不同I/O 物理特性以及电气标准,还能调节驱动电流的大小,可以改变上拉电阻。现在,I/O 口的频率已经越来越高了,部分高端的FPGA通过ddr寄存器技术能支持高达2Gbps的数据速率。
IOB模块的存储单元能让外部输入信号输入到FPGA的内部,当然也可以直接输入到FPGA的内部。但是前者的保持时间的要求可以降低,一般来说是默认为0的。FPGA的IOB被分为几个组的目的是方便管理和适应多种电器标准,接口电压Vcc决定每个bank的接口标准,一个bank只可以有一种Vcc,不同的bank的Vcc可以不同。同样电气标准的端口才可以连接在一起,Vcc电压相同是接口标准的基本条件。
2.可配置逻辑块(CLB)
FPGA内的基本逻辑单元就是CLB。器件的不同会使CLB的实际数量和特性不同,每个CLB都含有一个科配置开关矩阵,该矩阵是有一些选型电路和触发器,4或6个输入组成。每个CLB模块都可以用于实现组合逻辑和时序逻辑,还能用来配置分布式RAM和分布式ROM。
3.数字时钟管理模块
现在大多数FPGA都提供数字时钟管理,精确的时钟综合是由相位环路锁定提供的,同时能降低抖动,并实现过滤功能。
 4.嵌入式块RAM
绝大部分FPGA都有内嵌的块RAM,这就大大的扩展了FPGA的应用范围和它的灵活性。块RAM可以用来配置为单端口RAM、双端口RAM、FIFO、内容地址存储器(CAM)等等常用存储结构。RAM,FIFO都是较为普及的概念了,这里不多说了。CAM储存器内部的每个存储单元里都有一个比较逻辑,每一个写入CAM的数据都会和其内部的每一个数据进行比较,并且会返回与端口数据相同的所有数据的地址,因此在路由的地址交换器中有广泛的应用。除去块RAM,还能够把FPGA中的LUT灵活的配置成RAM,ROM等结构。实际应用中,芯片内部块RAM的数量同样是选择芯片的一个不可忽视的因素。
一片块RAM的容量是18k比特,也即宽是18比特、深度为1024,我们可以根据所需改变其宽和深度,但是需要满足两个原则:第一,修改后的容量不能大于18k比特;其次,位宽最大不能超过36比特。当然,我们也能将多片块RAM级联起来形成更大的RAM,这个时候只受芯片内块RAM的数量限制,而不在受上面所述的两条原则约束。
2.3.3 基于QuartusⅡ的典型流程FPGA设计
1.建立工程是每一个开发过程的开端,以工程为单元对设计的过程进行管理。
2.建立顶层图。这样来理解,顶层图是一个容器,将整个工程的各个模块都包容在其中,编译的时候就将这些模块整合在一起。也可以这样理解,把它当做是个大元件,含有各个模块,编译的时就是为了生产出这样的大元件。
3.采用ALTERA公司提供的LPM功能模块。Q2软件环境里包含了大量的常用功能模块。如计数器、累加器、计数器、比较器等;如果不知道在工程中采用这些现有的功能模块就真的是太浪费了。
4.直接建立功能模块。当然,有些设计中现有的模块功能不能满足具体设计的要求,那就只有直接设计了。可以用硬件描述语言也能用原理图的输入方法,把它们当做一个工程来设计,并生成模块符号,之后后在顶层图中使用这个模块的符号,并将源文件拷到顶层图所在的工程目录下。
5.把顶层图的各个功能模块用连线连起来。这个过程如同电路图设计,将各个芯片连接在一起,组成电路系统。
6.系统的功能原理图到这里已经基本成型了,下一步就要为该设计选择芯片载体,只有这样才可以真正在物理上实现系统的功能。这一步的主要的工作是:(1)选芯片的型号;(2)为顶层图的各个输入输出信号分配芯片的管脚;(3)设置编译选项,目的是让编译器了解更多的信息。
7.编译。这个工程就像软件开发里的编译,其实实际上这个过程比软件的编译要复杂很多,因为他毕竟最终要实现硬件里的物理结构,包括了优化逻辑组合、综合逻辑和布线等步骤。
8.编译后会生成*.sof或*.pof文件,.sof可以通过JTAG下载到FPGA里面,设计无误的话就能够实现预期的功能,但是断电以后FPGA里的这些信息就会会丢失;.pof可以下下载到FPGA的配置芯片,掉电后这些配置信息是不会丢失的,重新上电以后通过该配置芯片对FPGA的内部RAM进行配置。
9.针对复杂的设计,工程编译之后可以采用Q2的仿真功能或其他仿真软件对设计反复做仿真和验证,直到满足要求为止。
下面是FPGA设计的框图:
摘  要    I
ABSTRACT    II
第1章 绪论    1
1.1 图像采集系统的现实的应用    1
1.2 设计研究的主要内容及预期目标    2
第2章 系统方案设计    4
2.1 设计思路    4
2.2 系统设计方案的选择    4
2.3 FPGA介绍    5
2.3.1 FPGA设计的指导性原则    5
2.3.2 FPGA芯片结构    6
2.3.3 基于QuartusⅡ的典型流程FPGA设计    7
2.4 系统设计原则    9
2.5 Verilog HDL 介绍    9
2.6 软硬件开发平台    10
2.6.1 硬件开发平台    10
2.6.2 软件开发平台    10
第3章 视频图像采集系统的硬件设计    12
3.1 系统硬件电路的总体设计    12
3.2 FPGA控制系统设计    13
3.2.1 主控芯片的选择    13
3.2.2 控制部分电源设计    13
3.2.3 复位电路设计    14
3.3 OV7670 图像传感器    16
3.4 存储模块的设计    17
第4章 系统软件设计    19
4.1 软件设计概述    19
4.2 OV7670初始化    19
4.3 I2C总线接口    20
4.3.1 I2C总线    20
4.3.2 I2C总线的数据传输协议    21
4.3.3 I2C控制器的设计    22
4.4 SDRAM控制器的实现    26
4.5图像采集模块的设计与仿真    29
4.6 格式转换程序的设计与波形仿真    32
4.7简单运动检测    34
结束语    36
参考文献    37
致谢    38
附录    39

版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/dzxx/dzkxyjs/2260.html

好棒文