FPGA XDMA 中断模式实现 PCIE3.0 视频采集 OV5640摄像头 提供2套工程源码和QT上位机源码

news2024/11/24 16:40:25

目录

  • 1、前言
  • 2、我已有的PCIE方案
  • 3、PCIE理论
  • 4、总体设计思路和方案
    • 视频采集和缓存
    • XDMA简介
    • XDMA中断模式
    • QT上位机及其源码
  • 5、vivado工程1-->单路视频采集
  • 6、vivado工程2-->双路视频采集
  • 7、上板调试验证
  • 8、福利:工程代码的获取

1、前言

PCIE(PCI Express)采用了目前业内流行的点对点串行连接,比起 PCI 以及更早期的计算机总线的共享并行架构,每个设备都有自己的专用连接,不需要向整个总线请求带宽,而且可以把数据传输率提高到一个很高的频率,达到 PCI 所不能提供的高带宽,是目前各行业高速接口的优先选择方向,具有很高的实用价值和学习价值;

本设计使用Xilinx官方的XDMA方案搭建基于Xilinx系列FPGA的PCIE3.0通信平台,使用XDMA的中断模式与QT上位机通讯,即QT上位机通过软件中断的方式实现与FPGA的数据交互;输入是OV5640摄像头,分辨率为1280x720@60Hz;视频采集模块采集OV5640摄像头输入的RGB565数据并转换为RGB888数据,再经过FDMA视频三帧缓存架构将视频写入DDR,XDMA将视频从DDR3中读取出来,通过PCIE总线发送给电脑主机,电脑主机运行QT上位机软件,QT软件通过通断方式接收PCIE发来的图像数据并实时显示图像;

提供2套vivado工程源码,第一套输入为1路OV5640摄像头,分辨率为1280X720,经图像缓存后由XDMA读出经PCIE3.0总线送QT上位机显示;第二套输入为2路OV5640摄像头,分辨率为640X480,经图像缓存后由XDMA读出经PCIE3.0总线送QT上位机显示

本设计的关键在于我们编写了一个 xdma_inter.v 的XDMA中断模块。该模块用来配合驱动处理中断,xdma_inter.v 提供了AXI-LITE 接口,上位机通过访问 user 空间地址读写 xdma_inter.v 的寄存器。该 模块 在 user_irq_req_i 输入的中断位,寄存中断位号,并且输出给 XDMA IP ,当上位机的驱动响应中断的时候,在中断里面写 xdma_inter.v 的寄存器,清除已经处理的中断。

该方案只适用于Xilinx系列FPGA,一并提供了XDMA的安装驱动和QT上位机源代码,省去了使用XDMA繁琐的驱动寻找和上位机软件开发的不知所措,并以搭建好vivado工程,省去了不知道如何使用XDMA的尴尬,使得PCIE的使用变得简单易上手,而不用关心其复杂的PCIE协议;由于我的开发板只支持PCIE X8,所以提供的代码是PCIE X8架构,若需要PCIE X1、 X2、 X8、 X16、 X32的朋友,可自行修改本工程,也可关注我,我会实时发布新的工程。
本工程实现进阶应用的PCIE通信,和QT上位机之间进行视频传输试验。
在这里插入图片描述
本文详细描述了基于XDMA搭建PCIE通信平台的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的高速接口领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

2、我已有的PCIE方案

我的主页有PCIE通信专栏,该专栏基于XDMA的轮询模式实现与QT上位机的数据交互,既有基于RIFFA实现的PCIE方案,也有基于XDMA实现的PCIE方案;既有简单的数据交互、测速,也有应用级别的图像采集传输,以下是专栏地址:
点击直接前往
此外,我的主页有中断模式的PCIE通信专栏,该专栏基于XDMA的中断模式实现与QT上位机的数据交互,以下是专栏地址:点击直接前往

3、PCIE理论

这部分可自行百度或csdn或知乎学习理论知识,其实用了XDMA,已经不太需要直到PCIE复杂的协议和理论了。。。

