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

news2024/11/17 15:58:20

目录

  • 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名片。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解锁OpenAI潜力:OpenAI 全面解析与最佳实践

该项目是由OpenAI公司提供的一个大型代码库,其中包含了各类与OpenAI API相关的代码示例和最佳实践。 此项目名为OpenAI Cookbook,目的是为了帮助使用者更有效地利用OpenAI API,将其应用于自己的工作和生活中。具体来说,可以解决一…

CF1899C Yarik and Array(DP,贪心)

题目链接 题目 A subarray is a continuous part of array. Yarik recently found an array a of n elements and became very interested in finding the maximum sum of a non empty subarray. However, Yarik doesn’t like consecutive integers with the same parity, s…

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(五)

公共字段自动填充 1.1 问题分析1.2 实现思路1.3 代码开发1.3.1 步骤一1.3.2 步骤二1.3.3 步骤三 1.4 功能测试 1.1 问题分析 在前面我们已经完成了后台系统的员工管理功能和菜品分类功能的开发,在新增员工或者新增菜品分类时需要设置创建时间、创建人、修改时间、修…

虹科示波器 | 汽车免拆检修 | 2015款奔驰G63AMG车发动机偶尔自动熄火

一、故障现象 一辆2015款奔驰G63AMG车,搭载157发动机,累计行驶里程约为9.4万km。车主反映,该车低速行驶时,发动机偶尔会自动熄火,故障大概1个星期出现1次。 二、故障诊断 接车后路试,故障未能再现。用故障检…

简单线性回归函数

简单线性回归函数 定义术语理解简单线性回归例子 定义 线性回归:利用线性回归方程中最小平方函数对一个或多个自变量和因变量之间关系进行建模的一个回归分析。该建模的目标为找到各个系数的最佳值让预测误差最小 简单线性回归:只有一个自变量的线性回…

重磅消息:ChatGPT创始人Sam Altman被开除!

OpenAI CEO Sam Altman 将离开公司,GregBrockman 将辞去董事会主席一职。首席技术官 Mira Murati将担任临时CEO。 至于 Altman 先生的离职,这是董事会经过深思熟虑的宙查后做出的决定。董事会发现 Altman 在与董事会的沟通中并非始终保持坦率&#xff0c…

WebGoat通关攻略之 SQL Injection (intro)

SQL Injection (intro) 1. What is SQL? 本题练习SQL查询语句,就是写一句SQL获取叫Bob Franco所在的department SELECT department FROM employees WHERE first_name Bob AND last_name Franco成功通关! 2. Data Manipulation Language (DML) 本题…

一些RLHF的平替汇总

卷友们好,我是rumor。 众所周知,RLHF十分玄学且令人望而却步。我听过有的小道消息说提升很大,也有小道消息说效果不明显,究其根本还是系统链路太长自由度太高,不像SFT一样可以通过数据配比、prompt、有限的超参数来可控…

python引入自己不同目录的模块

1.目录结构 from manual_data.utils import delete_and_insert_center

时间序列预测:移动平均线、指数平滑和 SARIMA

一、说明 在我的上一篇文章中,我们介绍了用于数据分析和清理的不同技术,以准备用于预测的数据。在完成数据的分析和提炼后,我们成功实现了获得不存在任何缺失值、异常值或其他异常的原始数据集的目标。 现在,我们将继续使用上一篇…

【算法每日一练]-图论(保姆级教程 篇4(遍历))#传送门 #负环判断 #灾后重建

今天继续 目录 题目:传送门 思路: 题目:负环判断 思路: 题目:灾后重建 思路: 题目:传送 门 思路: 先跑一边floyd,然后依次加入每个传送门,O(n^5)不行…

CF1899B 250 Thousand Tons of TNT

题目链接 题目 题目大意 T T T 组测试数据 每组 n n n 个货物,第 i i i 个货物 的重量是 a i a_i ai​ 用k辆货车按顺序装这些货物,条件是每辆车上的货物个数都一样,也即是说 n n n 必须能被 k k k 整除, 求任意两辆车货物总…

什么是PWA(Progressive Web App)?它有哪些特点和优势?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

利用ETLCloud自动化流程实现业务系统数据快速同步至数仓

现代企业有不少都完成了数字化的转型,而还未转型的企业或商铺也有进行数字化转型的趋势,由此可见,数据已经成为企业决策的重要依据。企业需要先获取数据,将业务系统数据同步至数仓进行整合,然后再进行数据分析。为了更…

vivado产生报告阅读分析7-时序报告3

1、“ Timing Summary Report ”详情 “ Timing Summary Report ” ( 时序汇总报告 ) 包含下列部分 : • “ General Information ”部分 • “ Timer Settings ”部分 • “ Design Timing Summary ”部分 • “ Clock Summary ”部…

代码随想录算法训练营第五十八天丨 动态规划part18

739. 每日温度 思路 首先想到的当然是暴力解法,两层for循环,把至少需要等待的天数就搜出来了。时间复杂度是O(n^2) 那么接下来在来看看使用单调栈的解法。 什么时候用单调栈呢? 通常是一维数组,要寻找任一个元素的右边或者左边…

Leetcode刷题详解——斐波那契数

1. 题目链接:509. 斐波那契数 2. 题目描述: 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) 0,F(1…

mock测试数据

1.下载一个jar 架包 地址:链接:https://pan.baidu.com/s/1G5rVF5LlIYpyU-_KHsGjOA?pwdab12 提取码:ab12 2.配置当前电脑java环境变量 3.在同一文件目录下创建json 数据4.在终端切换到当前目录下启动服务, java -jar ./moco-r…

无损音频播放软件 Colibri mac中文版特点介绍

Colibri for mac是一款轻量级的音频播放器软件。它具有简洁的界面设计和快速启动速度,能够提供流畅的音频播放体验。Colibri支持多种常见的音频格式,包括MP3、FLAC、ALAC、AAC等。它还提供了一些实用的功能,如音频均衡器、音频增益控制、播放…

Go 语言数组基础教程 - 数组的声明、初始化和使用方法

数组用于在单个变量中存储相同类型的多个值,而不是为每个值声明单独的变量。 声明数组 在Go中,有两种声明数组的方式: 使用var关键字: 语法 var array_name [length]datatype{values} // 这里定义了长度 或者 var array_n…