基于 OV5640 的图像采集显示系统(DVP 接口时序逻辑设计)

文章目录

  • 前言
  • 一、DVP 接口时序逻辑设计
  • 二、基本数据流接收
  • 三、像素位置输出
  • 四、舍弃前 N 张图像
  • 五、系统异常状态恢复控制
  • 六、完整代码展示
  • 七、仿真代码展示
  • 八、仿真波形展示


前言

上一节,我们已经完成了 OV5640 初始化逻辑的介绍。接下来,将要开始完成 DVP 接口的时序设计。

提示:以下是本篇文章正文内容,下面案例可供参考

一、DVP 接口时序逻辑设计

为了便于分析 DVP 接口。这里以 OV5640 输出 3*3 像素的图像大小矩阵为例绘制时序图,介绍 DVP 接口的时序,并分析接口逻辑设计方法。
1
特别说明:上图仅为时序示意图,其中 VSYNC 的高电平脉冲宽度,VSYNC 下降沿到 HREF
上升沿之间的间隔时钟个数,HREF 下降沿到下一个 HREF 的上升沿之间的高电平之间的时钟个数,以及最后一个 HREF 下降沿到 VSYNC 上升沿之间的间隔时钟个数实际上远大于图中所绘制,绘制时为了保证画幅大小和进行了精简,这些差异不影响我们分析 DVP 接口时序。
 VSYNC 的高脉冲标志着新一帧图像数据的即将到来。所以当 VSYNC 高脉冲出现之后,第一个 HREF 高电平期间 DATA 端口上传输的就是整幅图像的第一行数据,紧接着第二行,直到最后一行输出完成,再产生 VSYNC 的高脉冲开始新一帧图像数据的输出。
 HREF 上升沿后的第一个时钟时刻的数据为该行图像的第一个像素数据的高字节(P0H),第二个时钟时刻的数据为第一个像素数据的低字节(P0L),以此类推,直到第 2N 个数据为第 N 个像素数据的低字节,然后一行数据输出完成,HREF 变为低电平。间隔一定时钟周期后再开始下一行图像数据的输出。
 Data 数据线上,PxH 和 PxL 两个 8 位的数据拼接为一个 RGB565 像素的图像数据。

二、基本数据流接收

根据应用需求,整个 DVP Capture 模块的设计目的就是要实现每两个数据拼接为 1 个 16位的数据并按照写 RAM 或 FIFO 的接口形式输出,模块设计框图如下图所示:
1
模块中,DataPixel 为 16 位的 RGB565 格式的像素数据,由连续的 2 个 Data 数据拼接而来。DataValid 为 DataPixel 数据有效标志信号,由于 DATA 端口需要 2 个时钟才能传输一个像素所需的 16 位数据,所以 DataPixel 端口上的数据理论来说应该是每 2 个时钟周期只有一个时钟周期是真正有效的,所以 DataValid 在连续的两个时钟周期中,只有一个时钟周期为高电平,一个时钟周期为低电平,来确保下一级在使用 DataPixel 时,每两个时钟周期内只使用一次,使用时,如果是数据直接写入 FIFO 或者 RAM,可以直接将 DataValid 信号当做 wrreq信号使用。下图为该模块的时序图:

1
从图中可以看到,DataPixel 的数据在 DataValid 信号为高电平的时候,输出的是前两个时钟周期的值拼接成的。如 C1 和 C2 组成一个 16 位的数据,在 C2 之后延迟两个数据输出在 DataPixel 端口上。这样就完成了 DVP 接口数据流转 RGB565 数据流的功能。

//在HREF为高电平时,计数输出数据个数always@(posedge PCLK or posedge Rst_p)if(Rst_p)Hcount <= 0;else if(r_Href)Hcount <= Hcount + 1'd1;elseHcount <= 0;//-----------------------------------------------------------------------------------------//-----------------------------------------------------------------------------------------/*根据计数器的计数值奇数和偶数的区别,在计数器为偶数时,将DVP接口数据端口上的数据存到输出像素数据的高字节,在计数器为奇数时,将DVP接口数据端口上的数据存到输出像素数据的低字节*/always@(posedge PCLK or posedge Rst_p)if(Rst_p)r_DataPixel <= 0;else if(!Hcount[0])r_DataPixel[15:8] <= r_Data;else r_DataPixel[7:0] <= r_Data;//-----------------------------------------------------------------------------------------

三、像素位置输出

