基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码

这篇具有很好参考价值的文章主要介绍了基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、前言

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

本设计提供一种基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构;该机构的主要作用如下:图中的箭头代表数据流向,数字代表数据流向的步骤;
基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码
QT上位机将电脑端的数据通过PCIE总线发送给FPGA开发板,FPGA侧的XDMA将PCIE发来的数据缓存至DDR3,缓存完成后,XDMA产生中断信号,该信号通过AXI-GPIO发送给FDMA,通知FDMA去DDR3中读取数据,FDMA得到中断通知后,读取DDR3中的数据给FPGA逻辑做数据处理,数据处理完成后再通过FDMA将处理完成的数据写回到DDR3中缓存,XDMA再从DDR3中读取处理好的数据送入PCIE总线发送给电脑端,电脑端QT软件再接收处理好的数据;

本设计使用Xilinx官方的XDMA方案搭建基于Xilinx系列FPGA的PCIE通信平台,电脑端QT实时截取主机屏幕图片,QT软件会将图片发送给PCIE总线,XDMA驱动将PCIE总线上的数据发送出去;FPGA开发板的 XDMA IP 核将接收到的图片数据缓存至 DDR3,并以中断方式通知用户将DDR3中缓存的图片数据读出, FDMA控制器收到 XDMA 发来的中断信号后将图片从 DDR3 中读出,然后做数据处理,出于简单考虑,这里的数据处理我们仅做数据回环,当然你可以做更加负责的处理,比如图像缩放、图像增强,图像识别等,处理完成后,FDMA再将数据写入DDR3中缓存,XDMA读取处理完毕后的数据再通过PCIE发送给电脑上位机,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 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码
本文详细描述了基于XDMA搭建PCIE通信平台的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的高速接口领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

免责声明

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

2、我已有的PCIE方案

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

3、PCIE理论

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

4、总体设计思路和方案

总体设计思路和方案如下:图中的箭头代表数据流向,数字代表数据流向的步骤;
基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码

图像产生、发送、缓存

QT上位机实时截取电脑桌面的屏幕图片,我的电脑分辨率为1920X1080,QT软件会将图片发送给PCIE总线,XDMA驱动将PCIE总线上的数据发送出去;FPGA开发板的 XDMA IP 核将接收到的图片数据缓存至 DDR3,并以中断方式通知用户将DDR3中缓存的图片数据读出;这里的中断采用AXI-GPIO传递;

数据处理

出于简单考虑,这里的数据处理我们仅做数据回环,当然你可以做更加负责的处理,比如图像缩放、图像增强,图像识别等;代码如下:
基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码

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框图如下:
基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码
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 空间的读写访问测试。

图像读取、输出、显示

FDMA控制器收到 XDMA 发来的中断信号后将图片从 DDR3 中读出,然后将图像信息放入 VGA 时序的数据总线上形成 VGA 时序的视频流,在将视频流送入 HDMI 发送模块将 RGB 数据转换为 HDMI 差分数据通过 HDMI 线缆输出到显示器;VGA时序分辨率为1920X1080@60Hz;关于FDMA的详细设计说明,请参考我之前的文章:点击直接前往

QT上位机及其源码

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

5、vivado工程详解

开发板FPGA型号:Xilinx–xc7k325tffg900-2;
开发环境:Vivado2022.2;
输入:测试图片,QT上位机发送,分辨率为1920X1080;
输出:HDMI,分辨率为1920X1080@60Hz;
应用:QT上位机发送图像,FPGA接收显示试验;
工程BD如下:
基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码
XDMA需要设计中断数量,配置如下:
基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码
同时,XDMA中断模块的中断数量也设置为4,如下:
基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码
综合后的代码架构如下:
基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码
综合编译完成后的FPGA资源消耗和功耗预估如下:
基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码

6、工程移植说明

vivado版本不一致处理

1:如果你的vivado版本与本工程vivado版本一致,则直接打开工程;
2:如果你的vivado版本低于本工程vivado版本,则需要打开工程后,点击文件–>另存为;但此方法并不保险,最保险的方法是将你的vivado版本升级到本工程vivado的版本或者更高版本;
基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码
3:如果你的vivado版本高于本工程vivado版本,解决如下:
基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码
打开工程后会发现IP都被锁住了,如下:
基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码
此时需要升级IP,操作如下:
基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码
基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码

