设计简介
本设计使用ov5640摄像头和FPGA开发板进行开发,能够将摄像头采集到的信息实时输出到HDMI显示器上。本设计的结构图如下:
摄像头I2C配置模块
该模块采用网络上的开源设计(详见设计文件title),将OV5640配置成如下模式:
1. 分辨率:1024 * 768
2. 刷新率:60hz
3. 像素时钟频率:48mhz
4. xclk: 24m
以上列举了一些和verilog设计相关性较大的配置参数,其它细节可以结合OV5640手册和设计源代码进行深入理解。
摄像头数据采集模块
该模块同样采用网络上的开源设计(详见设计文件title),功能是将摄像头回传的RGB数据打包并按照帧格式回传。其在例化时的接口如下所示:
//CMOS图像数据采集模块
cmos_capture_data u_cmos_capture_data( //系统初始化完成之后再开始采集数据
.rst_n (rst_n & cam_init_done),
.cam_pclk (cam_pclk),
.cam_vsync (cam_vsync),
.cam_href (cam_href),
.cam_data (cam_data),
.cmos_wr_req (cmos_wr_req), //帧开始信号
.cmos_frame_vsync (),
.cmos_frame_href (),
.cmos_frame_valid (wr_en), //数据有效使能信号
.cmos_frame_data (wr_data) //有效数据
);
其中四个cam_xxx信号直接由GPIO输入即可,我们要重点关注的是cmos_wr_req、cmos_frame_valid、cmos_frame_data 三个信号。
cmos_wr_req信号的作用是向流模式DDR控制器发起一次完整的帧数据传输请求。在接到该信号后,流模式DDR控制器将会处理此次请求,为即将到来的一帧数据对MIG进行配置。总而言之,cmos_wr_req信号用于通知DDR控制器即将有一帧数据到来,做好接收准备。
cmos_frame_valid信号的作用是数据有效信号,每次到来一个有效的16位像素数据时,该信号将拉高。
cmos_frame_data信号即一个像素点的16位信号,比较好理解。
流模式DDR(本体 + 控制器)
该模块由两部分构成,一个是流模式DDR模块(ddr3_axi),一个是流模式DDR控制模块(ddr3_stream)。为了节省您的阅读时间,更快的让您抓住重点,这里将重点介绍流模式DDR控制模块,而流模式DDR模块本体