4、总体设计思路和方案

总体设计思路和方案如下:
在这里插入图片描述

视频采集和缓存

OV5640摄像头和视频采集:
OV5640分辨率为1280x720@60Hz,纯verilog实现的i2c协议实现对齐内部寄存器的配置,纯verilog实现的图像采集模块将OV5640输出视频采集为VGA时序的RGB888视频输出;
FDMA图像缓存:
FDMA图像三帧缓存,经常看我文章的兄弟都知道,这是我惯用的图像缓存套路,它由FDMA控制器和FDMA构成,作用是将输入的视频缓存到DDR3里做三帧缓存后再读出来,目的是使得图像数据的输入输出跨时钟域读写,输出图像平稳无撕裂等现象;关于FDMA的详细设计说明,请参考我之前的文章:点击直接前往

XDMA简介

Xilinx 提供的 DMASubsystem for PCIExpressIP 是一个高性能,可配置的适用于 PCIE2.0,PCIE3.0 的 SG 模式 DMA,提供用户可选择的 AXI4 接口或者 AXI4-Stream 接口。一般情况下配置成 AXI4 接口可以加入到系统总线互联,适用于大数据量异步传输,通常情况都会使用到 DDR,AXI4-Stream 接口适用于低延迟数据流传输。
XDMA 是 SGDMA,并非 Block DMA,SG 模式下,主机会把要传输的数据组成链表的形式,然后将链表首地址通过 BAR 传送给 XDMA,XDMA 会根据链表结构首地址依次完成链表所指定的传输任务,XDMA框图如下:
在这里插入图片描述
AXI4、AXI4-Stream,必须选择一个,用于数据传输AXI4-Lite Master 可选,用于实现 PCIE BAR 地址到 AXI4-lite 寄存器地址的映射,可以用于读写用户逻辑寄存器。
AXI4-Lite Slave 可选,用来将 XDMA 内部寄存器开放给用户逻辑,用户逻辑可以通过此接口访问 XDMA 内部寄存器,不会映射到 BAR。
AXI4 Bypass 接口,可选,用来实现 PCIE 直通用户逻辑访问,可用于低延迟数据传输。

XDMA中断模式

本设计的关键在于我们编写了一个 xdma_inter.v 的XDMA中断模块。该模块用来配合驱动处理中断,xdma_inter.v 提供了AXI-LITE 接口,上位机通过访问 user 空间地址读写 xdma_inter.v 的寄存器。该 模块 在 user_irq_req_i 输入的中断位,寄存中断位号,并且输出给 XDMA IP ,当上位机的驱动响应中断的时候,在中断里面写 xdma_inter.v 的寄存器,清除已经处理的中断。
另外本方案中通过 AXI-BRAM 来演示用户 user 空间的读写访问测试。

QT上位机及其源码

QT上位机本方案使用 VS2015 + Qt 5.12.10 完成上位机开发软件环境搭建,QT程序调用XDMA官方API采用中断模式实现与FPGA的数据交互,本例程实现的是读写测速,提供QT上位机软件及其源码,路径如下:
在这里插入图片描述
QT源码部分截图如下:
在这里插入图片描述

5、vivado工程1–>单路视频采集

开发板FPGA型号:Xilinx–xcku060-ffva1156-2-i;
开发环境:Vivado2022.2;
输入:单路OV5640摄像头,分辨率为1280x720@60Hz;
输出:PCIE3.0 X8;
应用:QT上位机视频显示试验;
工程BD如下:
在这里插入图片描述
XDMA需要设计中断数量,配置如下:
在这里插入图片描述
在这里插入图片描述
同时,XDMA中断模块的中断数量也设置为4,如下:
在这里插入图片描述
综合后的代码架构如下:
在这里插入图片描述
综合编译完成后的FPGA资源消耗和功耗预估如下:
在这里插入图片描述

6、vivado工程2–>双路视频采集

