国产高云FPGA:OV5640图像视频采集系统,提供Gowin工程源码和技术支持

目录

  • 1、前言
    • 免责声明
  • 2、相关方案推荐
    • 国产高云FPGA相关方案推荐
    • 国产高云FPGA基础教程
  • 3、设计思路框架
    • 视频源选择
    • OV5640摄像头配置及采集
    • 动态彩条
    • Video Frame Buffer 图像缓存
    • DDR3 Memory Interface
  • 4、Gowin工程详解
  • 5、上板调试验证并演示
    • 准备工作
    • 静态演示
  • 6、福利:工程源码获取

国产高云FPGA:OV5640图像视频采集系统,提供GOWIN工程源码和技术支持

1、前言

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

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

本文使用国产高云GW2A-LV18PG484C7/I6型号的FPGA做基础的图像视频采集系统,视频源有两种,分别对应开发者手里有没有摄像头的情况,一种是使用廉价的OV5640摄像头;如果你手里没有OV5640摄像头或者FPGA开发板没有摄像头输入接口,则可使用代码内部生成的动态彩条模拟摄像头视频,视频源的选择通过代码顶层的`define宏定义进行选择,上电默认选择OV5640摄像头作为输入源;提供1套Gowin-V1.9版本的工程源码;FPGA首先使用纯verilog实现的i2c控制器配置ov5640摄像头,将其分辨率配置为1280720@30Hz,同时生成用纯verilog实现动态彩条,其分辨率为1280720@60Hz;FPGA采集到输入视频后,调用高云官方的Video Frame Buffer IP核将视频送到外接DDR3中做三帧缓存;调用高云官方的DDR3 Memory Interface IP核实现图像数据到DDR3颗粒的搬运工作,类似于Xilinx的MIG;然后读出视频送VGA输出时序同步像素数据,VGA输出分辨率为1280*720@60Hz;最后调用高云官方的DVI TX IP核实现RGB视频到HDMI视频的转换,输出显示器显示;

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

免责声明

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

2、相关方案推荐

国产高云FPGA相关方案推荐

鉴于国产高云FPGA的优异表现和市场需求,我专门开设了一个人国产高云FPGA专栏,里面收录了基于国产高云FPGA的图像处理、UDP网络通信、GT高速接口、PCIE等博客,感兴趣的可以去看看,博客地址:点击直接前往

国产高云FPGA基础教程

高云FPGA开发软件Gowin的下载、安装、Licence共享,工程搭建、代码添加、综合、编译、下载、各种IP的调用、配置、使用等基础操作,是做高云FPGA开发的基本功,当然,如果你已是有经验的工程师,则可以省略这一步,为此,我专门开设了专栏,详细讲述国产高云FPGA基础教程,甚至可以说是保姆级的教程,专栏地址如下:
点击直接前往

3、设计思路框架

本文使用国产高云GW2A-LV18PG484C7/I6型号的FPGA做基础的图像视频采集系统,视频源有两种,分别对应开发者手里有没有摄像头的情况,一种是使用廉价的OV5640摄像头;如果你手里没有OV5640摄像头或者FPGA开发板没有摄像头输入接口,则可使用代码内部生成的动态彩条模拟摄像头视频,视频源的选择通过代码顶层的`define宏定义进行选择,上电默认选择OV5640摄像头作为输入源;提供1套Gowin-V1.9版本的工程源码;FPGA首先使用纯verilog实现的i2c控制器配置ov5640摄像头,将其分辨率配置为1280720@30Hz,同时生成用纯verilog实现动态彩条,其分辨率为1280720@60Hz;FPGA采集到输入视频后,调用高云官方的Video Frame Buffer IP核将视频送到外接DDR3中做三帧缓存;调用高云官方的DDR3 Memory Interface IP核实现图像数据到DDR3颗粒的搬运工作,类似于Xilinx的MIG;然后读出视频送VGA输出时序同步像素数据,VGA输出分辨率为1280*720@60Hz;最后调用高云官方的DVI TX IP核实现RGB视频到HDMI视频的转换,输出显示器显示;
设计框图如下:
在这里插入图片描述
注意:框图中的数字表示数据流向的顺序;

