基于FPGA的ov5640摄像头简易图像采集装置详解

本设计利用FPGA开发板和OV5640摄像头,实现实时图像采集并经HDMI输出。通过摄像头I2C配置模块设置为1024*768@60Hz模式,数据采集模块处理RGB数据,流模式DDR控制器处理帧数据传输。HDMI时序控制模块确保显示同步,I2C配置模块则用于适配不同RGB转TMDS芯片。设计中处理了DDR写入延迟可能导致的帧数据丢失问题,确保视频流畅。
摘要由CSDN通过智能技术生成

设计简介

本设计使用ov5640摄像头和FPGA开发板进行开发,能够将摄像头采集到的信息实时输出到HDMI显示器上。本设计的结构图如下:
图1 设计结构图

摄像头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模块本体,我将只做如何使用的说明,如果您感兴趣,可以下载下来看一下。

流模式DDR本体

FPGA读写OV5640摄像头显示例程 Verilog逻辑源码Quartus工程文件+文档说明,FPGA型号Cyclone4E系列中的EP4CE6F17C8,Quartus版本17.1。 本实验将采用 500 万像素的 OV5640 摄像头模组(模块型号:AN5640)为大家显示更高分辨率 的视频画面。OV5640 摄像头模组最大支持 QSXGA (2592x1944)的拍照功能,支持 1080P、720P、 VGA、QVGA 视频图像输出。本实验将 OV5640 配置为 RGB565 输出,先将视频数据写入外部存储 器,再从外部存储器读取送到 VGA、LCD 等显示模块。 module top( input clk, input rst_n, output cmos_scl, //cmos i2c clock inout cmos_sda, //cmos i2c data input cmos_vsync, //cmos vsync input cmos_href, //cmos hsync refrence,data valid input cmos_pclk, //cmos pxiel clock output cmos_xclk, //cmos externl clock input [7:0] cmos_db, //cmos data output cmos_rst_n, //cmos reset output cmos_pwdn, //cmos power down output vga_out_hs, //vga horizontal synchronization output vga_out_vs, //vga vertical synchronization output[4:0] vga_out_r, //vga red output[5:0] vga_out_g, //vga green output[4:0] vga_out_b, //vga blue output sdram_clk, //sdram clock output sdram_cke, //sdram clock enable output sdram_cs_n, //sdram chip select output sdram_we_n, //sdram write enable output sdram_cas_n, //sdram column address strobe output sdram_ras_n, //sdram row address strobe output[1:0] sdram_dqm, //sdram data enable output[1:0] sdram_ba, //sdram bank address output[12:0] sdram_addr, //sdram address inout[15:0] sdram_dq //sdram data ); parameter
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值