紫光同创FPGA图像视频采集系统,基于OV7725实现,提供工程源码和技术支持

目录

  • 1、前言
    • 免责声明
  • 2、设计思路框架
    • 视频源选择
    • OV7725摄像头配置及采集
    • 动态彩条
    • HDMA图像缓存
      • 输入输出视频
      • HDMA缓冲FIFO
      • HDMA控制模块
      • HDMI输出
  • 3、PDS工程详解
  • 4、上板调试验证并演示
    • 准备工作
    • 静态演示
    • 动态演示
  • 5、福利:工程源码获取

紫光同创FPGA图像视频采集系统,基于OV7725实现,提供工程源码和技术支持

1、前言

“苟利国家生死以,岂因祸福避趋之!”我优秀地下档员川建国同志,敏锐地洞察到祖国的短板在于高精尖半导体的制造领域,于是本着为中华民族伟大复兴的中国梦贡献绵薄之力的初心,建国站在高略高度和长远角度谋划,宁愿背当代一世之骂名也要为祖国千秋万世谋,2018年7月,建国正式打响毛衣战,随后又使出恰勃纸战术,旨在为祖国先进制程半导体领域做出自主可控的战略推动;在此,请收下我一声谢谢啊!!!!!!

2019年初我刚出道时,还是Xilinx遥遥领先的时代(现在貌似也是),那时的国产FPGA还处于辣鸡段位,国产FPGA仰望Xilinx情不自禁道:你以为躲在这里就找不到你吗?没用的,你那样拉轰的男人,无论在哪里,都像黑夜里的萤火虫那样的鲜明、那样的出众,你那忧郁的眼神,稀嘘的胡渣子,神乎其技的刀法,还有那杯Dry martine,都深深的迷住了我。。。然而才短短4年,如今的国产FPGA属于百家争鸣、百花齐放、八仙过海、神仙打架、方兴未艾、得陇望蜀、友商都是XX的喜极而泣之局面,面对此情此景,不得不吟唱老人家的诗句:魏武挥鞭,东临碣石有遗篇,萧瑟秋风今又是,换了人间。。。
言归正传,目前对于国产FPGA的共识有以下几点:
1:性价比高,与同级别国外大厂芯片相比,价格相差几倍甚至十几倍;
2:自主可控,国产FPGA拥有完整自主知识产权的产业链,从芯片到相关EDA工具
3:响应迅速,FAE技术支持比较到位,及时解决开发过程中遇到的问题,毕竟中文数据手册。。
4:采购方便,产业链自主可控,采购便捷

本文使用紫光同创的PGL22G-6MBG324 FPGA做基础的图像视频采集系统,视频源有两种,分别对应开发者手里有没有摄像头的情况,一种是使用廉价的OV7725摄像头;如果你手里没有OV7725摄像头或者FPGA开发板没有摄像头输入接口,则可使用代码内部生成的动态彩条模拟摄像头视频;视频源的选择通过代码顶层的`define宏定义进行选择,上电默认使用OV7725摄像头输入作为视频源;FPGA采集到输入视频后,使用本人开发的HDMA视频缓存架构,将视频送到外接DDR3中缓存,然后读出视频送HDMI显示器显示;提供1套Pango Design Suite 2021.4版本的工程源码;

紫光同创FPGA图像视频采集系统的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做学习提升,可应用于医疗、军工等行业的高速接口或图像处理领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

免责声明

本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网等等),若大佬们觉得有所冒犯,请私信批评教育;基于此,本工程及其源码仅限于读者或粉丝个人学习和研究,禁止用于商业用途,若由于读者或粉丝自身原因用于商业用途所导致的法律问题,与本博客及博主无关,请谨慎使用。。。

2、设计思路框架

本文使用紫光同创的PGL22G-6MBG324 FPGA做基础的图像视频采集系统,视频源有两种,分别对应开发者手里有没有摄像头的情况,一种是使用廉价的OV7725摄像头;如果你手里没有OV7725摄像头或者FPGA开发板没有摄像头输入接口,则可使用代码内部生成的动态彩条模拟摄像头视频;视频源的选择通过代码顶层的`define宏定义进行选择,上电默认使用OV7725摄像头输入作为视频源;提供1套Pango Design Suite 2021.4版本的工程源码,FPGA采集到输入视频后,使用本人开发的HDMA视频缓存架构,将视频送到外接DDR3中缓存,然后读出视频送HDMI显示器显示;
工程设计框图如下:
在这里插入图片描述