开发板FPGA型号:Xilinx–xcku060-ffva1156-2-i;
开发环境:Vivado2022.2;
输入:双路OV5640摄像头,分辨率为640x480@60Hz;
输出:PCIE3.0 X8;
应用:QT上位机视频显示试验;
工程BD如下:
在这里插入图片描述
具体每一路的视频采集和缓存部分如下:
在这里插入图片描述
XDMA需要设计中断数量,配置如下:
在这里插入图片描述
在这里插入图片描述
同时,XDMA中断模块的中断数量也设置为4,如下:
在这里插入图片描述
综合后的代码架构如下:
在这里插入图片描述
综合编译完成后的FPGA资源消耗和功耗预估如下:
在这里插入图片描述

7、上板调试验证

开启上位机测程序进行 PCIe 接收视频测试,打开QT软件,实验结果如下:
单路视频显示如下:
读写同时进行测试:
双路视频显示如下:
在这里插入图片描述

8、福利:工程代码的获取

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

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

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

相关文章

springboot整合feign实现RPC调用

目录 一、服务提供者 二、服务消费者 三、测试效果 feign/openfeign和dubbo是常用的微服务RPC框架,由于feigin内部已经集成ribbon,自带了负载均衡的功能,当有多个同名的服务注册到注册中心时,会根据ribbon默认的负载均衡算法将…

用 perfcollect 洞察 Linux 上.NET程序CPU爆高

一:背景 1. 讲故事 如果要分析 Linux上的 .NET程序 CPU 爆高,按以往的个性我肯定是抓个 dump 下来做事后分析,这种分析模式虽然不重但也不轻,还需要一定的底层知识,那有没有傻瓜式的 CPU 爆高分析方式呢?…

使用testify包辅助Go测试指南

我虽然算不上Go标准库的“清教徒”,但在测试方面还多是基于标准库testing包以及go test框架的,除了需要mock的时候,基本上没有用过第三方的Go测试框架。我在《Go语言精进之路》[2]一书中对Go测试组织的讲解也是基于Go testing包和go test框架…

【Java|golang】415. 字符串相加

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。 你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。 示例 1: 输入&#xff…

五笔衰落,PC和OCR惹得祸?

许多人认为五笔输入法的衰落主要因素是败给了拼音输入法,是被拼音输入法给“打残”了,取代了,其实这只是表面原因,笔者认为,其关键因素是PC的衰落和OCR技术的不断改进和发展,理由如下: 1、PC出…

TCP/IP详解

目录 一、OSI参考模型 1.图示 2.OSI七层模型各自作用 3.七层通信过程 二、IP协议 1.IPv4首部 2.IPv6首部 三、TCP协议 1.tcp首部格式 2.握手挥手图示 3.握手流程 4.为什么要三次握手? 5.四次挥手流程 6.为什么要四次分手? 7.为什么要等待…

kafka接收外部接口的数据,并实现转发

目录 一、什么是kafka 二、kafka接收外部接口数据 三、kafka收到数据后转发 四、kafka总结 一、什么是kafka Kafka是一种分布式流式处理平台,最初由LinkedIn开发。它设计用于高吞吐量、低延迟的数据处理,能够处理大规模的实时数据流。Kafka采用发布…

[PHP]解决exec执行unzip出现中文文件名乱码的问题

查看Linux编码,例如下图可看出Linx编码是zh_CN.UTF-8 问题截图: 以下代码都会产生乱码 exex(unzip -d /xxx /x/test.zip); exex(unzip -O zh_CN.UTF-8 -d /xxx /x/test.zip); exex(unzip -I zh_CN.UTF-8 -d /xxx /x/test.zip); 解决方法: …

Java线程的创建和使用

目录 基本概念 线程的创建和使用 线程的生命周期 基本概念 程序(program) 程序(program)是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。 进程(process) 进程(process)是程序的一次执行过程,或是正在运行的一个程…

ESP32+MQTT+MySQL实现发布订阅【气味数据收集】

