XILINX FPGA OV5640 摄像头驱动(一)

2023-05-16

影像行业是一个值得深耕的方向,废话不多说

先看输入和输出

输入是光照,输出是光照的数字信号
在这里插入图片描述
image area:说的是感光矩阵,CMOS图像传感器的最核心部分,接收光照产生电信号的部分。决定了图像质量的好坏
矩阵就会行列,就会有行列相关的控制部分。colcmn、rom

AMP:是一个放大器,放大来自感光矩阵的模拟信号。感光矩阵的信号是模拟的所以也会同比例的放大噪声信号。AMP是一把双刃剑,放大的信号的同时会引入跟多的噪声,降低信噪比。信噪比是图像传感器永恒的主题,几乎所有的优化都是围绕信噪比。

10-BIT ADC:模拟数字转换器,经过AMP放大的模拟信号通过ADC转换为数字信号。数字信号后的数据称为RAW,每个像素的细节呈现和ADC深度关系最大。

到这里影像传感器的原始信号采集已经完成,通过引脚接口输送给外部器件进行图像数据处理即可。但是在OV5640 上额外的集成了一些附加功能

ISP:附加模块,高度定制化的图像处理器,使用各种寄存器控制图像参数处理ADC的RAW数据。
能够提供相当多的图像处理功能。这样做的目的是省去了后端图像处理设备的开销,OV5640可以直接提供可供使用的图像。
打一个比方,我想吃烧鸭,那么我去菜场买一只屠宰好的鸭子买上配菜调料回家花几个小时做一盘烧鸭。屠宰好的鸭子就是RAW。最后盘子里面的烧鸭是最后要的图像。烹饪的过程就是图像处理。当然,我可以直接去卤味店买一只烧鸭,多省事。这个额外的ISP就是卤味店做的事情。这样就相对好理解这个ISP的作用。
ISP包括图像处理压缩,格式转换。
FIFO:这部分也是卤味店的工作,提供一个缓存储存数据。
接口:DVP/MIMP。特定的接口,用于传输影像数据。

下面看一下接口
XVCLK : H11 XVCLK input system input clock
系统时钟输入引脚, 图像传感器作为一个芯片就会有时钟输入。就像MCU,SOC的晶振输入一样。
PLL主要是把XVCLK输入的时钟变成内部需要的频率。

PWND:D1 PWDN input power down (active high with internal pull-down resistor)
高有效(内部接了下拉电阻)。有效的时候sensor出于power down状态

RESETB :E2 RESETB input reset (active low with internal pull-up resistor)

FREX :F2 FREX I/O frame exposure / mechanical shutter
所有图像传感器上的像素需要打开时间窗口才能接受光照,就像把杯子的盖打开才能注水到杯子里面。
这个信号控制所有像素的感光时间窗口。也就是一帧FRAME。

PCLK : I1 PCLK I/O DVP PCLK output
DVP接口数据传输的同步时钟。

HREF ,VSYNC :详细看DVP时序。

SICO,SIDO : OV公司自己的控制命令发送总线和IIC几乎一样。

整个框图部分到此结束,传感器是一个很复杂的器件,对之抱有敬畏之心。

OV5650 是一个带有ISP的图像传感器,大部分接口都通过寄存器的方式开放出来。所以要使用自带ISP免不了去看那庞大的寄存器设置。

DVP时序
在这里插入图片描述
在这里插入图片描述
DVP 时序起始也很简单,如果接触过VAG,LCD,HDMI类似图像显示驱动,基本上看一眼就能知道怎么回事。

