紫光同创FPGA图像视频采集系统,提供2套PDS工程源码和技术支持

目录

紫光同创FPGA图像视频采集系统,提供2套PDS工程源码和技术支持

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或OV5640摄像头;如果你手里没有OV7725或OV5640摄像头或者FPGA开发板没有摄像头输入接口,则可使用代码内部生成的动态彩条模拟摄像头视频;视频源的选择通过代码顶层的`define宏定义进行选择;提供2套Pango Design Suite 2021.4版本的工程源码;第一套默认上电选择OV7725输入,分辨率为640X480;第二套默认上电选择OV5640输入,分辨率为1280X720;FPGA采集到输入视频后,使用本人开发的HDMA视频缓存架构,将视频送到外接DDR3中缓存,然后读出视频送HDMI显示器显示;

紫光同创FPGA图像视频采集系统的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做学习提升,可应用于医疗、军工等行业的高速接口或图像处理领域;

提供完整的、跑通的工程源码和技术支持;

工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

免责声明

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

2、紫光同创FPGA相关方案推荐

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

3、设计思路框架

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

工程1设计框图如下:

工程2设计框图如下:

视频源选择

视频源有两种,分别对应开发者手里有没有摄像头的情况,一种是使用廉价的OV7725或OV5640摄像头;如果你手里没有OV7725或OV5640摄像头或者FPGA开发板没有摄像头输入接口,则可使用代码内部生成的动态彩条模拟摄像头视频;视频源的选择通过代码顶层的`define宏定义进行选择;提供2套Pango Design Suite 2021.4版本的工程源码;第一套默认上电选择OV7725输入,分辨率为640X480;第二套默认上电选择OV5640输入,分辨率为1280X720;视频源选择如下:

视频源选择逻辑代码部分如下:

选择逻辑如下:

当(注释) define COLOR_IN时,输入源视频是动态彩条;

当(不注释) define COLOR_IN时,输入源视频是OV7725或OV5640;

OV7725摄像头配置及采集

OV7725摄像头需要i2c配置才能使用,需要将DVP接口的视频数据采集为RGB565或者RGB888格式的视频数据,这两部分均用verilog代码模块实现,代码位置如下:

其中摄像头配置为分辨率640x480;

摄像头采集模块支持RGB565和RGB888格式的视频输出,可由参数配置,如下:

RGB_TYPE=0输出本RGB565格式;

RGB_TYPE=1输出本RGB888格式;

设计选择RGB888格式;

OV5640摄像头配置及采集

OV5640摄像头需要i2c配置才能使用,需要将DVP接口的视频数据采集为RGB565或者RGB888格式的视频数据,这两部分均用verilog代码模块实现,代码位置如下:

其中摄像头配置为分辨率1280x720,如下:

摄像头采集模块支持RGB565和RGB888格式的视频输出,可由参数配置,如下:

RGB_TYPE=0输出本RGB565格式;

RGB_TYPE=1输出本RGB888格式;

设计选择RGB888格式;

动态彩条

动态彩条可配置为不同分辨率的视频,视频的边框宽度,动态移动方块的大小,移动速度等都可以参数化配置,以工程1为例,配置为辨率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家的一样,代码结构如下:

4、PDS工程1详解:OV7725输入

开发板FPGA型号:紫光同创--PGL22G-6MBG324;

开发环境:Pango Design Suite 2021.4

输入:OV7725摄像头或动态彩条,分辨率640x480;

输出:HDMI,分辨率1280x720;

工程作用:紫光同创FPGA图像视频采集系统;

工程代码架构如下:

工程的资源消耗和功耗如下:

5、PDS工程2详解:OV5640输入

开发板FPGA型号:紫光同创--PGL22G-6MBG324;

开发环境:Pango Design Suite 2021.4

输入:OV5640摄像头或动态彩条,分辨率1280x720;

输出:HDMI,分辨率1280x720;

工程作用:紫光同创FPGA图像视频采集系统;

工程代码架构如下:

工程的资源消耗和功耗如下:

6、上板调试验证并演示

准备工作

你需要有以下装备才能移植并测试该工程代码:

1:FPGA开发板;

2:OV7725或OV5640摄像头,如果没有也可以,就选择动态彩条;

3:HDMI传输线;

4:HDMI显示,要求分辨率支持1280x720;

静态演示

工程1:OV7725输入640x480分辨率HDMI输出静态演示如下:

工程1:动态彩条输入640x480分辨率HDMI输出静态演示如下:

工程2:OV5640输入1280x720分辨率HDMI输出静态演示如下:

工程2:动态彩条输入1280x720分辨率HDMI输出静态演示如下:

动态演示

仅以工程1的OV7725输入的动态视频演示如下:

紫光同创FPGA-OV7725

7、福利:工程源码获取

福利:工程代码的获取

代码太大,无法邮箱发送,以某度网盘链接方式发送,

资料获取方式:私,或者文章末尾的V名片。

相关推荐
乌恩大侠2 小时前
O-RAN Fronthual CU/Sync/Mgmt 平面和协议栈
5g·平面·fpga开发·架构
DS小龙哥15 小时前
基于Zynq FPGA的雷龙SD NAND存储芯片性能测试
fpga开发·sd nand·雷龙·spi nand·spi nand flash·工业级tf卡·嵌入式tf卡
上理考研周导师1 天前
第二章 虚拟仪器及其构成原理
fpga开发
FPGA技术实战1 天前
《探索Zynq MPSoC》学习笔记(二)
fpga开发·mpsoc
bigbig猩猩2 天前
FPGA(现场可编程门阵列)的时序分析
fpga开发
Terasic友晶科技2 天前
第2篇 使用Intel FPGA Monitor Program创建基于ARM处理器的汇编或C语言工程<二>
fpga开发·汇编语言和c语言
码农阿豪2 天前
基于Zynq FPGA对雷龙SD NAND的测试
fpga开发·sd nand·spi nand·spi nand flash·工业级tf卡·嵌入式tf卡
江山如画,佳人北望2 天前
EDA技术简介
fpga开发
淘晶驰AK2 天前
电子设计竞赛准备经历分享
嵌入式硬件·fpga开发