当前位置: 首页 > article >正文

基于FPGA的ov5640摄像头图像采集(二)

之前讲过ov5640摄像头图像采集,但是只包了的摄像头驱动与数据对齐两部分,但是由于摄像头输入的像素时钟与HDMI输出的驱动时钟并不相同,所有需要利用DDR3来将像素数据进行缓存再将像素数据从DDR3中读出,对DDR3的读写参考米联客的IP,可以高效的实现对DDR3的读写。

工程整体框架如图所示:

工程主要包括摄像头驱动模块、数据对齐模块、数据存储模块和HDMI驱动模块。

顶层模块的代码如下所示:

`timescale 1ns / 1ps

module top_ov5640_ddr3_hdmi(
    input                                   sysclk          ,           //系统时钟
    //ov5640
    input                                   cmos_href_i     ,           //行同步信号
    input                                   cmos_vsync_i    ,           //场同步信号
    input                                   cmos_pclk_i     ,           //输入时钟
    input            [7:0]                  cmos_data_i     ,           //输入像素
    output                                  cmos_xclk_o     ,           //摄像头驱动时钟
    output                                  cmos_scl        ,           //时钟总线
    inout                                   cmos_sda        ,           //数据总线
    //HDMI
    output                                  HDMI_TX_CLK_P   ,           //时钟
    output                                  HDMI_TX_CLK_N   ,           
    output           [2:0]                  HDMI_TX_P       ,           //数据
    output           [2:0]                  HDMI_TX_N       ,
    //DDR3接口信号;
    inout           [63 : 0]                ddr3_dq         ,           //ddr3 数据;
    inout           [7 : 0]                 ddr3_dqs_n      ,           //ddr3 dqs负;
    inout           [7 : 0]                 ddr3_dqs_p      ,           //ddr3 dqs正;
    output          [14 : 0]                ddr3_addr       ,           //ddr3 地址;
    output          [2 : 0]                 ddr3_ba         ,           //ddr3 banck地址;
    output                                  ddr3_ras_n      ,           //ddr3 行选择;
    output                                  ddr3_cas_n      ,           //ddr3 列选择;
    output                                  ddr3_we_n       ,           //ddr3 读写选择;
    output                                  ddr3_reset_n    ,           //ddr3 复位;
    output          [0:0]                   ddr3_ck_p       ,           //ddr3 时钟正;
    output          [0:0]                   ddr3_ck_n       ,           //ddr3 时钟负;
    output          [0:0]                   ddr3_cke        ,           //ddr3 时钟使能;
    output          [0:0]                   ddr3_cs_n       ,           //ddr3 片选;
    output          [7 : 0]                 ddr3_dm         ,           //ddr3_dm;
    output          [0:0]                   ddr3_odt        ,           //ddr3_odt;

    output                                  card_power_en               //板卡使能信号 
);

需要注意的是本次工程利用Block Design来搭建数据缓存模块,其中的ip参考自米联客具体框图如下所示:

需要注意的是利用clk_wiz ip来生成期望的时钟信号时,需要将ip核的输入时钟来源设置为Global类型,不然可能会产生如下图所示的报错。

摄像头采集图像结果如图所示:


http://www.kler.cn/news/336263.html

相关文章:

  • Web常见的攻击方式及防御方法
  • 【黑马点评】 使用RabbitMQ实现消息队列——2.使用RabbitMQ监听秒杀下单
  • http 缓存
  • vSAN04:vSAN远程数据存储挂载、双节点集群介绍/安装/组件读写/高级配置/故障处理方式
  • 【Ubuntu】DNS设置不生效/重启被重置
  • 基于SpringBoot+Vue的科研课题项目管理系统源码
  • MQ 架构设计原理与消息中间件详解(三)
  • bus中设备驱动的probe触发逻辑和device、driver的添加逻辑
  • Vue83 引入elementUI
  • CSS 布局——清除浮动 (二)
  • hutool bug
  • 核心理论框架对比:如何通过TOGAF实现企业数字化转型的全面战略
  • javaweb-分层解耦
  • 接口怎么返回文件或数据流,@RequestMapping注解里面的属性项有哪些
  • 计算机组成原理(笔记6阵列乘法器、补码阵列乘法器)
  • Nuxt.js 应用中的 app:beforeMount 钩子详解
  • 18年408数据结构
  • 论文笔记:微表情欺骗检测
  • FineReport 11 在线学习
  • INS风格时尚自拍人像摄影后期Lr调色,手机滤镜PS+Lightroom预设下载!