国产安路FPGA实现图像视频采集转HDMI输出,提供5套TD工程源码和技术支持

目录

国产安路FPGA实现图像视频采集转HDMI输出,提供5套TD工程源码和技术支持

1、前言

国产FPGA现状:

"苟利国家生死以,岂因祸福避趋之!"大洋彼岸的我优秀地下档员,敏锐地洞察到祖国的短板在于先进制程半导体的制造领域,于是本着为中华民族伟大复兴的中国梦贡献绵薄之力的初心,懂先生站在高略高度和长远角度谋划,宁愿背当代一世之骂名也要为祖国千秋万世谋,2018年7月,懂先生正式打响毛衣战,随后又使出恰勃纸战术,旨在为祖国先进制程半导体领域做出自主可控的战略推动;2019年初我刚出道时,还是Xilinx遥遥领先的时代(现在貌似也是),那时的国产FPGA还处于黑铁段位;然而才短短7年,如今的国产FPGA属于百家争鸣、百花齐放、八仙过海、神仙打架、方兴未艾、得陇望蜀、友商都是XX的喜极而泣之局面,此情此景,不得不吟唱老人家的诗句:魏武挥鞭,东临碣石有遗篇,萧瑟秋风今又是,换了人间。。。

目前对于国产FPGA优势有以下几点:

1:性价比高,与同级别国外大厂芯片相比,价格相差几倍甚至十几倍;

2:自主可控,国产FPGA拥有完整自主知识产权的产业链,从芯片到相关EDA工具;

3:响应迅速,FAE技术支持比较到位,及时解决开发过程中遇到的问题,毕竟中文数据手册;

4:采购方便,产业链自主可控,采购便捷;

工程概述

本文使用国产安路的PH1系列FPGA做基础的图像视频采集系统;视频输入源有多种,一种是板载的HDMI输入接口,另一种是传统摄像头,包括OV7725、OV5640和AR0135;如果你的FPGA开发板没有视频输入接口,或者你的手里没有摄像头时,可以使用FPGA逻辑实现的动态彩条模拟输入视频,代码里通过parametr参数选择视频源,默认不使用动态彩条;FPGA首先对摄像头进行i2c初始化配置,然后采集摄像头视频;然后视频送入本博主常用的FDMA图像缓存架构实现视频3帧缓存功能,本设计使用DDR3作为缓存介质;然后Native视频时序控制图像缓存架构从DDR3中读取视频,并做Native视频时序同步,输出RGB888视频;然后视频送入安路官方提供的RGB转HDMI IP实现RGB转HDMI功能;最后视频通过板载HDMI输出接口送显示器显示即可;针对市场主流需求,本设计提供5套PDS工程源码,具体如下:

现对上述3套工程源码做如下解释,方便读者理解:

工程源码1

开发板FPGA型号为国产安路--PH1A90SBG484-3;输入视频为GC0308摄像头或者动态彩条,默认使用GC0308;FPGA首先使用纯Verilog实现的i2c总线对摄像头进行初始化配置,分辨率配置为640x480@30Hz;然后采集输入视频,将输入的两个时钟传输一个RGB565像素的视频采集为一个时钟传输一个RGB888像素的视频;然后视频送入本博主常用的FDMA图像缓存架构实现视频3帧缓存功能,本设计使用DDR3作为缓存介质;然后Native视频时序控制图像缓存架构从DDR3中读取视频,并做Native视频时序同步,输出RGB888视频,输出分辨率为640x480@60Hz,然后视频送入安路官方提供的RGB转HDMI IP实现RGB转HDMI功能;最后视频通过板载HDMI输出接口送显示器显示即可;该工程适用于国产安路FPGA实现图像视频采集系统应用;

工程源码2

