秉火OV7725驱动日志 第二天
来源:互联网 发布:java往word中写入文本 编辑:程序博客网 时间:2024/05/20 05:45
完成SCCB协议共有3个模块
第一模块TIMING_control
输入输出接口连接
//global clock
.clk (clk_ref), //100MHz
.rst_n (sys_rst_n), //system reset
//i2c interface
.i2c_sclk (cmos_sclk), //i2c clock
.i2c_sdat (cmos_sdat), //i2c data for bidirection
//i2c config data
.i2c_config_index (i2c_config_index), //i2c config reg index, read 2 reg and write xx reg
.i2c_config_data ({8'h42, i2c_config_data}), //i2c config data
.i2c_config_size (i2c_config_size), //i2c config data counte
.i2c_config_done (i2c_config_done), //i2c config timing complete
.i2c_rdata (i2c_rdata)
第二个模块
I2C_OV7725_RGB565_Config u_I2C_OV7725_RGB565_Config
(
.LUT_INDEX (i2c_config_index),
.LUT_DATA (i2c_config_data),
.LUT_SIZE (i2c_config_size)
);
第三个模块
//global clock
.clk_cmos (clk_cmos), //24MHz CMOS Driver clock input
.rst_n (sys_rst_n & cmos_init_done), //global reset
//CMOS Sensor Interface
.cmos_pclk (cmos_pclk), //24MHz CMOS Pixel clock input
.cmos_xclk (cmos_xclk), //24MHz drive clock
.cmos_data (cmos_data), //8 bits cmos data input
.cmos_vsync (cmos_vsync), //L: vaild, H: invalid
.cmos_href (cmos_href), //H: vaild, L: invalid
//CMOS SYNC Data output
.cmos_frame_vsync (cmos_frame_vsync), //cmos frame data vsync valid signal
.cmos_frame_href (cmos_frame_href), //cmos frame data href vaild signal
.cmos_frame_data (cmos_frame_data), //cmos frame RGB output: {{R[4:0],G[5:3]}, {G2:0}, B[4:0]}
.cmos_frame_clken (cmos_frame_clken), //cmos frame data output/capture enable clock
//user interface
.cmos_fps_rate (cmos_fps_rate) //cmos image output rate
);
模块连接如上,我们继续来说状态转移
状态一:利用SIO_C和SIO_D两个引脚写入寄存器初始设置,复位写指针(最初是在状态二中复位写指针的,但是若在状态一中复位信号不会对寄存器的配置造成影响,而且如果放在第二个状态中当WEN信号变化时复位同时进行会发生冒险,位保稳妥,先将写指针进行复位。)
状态二:检测VSYNC变为高电平时,将WEN引脚设置为高电平
状态三:再次检测VSYNC,将WEN设置为低电平,复位读指针
状态四:通过FIFO的RCLK和DO[0:7]将FIFO中的数据读出
状态五:读取结束后,等待下一次VSYNC信号(重点在于如何来判定读取已经结束。传输的速度为24MHZ,比VGA借口的读取速度要慢,所以只需等待下一个VSYNC信号即可)
主体使用一个状态机,实现五种状态的转移。
简单的时序代码(尚未经验证,预计明天会做一下)
'timescape 1ns/1psmodule center_crtl( clk, rst_n,); //input input clk; input rst_n; input vsync_sig; input vga_vsync_sig; //output output wen; output wrst; //write reset output rrst; //read reset output oe_n; // read able //state_reg reg [2:0] now_state; reg [2:0] next_state; //state parameter REG_SETUP = 3'd0; parameter SAVE_BEGIN = 3'd1;// parameter SAVE_BEGIN_ready = 3'd5; parameter SAVE_FINISH = 3'd2; parameter READ_BEGIN = 3'd3; parameter FINISH = 3'd4;//state controlalways@(posedge clk or negedge rst_n) begin if(!rst_n) begin now_state <= 3'd0;// next_state <= 3'd0; end else now_state <= next_state; endalways@(*) begin case(now_state) REG_SETUP:begin wrst <= 1'd1; next_state <= SAVE_BEGIN; end SAVE_BEGIN:begin if(vsync_sig) wen <= ~ wen ; oe_n <= 1'd1;// wrst <= 1'd1; next_state <= SAVE_FINISH; end SAVE_FINISH:begin if(vsync_sig) wen <= ~ wen; rrst <= 1'd1; next_state <= READ_BEGIN; end READ_BEGIN:begin oe_n <= 1'd0; next_state <= FINISH; end FINISH:begin if(vga_vsync_sig) begin oe_n <= 1'd0; next_state <= SAVE_BEGIN; end end endcase endendmodule
阅读全文
1 0
- 秉火OV7725驱动日志 第二天
- 秉火OV7725驱动日志 第一天
- STM32驱动OV7725摄像头颜色识别
- 摄像头驱动OV7725学习笔记连载(一):OV7725 电器特性和时序图
- DM642接CMOS摄像头驱动(OV7725)终于搞定了
- 驱动第二天
- Unity3D学习日志第二天
- ov7725鹰眼
- e1000网卡驱动第二天
- 安全新兵营第二天:日志管理
- 摄像头驱动OV7725学习笔记连载(二):0V7725 SCCB时序的实现之寄存器配置
- e1000网卡驱动第二天_2
- e1000网卡驱动第二天_3
- TQ2440 LCD驱动移植第二天
- 领域驱动设计--第二天
- ov7725连接图
- 第二篇工作日志
- 第二课断链隐藏驱动
- 直接在Dao层进行测试的问题
- 网页特殊符号HTML代码大全
- meta标签详解
- RabbitMQ (五) 交换规则
- java知识点总结
- 秉火OV7725驱动日志 第二天
- Java-WeakHashMap整理
- bootstrap表单和图片
- ps中用钢笔进行抠图
- error:找不到remote层接口
- Ubantu下安装Chrome64位
- 第一章:pip 的安装和使用
- Linux RPM之yum在线管理
- 程序员开发实战系列