在有些应用中,需要实时知道当前输出的图像数据在输出像素矩阵中的绝对位置,以便于根据不同的位置进行不同的处理。最典型的如使用图像处理技术定位图像中某个点的具体位置。则需要用到该信息,因此,该 DVP Capture 模块也将每个像素对应的位置通过 Xaddr和 Yaddr 两个端口输出。在上图中以 C1C2 这个数据为例,可以看到,在 DataValid 为高电平的时候,数据位 C1C2,而此时的 Xaddr 也为 1。每当 DataValid 高电平信号到来时,Xaddr 的值加 1。当一行图像数据输出完成之后,Xaddr 清零。
Xaddr 和 Yaddr 的生成非常简单。对于 Xaddr 来说,只要设计一个 Hcount 计数器,在HREF 为高电平期间持续计数即可,然后舍去将 Hcount 的最低位得到的值就刚好可以与像素输出时刻一一对应。而对于 Yaddr,则只需要使用一个 Vcount 计数器对 HREF 的上升沿进行计数即可。关于该部分实现的具体细节详见提供的设计代码的完整内容。需要关注的是,在模块中,Xaddr 和 Yaddr 都是从 1 开始算的,并非从 0 开始,也就是说,输出的每行最开头的一个像素对应的 Xaddr 的值为 1,输出的每帧图像的第一行数据,其 Yaddr 的值也为 1。

//-----------------------------------------------------------------------------------------/*在行计数器计数值为奇数,且HREF高电平期间,产生输出数据有效信号*/always@(posedge PCLK or posedge Rst_p)if(Rst_p

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/110783.html

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

相关文章

【C修炼计划】卷壹 · 初识C语言

文章目录 卷壹 初识C语言一 C语言的起源二 C语言的特性三 C语言的应用范围四 C语言程序结构五 C语言书写规范六 C语言编译器安装附 参考资料 卷壹 初识C语言 一 C语言的起源 C语言的前生是B语言&#xff08;BCPL&#xff0c;一种早期的高级语言&#xff09;。下图描…

1. 卷积原理

① 卷积核不停的在原图上进行滑动&#xff0c;对应元素相乘再相加。 ② 下图为每次滑动移动1格&#xff0c;然后再利用原图与卷积核上的数值进行计算得到缩略图矩阵的数据&#xff0c;如下图右所示。 import torch import torch.nn.functional as Finput torch.tensor([[1, 2…

华为AR路由器 典型配置案例——以太网交换

目录 Eth-Trunk 例&#xff1a;配置三层链路聚合 组网需求 操作步骤 检查配置结果 配置脚本 VLAN 举例&#xff1a;配置基于接口划分VLAN&#xff0c;实现同一VLAN内的互通&#xff08;同设备&#xff09; 组网需求 操作步骤 检查配置结果 配置脚本 举例&#xff…

C# 使用SnsSharp实现文件拖拽功能

CSDN下载地址&#xff1a;https://download.csdn.net/download/sns1991sns/88041637 gitee下载地址&#xff1a;https://gitee.com/linsns/snssharp 技术优势&#xff1a; 不仅使用简单&#xff0c;还可解决由于系统管理权限导致的文件拖拽无响应问题。 使用举例&#xff1a…

PDF制作成翻页电子书

在日常工作中&#xff0c;大部分人使用的都是PDF文档发送给客户&#xff0c;但是PDF文档通常是静态的&#xff0c;缺乏交互性和视觉吸引力。那你有没有想过把它转换成翻页的电子书呢&#xff1f; 小编将告诉你操作步骤&#xff0c;非常简单 1.搜索FLBOOK在线制作电子杂志平台 …

十二、pikachu之URL重定向

文章目录 1、URL重定向概述2、实战3、URL跳转的几种方式:3.1 META标签内跳转3.2 javascript跳转3.3 header头跳转 1、URL重定向概述 不安全的url跳转问题可能发生在一切执行了url地址跳转的地方。如果后端采用了前端传进来的&#xff08;可能是用户传参&#xff0c;或者之前预埋…

官宣|美洽AI客服 x HelpLook 达成联盟合作,AI ChatBot 解放客户运营

重磅消息 美洽AI客服和HelpLook 正式建立合作关系 随着企业扩大规模和业务增长&#xff0c;客户咨询和服务请求增加。传统人工客服难以处理大量咨询&#xff0c;而智能化的AI客服可以同时满足多个客户需求。AI客服系统建立和训练好后&#xff0c;能自动化处理客户咨询&#x…

【计算机网络】HTTPs 传输流程

HTTPS和HTTP的区别 1、HTTP协议传输的数据都是未加密的&#xff0c;是明文的&#xff0c;使用HTTP协议传输隐私信息非常不安 HTTPS协议是由SSLHTTP协议构建的可进行加密传输、身份认证的网络协议&#xff0c;要比http协议安全。 2、HTTPS协议需要到CA申请证书&#xff0c;一般…