开发板FPGA型号为国产安路--PH1A90SBG484-3;输入视频为OV7725摄像头或者动态彩条,默认使用OV7725;FPGA首先使用纯Verilog实现的i2c总线对摄像头进行初始化配置,分辨率配置为640x480@30Hz;然后采集输入视频,将输入的两个时钟传输一个RGB565像素的视频采集为一个时钟传输一个RGB888像素的视频;然后视频送入本博主常用的FDMA图像缓存架构实现视频3帧缓存功能,本设计使用DDR3作为缓存介质;然后Native视频时序控制图像缓存架构从DDR3中读取视频,并做Native视频时序同步,输出RGB888视频,输出分辨率为640x480@60Hz,然后视频送入安路官方提供的RGB转HDMI IP实现RGB转HDMI功能;最后视频通过板载HDMI输出接口送显示器显示即可;该工程适用于国产安路FPGA实现图像视频采集系统应用;

工程源码3

开发板FPGA型号为国产安路--PH1A90SBG484-3;输入视频为OV5640摄像头或者动态彩条,默认使用OV5640;FPGA首先使用纯Verilog实现的i2c总线对摄像头进行初始化配置,分辨率配置为1280x720@30Hz;然后采集输入视频,将输入的两个时钟传输一个RGB565像素的视频采集为一个时钟传输一个RGB888像素的视频;然后视频送入本博主常用的FDMA图像缓存架构实现视频3帧缓存功能,本设计使用DDR3作为缓存介质;然后Native视频时序控制图像缓存架构从DDR3中读取视频,并做Native视频时序同步,输出RGB888视频,输出分辨率为1280x720@60Hz,然后视频送入安路官方提供的RGB转HDMI IP实现RGB转HDMI功能;最后视频通过板载HDMI输出接口送显示器显示即可;该工程适用于国产安路FPGA实现图像视频采集系统应用;

工程源码4

开发板FPGA型号为国产安路--PH1A90SBG484-3;输入视频为AR0135全局曝光工业相机或者动态彩条,默认使用AR0135;FPGA首先使用纯Verilog实现的i2c总线对摄像头进行初始化配置,分辨率配置为1280x720@60Hz;然后采集输入视频,将输入的两个时钟传输一个RGB565像素的视频采集为一个时钟传输一个RGB888像素的视频;然后视频送入本博主常用的FDMA图像缓存架构实现视频3帧缓存功能,本设计使用DDR3作为缓存介质;然后Native视频时序控制图像缓存架构从DDR3中读取视频,并做Native视频时序同步,输出RGB888视频,输出分辨率为1280x720@60Hz,然后视频送入安路官方提供的RGB转HDMI IP实现RGB转HDMI功能;最后视频通过板载HDMI输出接口送显示器显示即可;该工程适用于国产安路FPGA实现图像视频采集系统应用;

工程源码5

开发板FPGA型号为国产安路--PH1A90SBG484-3;输入视频为HDMI视频,用笔记本电脑模拟,笔记本电脑通过HDMI线连接FPGA开发板的HDMI输入接口,板载的ADV7611芯片实现HDMI视频解码,FPGA使用纯Verilog实现的i2c总线对ADV7611进行初始化配置,分辨率配置为1920x1080@60Hz,输出RGB888视频给FPGA;然后视频送入本博主常用的FDMA图像缓存架构实现视频3帧缓存功能,本设计使用DDR3作为缓存介质;然后Native视频时序控制图像缓存架构从DDR3中读取视频,并做Native视频时序同步,输出RGB888视频,输出分辨率为1920x1080@60Hz,然后视频送入安路官方提供的RGB转HDMI IP实现RGB转HDMI功能;最后视频通过板载HDMI输出接口送显示器显示即可;该工程适用于国产安路FPGA实现图像视频采集系统应用;

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

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

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

免责声明

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

2、相关方案推荐

我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目

其实一直有朋友反馈,说我的博客文章太多了,乱花渐欲迷人,自己看得一头雾水,不方便快速定位找到自己想要的项目,所以本博文置顶,列出我目前已有的所有项目,并给出总目录,每个项目的文章链接,当然,本博文实时更新。。。以下是博客地址:
点击直接前往

