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

之前讲过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.rhkb.cn/news/446900.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安装TDengine数据库3.3版本和TDengine数据库可视化管理工具

安装TDengine数据库3.3版本和TDengine数据库可视化管理工具 一、下载安装包二、解压安装包三、部署四、启动服务五、进入数据库六、创建数据库、表和往表中插入数据七、测试 TDengine 性能八、使用数据库九、查询数据十、TDengine数据库可视化界面 一、下载安装包 TDengine-cl…

EXCEL怎么锁定单元格(锁定的单元格不能修改)

选中你的需要保护的单元格,然后点击鼠标右键,在弹出来的下拉菜单里面找到单元格格式 设置单元格格式,弹出来的对话框里找到右侧的保护,勾上锁定 找到审阅按钮,在下面找到更改下面的保护工作表按钮 具体保护的操作…

获取京东商品历史价格接口item_history_price介绍

接口开发背景 京东作为中国知名的电商平台,提供了丰富的商品和服务。为了更好地满足用户和商家的需求,京东开放平台推出了多种API接口,其中“item_history_price”接口用于获取指定商品的历史价格信息。这一接口的开发背景在于帮助用户判断当…

JavaSE——集合5:Set(HashSet的底层原理)(重要!!!)

目录 一、Set接口基本介绍 二、Set接口的常用方法 三、Set接口实现类——HashSet 四、HashSet(HashMap底层原理:重要!!!) (一)第一次添加元素 (二)第二次添加不同的元素 (三)添加重复的元素 1.仍旧走到了putVal(hash(key), key, value, false, true);方法 2.判断计算出…

java-02 数据结构-队列

在Java中,队列是一种常见的数据结构,用于在保持顺序的同时存储和检索数据。Java提供了java.util.Queue接口,它的常见实现包括ArrayDeque、LinkedList和PriorityQueue等。 如果你觉得我分享的内容或者我的努力对你有帮助,或者你只…

PyQt5常用功能四

⽂本涂鸦 写⼀些⽂本上下居中对齐的俄罗斯Cylliric语⾔的⽂字 import sys from PyQt5.QtWidgets import QWidget, QApplication from PyQt5.QtGui import QPainter, QColor, QFont from PyQt5.QtCore import Qtclass Example(QWidget):def __init__(self):super().__init__()…

趋势(一)利用python绘制折线图

趋势(一)利用python绘制折线图 折线图( Line Chart)简介 折线图用于在连续间隔或时间跨度上显示定量数值,最常用来显示趋势和关系(与其他折线组合起来)。折线图既能直观地显示数量随时间的变化…

如何查看GB28181流媒体平台LiveGBS中对GB28181实时视频数据统计的负载信息

目录 1、负载信息2、负载信息说明3、会话列表查看 3.1、会话列表4、停止会话5、搭建GB28181视频直播平台 1、负载信息 实时展示直播、回放、播放、录像、H265、级联等使用数目 2、负载信息说明 直播:当前推流到平台的实时视频数目回放:当前推流到平台的回…

【无标题】基于情境依赖因果影响的多智能体协作强化学习

、文章探讨了大型语言模型(LLMs),例如GPT-4,是否以及在何种意义上拥有知识。作者认为,这些模型展现了一种称为“工具性知识”的能力,这种知识允许它们根据输入上下文推断任务结构,并在此基础上进…

废水处理(一)——MDPI特刊推荐

特刊征稿 01 期刊名称: Removing Challenging Pollutants from Wastewater: Effective Approaches 截止时间: 摘要提交截止日期:2024年11月30日 投稿截止日期:2025年5月31日 目标及范围: 该主题是分享去除有毒物…

js操作元素的其他操作(4个案例+效果图+代码)

目录 1. 获取元素的位置和大小 案例:获取元素的位置和大小 1.代码 2.效果 2. 获取元素的可视区域 案例:获取元素的可视区域 1.代码 2.效果 3. 元素的滚动操作 案例:元素的滚动操作 1.代码 2.效果 4. 获取鼠标指针位置 案例:时刻获取鼠标位置 1.代码 2.效果 案例:拖动的小球 1.代…

万物智联创未来,第三届OpenHarmony技术大会在上海成功举办 深圳触觉智能参会

​10月12日,以“技术引领筑生态,万物智联创未来”为主题的第三届OpenHarmony技术大会(以下简称“大会”)在上海成功举办。本次大会由OpenHarmony项目群技术指导委员会(TSC)主办,华为、上海交通大…

阿里云物联网自有app创建之初始化SDK

文章目录 一、新建工程,配置gradle,导入.so文件,生成apk二、上传apk,集成安全图片,下载SDK三、SDK的集成四、初始化SDK 最近在研究阿里云自有app,这是自己的心得。 一、新建工程,配置gradle,导入.so文件,生…

Gin框架官方文档详解03:HTML渲染

注:本教程使用工作区方法管理项目,详见第一讲:创建一个简单的Gin应用。 目录 一、简单渲染二、使用不同目录下名称相同的模板三、自定义模板渲染器四、自定义分隔符五、自定义模板函数六、总结 一、简单渲染 首先,以03HTML渲染为…

机器学习与神经网络:诺贝尔物理学奖的新篇章

机器学习与神经网络:诺贝尔物理学奖的新篇章 引言 2024年诺贝尔物理学奖的颁发,无疑是一个历史性的转折点。这一奖项首次授予了在机器学习与神经网络领域做出杰出贡献的科学家,标志着人工智能技术在科学研究中的重要地位得到了前所未有的认…

3.计算机网络_端口号

端口号的由来 运输层的作用: 在计算机网络中,运输层处在用户功能的最底层、通信部分的最高层的位置,也就是说运输层是用户数据和实际网络通信的桥梁。因此运输层屏蔽了网络的实现部分,以协议的方式向用户层提供了接口&#xff…

Matlab绘图总结(进阶)

本文在前文的基础上进一步整理画图方法 MATLAB画动图_CSDN博客 1. 基础图形绘制 1.1 rectangle(矩形,圆形) 在前文中,讲解了如何使用rectangle,rectangle本意是用来画矩形的,其中,Curvature可…

【一起学Rust | 框架篇 | Tauri2.0框架】高级概念之安全特性的权限与能力

文章目录 前言一、开发前准备1. 准备项目2. 需求分析1. 监听系统热键2. 切换窗口无边框3. 切换窗口全屏 二、安装插件三、前端实现功能四、配置权限 前言 当前时间为 2024 年 9 月,距离Tauri 2.0 的 RC 版本发布迄今已近一个月。从 Tauri 官方渠道可以看出&#xf…

CVESearch部署、使用与原理分析

文章目录 前言1、概述2、安装与使用2.1、源码安装2.1.1、部署系统依赖组件2.1.1.1、下载安装基础组件2.1.1.2、下载安装MongoDB Community Edition 7.0 2.1.2、使用源码安装系统2.1.2.1、安装CVESearch2.1.2.2、填充MongoDB数据库2.1.2.3、填充Redis数据库 2.2、使用方法 3、测…

使用java画一条线。

package p1008;import javax.swing.*; import java.awt.*;public class LineAndTextExample extends JPanel {Overrideprotected void paintComponent(Graphics g) {super.paintComponent(g);// 设置线条粗细Graphics2D g2d (Graphics2D) g;g2d.setStroke(new BasicStroke(5))…