基于FPGA摄像头图像采集显示系统

  本系统主要由FPGA主控模块、图像采集模块、图像存储模块以及图像显示模块等模块组成。其中图像采集模块选择OV7670摄像头模块,完成对视频图像的采集和解码功能,并以RGB565标准输出RGB 5:6:5信号;图像处理模块选用的FPGA是Altera 公司生产的Cyclone IV EP4CE10F17C8芯片,完成对整个系统的控制,将采集到的视频图像数据处理、存储以及发送到LCD显示屏上。图像存储模块使用256M存储空间的SDRAM进行视频图像数据存储。图像显示模块采用TFT4.3寸LCD液晶显示器显示视频图像。编程语言采用VHDL语言。

  由于LCD片内RAM太小,显示不了这么大的分辨率图像,因此,需要将图像数据缓存到SDRAM当中。根据OV7670摄像头VGA格式,即两个字节共16位表示一位像素点。因此,以16位进行缓存到SDRAM当中。本FPGA使用的时钟为50MHZ,芯片EP4CE10F17C8 片内自带4个PLL(锁相环),可以用于分频和倍频。因此,可以通过软件进行设计。分频为25MHZ用于液晶工作时钟,24MHZ用于摄像头工作时钟。倍频为100MHZ用于SDRAM工作时钟。

基于FPGA摄像头图像采集显示系统

  第一部分摄像头工作原理

  OV7670摄像头寄存器配置采用的通信方式为SCCB通信(兼容I2C通信),I2C通信方式和SCCB通信方式非常类似。IIC总线是philips公司推出的新一代串行通信标准总线。它仅靠两根线实现全双工通信:SDA(数据线),SCL(时钟线)。I2C通信方式如下:

  写时序:

基于FPGA摄像头图像采集显示系统

  读时序:

基于FPGA摄像头图像采集显示系统

  I2C时序读写分析:

  1、start表示启动总线:在时钟SCL为高电平期间,数据线SDA由高电平拉低,启动I2C总线。

  2、device_id:I2C总线是个多主控总线,主机和任何一个从设备之间都可以形成主线,最后一位表示读写操作码,0-写,1-读;(OV7670设备地址为0x42,即0x42为写,0x43为读)。

  3、ack:写操作码发送完主机释放总线,从机返回一个应答信号给主机表示写入数据完成。

  4、waddr:表示寄存器地址;raddr:表示写对应的寄存器数据

  5、wdata:表示写寄存器数据;rdata:表示读对应的寄存器数据。

  6、stop:在时钟SCL为高电平期间,数据线SDA由低电平拉高,关闭I2C总线。

  7、由于I2C总线支持连续写,故写完地址之后不需要再发送起始信号,读就需要重新发起始信号。

  OV7670摄像头的工作原理:

  1、首先判断摄像头是否正常工作

  通过读取寄存器PID(厂商高位识别号)、VER(厂商低位识别号)、MIDH(厂商识别字节高位)、MIDL(厂商识别字节低位)的默认值来进行判断摄像头是否能够正常工作。

PID地址为:0x0A,默认值为:0x76

VER地址为:0x0B,默认值为:0x73

MIDH地址为:0x0C,默认值为:0x7F

MIDL地址为:0x0D,默认值为:0xA2

  2、当摄像头正常工作后,进行摄像头寄存器配置

  主要是配置成以下模式:

  VGA分辨率(640*480),RGB565模式,水平成像,关闭PLL分频,直接使用外部时,PCLK正常模式,不分屏XCLK=PCLK,不设置彩条等等。

寄存器名称

 

地址

 

数据

 

MIDH(只读)

 

0x0C

 

0x7F(判断是否相等)

 

MIDL(只读)

 

0x0D

 

0XA2(判断是否相等)

 

TSLB(写)

 

0x3A

 

0x04

 

COM15

 

0x40

 

0xd0

 

COM7

 

0x12

 

0x04

 

……………………

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgfzwd.html