国产安路FPGA相关方案推荐

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

3、设计思路框架

工程设计原理框图

工程设计原理框图如下:

输入Sensor之-->GC0308摄像头

输入Sensor是本工程的输入设备,其一为GC0308摄像头,此外本博主在工程中还设计了动态彩条模块,彩条由FPGA内部逻辑产生,且是动态移动的,完全可模拟Sensor,输入源选择Sensor还是彩条,通过Sensor模块的顶层参数配置,默认选择Sensor输入;Sensor模块如下:

SENSOR_TYPE=0;则输出GC0308摄像头采集的视频;

SENSOR_TYPE=1;则输出动态彩条的视频;

GC0308摄像头需要i2c初始化配置,本设计配置为640x480@30Hz分辨率,本设计提供纯verilog代码实现的i2c模块实现配置功能;此外,GC0308摄像头还需要图像采集模块实现两个时钟输出一个RGB565的视频转换为一个时钟输出一个RGB888视频,本设计提供纯verilog代码实现的图像采集模块实现配置功能;动态彩条则由FPGA内部逻辑实现,由纯verilog代码编写;将GC0308摄像头配置采集和动态彩条进行代码封装,形成helai_OVsensor.v的顶层模块,整个模块代码架构如下:

输入Sensor之-->OV7725摄像头

输入Sensor是本工程的输入设备,其一为OV7725摄像头,此外本博主在工程中还设计了动态彩条模块,彩条由FPGA内部逻辑产生,且是动态移动的,完全可模拟Sensor,输入源选择Sensor还是彩条,通过Sensor模块的顶层参数配置,默认选择Sensor输入;Sensor模块如下:

SENSOR_TYPE=0;则输出OV7725摄像头采集的视频;

SENSOR_TYPE=1;则输出动态彩条的视频;

OV7725摄像头需要i2c初始化配置,本设计配置为640x480@60Hz分辨率,本设计提供纯verilog代码实现的i2c模块实现配置功能;此外,OV7725摄像头还需要图像采集模块实现两个时钟输出一个RGB565的视频转换为一个时钟输出一个RGB888视频,本设计提供纯verilog代码实现的图像采集模块实现配置功能;动态彩条则由FPGA内部逻辑实现,由纯verilog代码编写;将OV7725摄像头配置采集和动态彩条进行代码封装,形成helai_OVsensor.v的顶层模块,整个模块代码架构如下:

输入Sensor之-->OV5640摄像头

输入Sensor是本工程的输入设备,其一为OV5640摄像头,此外本博主在工程中还设计了动态彩条模块,彩条由FPGA内部逻辑产生,且是动态移动的,完全可模拟Sensor,输入源选择Sensor还是彩条,通过Sensor模块的顶层参数配置,默认选择Sensor输入;Sensor模块如下:

SENSOR_TYPE=0;则输出OV5640摄像头采集的视频;

SENSOR_TYPE=1;则输出动态彩条的视频;

OV5640摄像头需要i2c初始化配置,本设计配置为1280x720@30Hz分辨率,本设计提供纯verilog代码实现的i2c模块实现配置功能;此外,OV5640摄像头还需要图像采集模块实现两个时钟输出一个RGB565的视频转换为一个时钟输出一个RGB888视频,本设计提供纯verilog代码实现的图像采集模块实现配置功能;动态彩条则由FPGA内部逻辑实现,由纯verilog代码编写;将OV5640摄像头配置采集和动态彩条进行代码封装,形成helai_OVsensor.v的顶层模块,整个模块代码架构如下:

输入Sensor之-->AR0135摄像头

输入Sensor是本工程的输入设备,其一为AR0135摄像头,此外本博主在工程中还设计了动态彩条模块,彩条由FPGA内部逻辑产生,且是动态移动的,完全可模拟Sensor,输入源选择Sensor还是彩条,通过Sensor模块的顶层参数配置,默认选择Sensor输入;Sensor模块如下:

SENSOR_TYPE=0;则输出OV5640摄像头采集的视频;

SENSOR_TYPE=1;则输出动态彩条的视频;

AR0135摄像头需要i2c初始化配置,本设计配置为1280x720@60Hz分辨率,本设计提供纯verilog代码实现的i2c模块实现配置功能;动态彩条则由FPGA内部逻辑实现,由纯verilog代码编写;将AR0135摄像头配置采集和动态彩条进行代码封装,形成helai_OVsensor.v的顶层模块,整个模块代码架构如下:

输入Sensor之-->ADV7611芯片解码的HDMI

输入Sensor是本工程的输入设备,其一为板载的HDMI输入接口;输入源为板载的HDMI输入接口或动态彩条,分辨率为1920x1080@60Hz,使用笔记本电脑接入HDMI输入接口,以模拟输入Sensor;HDMI解码方案为芯片解码,使用ADV7611,可将输入的HDMI视频解码为RGB888视频;FPGA纯verilog实现的i2c配置模块完成对ADV7611芯片的配置,分辨率配置为1920x1080@60Hz;可以通过Sensor模块的顶层参数配置,默认选择Sensor输入;Sensor模块如下:

SENSOR_TYPE=0;则输出HDMI接口采集的视频;

SENSOR_TYPE=1;则输出动态彩条的视频;

整个模块代码架构如下:

FDMA图像缓存

FDMA图像缓存架构实现的功能是将输入视频缓存到板载DDR3中再读出送后续模块,目的是实现视频同步输出,实现输入视频到输出视频的跨时钟域问题,更好的呈现显示效果;由于调用了安路官方的MIG IP核作为DDR控制器,所以FDMA图像缓存架构就是实现用户数据到MIG的桥接作用;架构如下:

FDMA图像缓存架构由FDMA控制器+FDMA组成;FDMA实际上就是一个AXI4-FULL总线主设备,与MIG对接,MIG配置为AXI4-FULL接口;FDMA控制器实际上就是一个视频读写逻辑,以写视频为例,假设一帧图像的大小为M×N,其中M代表图像宽度,N代表图像高度;FDMA控制器每次写入一行视频数据,即每次向DDR3中写入M个像素,写N次即可完成1帧图像的缓存,读视频与之一样;同时调用两个FIFO实现输入输出视频的跨时钟域处理,使得用户可以AXI4内部代码,以简单地像使用FIFO那样操作AXI总线,从而达到读写DDR的目的,进而实现视频缓存;本设计图像缓存方式为3帧缓存;图像缓存模块代码架构如下:

HDMI视频输出架构

缓存图像从DDR3读出后经过Native时序生成模块输出标准的VGA时序视频,然后经过纯verilog显示的RGB转HDMI模块输出HDMI差分视频;最后送显示器显示即可;代码例化如下:

工程源码架构

以工程3为例,工程源码架构如下:

4、TD工程源码1详解:GC0308输入版本

开发板FPGA型号:国产安路--PH1A90SBG484-3;

开发环境:TangDynasty 6.0.2;

输入:GC0308摄像头或FPGA内部动态彩条,分辨率640x480@30Hz;

输出:HDMI,RTL编码,分辨率640x480@60Hz;

图像缓存方案:FDMA图像缓存,3帧缓存;

工程源码架构请参考前面第3章节中的《工程源码架构》小节;

工程作用:此工程目的是让读者掌握国产安路FPGA实现图像视频采集系统的设计能力,以便能够移植和设计自己的项目;

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

5、TD工程源码2详解:OV7725输入版本

开发板FPGA型号:国产安路--PH1A90SBG484-3;

开发环境:TangDynasty 6.0.2;

输入:OV7725摄像头或FPGA内部动态彩条,分辨率640x480@30Hz;

输出:HDMI,RTL编码,分辨率640x480@60Hz;

图像缓存方案:FDMA图像缓存,3帧缓存;