视频源选择

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

OV5640摄像头配置及采集

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

动态彩条

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

Video Frame Buffer 图像缓存

调用高云官方的Video Frame Buffer IP核将视频送到外接DDR3中做三帧缓存;该部分是图像采集显示系统的重点核难点,如果是其他FPGA,则需要写一大堆代码才能实现,还要调试,花费时间和精力很多,但高云FPGA则轻松实现了改功能,因为人家直接做成了IP,即Video Frame Buffer;这里简单介绍一下该IP,因为高云有详细的中文手册说明该IP的使用,手册我也放在了资料包里;
我对该IP的配置只适用于我的设计,如果你要修改IP的配置的话,可以按照如下方式修改,然后重新生成IP:
在这里插入图片描述
Video Frame Buffer IP配置如下:
在这里插入图片描述
关于Video Frame Buffer IP的更多详细讲解,请参考我的专栏:高云FPGA开发基础教程,专栏地址如下:
点击直接前往

DDR3 Memory Interface

调用高云官方的DDR3 Memory Interface IP核实现图像数据到DDR3颗粒的搬运工作,类似于Xilinx的MIG;DDR3 Memory Interface IP配置如下:
在这里插入图片描述
关于DDR3 Memory Interface IP的更多详细讲解,请参考我的专栏:高云FPGA开发基础教程,专栏地址如下:
点击直接前往

4、Gowin工程详解

开发板FPGA型号:国产高云–GW2A-LV18PG484C7/I6;
开发环境:Gowin-V1.9
输入:OV5640摄像头或动态彩条,分辨率1280x720;
输出:HDMI,分辨率1280x720;
工程作用:国产高云FPGA:图像视频采集系统
工程代码架构如下:
在这里插入图片描述
工程的资源消耗和功耗如下:
在这里插入图片描述
我发布的工程均已编译通过,如下:
在这里插入图片描述

5、上板调试验证并演示

准备工作

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

静态演示

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

6、福利:工程源码获取

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

全网火爆,接口自动化测试框架-fixture函数使用,一篇打通...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 setup和teardown能…

JDK 9 Map.of()

//Java 9 Map.of //private static final int SIZE 10;

RabbitMQ 部署及配置详解(集群部署)

单机部署请移步: RabbitMQ 部署及配置详解 (单机) RabbitMQ 集群是一个或 多个节点,每个节点共享用户、虚拟主机、 队列、交换、绑定、运行时参数和其他分布式状态。 一、RabbitMQ 集群可以通过多种方式形成: 通过在配置文件中列出群集节点以…

技术分享 | JMeter性能测试实现与分析

