FPGA 20个例程篇:19.OV7725摄像头实时采集送HDMI显示(三)

article/2025/9/13 20:38:52

第七章 实战项目提升,完善简历

19.OV7725摄像头实时采集送HDMI显示(三)

       在详细介绍过OV7725 CMOS Sensor的相关背景知识和如何初始化其内部寄存器达到输出预期视频流的目的后,就到了该例程的核心内容即把OV7725输出的视频流预先缓存到外部DDR3颗粒,接着按照HDMI的视频格式把DDR3颗粒内存储的一帧一帧图像数据送显到屏幕上显示,如图1所示是OV7725摄像头实时采集送HDMI显示整体设计示意图,在这里大家不妨先去停下来去思考下应该怎么设计这些模块,然后这些模块之间如何进行数据交互和缓存。

图1 OV7725摄像头实时采集送HDMI显示整体设计示意图

      如图2所示是OV7725摄像头实时采集送HDMI显示功能框图,大家可以根据这个框图通过自顶向下的思路来进行具体模块划分,最后再去层层分层逐一实现每个模块的具体功能。

图2 OV7725摄像头实时采集送HDMI显示功能框图

      在这里我们可以理一理整个项目功能工程的编码思路,按照数据来源、数据流向、数据缓存、数据处理来思考。

      首先OV7725实时采集的视频流是该项目中数据来源,但对于这么大批量的跨时钟域数据如果再用XC7A35T的片内BRAM资源去缓存是远远不够用的,所以必须借助片外的DDR3内存颗粒去缓存640像素*480像素的图像视频数据;其次需要按照VGA的行场时序逻辑把DDR3中存储的每帧图像数据送显到屏幕上;再次如果这里我们同时去读写同一个地址段的DDR3内存则必然会出现帧交错的情况,这个现象完全可以从“SD卡存放图片VGA送显屏幕”例程中观察到,因为OV7725采集视频流数据写入DDR3和HDMI读取DDR3数据送显屏幕两者是相互独立的事件,所以在程序设计中需要引入乒乓操作规避,当然具体细节会在后面详细介绍;最后还要回归OmniVision的官方手册搞清楚OV7725工作在640像素*480像素RG565模式下以怎么样的形式去输出视频流,以及怎么才能把图像数据按照帧的格式完整存储到DDR3上。

  图3 OV7725 CMOS Sensor在VGA帧模式下的输出时序图

       如图3所示是OV7725 CMOS Sensor在VGA帧模式下的输出时序图,在详细介绍OV7725视频采集cmos_capture模块的时序设计前还是先来了解一些基本的概念:

       VSYNC:场同步信号,该信号由OV7725 CMOS Sensor摄像头端输出,用来标志着一帧数据的开始或者结束,如上图7-39所示VSYNC高电平作为一帧的同步信号,并在低电平时输出的数据有效,但是场同步信号可以通过物理地址为0x15的寄存器进行初始化配置的,在这里为了保持和VGA场同步信号一致,故笔者将其配置成高电平同步有效即于图中电平相反;

      HREF:行同步信号,该信号由OV7725 CMOS Sensor摄像头端输出,用于标志一行数据的开始或者结束。如上图7-39所示当HREF为高电平时图像输出有效,同样的也可以通过物理地址为0x15的寄存器进行初始化配置的,为了保持和VGA场同步信号一致,默认为高电平有效即和图中电平一致;

     D[9:0]:数据信号,该信号由OV7725 CMOS Sensor摄像头端输出,但是在RGB模式下输出中,默认只有高8位即D[9:2]是有效的;

     tPCLK:一个像素时钟的周期;

     tp:单个数据周期,请注意上图7-39中左下角所示的部分,手册里说明了在RGB模式中,tp代表2个像素时钟tPCLK。以RGB565数据格式为例,RGB565使用了16bit数据来表示一个像素点,又因为OV7725 在一个像素时钟tPCLK里只能传输8bit数据,所以需要两个时钟周期才能传输一个RGB565的像素点数据;

     tLine:摄像头输出一行数据的时间,包含了784个 tp,包含640tp个高电平和 144tp 个低电平,其中640tp为有效像素数据输出的时间,同样的以RGB565 数据格式为例,640tp 实际上是640*2=1280个tPCLK;由上图7-39可知VSYNC的上升沿作为一帧的开始,高电平同步脉冲的时间为4*tLine,接着等待18*tLine时间后HREF开始拉高,这时候输出有效数据,HREF由640tp个高电平和144tp个低电平共同构成,输出480行数据后等待8*tLine时间一帧数据传输结束,所以输出一帧图像的时间实际上是tFrame =(4+18+480+8)*tLine = 510tLine。