工程源码架构请参考前面第3章节中的《工程源码架构》小节;

工程作用:此工程目的是让读者掌握国产安路FPGA实现图像视频采集系统的设计能力,以便能够移植和设计自己的项目;

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

6、TD工程源码3详解:OV5640输入版本

开发板FPGA型号:国产安路--PH1A90SBG484-3;

开发环境:TangDynasty 6.0.2;

输入:OV5640摄像头或FPGA内部动态彩条,分辨率1280x720@30Hz;

输出:HDMI,RTL编码,分辨率1280x720@60Hz;

图像缓存方案:FDMA图像缓存,3帧缓存;

工程源码架构请参考前面第3章节中的《工程源码架构》小节;

工程作用:此工程目的是让读者掌握国产安路FPGA实现图像视频采集系统的设计能力,以便能够移植和设计自己的项目;

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

7、TD工程源码4详解:AR0135输入版本

开发板FPGA型号:国产安路--PH1A90SBG484-3;

开发环境:TangDynasty 6.0.2;

输入:AR0135摄像头或FPGA内部动态彩条,分辨率1280x720@60Hz;

输出:HDMI,RTL编码,分辨率1280x720@60Hz;

图像缓存方案:FDMA图像缓存,3帧缓存;

工程源码架构请参考前面第3章节中的《工程源码架构》小节;

工程作用:此工程目的是让读者掌握国产安路FPGA实现图像视频采集系统的设计能力,以便能够移植和设计自己的项目;

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

8、TD工程源码5详解:HDMI输入版本

开发板FPGA型号:国产安路--PH1A90SBG484-3;

开发环境:TangDynasty 6.0.2;

输入:HDMI或者FPGA内部动态彩条,ADV7611芯片解码方案,分辨率1920x1080@60Hz,笔记本电脑模拟输入源;

输出:HDMI,RTL编码,分辨率1920x1080@60Hz;

图像缓存方案:FDMA图像缓存,3帧缓存;

工程源码架构请参考前面第3章节中的《工程源码架构》小节;

工程作用:此工程目的是让读者掌握国产安路FPGA实现图像视频采集系统的设计能力,以便能够移植和设计自己的项目;

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

9、上板调试验证并演示

准备工作

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

1:FPGA开发板;

2:OV7725或OV5640摄像头或笔记本电脑,没有则请使用FPGA内部生成的彩条;

3:HDMI传输线;

4:HDMI显示,要求分辨率支持1920x1080;

国产安路FPGA视频采集效果演示

国产安路FPGA视频采集效果演示如下:

安路-图像采集

10、工程源码

工程源码如下:

相关推荐
微帧Visionular12 小时前
AI视频单帧清晰,播放时却闪烁,原因是什么?
人工智能·深度学习·音视频
szxinmai主板定制专家13 小时前
X86 工控机 vs RK3588 异构主控:AMR 控制器 BOM、散热、长期运维对比
运维·stm32·单片机·嵌入式硬件·fpga开发·am62x
辰辰观影14 小时前
Windows网盘视频播放器推荐:无广告4K HDR怎么选
音视频
2601_9668274516 小时前
电视端云盘在线播放怎么选?支持4K HDR的应用推荐
音视频
开开心心就好16 小时前
音频降噪剪辑工具,音量裁剪一键处理
运维·服务器·前端·spring·ocr·音视频·1024程序员节
AI视频工具指南20 小时前
AI视频的声音和画面怎么配合?先分清谁在传递信息
人工智能·aigc·音视频
辰辰观影1 天前
无广告播放器推荐来啦
音视频
TrueDei1 天前
GStreamer 使用 valve 分别控制音视频流的暂停与恢复
音视频
一条破秋裤1 天前
基于 Hi3516CV610 的立定跳远视频测量系统调研与实施方案
arm开发·音视频
2601_966827451 天前
视频里的特效字幕怎么翻译?外挂字幕与AI字幕一键处理教程
音视频