1 前语 OV7725的像素数据采集,是很多开发板标配的例程,属于FPGA图像处理的入门级应用,市面上的绝大多数开发板均给出了例程源码,但并未给出详细解释和仿真模型,导致很多同学下载例程后输出了图像,但不知其所以然,依然没有理解基于FPGA图像采集的方法和思路,等于做了无用功,所以,这篇文章就是要解决这个问题。
2 OV7725数据手册分析
- 支持最大输出640X480@60Hz的分辨率输出,我们为何不直接输出这个分辨率呢?
- 支持YUV、RGB565等格式输出,我们为何不选择RGB565呢?
- 明确图像输出时序,并理解到位,如图:
- 明确RGB565格式图像输出顺序,并理解到位,如图:
- OV7725输出的前10~15帧图像是不可靠数据,应丢弃
3 设计思路
- 采集场同步信号VS的上升沿;
- 对场同步信号VS的上升沿计数;
- 场同步信号VS的上升沿计数到10后,指示此时可以采集像素数据;
- 检测到HREF拉高时,寄存第一个字节数据,并将寄存的第一个字节数据与第二个字节数据拼接输出;
- 同步HS、VS、DE、DATA信号输出;
4 设计源码
module cmos_capture_data(
input rst_n , //复位信号
//摄像头接口
input cam_pclk , //cmos 数据像素时钟
input cam_vsync , //cmos 场同步信号
input cam_href , //cmos 行同步信号
input [7:0] cam_data ,
//用户接口
output cmos_frame_vsync , //帧有效信号
output cmos_frame_href , //行有效信号
output cmos_frame_valid , //数据有效使能信号
output [15:0] cmos_frame_data