图4 OV7725 CMOS Sensor在RGB565模式下的时序图

       如图4所示是OV7725 CMOS Sensor在RGB565模式下的时序图,其中PCLK是OV7725 输出的像素时钟,HREF是行同步信号,D[9:2]是8位像素数据。虽然OV7725最大可以输出10位数据,但是在RGB565输出模式下只有高8位是有效的。

       像素数据在HREF是高电平时有效,第一次输出的数据为RGB565数据的高8位,而第二次输出的数据RGB565数据的低8位,由first byte 和 second byte 组成一个16位RGB565数据。

       同时可以从图中看出因为数据是在像素时钟的下降沿发生改变的,为了在数据最稳定的时刻采集图像数据,所以我们可以在像素时钟的上升沿采集数据,从OmniVision的官方手册中提取出核心信息后,下面我们就开始着手实现OV7725视频采集cmos_capture模块的代码设计了。

      如图5所示是笔者通过示波器所观察到的OV7725在RGB565模式下的VSYNC和HREF波形图,其中蓝色的是VSYNC场同步信号而黄色的是HREF行同步信号,这也和上图3波形图相对应。

图5 示波器观察到的OV7725 在RGB565模式下的VSYNC和HREF波形图

     如表1所示是cmos_capture模块的信号列表,在这个模块中我们主要去实现OV7725 的视频流采集,并把其拼接成128位数据写入FIFO再由FIFO缓存到MIG IP核中,如图6所示是OV7725视频采集模块的代码设计,在这个模块设计中也需要注意2点:

  1. 手册里指出配置寄存器生效的时间最长是300ms,大概就是摄像头输出10帧图像数据,所以这里用采集VSYNC场同步信号下降沿的方式来统计帧数,计数器计数超过10次后产生数据有效的标志开始采集图像;
  2. 像素数据在HREF是高电平时有效,第一次输出的数据为RGB565数据的高8位,而第二次输出的数据RGB565数据的低8位,所以需要进行数据拼接;

信号列表

信号名

I/O

位宽

cam_pclk

I

1

rst_n

I

1

cam_vsync

I

1

cam_href

I

1

cam_data

I

8

cmos_pixel_dout

O

128

cmos_pixel_dout_vld

O

1

表1 cmos_capture模块信号列表

图6 OV7725视频采集模块的代码设计


http://chatgpt.dhexx.cn/article/U648Ky88.shtml

相关文章

OV7725的帧率和PCLK寄存器设置

一、OV7725的PCLK的改变和以下几个寄存器有关: 1:OX0D(COM4); ------------------------------------------------------------------------------------------------------------------ 0X0D COM4 41 …

手把手教你写Ov7725摄像头数据采集模块(带Verilog代码)

上一节咱们学习了OV7725的VGA传输协议,对于数据传输的特点有了初步了解,这篇博客主要目的在于使用Verilog实现一个OV7725摄像头的数据采集模块,与咱们这个模块对接的是后一级的SDRAM存储器,其将作为数据的缓存仓库,以便…

STM32+ov7725+ESP8266实现无线图传-完成上位机图像显示

一、需求 stm32f407探索者开发板和STM32F103ZET6战舰开发板。接正点原子ov5640、OV7725、OV2640摄像头,通过esp8266Wi-Fi模块(透传模式)将摄像头采集到的rgb565格式图片通过tcp/ip协议上传到上位机显示。 二、设计思路 【1】使用QT开发上位机,建立TCP服务器,接收ESP8266…

FPGA 20个例程篇:19.OV7725摄像头实时采集送HDMI显示(二)

第七章 实战项目提升,完善简历 19.OV7725摄像头实时采集送HDMI显示(二) 在正式介绍OV7725 CMOS Sensor视频采集前,首先需要去详细说明OV7725的寄存器配置接口,这里有OmniVision公司推出的官方手册 “OV7725_software_…

OV7725寄存器配置

OV7725寄存器配置(为了替换NT99141研究了很长一段时间) 部分参考链接: OV7725 电器特性和时序图:https://www.cnblogs.com/raymon-tec/p/5087088.html OV7725摄像头的彩色图像采集原理与液晶显示(有必要了解框图):htt…

基于STM32的OV7725摄像头拍照实验

平台:STM32ZET6(核心板)ST-LINK/V2SD卡USB串口线鹰眼OV7725摄像头(注意,为了减少摄像头连线的麻烦,建议初学者选取单片机时选用带有摄像头接口的板子) 工程介绍:需要移植FatFs文件系…

OV7725鹰眼摄像头