视频源选择

视频源有两种,分别对应开发者手里有没有摄像头的情况,一种是使用廉价的OV7725摄像头;如果你手里没有OV7725摄像头或者FPGA开发板没有摄像头输入接口,则可使用代码内部生成的动态彩条模拟摄像头视频;视频源的选择通过代码顶层的宏定义进行选择,上电默认使用OV7725摄像头输入作为视频源;视频源的选择通过代码顶层的`define宏定义进行;如下:
在这里插入图片描述
视频源选择逻辑代码部分如下:
在这里插入图片描述
选择逻辑如下:
当(注释) define COLOR_IN时,输入源视频是动态彩条;
当(不注释) define COLOR_IN时,输入源视频是OV7725;

OV7725摄像头配置及采集

OV7725摄像头需要i2c配置才能使用,需要将DVP接口的视频数据采集为RGB565或者RGB888格式的视频数据,这两部分均用verilog代码模块实现,代码位置如下:
在这里插入图片描述
其中摄像头配置为分辨率640x480;
摄像头采集模块支持RGB565和RGB888格式的视频输出,可由参数配置,如下:
在这里插入图片描述
RGB_TYPE=0输出本RGB565格式;
RGB_TYPE=1输出本RGB888格式;
设计选择RGB888格式;

动态彩条

动态彩条可配置为不同分辨率的视频,视频的边框宽度,动态移动方块的大小,移动速度等都可以参数化配置,我这里配置为辨率640x480,动态彩条模块代码位置和顶层接口和例化如下:
在这里插入图片描述
在这里插入图片描述

HDMA图像缓存

HDMA图像缓存的本质就是一个封装了用户接口的AXI4-FULL-MASTER总线,HDMA对外与DDR3交互,紫光同创FPGA自带的DDR3控制器的用户接口为AXI4-FULL总线,HDMA对内例化两个FIFO与FPGA内部逻辑交互,所以开发者在使用HDMA时,已无需再关心复杂的为AXI4-FULL协议,只需要像使用FIFO那样简单即可;HDMA架构如下:
在这里插入图片描述
代码架构如下:
在这里插入图片描述

输入输出视频

输入视频的数据格式为RGB,即典型的pclk、vs、de、rgb形式的VGA视频时序,但需要注意的是,因为输入视频直接与FIFO交互,FIFO的AXI侧的数据位宽为128位,为了数据的不错位,输入视频的rgb信号接口不能为传统的24位,这里可以设置为16或者32位,代码中通过参数配置,我配置为32位,如下:
在这里插入图片描述

HDMA缓冲FIFO

例化两个FIFO作为FPGA逻辑数据与AXI4数据的缓冲,所谓缓冲,即数据位宽的转换、时钟域的转换、读写时机的控制等部分,FPGA逻辑侧的数据位宽为32位,AXI4侧的数据位宽为128位;以写FIFO为例,配置如下:
在这里插入图片描述

HDMA控制模块

HDMA控制模块的主要功能是实现AXI4-FULL主机和图像缓存读写地址切换两大功能;AXI4-FULL主机比较简单,照着AXI4-FULL时序图写就完事儿了,图像缓存读写地址切换就难了,本设计通过顶层的参数来配置图像缓存的帧数,如下:
HDMA_PINGPANG_EN=1则图像做三帧缓存;
HDMA_PINGPANG_EN=0则图像做单帧缓存;
本设计配置为HDMA_PINGPANG_EN=1;
为了实现图像的多帧缓存,将读写地址分段,如下:
读写地址=帧地址+数据地址;
数据地址:即正常的AXI4数据突发的地址增量;
写帧地址:一帧图像到来时+1;
读帧地址:一帧图像到来时+2;
如此做到了同时读写不同的帧地址,输出的图像是完美的。。。
这也叫做乒乓操作,核心代码如下:
在这里插入图片描述

HDMI输出

HDMI输出包括VGA时序和HDMI编码模块,VGA时序在紫光PGL22G-6MBG324 FPGA上只能做到720P,因为此FPGA可能太低端了,无法输出742.5M的串行时钟,当然,你用HDMI编码芯片是可以实现1080P的,所以这里只能做到720P的输出分辨率;HDMI编码模块待用原语实现,和Xilinx家的一样,代码结构如下:
在这里插入图片描述

3、PDS工程详解

开发板FPGA型号:紫光同创–PGL22G-6MBG324;
开发环境:Pango Design Suite 2021.4
输入:OV7725摄像头或动态彩条,分辨率640x480;
输出:HDMI,分辨率1280x720;
工程作用:紫光同创FPGA图像视频采集系统;
工程代码架构如下:
在这里插入图片描述
工程的资源消耗和功耗如下:
在这里插入图片描述

4、上板调试验证并演示

准备工作

你需要有以下装备才能移植并测试该工程代码:
1:FPGA开发板;
2:OV7725摄像头,如果没有也可以,就选择动态彩条;
3:HDMI传输线;
4:HDMI显示,要求分辨率支持1280x720;

静态演示

OV7725输入640x480分辨率HDMI输出静态演示如下:
在这里插入图片描述
动态彩条输入640x480分辨率HDMI输出静态演示如下:
在这里插入图片描述

动态演示

动态视频演示如下:

紫光同创FPGA-OV7725

5、福利:工程源码获取

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。

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

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

相关文章

Linux 网络编程

套接字(Socket): 通过网络实现跨机通信 作用:一种文件描述符传输层的文件描述符 整个编程中,需要着重注意htonl/htons、ntohl/ntohs、inet_addr等 TCP的C/S实现 循环服务器模型 TCP服务器实现过程 1.创建套接字&a…

Docker安装MS SQL Server并使用Navicat远程连接

思维导航 MS SQL Server简介 Microsoft SQL Server(简称SQL Server)是由微软公司开发的关系数据库管理系统,它是一个功能强大、性能卓越的企业级数据库平台,用于存储和处理大型数据集、支持高效查询和分析等操作。SQL Server 支持广泛的应用程序开发接口(API),包括 T-S…

大规模语言模型--中文 LLaMA和Alpaca

中文LLaMA 尽管 LLaMA 和 Alpaca 在 NLP 领域取得了重大进展, 它们在处理中文语言任务时, 仍存在一些局限性。这 些原始模型在字典中仅包含数百个中文 tokens (可以理解为单词),导致编码和解码中文文本的效率受到了很大 影响。 之前已经对…

.net 温故知新:Asp.Net Core WebAPI 入门使用及介绍

在Asp.Net Core 上面由于现在前后端分离已经是趋势,所以asp.net core MVC用的没有那么多,主要以WebApi作为学习目标。 一、创建一个WebApi项目 我使用的是VS2022, .Net 7版本。 在创建界面有几项配置: 配置Https启用Docker使用控制器启用OpenAPI支持不使用顶级语句其中配置…

毛玻璃态卡片悬停效果

效果展示 页面结构组成 页面的组成部分主要是卡片。其中卡片的组成部分主要是包括了图片和详情。 卡片的动效是鼠标悬停在卡片上时,图片会移动到左侧,并且图片是毛玻璃效果。所以我们在布局的时候图片会采用绝对布局。而详情则是基础布局。 CSS3 知识…

springboot和vue:八、vue快速入门

vue快速入门 新建一个html文件 导入 vue.js 的 script 脚本文件 <script src"https://unpkg.com/vuenext"></script>在页面中声明一个将要被 vue 所控制的 DOM 区域&#xff0c;既MVVM中的View <div id"app">{{ message }} </div…

HBase高阶(一)基础架构及存储原理

一、HBase介绍 简介 HBase是Hadoop生态系统中的一个分布式、面向列的开源数据库&#xff0c;具有高可伸缩性、高性能和强大的数据处理能力。广泛应用于处理大规模数据集。 HBase是一种稀疏的、分布式、持久的多维排序map 稀疏&#xff1a;对比关系型数据库和非关系型数据库&a…

记录一次阿里云服务器ECS上启动的portainer无法访问的问题

如下图&#xff0c;在阿里云ECS服务器上安装并启动了portainer&#xff0c;但是在自己电脑上访问不了远程的portainer。 最后发现是要在网络安全组里开放9000端口号&#xff0c;具体操作如下&#xff1a; 在云服务器管理控制台点击左侧菜单中的网络与安全-安全组&#xff0c;然…

二值贝叶斯滤波计算4d毫米波聚类目标动静属性

机器人学中有些问题是二值问题&#xff0c;对于这种二值问题的概率评估问题可以用二值贝叶斯滤波器binary Bayes filter来解决的。比如机器人前方有一个门&#xff0c;机器人想判断这个门是开是关。这个二值状态是固定的&#xff0c;并不会随着测量数据变量的改变而改变。就像门…

FPGA的数字钟带校时闹钟报时功能VHDL

名称&#xff1a;基于FPGA的数字钟具有校时闹钟报时功能 软件&#xff1a;Quartus 语言&#xff1a;VHDL 要求&#xff1a; 1、计时功能:这是数字钟设计的基本功能&#xff0c;每秒钟更新一次,并且能在显示屏上显示当前的时间。 2、闹钟功能:如果当前的时间与闹钟设置的时…

数据结构—快速排序(续)

引言&#xff1a;在上一篇中我们详细介绍了快速排序和改进&#xff0c;并给出了其中的一种实现方式-挖坑法 但其实快速排序有多种实现方式&#xff0c;这篇文章再来介绍其中的另外两种-左右指针法和前后指针法。有了上一篇挖坑法的启示&#xff0c;下面的两种实现会容易许多。 …

蓝桥等考Python组别九级005

第一部分&#xff1a;选择题 1、Python L9 &#xff08;15分&#xff09; 运行下面程序&#xff0c;可以输出几行“*”&#xff1f;&#xff08; &#xff09; for i in range(0, 2): for j in range(0, 5): print(*, end ) print() 5234 正确答案&#xff1a;B 2、P…

5自由度雄克机械臂仿真描点

5自由度雄克机械臂仿真描点 任务 建立雄克机械臂的坐标系和D-H参数表&#xff0c;使用Matlab机器人工具箱&#xff08;Robotics Toolbox&#xff09;&#xff0c;用机械臂末端执行器触碰8个红色的目标点。 代码 %% 机器人学 format compact close all clear clc%% DH参数 L…

新型信息基础设施IP追溯:保护隐私与网络安全的平衡

随着信息技术的飞速发展&#xff0c;新型信息基础设施在全球范围内日益普及&#xff0c;互联网已经成为我们社会和经济生活中不可或缺的一部分。然而&#xff0c;随着网络使用的增加&#xff0c;隐私和网络安全问题也引发了广泛关注。在这个背景下&#xff0c;IP&#xff08;In…

Java实现word excel ppt模板渲染与导出及预览 LibreOffice jodconverter

Java Office 一、文档格式转换 文档格式转换是office操作中经常需要进行一个操作&#xff0c;例如将docx文档转换成pdf格式。 java在这方面有许多的操作方式&#xff0c;大致可以分为内部调用&#xff08;无需要安装额外软件&#xff09;&#xff0c;外部调用&#xff08;需…

nodejs+vue活鲜物流监控系统elementui

第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;技术背景 5 3.2.2经济可行性 6 3.2.3操作可行性&#xff1a; 6 3.3 项目设计目标与原则 6 3.4系统流程分析 7 3.4.1操作流程 7 3.4.2添加信息流程 8 3.4.3删除信息流程 9 第4章 系统设计 11 …

设计模式7、桥接模式 Bridge

解释说明&#xff1a;将抽象部分与它的实现部分解耦&#xff0c;使得两者都能够独立变化 桥接模式将两个独立变化的维度设计成两个独立的继承等级结构&#xff08;而不会将两者耦合在一起形成多层继承结构&#xff09;&#xff0c;在抽象层将二者建立起一个抽象关联&#xff0c…

施耐德电气:勾勒未来工业愿景,赋能中国市场

9月19日&#xff0c;第23届中国国际工业博览会&#xff08;简称“工博会”&#xff09;在上海隆重召开。作为全球能源管理和自动化领域的数字化转型专家&#xff0c;施耐德电气在工博会现场全方位展现了自身对未来工业的全新视野与深刻见解&#xff0c;不仅展示了其贯通企业设计…

JUC第十二讲:JUC锁: 锁核心类AQS详解

JUC第十二讲&#xff1a;JUC锁: 锁核心类AQS详解 本文是JUC第十二讲&#xff0c;JUC锁: 锁核心类AQS详解。AbstractQueuedSynchronizer抽象类是核心&#xff0c;需要重点掌握。它提供了一个基于FIFO队列&#xff0c;可以用于构建锁或者其他相关同步装置的基础框架。 文章目录 J…

细胞机器人系统中的群体智能

摘要 细胞机器人系统具有“智能”行为能力。本文分析了这种智能的含义。本文根据上述不可思议智能行为的不可预测性来定义机器人智能和机器人系统智能。对不可预测性概念的分析与&#xff08;1&#xff09;统计不可预测、&#xff08;2&#xff09;不可访问、&#xff08;3&am…