VSYNC:帧同步信号。表示一副完成的图像传输开始和结束。
HSYNC:行同步信号,表示一帧图像当中一行的数据传输开始和结束。
HREF :表示数据传输有效。
D][9:0] :数据传输线。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XILINX FPGA OV5640 摄像头驱动(一) 的相关文章

  • cdc多bit信号-握手处理

    对于多bit数据跨时钟 各个bit之间路径延迟不一样 源时钟域给的数据是2 b11 目的时钟域采样到的数据可能2 b10 因此两级触发器对于单bit数据跨时钟是可以用的 但是对于多bit数据跨时钟就会出错 握手处理的关键是利用源的时钟req
  • Xilinx平台SRIO介绍(二)SRIO IP核基础知识

    使用SRIO IP核必须掌握的基础知识 理解了这篇 剩下的只是代码罢了 汇总篇 Xilinx平台SRIO介绍 汇总篇 目录 前言 SRIO RapidIO GT 有什么关系
  • 硬件设计---了解电源篇

    1 概述 在高速电路设计中一块单板上常存在多种电源 3 3V 1 8V 1 2V 1 0V 0 9V 0 75V等 有时光是对FPGA供电就需要五六种电源 为了便于使用往往用户只需要提供一种或几种电源 然后经过板上电源模块转换到各个目标电源
  • 最详细的Vivado安装教程

    V i v a d o 安 装
  • Verilog的基础知识

    Verilog的基本介绍 硬件描述语言发展至今已有二十多年历史 当今业界的标准中 IEEE标准 主要有VHDL和Verilog HDL 这两种硬件描述语言 一个设计往往从系统级设计开始 把系统划分成几个大的基本的功能模块 每个功能模块再按一
  • win10下安装vivado 2018.3之后ise14.7 的impact 无法使用

    软件版本号 操作系统win10 ise14 7 vivado 2018 3 ise14 7 在win10里面问题总结 1 ise14 7 闪退问题 比较好解决 论坛上比较多的解决方法 2 ise 14 7 windows 10 版本的ise
  • 采用Vivado 配置xilinx GTX的SATA设计

    从Vivado开始 配置GTX的时候 多了一个SATA协议支持 但有些小地方还需要自己另外设置 整理了一下 分享给大家 首先打开Transceivers wizard 打开页签 线速率和参考时钟选择 在协议里面选择SATA2或者SATA3
  • xilinx xdma PCIe中断bug

    xilinx xdma PCIe中断存在bug bug1 此中断虽然是msi或者msx中断 但是不中断cpu bug2 此中断不是边沿中断 而是电平中断 在驱动层需要不断地轮训查询中断事件 bug3 此中断持续时间必须长 而且在收到中断应答
  • verilog 基本语法 {}大括号的使用

    的基本使用是两个 一个是拼接 一个是复制 下面列举了几种常见用法 基本用法 表示拼接 第一位 第二位 表示复制 4 a 等同于 a a a a 所以 13 1 b1 就表示将13个1拼接起来 即13 b1111111111111 拼接语法详
  • [从零开始学习FPGA编程-38]:进阶篇 -语法-函数与任务

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 目录 前言 第1章 什么是函数Function 1 1 什么是函数 1 2 函
  • 用python接收高速率的UDP数据包

    我正在使用 python 来从 FPGA 接收 UDP 数据包流 并尝试丢失尽可能少的数据包 数据包速率从大约 5kHz 到一些 MHz 我们希望在特定时间窗口 代码中的 acq time 内获取数据 我们现在有这样的代码 BUFSIZE
  • 基于FPGA的简易BPSK和QPSK

    1 框图 2 顶层 3 m generator M序列的生成 输出速率为500Kbps 4 S2P是串并转换模块 将1bit的m序列转换到50M时钟下的2bit M序列数据 就有4个象限 5 my pll是生成256M的时钟作为载波 因为s
  • 使用 VHDL 实例化 FPGA 中的 RAM

    我试图按照中的指导实现双端口 RAM这篇优秀的博文 http danstrother com 2010 09 11 inferring rams in fpgas 然而 ModelSim 在编译时给出以下警告 Warning fifo ra
  • 用于 Verilog 或 SystemVerilog 的 TAP(测试任何协议)模块

    是否有 TAP 测试任何协议 http testanything org Verilog 的实现 那就太好了 因为这样我就可以使用证明来自动检查我的结果 更新 10 9 09 有人问为什么不使用断言 部分 TAP 为我提供了一些很好的报告
  • 如何生成异步复位verilog总是阻塞凿子

    Chisel 始终生成敏感度列表中仅包含时钟的块 always posedge clk begin end 是否可以将模块配置为使用异步重置并生成这样的始终块 always posedge clk or posedge reset begi
  • 修改后的 baugh-wooley 算法乘法 verilog 代码不能正确乘法

    以下 verilog 源代码和 或测试平台可以很好地工作商业模拟器 iverilog https www edaplayground com x 3TuQ也形式化验证工具 yosys smtbmc https gist github com
  • 使用双寄存器方法解决亚稳态问题

    为了解决Verilog中不同时钟域引起的亚稳态 采用双寄存器方法 但据我所知 亚稳态的最终输出尚未确定 输出独立于输入 那么 我的问题是如何保证使用双寄存器方法输出的正确性 Thanks 您不能完全确定您避免了亚稳态 正如您所提到的 亚稳态
  • if 语句导致 Verilog 中的锁存推断?

    我正在编写用于合成算法的 Verilog 代码 我对哪些情况可能导致推断锁存器有点困惑 下面是这样的一段代码 虽然它在模拟中工作得很好 但我担心它可能会导致硬件问题 always b1 or b2 b1 map b2 map m1 map
  • FPGA大输入数据

    我正在尝试向 FPGA 发送 4 KB 字符串 最简单的方法是什么 是我正在使用的fpga的链接 我正在使用 Verilog 和 Quartus 您的问题的答案在很大程度上取决于将数据输入 FPGA 的内容 即使没有您需要遵守的特定协议 S
  • 学习 Verilog 的资源 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是 Verilog 新手 有人可以推荐学习资源 书籍 视频 博客或任何他们有良好个人经验并帮助他们更