导语 JMeter是由著名开源软件巨头Apache组织开发的纯Java的压力测试工具,它即能测试动态服务(WebService),也能测试静态资源,包括Servlet服务、CGI脚本等,还能测试动态语言服务(PHP、Java、ASP…

二次元通用PPT模版

二次元通用PPT模版 共:19页 PPT模版:百度网盘 请输入提取码:4s3f

分布式任务调度-XXL-job

源码仓库地址 http://gitee.com/xuxueli0323/xxl-job 前置环境 docker容器环境配置 拉取msyql镜像: docker pull mysql:5.7创建mysql容器: docker run -p 3306:3306 --name mysql57 \ -v /opt/mysql/conf:/etc/mysql \ -v /opt/mysql/logs:/var/log/mysql \ -v …

一文带您了解什么是渲染农场

很多第一次接触渲染农场的朋友可能渲染农场都有些什么服务、渲染农场怎么收费和渲染农场怎么收费这样的疑问,今天小编就来给大家说一下吧。 什么是渲染农场? 目前,行业内普片认为:渲染农场是一种渲染服务,可以提供强…

剑指Offer || 116.省份数量

题目 有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。 省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。 …

如何使用ONLYOFFICE来P惊悚特效图

如何使用ONLYOFFICE来P惊悚特效图 老朋友们可能会经常看见本号主又换头像了,各种各样精神分裂成一群人或者我和自己俩个人的头像,之前讲过的: 手把手教你如何自己一个人精神分裂成一群人https://mp.weixin.qq.com/s/yacKt7N3sZnarfMhXRNdBA…

JDK1.8 新特性(二)【Stream 流】

前言 上节我们学了 lambda 表达式,很快我就在 Flink 的学习中用到了,我学的是 Java 版本的 Flink,一开始会以为代码会很复杂,但事实上 Flink 中很多地方都用到了 函数接口,这也让我们在编写 Flink 程序的时候可以使用 …

2023亚太杯数学建模思路 - 案例:ID3-决策树分类算法

文章目录 0 赛题思路1 算法介绍2 FP树表示法3 构建FP树4 实现代码 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法,就是频繁模…

在线协作工具都有哪些?推荐这10款

如今,互联网的快速发展不仅改变了我们的生活方式,也改变了我们的工作方式。 特别是对于一些与产品设计相关的公司或团体,网络不仅为其设计提供了稳定的资源和灵感,而且为成员之间的沟通和合作提供了更大的便利。 如果您也需要为…

【Proteus仿真】【51单片机】公交车报站系统

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器,使用LCD12864显示模块、DS18B20温度传感器、DS1302时钟模块、按键、LED蜂鸣器、ULN2003、28BYJ48步进电机模块等。 主要功能: 系统运行后&…

【Spring】依赖注入方式,DI的方式

这里写目录标题 1. setter注入在一个类中注入引用类型在一个类中注入简单类型 2. 构造器注入在一个类中注入引用类型在一个类中注入简单类型 3. 依赖注入方式选择4. 依赖自动装配按类型注入按名称注入 5. 集合注入 1. setter注入 在一个类中注入引用类型 回顾一下之前setter注…

【深度学习实验】网络优化与正则化(七):超参数优化方法——网格搜索、随机搜索、贝叶斯优化、动态资源分配、神经架构搜索

文章目录 一、实验介绍二、实验环境1. 配置虚拟环境2. 库版本介绍 三、优化算法0. 导入必要的库1. 随机梯度下降SGD算法a. PyTorch中的SGD优化器b. 使用SGD优化器的前馈神经网络 2.随机梯度下降的改进方法a. 学习率调整b. 梯度估计修正 3. 梯度估计修正:动量法Momen…

万宾科技智能井盖传感器,提升市政井盖健康

市政井盖就是城市里不可或缺的基础设施之一,关于它的监测工作可马虎不得。它承载着保护市民的交通安全以及城市正常运转的重要使命。虽然现在城市化的速度很快,但是传统的市政井盖管理方式变得有些力不从心了。井盖的覆盖范围很广,如果单单依…

Python爬虫动态ip代理防止被封的方法

目录 前言 一、什么是动态IP代理? 二、如何获取代理IP? 1. 付费代理IP 2. 免费代理IP 3. 自建代理IP池 三、如何使用代理IP爬取数据? 1. 使用requests库设置代理IP 2. 使用urllib库设置代理IP 3. 使用selenium库设置代理IP 四、常…

实现MQTT协议的服务器端和客户端的双向交互

公司和第三方合作开发一个传感器项目,想要通过电脑或者手机去控制项目现场的传感器控制情况。现在的最大问题在于,现场的边缘终端设备接入的公网方式是无线接入,无法获取固定IP,所以常规的HTTP协议通信就没法做,现在打…

群晖7.2安装Jellyfin+alist+CloudDriver搭建无盘影院中心

群晖7.2安装JellyfinalistCloudDriver搭建无盘影音中心。 实现思路如下: Jellyfin:提供个人影院功能。 alist(xiaoya):给影院提供海量影音资源。 CloudDriver2:alist的资源为网络资源,通过C…

lvgl 画圆弧时进入 HardFault

目录 一、现象描述 lvgl 版本 二、问题分析 lvgl 需要的资源新建mcu 工程时默认分配的资源问题解决 一、现象描述 移植完lvgl 之后,能正常显示label,但是button arc 等复杂的控件都不能正常显示。调用官方的画圆弧demo 时,在多次调用 _lv…