APP下载

CMOS摄像头视频采集控制器

2015-11-17惠为君

电脑知识与技术 2015年24期
关键词:控制器

惠为君

摘要:介绍了OV7725原理、配置寄存器及SCCB时序。在此基础上,基于FPGA实现了OV7725控制器设计,给出了设计的代码结构。在QUARTUSII13.0平台上完成了代码设计和下载。结果表明,该设计是成功的。

关键词:OV7725; VERILOG;FPGA;控制器

中图分类号:TN911 文献标识码: A 文章编号:1009-3044(2015)24-0130-02

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.

Key words: ov7725; verilog; FPGA ; controller

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

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

1 OV7725功能

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

2 OV7725配置寄存器

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位地址和读/写控制信号

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

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

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

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 < 8'd2)

next_state = W_START1;

if(_config_adder< _config_size)

next_state = W_START;

W_START:

next_state = W_ID_ADDER;

…….

R_REGDATA: //5'd6

next_state = W_ACK3;

W_ACK3: //5'd7

next_state = W_STOP;

W_STOP: //5'd8

next_state = W_IDLE;

如下代码结构实现状态输出,即从配置模块中读取器件ID地址、数据等,写入配置寄存器。

W_START: begin

sdat_out <= 1'b0; //数据被拉低

stream_cnt <= 0;

wdata<=_config_data[23:16]; end

W_ID_ADDRER:begin

stream_cnt <= stream_cnt + 1'b1;

sdat_out<=wdata[3'd7 - stream_cnt];end

W_ACK1:begin

stream_cnt <= 0;

wdata <= SCCB_config_data[15:8];

……

wdata是8位向量,存储待传输数据。空闲状态下,数据线是高电平。W_START状态下,数据线被拉低,开始传输数据,器件地址装载向量wdata。在W_ID_ADDRER状态,器件地址由sdat_out串行输出。在从机响应阶段,wdata向量装载寄存器地址,待传输。依此类推,传输寄存器地址、寄存器配置数据等。

6 SCCB控制器

设计顶层模块OV7725_TOP,实例化上述模块。得到如图2所示的RTL图。

引脚cmos_clk和cmos_sdt分别作为SCCB总线的时钟和数据线使用,实现对OV7725的读写功能。

7 结束语

在掌握OV7725配置寄存器的地址、作用的基础上,根据SCCB时序,设计控制器实现对OV7725寄存器的配置,使得OV7725能按照要求输出视频流格式和画质。基于QUARTUS13.0平台,实现控制器设计。

参考文献:

[1] 龙在云, 武斌. DVI数字视频图像数据的实时截取方法[J]. 电视技术,2010,34(2):32-33.

[2] 夏宇闻. Verilog数字系统设计教程[M]. 北京航空航天大学出版社,2008.

[3] 李江辉,王景存. 基于FPGA 的视频采集与显示系统设计[J].电视技术,2011,13(35):20-21

猜你喜欢

控制器
工商业IC卡控制器改造为物联网控制器实践
基于DSP的复合跟踪控制器的设计
MOXA RTU控制器ioPAC 5542系列
红狮控制 PID控制器PXU系列
4V三输出同步降压型控制器