ESP32MQTTMySQL实现发布订阅【气味数据收集】 🔮🔮🔮🔮🔮相关文章🔮🔮🔮🔮🔮 ESP32连接MQ Sensor实现气味反应 🔗 https://blog.csdn.net/ws1516…

指针知多少

作者简介:დ旧言~,目前大一,现在学习Java,c,Python等 座右铭:松树千年终是朽,槿花一日自为荣。 望小伙伴们点赞👍收藏✨加关注哟💕💕 ⛵前言 不知道大家还记…

avi格式怎么转换成mp4?教你几种简单转换小技巧

由于 AVI 格式的文件结构,它们不适合用于流式传输。这意味着,如果你想在线观看一个 AVI 格式的视频,你需要等待整个文件下载完成后才能开始观看。这对于那些希望尽快开始观看视频的人来说可能是一个问题。那么我们怎么将AVI格式的视频转换成M…

【C语言】memcpy,memmove,memcmp,memset函数详解

memcpy,memmove,memcmp,memset函数详解 memcpy函数一、 memcpy函数的定义:二、memcpy函数的功能:三、memcpy函数模拟memcpy注意事项 memmove函数一、memmove函数简介二、memmove函数的模拟1.两种情况2模拟实现 memcmp函数memecmp函数介绍 memset函数mems…

Cell 子刊 - 4D打印一只可变形的蜘蛛

国自然“十四五”优先发展领域公布,共计115项!(生物医学领域节选,近 50 项)中提到 4D打印是一个重要方向。 凝胶状墨水使得3D打印应用于电子设备的金属物体更容易。 3D打印在经济性、设计自由度和效率方面均超越了传统…

Matplotlib中文乱码解决方案(两种方式)

Matplotlib 默认不支持中文字体,这因为 Matplotlib 只支持 ASCII 字符,但中文标注更加符合中国人的阅读习惯。因此,本节重点讲解如何在 Windows 环境下让 Matplotlib 显示中文。 Matplotlib中文乱码 当不对 Matplotlib 进行设置&#xff0c…

网页版五子棋设计实现自动化测试

目录 一、设计测试用例 二、执行测试 登录页面 功能测试 界面测试 注册界面 功能测试 界面测试 游戏大厅 功能测试 界面测试 游戏房间 功能测试 界面测试 一、设计测试用例 二、执行测试 在执行测试之前首先获取到驱动。 登录页面 功能测试 首先定义star…

2023年9月长沙/郑州/济南DAMA-CDGA/CDGP认证考试报名

据DAMA中国官方网站消息,2023年度第三期DAMA中国CDGA和CDGP认证考试定于2023年9月23日举行。 报名通道现已开启,相关事宜通知如下: 考试科目: 数据治理工程师(CertifiedDataGovernanceAssociate,CDGA) 数据治理专家(CertifiedDataGovernanc…

Spark(26):Spark通讯架构

目录 0. 相关文章链接 1. Spark通信架构概述 2. Spark 通讯架构解析 0. 相关文章链接 Spark文章汇总 1. Spark通信架构概述 Spark 中通信框架的发展: Spark 早期版本中采用 Akka 作为内部通信部件。Spark1.3 中引入 Netty 通信框架,为了解决 Shuf…

靶机渗透之prime1(解法2)

prime1 靶机渗透获取目标shell查看当前用户下的信息查找是否含有有效的备份文件经过查找找到enc文件密码md5格式生成登录靶机Prime提权成功获取flag 靶机渗透 获取目标shell 查看当前用户下的信息 在当前文件夹下,enc文件需要密码,尝试去寻找该文件的密…

移远通信发布新款5G/4G、LPWA和GNSS天线,进一步优化物联网终端性能

2023年7月17日,全球领先的物联网整体解决方案供应商移远通信宣布,再次推出三款新型天线产品,以更优的通信和定位性能,满足各类物联网终端在5G/4G、LPWA和GNSS等技术上的更高设计需求。这三款天线包括: YEMN926J1A&…