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

news/2024/10/11 12:36:06/

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

工程整体框架如图所示:

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

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

`timescale 1ns / 1psmodule top_ov5640_ddr3_hdmi(input                                   sysclk          ,           //系统时钟//ov5640input                                   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        ,           //数据总线//HDMIoutput                                  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.ppmy.cn/news/1537457.html

相关文章

软件测试学习笔记丨MongoDB

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/32359 一、MangoDB数据库 1.1 关系与非关系 1.1.1 关系型数据库 关系型数据库 MySQL,Oracle, SQLServer, Access…SQL(结构化查询语句&#x…

数学建模算法与应用 第8章 时间序列分析

目录 8.1 确定性时间序列分析方法 Matlab代码示例:移动平均法提取趋势 8.2 平稳时间序列模型 Matlab代码示例:差分法与ADF检验 8.3 时间序列的Matlab相关工具箱及命令 Matlab代码示例:ARIMA模型的建立 8.4 ARIMA序列与季节性序列 Matl…

需求10——通过改一个小bug来学习如何定位问题

在浏览我之前完成的一些小需求时,我发现了一个非常有价值的需求。这个需求可以让我深入了解系统中关于故障上报的功能。通过完善这个需求,我能够全面掌握整个故障上报的流程。 这个需求主要是关于故障上报流程中出现的问题。当前的流程如下:…

网优学习干货:王者荣耀游戏用户体验洞察及质差识别(1)

一、课题背景 二、课题目的 针对热点游戏(王者荣耀)进行业务质量评估,并通过对端到端定界分析,从无线、核心网、互联网维度识别影响用户体验关键因素,为游戏用户的体验优化提供依据。 三、课题实施进度 王者荣耀卡顿特…

【JS】在 Node.js 和 Electron 中获取设备 UUID 的最佳实践

在现代应用开发中,识别设备的唯一性是一个常见需求。无论是为了授权、数据跟踪还是用户设备管理,获取设备 UUID 都是实现这些目标的关键。在这篇博客中,我们将探讨如何在 Node.js 和 Electron 中获取设备的 UUID,并比较两种主要方…

代理IP的类型及其在爬虫中的应用

1 动态住宅代理 这些IP地址来自真实的住宅用户,因此具有很高的匿名性和隐私性,不易被别为代理IP。而增加了爬虫任务的安全性。这类代理有以下特点: 高安全性:使用这类代理可发起真实有效的请求,提高爬虫效率的同时&am…

『网络游戏』客户端发送消息到服务器【17】

将上一章服务器的协议PEProtocol的.dll文件重新生成导入unity客户端中 命名为Net 点击生成 另一种导入.dll文件方式 在客户端粘贴即可 此时Net文件夹的.dll文件就导入进来了 创建脚本:NetSvc.cs 编写脚本:NetSvc.cs 修改脚本:GameRoot.cs 在…

Excel-查找和引用数据-VLOOKUP 和 HLOOKUP 函数

在 Excel 中,VLOOKUP 和 HLOOKUP 是用于查找和引用数据的函数。下面是它们的基本用法: VLOOKUP 用途:在表格的第一列中查找某个值,并返回该值所在行的指定列中的数据。 语法: VLOOKUP(lookup_value, table_array, …