OV7725鹰眼摄像头如何使用? 目前的ov7725鹰眼摄像头,基本上用的都是山外的库,所以今天我们主要根据山外的库,基于k60芯片,给大家具体的讲解。 1.摄像头初始化 首先是摄像头的第一步就是初始化,这个我们直…

OV7725摄像头图像采集基础知识

目前FPGA用于图像采集 传输 处理 显示应用越来越多,主要原因是图像处理领域的火热以及FPGA强大的并行处理能力。本文以OV7725为例,对摄像头使用方面的基础知识做个小的总结,为后续做个铺垫。 XCLK:工作时钟输入,由主控器产生&…

FPGA--OV7725摄像头采集与VGA显示实验--1--OV7725使用与驱动协议

目录 前言 OV7725引脚及功能框图 参数指标 引脚 功能框图 SCCB时序及读写操作 SCCB时序特点 读写实现 OV7725寄存器常用配置参数 前言 摄像头采集是图像处理的第一步,本章节分为多部分,旨在让大家学会如何使用OV7725采集图像,并且…

【FPGA的基础快速入门22-------OV7725摄像头模块】

OV7725摄像头模块 OV7725是Omni Vision(豪威科技)公司生产的CMOS图像传感器,该传感器功耗低、可靠性高以及采集速率快,主要应用在玩具、安防监控、电脑多媒体等领域。 OV7725感光阵列达到640*480,能实现最快60fps VGA…

STM32 OV7725 传感器

目录 OV7725 传感器1、选择输出格式2、选择输出分辨率3、帧率调整4、夜间模式5、消除光带6、白平衡7、缺陷像素矫正8、黑电平矫正9、视频模式10、数字缩减 OV7725 函数1、光模式2、颜色饱和度3、亮度4、对比度5、特效 OV7725 设置参考 OV7725 传感器 OV7725摄像机™ 图像传感器…

OV7725摄像头之OV7725芯片

近日入手了一块正点原子家的OV7725摄像头模块,秉着小白尽可能学得透彻些的想法,选择了野火家的相同摄像头教学视频。链接如下:【单片机】野火STM32F103教学视频 (配套霸道/指南者/MINI)【全】(刘火良老师出品) (无字幕)_哔哩哔哩_bilibili 现…

二进制加法运算

两个二进制整数相加时,是位对位处理的,从最低的一对位(右边)开始,依序将每一对位进行加法运算。两个二进制数字相加,有四种结果,如下所示: 0 0 00 1 11 0 1 1 1 10 1 与 1 …

二进制加减法编程

1、二进制加法基本指令 (1)ADD指令 格式:ADD DST,SRC 该指令把源操作数(SRC)指向的数据与目的操作数(DST)相加后,将结果放到目的操作数(DST)中…

二进制乘除法运算原理

二进制乘除法原理 计算机所能完成的最基本操作是加减法和左右移。 虽然ISA中一般都有MUL类指令,但是这些经过译码之后最终的元操作还是加法和移位指令。 二进制乘法 假设不能使用乘除运算求ab的结果,当ab123时,最直接的方法是通过88个88相…

二进制加法计算

读计算机原理这本书的的时候涉及到二进制数的加法,个人做个直观的记录,防止遗忘。 计算时,先把两个二进制数对齐(如同十进制一样, 从右向左)11为10,此时向上一位进1,0写在本位(如同十…

二进制加减乘除

最重要的,理解十进制的借位和进位.十进制中,由于一个循环是10,所以借1位,就相当于从高位借过来10,也就是常说的借1当10,同时,高位需要减去10(外在体现上是减去1,因为高位已经在高位了).反过来,进1,就等于高位加上10,但因为高位已经在高位了,所以去掉位数考虑,高位实际是加1,也就…

二进制加法

计算机中二进制相关运算 有符号二进制与无符号二进制数之间的区别有符号二进制加法运算讨论关于有符号二进制数算术的溢出问题(重点)无符号二进制运算 有符号二进制与无符号二进制数之间的区别 对于一个有符号二进制数来讲,最高位是该数的符…

二进制加减法计算

二进制加减法:原码、反码、补码 1.十进制下的计算1.模数2.补数 2.二进制数的存储1.计算机计数2.原码3.反码4.补码 3.二进制计算1.中位对称2.循环进位3.二进制减法推算4.结论 1.十进制下的计算 1.模数 假设下文【模】定义如下:某个可度量系统的度量范围…

二进制数的运算方法

1.二进制数的算术运算 二进制数的算术运算包括:加、减、乘、除四则运算,下面分别予以介绍。 (1)二进制数的加法 根据“逢二进一”规则,二进制数加法的法则为:0+0=00&…