2024年1月22日发(作者:)

CMOS摄像头视频采集控制器

The Sdram Controller Based of FPGA

HUI Wei-jun

(Yan Cheng institute of technology, Yancheng 224051,China)

Abstract: The principle 、configuration registers and SCCB time

sequence are introduced in this paper. Based on this,the design

of OV7725 controller based on FPGA is realized, the code structure

of the design is given as well as. Design code is completed and

downloaded on QUARTUSII13.0 platform. The results shows that the

design is successful.

OV7725是豪威的一款CMOS摄像头,具有成本低、灵敏度高等特点,在视频图像采集系统中,得到广泛应用。目前,各种CMOS摄像头虽然感光效果等有所差异,但是其开发流程差不多,就是通过对摄像头寄存器的配置,使摄像头按照配置参数要求采集视频图像。

OV7725一共有172个寄存器,用于工作模式的配置。由于寄存器众多,配置参数需要通过SCCB总线传输。因此,有必要设计控制器实现OV7725的参数配置。

1 OV7725功能

通过SCCB协议,对OV7725配置。然后,在时钟驱动下,感光元件对图像进行采样,采样信号在12bit的A/D转换后,通过DSP进行相关图像处理,输出符合配置要求的10bit视频数据。

2 OV7725配置寄存器

第 1 页

OV7725的配置寄存器有172个。在传感器正常工作之前,这些寄存器必须进行配置,否则,不能得到预期画质的图像。当然,这些寄存器中的大部分可以采用默认值,不需要重新配置参数。

部分寄存器地址及描述如表 1所示。

这些寄存器的参数决定了视频流的格式和画质。寄存器的配置顺序是任意的,各个寄存器配置的先后顺序对结果没有影响。

3 SCCB协议

SCCB协议称为串行相机控制总线,是I2C协议的简化版本。SCCB接口提供了两条总线:一条串行数据总线SDA,一条时钟总线SCL。SCCB不支持多字节读写。在SCCB读周期,主机发送完寄存器地址后,必须发送总线停止条件。因此在Verilog实现SCCB时序时候,SCL引脚始终设为输出方式,SCCB写周期直接使用I2C的写周期时序,读周期要加一个总线停止条件。

图1所示SCCB读写时序。其工作过程如下:

A.总线处于空闲状态,SCL和SDA都为高电平时。

B.空闲状态下,SDA上电平被拉低,启动SCCB总线。

C.主机传输从机的7位地址和读/写控制信号

上传输数据信号。SCL为高电平期间,SDA上电平保持稳定,SCL为低电平期间,允许SDA状态改变。

数据按位传输,和时钟同步。数据为一个字节,MSB在前,LSB在后。在LSB后面,主机释放SDA,由从机发出应答信号。

高电平期间,SDA出现上升沿,一次数据传输停止。

第 2 页

4 OV7725配置查找表

设计模块对寄存器配置。定义16BIT寄存器型向量config_data,根据地址取得各个寄存器的配置值,传到SCCB协议总线控制器,实施对OV7725的配置。配置数据设计成用CASE语句实现的查找表。

case(config_adder)

0: config_data = {8'h1C, 8'h7F};

1: config_data = {8'h1D, 8'hA2};

2: config_data = {8'h12, 8'h80 };

3: config_data = { 8'h3d, 8'h03}

4: config_data = { 8'h15, 8'h02}

67: config_data = {8'h8c, 8'he8};

68 : config_data = {8'h8d, 8'h20};

69: config_data = {8'h0e, 8'h65};

default : {8'h1C, 8'h7F};

endcase

5 SCCB总线读写模块

用状态机实现SCCB读写功能。根据写时序,设计写SCCB状态如下:W_IDLE、W_START、W_ID_ADDER、W_ACK1、W_REG_ADD、W_ACK2、W_REG_DATA、W_ACK3、W_STOP。

状态机由三ALWAYS过程实现,其中,状态选择过程周期实现上述状态的选择和转换。其主要代码结构如下: case(current_state)

W_IDLE: if(_config_adder

第 3 页

希望以上资料对你有所帮助,附励志名言3条:

1、生气,就是拿别人的过错来惩罚自己。原谅别人,就是善待自己。

2、未必钱多乐便多,财多累己招烦恼。清贫乐道真自在,无牵无挂乐逍遥。

3、处事不必求功,无过便是功。为人不必感德,无怨便是德。

第 4 页