【高阶数据结构】二叉树搜索树 {概念;实现:核心结构,增删查,默认成员函数;应用:K模型和KV模型;性能分析;相关练习}

二叉搜索树 一、二叉搜索树的概念 二叉搜索树又称二叉排序树&#xff0c;它可以是一棵空树&#xff0c;若果不为空则满足以下性质: 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根节点…

null和undefined区别

1.undefined&#xff0c;表示无值。 比如下面场景&#xff1a; a. 变量被声明了&#xff0c;但是没有被赋值&#xff1b; b. 调用函数的时候&#xff0c;应该给函数传参却没有给函数传这个参数打印出来就是 undefined&#xff1b; c. 访问一个对象中没有的属性&#xff1b;…

水论文路线图

1、定基准模型 首先找大量的论文&#xff0c;基本是顶刊顶会&#xff0c;大概率会改代码&#xff0c;且给的代码有README&#xff0c;代码有系统性&#xff0c;方便你以后改动&#xff0c;有了基准模型之后。尽力把这个基准模型的模型部分(models)给看懂&#xff0c;值域数据及…

适合本地运营的同城团购优质商家圈子小程序开发演示

很火的一款适合本地同城运营的同城团购商家圈子小程序。有很多城市都有在用这个小程序做同城资源&#xff0c;实现完美变现。 小程序功能就是将本地商家邀请入驻&#xff0c;以团购的形式出售商家产品或服务套餐。借助微信的社交属性配合同城推广员可以迅速推广起来。 对于商…

Linux内核学习(十二)—— 页高速缓存和页回写(基于Linux 2.6内核)

目录 一、缓存手段 二、Linux 页高速缓存 三、flusher 线程 Linux 内核实现了一个被叫做页高速缓存&#xff08;page cache&#xff09;的磁盘缓存&#xff0c;它主要用来减少对磁盘的 I/O 操作。它是通过把磁盘中的数据缓存到内存中&#xff0c;把对磁盘的访问变为对物理内…

解决Three.js辉光背景不透明

使用此pass canvas元素的background都能看到 不过相应的辉光颜色和背景颜色不相容的地方看起来颜色会怪一些 如图 不过如果是纯色就没什么问题了 //ts-nocheck /** Author: hongbin* Date: 2023-04-06 11:44:14* LastEditors: hongbin* LastEditTime: 2023-04-06 11:49:23* De…

RT_Thread内核机制学习(四)队列

队列 队列中每个消息块都有一个头部&#xff0c;指向下一个消息块。 消息块的内存是连在一起的&#xff0c;但是是用链表组织的。 struct rt_messagequeue {struct rt_ipc_object parent; /**< inherit from ipc_object */void *m…

go vet中的那些检测项

go vet 是 Go 语言自带的一个工具&#xff0c;用于分析 Go 代码中的常见错误和潜在问题。它可以检查代码中可能存在的各种问题&#xff0c;例如&#xff1a; 未使用的变量、函数或包 可疑的函数调用 错误的函数签名 程序中的竞态条件 错误的类型转换等 本文意图指令当前go vet所…

在 AWS 中导入 qcow2 镜像

文章目录 在 AWS 中导入 qcow2 镜像使用的格式和问题步骤概述前提条件转换镜像格式并上传至 S3创建角色并配置策略策略文件内容创建container.json配置文件导入镜像创建 AMI 并启动实例参考:在 AWS 中导入 qcow2 镜像 当我们在多云环境中部署应用时,有时候可能需要把基于 qem…

装备一台ubuntu

配置远程连接&#xff1a; ubuntu的root用户无法远程登入问题&#xff1a; openssh安装命令&#xff1a; sudo apt-get install openssh-server 安装完成通过以下命令查看SSH是否启动 ps -e | grep ssh 如果只有ssh-agent表示还没启动&#xff0c;需要&#xff1a; /etc/i…

2023高教社杯数学建模思路 - 复盘:校园消费行为分析

文章目录 0 赛题思路1 赛题背景2 分析目标3 数据说明4 数据预处理5 数据分析5.1 食堂就餐行为分析5.2 学生消费行为分析 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 赛题背景 校园一卡通是集…

Visual Studio软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 Visual Studio是微软公司开发的一款集成开发环境&#xff08;IDE&#xff09;&#xff0c;广泛应用于Windows平台上的应用程序和Web应用程序的开发。以下是Visual Studio软件的主要特点和功能&#xff1a; 集成开发环境&#x…