FPGA型号不一致处理

如果你的FPGA型号与我的不一致,则需要更改FPGA型号,操作如下:
基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码
基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码
基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码
更改FPGA型号后还需要升级IP,升级IP的方法前面已经讲述了;

其他注意事项

1:由于每个板子的DDR不一定完全一样,所以MIG IP需要根据你自己的原理图进行配置,甚至可以直接删掉我这里原工程的MIG并重新添加IP,重新配置;
2:根据你自己的原理图修改引脚约束,在xdc文件中修改即可;
3:纯FPGA移植到Zynq需要在工程中添加zynq软核;

7、上板调试验证

开启上位机测程序进行 PCIe 接收视频测试,打开QT软件,实验结果如下:
基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码

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

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。
网盘资料如下:
基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码
基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码文章来源地址https://www.toymoban.com/news/detail-504474.html

到了这里,关于基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA基于XDMA实现PCIE X4通信方案 提供工程源码和QT上位机程序和技术支持

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

    2023年04月24日
    浏览(51)
  • FPGA基于XDMA实现PCIE X4视频采集HDMI输出 提供工程源码和QT上位机程序和技术支持

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

    2024年02月02日
    浏览(46)
  • FPGA基于XDMA实现PCIE X8视频采集HDMI输出 提供工程源码和QT上位机程序和技术支持

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

    2024年02月01日
    浏览(44)
  • FPGA基于XDMA实现PCIE X8的HDMI视频采集 提供工程源码和QT上位机程序和技术支持

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

    2024年02月04日
    浏览(39)
  • FPGA基于XDMA实现PCIE X4的HDMI视频采集 提供工程源码和QT上位机程序和技术支持

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

    2023年04月18日
    浏览(41)
  • zynq基于XDMA实现PCIE X8通信方案测速 提供工程源码和QT上位机程序和技术支持

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

    2024年02月06日
    浏览(52)
  • FPGA(基于xilinx)中PCIe介绍以及IP核XDMA的使用

    例如:第一章 PCIe简介以及IP核的使用 PCIe 总线架构与以太网的 OSI 模型类似,是一种分层协议架构, 分为事务层(Transaction Layer)、 数据链路层(Data Link Layer) 和物理层(Physical Layer)。 这些层中的每一层都分为两部分:一部分处理出站(要发送的)信息,另一部分处理入站(接收

    2024年02月08日
    浏览(42)
  • Xilinx PCIe XDMA IP中断

    IRQ Module Legacy Interrupts (1)usr_irq_req拉高导致中断发送到PCIe Host,可以同时拉高多个bit; (2)等到ack后,相应的usr_irq_req才可以拉低; 第一个 ack 表示 INT 消息已经被发送到了 PCIe block ; (3) 经过 (2) 后 ,FPGA XDMA 内的 interrupt pending register 将会拉高 , 等待 ISR 的查和处理

    2024年01月16日
    浏览(36)
  • FPGA基于RIFFA实现PCIE采集ov5640图像传输,提供工程源码和QT上位机

    PCIE是目前速率很高的外部板卡与CPU通信的方案之一,广泛应用于电脑主板与外部板卡的通讯,PCIE协议极其复杂,想要掌握不容易,所以Xilinx和Altera等FPGA厂商直接推出了相关IP供用户使用,比如Xilinx的XDMA,这种IP直接集成了PCIE通信的所有内核资源,并已封装为AXIS接口,用户在

    2023年04月09日
    浏览(71)
  • 实现上位机与FPGA uart交互

    前言  初学者学习记录 目的:实现上位机与FPGA uart交互 开发环境:quatus prime 18.1,芯片 altera :EP4CE15F23C8。 实验现象: 1.使用uart:bps=9600(参数可调整),8n1数据结构发送和接收数据。 2.上位机与FPGA 64位数据通讯,16bit head+16地址(最高位0:写;1:读)+32数据。 3.  驱动数

    2024年02月14日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包