随机推荐

  • Python+Flask实现股价查询系统。Python绘制股票k线走势

    文章目录 一 实现效果图二 实现思路1 获取数据 2 可视化数据三 源码获取 一 实现效果图 打开默认显示半年线 xff0c 可以通过可视化类型选择可视化k线图 高低点等 xff08 目前只完成了初版 xff0c 当查询的股票数据返回为空时
  • Failed to fetch http://mirrors.tuna.tsinghua.edu.cn/ubuntu/pool/main/g/gcc-5/g++-5_5.4.0-6ubuntu1~16

    今天在ubutun中在安装redis过程中 xff0c 安装gcc时遇到了Failed to fetch http mirrors tuna tsinghua edu cn ubuntu pool main g gcc 5 g 43 43
  • 切换日语输入法找不到MicrosoftIME键盘选项了

    去微软官方下载一个 Microsoft IME office 2010后 xff0c 安装解决 转载于 https www cnblogs com tupx p 3816026 html
  • msgid 属性

    Android源码中的String xml文件 xff0c msgid这个属性是干嘛的 xff1f 全局资源 xff0c 方便引用 比如在布局的text和activity中用到 转载于 https www cnblogs com Ph on
  • 2017年09月23日普级组 数列

    Description 小S今天给你出了一道找规律题 xff0c 题目如下 xff1a 有如下的数列1 xff0c 11 xff0c 21 xff0c 1211 xff0c 111221 xff0c 312211 xff0c 小S问你这个数
  • python 机器学习实战:信用卡欺诈异常值检测

    今晚又实战了一个小案例 xff0c 把它总结出来 xff1a 有些人利用信用卡进行诈骗等活动 xff0c 如何根据用户的行为 xff0c 来判断该用户的信用卡账单涉嫌欺诈呢 xff1f 数据集见及链接 xff1a 在这个数据集中 xff0c
  • Virtual Serial Port Driver 虚拟串口工具软件 使用介绍

    一般来说 xff0c 电脑的外部设备可以用过各种端口和电脑连接 常见的有USB xff0c VGA xff0c DVI等等 在工业领域或者是软件开发领域 xff0c 我们常常需要用简单低成本快捷的方式 xff0c 完成电脑和设备的连接 那么
  • Freertos 源码分析 队列queue

    队列queue xff08 零 xff09 队列的基础概念和形态 xff08 一 xff09 Freertos 队列 queue c FreeRTOS Kernel 10 4 6 include queue h Freertos队列模块包含
  • Freertos 任务TASK(一) 任务创建

    任务的创建 Freertos 的任务创建难点 1 xff09 堆栈生长的方向 2 xff09 64字节的对齐 3 xff09 任务堆栈初始化 Freertos 的任务使用任务控制块来进行管理 xff0c 是对任务的抽象 任务本身就是一段可执
  • Freertos Cortex-M3上下文切换

    上下文切换是操作系统实现虚拟化的核心功能 xff0c 操作系统对任务的管理通过上下文切换完成 Freertos 在STM32F103上的上下文切换是本文介绍的内容 STM32F103 采用 Cortex M3 内核 上下文切换的本质是对现场
  • STM32CubeMX配置freertos配置任务(一)

    使用STM32CubeMX 配置Freertos 生成一个任务点亮LED stm32cubemx STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具 xff0c 允许用户使用图形化向导生成C 初始化
  • STM32 精准采集ADC电压,误差分析

    ADC模块采集电压流程 数字世界和模拟世界的桥梁 xff0c 对于嵌入式软件而言 xff0c 大家止于采集功能的实现 本文目的在于深入理解ADC xff0c 积累技术做出更加稳定优秀的产品 STM32 大部分系列都是使用SAR 逐次逼近型电
  • STM32 编码器驱动/旋转编码器旋钮encoder

    本文已比较纯粹的方式介绍编码器和驱动的编写 编码器最少有两个输出信号 xff0c 一种典型的结构如上图所示 AB是编码器的输出引脚 当触点和黄色的金属片接触的时候信号发生跳变沿 xff0c 可以上上升沿也可以是下降沿 xff0c 具体根据A
  • UTC 转 LocalTime

    使用unsigned const char 纯碎是为了配合项目 xff0c 改成char 会比较通用些 BOOL CDllSuiteEngine Time StrToType unsigned const char lpszValue SY
  • CubeMX 图形配置工具 (UART) H743

    本文分两部分 1 图形操作步骤 2 自动生成代码结构分析 3 自动代码生成的坑 一 xff1a 使用CubeMX 配STM32H743 串口模块LPUSART 1 使能调试口 xff0c 以免使用SWD下载需要手动复位 2 配置 时钟树 x
  • LWIP (1.1) ETH Module以太网模块

    STM32 以太网 ETH模块说明 1 overview 2 ETH module in stm32h743 STM32H743 为例 开局一张图 ETHER 模块 红框所示 以STM32H743为例 32 BIt AHB为内部高速总线 D
  • UML(二)component 组件图

    组件图即是用来描述组件与组件之间关系的一种UML图 组件图在宏观层面上显示了构成系统某一个特定方面的实现结构 组件图适用于基于组件的开发模式 xff08 Component Based Development CBD xff09 xff0c
  • xilinx ZYNQ 7000 AXI GPIO

    0AXI GPIO 第一部分 PS 和 PL之间的通讯有一个接口称为AXI AXI总线具体的内容这边不去深究 xff0c 可以理解为一种特殊协议的通讯方式 AXI GPIO是什么意思 xff1f PL是FPGA它可以做成任何你想要的东西 x
  • xilinx ZYNQ 7000 XADC 片上模拟转数字模块

    上图所示 xff0c XADC 属于 PL部分的资源 XADC是一种硬逻辑实现 xff0c 位于PL功率域 PS xadc接口是PS的一部分 xff0c 可以被PS APU访问 xff0c 而不需要对PL进行编程 PL必须上电才能配置PS
  • XILINX FPGA OV5640 摄像头驱动(一)

    影像行业是一个值得深耕的方向 xff0c 废话不多说 先看输入和输出 输入是光照 xff0c 输出是光照的数字信号 image area xff1a 说的是感光矩阵 xff0c CMOS图像传感器的最核心部分 xff0c 接收光照产生电信号