0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于VIVADO的PCIE IP的使用

麻辣软硬件 来源:CSDN技术社区 作者:朽月 2021-08-09 16:22 次阅读

基于VIVADO的PCIE IP的使用

项目简述

上一篇内容我们已经对PCIE协议进行了粗略的讲解。那么不明白具体的PCIE协议,我们就不能在FPGA中使用PCIE来进行高速数据传输了吗?答案是否定的。因为Xilinx官方给我们提供了完善的PCIE IP,基于这些IP我们设置不需要知道TLP包的组包原理我们便可以把PCIE使用起来。

这篇博客我们主要把FPGA作为endpoint来进行讲解,当然也对作为root port进行简单的描述。我们使用的主要IP是XDMA,主要参考资料是米联客。如果对IP的使用感觉到疑惑可以参考米联客的资料

因为手头上硬件条件不够,没办法进行下板测试,我们主要进行介绍IP的定制和Block Design的搭建。

XDMA IP的定制

为什么使用XDMA IP而不使用我们前面介绍的PCIE IP,因为前面介绍的IP需要我们自己构建TLP包,还有分散收集策略,基于该IP使用起来PCIE还是有点困难。但是XDMA就特别简单了,他不需要FPGA设计者熟悉PCIE协议,直接将PCIE协议转换成AXI4与AXI_Lite协议,可以直接对DDR进行操作。

XDMA内部的分散收集操作、TLP组包、DMA操作等等进行了完整的封装。我们可以把XDMA IP看成我们经常使用的ZYNQ IP,他的BAR空间被AXI_Lite总线进行读写操作用于寄存器的配置,AXI总线用于大数据的传输直接与DDR对接。

XDMA的内部额框图如下:

550679e6-f872-11eb-9bcf-12bb97331649.png

对XDMA的内部描述如下:

1、AXI4、 AXI4-Stream,必须选择其中一个,用来数据传输

2、 AXI4-Lite Master,可选,用来实现PCIE BAR 地址到 AXI4-Lite 寄存器地址的映射,可用来读写用户逻辑寄存器

3、 AXI4-Lite Slave,可选,用来将XDMA 内部寄存器开放给用户逻辑,用户逻辑可以通过此接口访问 XDMA内部寄存器,不会映射到BAR

4、AXI4 Bypass 接口,可选,用来实现PCIE 直通用户逻辑访问,可用于低延迟数据传输

首先选择XDMA IP如下:

5814d632-f872-11eb-9bcf-12bb97331649.png

双击点开该IP的配置:

1、该IP是作为Endpoint来进行PCIE操作的

2、IP定制的模式是高级,这样一来可供选择的IP定制选项就会增多

3、PCIE硬核的位置,这里我们的芯片只有一个硬核,所以这里默认即可

4、lane的个数,与开发板相对应,这里选择2个

5、XDMA将PCIE转换成AXI协议,这个就是AXI协议的位宽

6、该片子的高速串行接口是GTP口,支持PCIE Gen1 Gen2协议,速度分别是2.5GT/s 5GT/s,这里选择最大速度5 GT/s

7、PCIE参考时钟的频率,与板子的时钟情况有关,这里是100MHz

8、AXI总线的时钟频率,这里我们选择125MHz

9、这里我们直接将PCIE协议转换成AXI协议,而不选择AXI Stream协议,简化我们的操作

1、厂商ID,专属于Xilinx的PCIE的ID,是固定的。

2、设备ID,与厂商ID一起指明数据的类型,被使用选择PCIE上位机的软件驱动。

3、版本ID,指明使用该PCIE IP进行设置的版本

4、子厂商ID,用来更近一步的区分Xilinx旗下的厂商

5、子系统ID,用来识别板卡的的ID

6、PCIE在实验中承担的角色,这里我们选择默认即可

1、首先使能 PCIE to AXI Lite Master Interface ,这样可以在主机一侧通过PCIE 来访问用户逻辑侧寄存器或者其他AXI4-Lite 总线设备

2、主机侧PCIE BAR 地址与用户逻辑侧地址是不一样的,这个设置就是进行BAR 地址到AXI 地址的转换,比如主机一侧 BAR 地址为0, IP 里面转换设置为 0x80000000,则主机访问 BAR 地址 0 转换到AXI LIte 总线地址就是0x80000000,这点的理解特别重要

3、选择64bit 使能

4、用来实现PCIE 直通用户逻辑访问,可用于低延迟数据传输,这里不选择。

1、选择消息中断,因为下面的工程中使用了2个中断,所以这里我们选择2

2、引脚中断,这里选不选择意义不大

其余的默认设置即可。

1、2、Number of DMA Read Channel(H2C)和Number of DMA Write Channel(C2H)通道数,对于PCIE2.0 来说最大 只能选择 2,也就是 XDMA 可以提供最多两个独立的写通道和两个独立的读通道,独立的通道对于实际应用中 有很大的作用,在带宽允许的前提前,一个PCIE 可以实现多种不同的传输功能,并且互不影响。这里我们选择1。

其余的默认即可。

这里我们不共享任何逻辑。

经过上面的设置,我们已经定制了常规的XDMA IP,接下来讲解常用的Block Design设计。

PCIE Endpoint的工程框图

这里我们使用米联客中的一个例子,个人认为这是上面最难的例子了,涉及到了XDMA中断的使用。(这里只做粗略介绍,想详细学习的还是得看米联客官方的资料)

本例子主要讲述基于 PCIE XDMA IP 实现的一个图像传输应用,图像的数据流控制主要用到了 VDMA IP。整个项目的框图如下:

5b664abe-f872-11eb-9bcf-12bb97331649.png

由上图可以看出,图像数据是由 PC 端产生,然后用过 XDMA 传输到 ZYNQ 的 DDR3(通过 HP 接口),数据再经过一个 MM2S 的 VDMA 从 ZYNQ 的 DDR(通过 HP 接口)读出到 AXIS 接口,经过 AXIS to VIDEO 转换到视频时序,可以做视频处理,之后再经过 VIDEO to AXIS 转换到 AXIS 接口,经过 MM2S 的 VDMA 存入 DDR, XDMA再从 DDR 将图像数据读出到底 PC。这里面实际上包含了两条传输路径,一条是 PCIE 到视频,一条是视频到 PCIE,一个工程,两个操作例子,很有参考意义。

从上面的工程我们可以学到,FPGA 端主要实现如下功能

1、 XDMA 与 DDR 数据通信

2、 VDMA 实现视频数据搬运

3、 可编程 VTC(Video Timing Control)模块,提供视频时序功能

4、 AXIS to Video 模块,实现 axis 到视频时序的转换

5、 图像处理模块,用户可自定义图像处理功能,例程中实现彩色图像的饱和度调整算法

6、 Video to AXIS 模块,实现视频时序到 AXIS 的转换

7、 用户逻辑寄存器模块,可桥接到 XDMA,实现上位机通过 XDMA 对 FPGA 的寄存器控制

8、 读取本地图像生成图像传输链表

9、 通过 VDMA 的 MM2S 中断来从 WIN64 传输图像到 FPGA DDR

10、通过 VDMA 的 S2MM 中断来从 FPGA DDR 获取图像数据,这些中断是经过XDMA传输到上位机

关于可以学到的XDMA部分我们已经加粗。

项目的Block Design设计图如下:

5bcc4c60-f872-11eb-9bcf-12bb97331649.png

这里主要介绍一下XDMA在上面的Block Design设计中起到的作用。

1、使用PCIE转AXI的总线将图像数据存储到DDR、将DDR中的数据搬移到DDR中

2、通过AXI_Lite接口来配置两个VDMA的IP,使其能够正常工作起来,配置数据是PC机发送来的数据

3、通过AXI_Lite接口来配置Bram,通过这个ram来与PC机进行一定的数据交互,解决图像断帧的现象

4、通过两个VDMA的中断信号使得XDMA产生中断信号,告诉PC机进行一定的处理

上面的Block Design的设计,我们只讲解了XDMA的作用,至于VDMA的作用,这里不再讲解,因为个人认为VDMA IP还是有点鸡肋,因为需要进行配置、数据也需要上游模块主动进行读取写入。这个完全可以用自定义的AXI IP来代替。

如果真把上面的流程搞明白了,那么可以熟练的实现FPGA开发板通过XDMA与PC机之间的通信。可以熟练掌握PCIE的使用。但是,上面的使用需要经过上位机的配合,至于上位机的书写,我没有掌握的太好,就不多加解释,这个例子在米联客的PCIE教程中有,同学们可以去学习。

PCIE IP的定制

上面我们已经讲解了PCIE作为endpoint如何进行配置与Block Design的搭建。接下来,我们讲解PCIE作为rootpoint如何来进行PCIE的配置与Block Design的设置。

首先点击PCIE IP核:

1、这里选择root port

2、选择开发板上的时钟100MHz

1、这里选择硬核PCIE所在的位置

2、选择PCIE的lane的个数为2个

3、选择PCIE的通信速度为5GT/s

1、厂商ID,专属于Xilinx的PCIE的ID,是固定的。

2、设备ID,与厂商ID一起指明数据的类型,被使用选择PCIE上位机的软件驱动。

3、版本ID,指明使用该PCIE IP进行设置的版本

4、子厂商ID,用来更近一步的区分Xilinx旗下的厂商

5、子系统ID,用来识别板卡的的ID

6、PCIE在实验中承担的角色,这里我们选择默认即可

1、PCIE To AXI的BAR地址空间设置,用于IO的配置空间,也是endpoint to rootport的方向

默认即可

1、2、AXI TO PCIE的BAR空间,也就是rootport to endpoint可以看见的方向。

1、2、AXI总线的最低地址与最高地址

默认即可

默认即可。

PCIE root port的Block Design搭建

1、是endpoint读写rootport的数据通路

2、是rootport读写endpoint的数据通路

上面Block design的搭建其实我一直不明白centerDMA Ip的作用,也没真正下板实现过,这里也就不多说了。因为FPGA作为rootport来使用,本身就很少见。

上面的内容,我们主要介绍了VIVADO中PCIE IP的使用,介绍的比较粗略。尤其是第一个很常用,想进一步了解的同学可以找一找原本的资料,这里我只是介绍了自己的想法。

参考文献

[1]、V3学院

[2]、米联客

本文转自:https://blog.csdn.net/zhangningning1996

本文内容仅代表作者观点,不代表平台观点。

如有任何异议,欢迎联系我们。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1626

    文章

    21665

    浏览量

    601804
  • PCIe
    +关注

    关注

    15

    文章

    1217

    浏览量

    82436
  • dma
    dma
    +关注

    关注

    3

    文章

    559

    浏览量

    100420

原文标题:基于FPGA的PCIE设计(2)

文章出处:【微信号:VOSDeveloper,微信公众号:麻辣软硬件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AMD Vivado Design Suite 2024.2全新推出

    AMD Vivado Design Suite 2024.2 全新推出,使用 AMD Versal Adaptive SoC 进行设计的重大改进。此版本为 AMD Versal 自适应 SoC
    的头像 发表于 11-22 13:54 94次阅读

    vivado导入旧版本的项目,IP核心被锁。

    vivado导入其他版本的项目的时候,IP核被锁,无法解开,请问该如何解决。 使用软件:vivado 2019.2 导入项目使用版本:vivado 2018
    发表于 11-08 21:29

    Vivado中FFT IP核的使用教程

    本文介绍了Vidado中FFT IP核的使用,具体内容为:调用IP核>>配置界面介绍>>IP核端口介绍>>MATLAB生成测试数据>>测试verilogHDL>>TestBench仿真>>结果验证>>FFT运算。
    的头像 发表于 11-06 09:51 363次阅读
    <b class='flag-5'>Vivado</b>中FFT <b class='flag-5'>IP</b>核的使用教程

    Cadence展示完整的PCIe 7.0 IP解决方案

    十多年来,Cadence 对 PCIe 技术的坚定承诺和支持,在业界有目共睹。我们深知强大 PCIe 生态系统的重要性,并感谢 PCI-SIG 提供的平台。在 PCI-SIG 开发者大会迎来 32 周年之际,Cadence 宣布面向 HPC/AI 市场推出完整的
    的头像 发表于 08-29 09:14 421次阅读
    Cadence展示完整的<b class='flag-5'>PCIe</b> 7.0 <b class='flag-5'>IP</b>解决方案

    新思科技PCIe 7.0验证IP(VIP)的特性

    在近期的博文《新思科技率先推出PCIe 7.0 IP解决方案,加速HPC和AI等万亿参数领域的芯片设计》中,新思科技宣布推出综合全面的PCIe Express Gen 7(PCIe 7
    的头像 发表于 07-24 10:11 549次阅读
    新思科技<b class='flag-5'>PCIe</b> 7.0验证<b class='flag-5'>IP</b>(VIP)的特性

    PCIe插槽竟然能玩出花样?多个最新PCIe扩展硬盘方式!#PCIe扩展 #PCIe #硬盘盒

    硬盘PCIe
    ICY DOCK硬盘盒
    发布于 :2024年07月11日 17:21:28

    新思科技推出业界首款PCIe 7.0 IP解决方案

    PCIe 7.0 IP解决方案,加速万亿参数领域的芯片设计 新思科技推出业界首款完整的PCIe 7.0 IP解决
    的头像 发表于 06-29 15:13 578次阅读

    新思科技推出业界首款PCIe 7.0 IP解决方案

    新思科技(Synopsys)近日宣布,推出业界首款完整的PCIe 7.0 IP解决方案,包括控制器、IDE安全模块、PHY和验证IP。该解决方案可以助力芯片制造商满足计算密集型AI工作负载在传输海量
    的头像 发表于 06-25 09:46 453次阅读

    FPGA的PCIE接口应用需要注意哪些问题

    之间传输时可能会受到衰减、反射、串扰等问题的影响,从而影响性能和可靠性。 PCIe IP核和设计优化 : 使用的PCIe IP核可能有其自身的性能限制,而设计中的数据路径优化程度也会
    发表于 05-27 16:17

    AMD Versal™ Adaptive SoC CPM PCIE PIO EP设计CED示例

    本文可让开发者们看懂 AMD Vivado Design Tool 2023.2 中的“AMD Versal Adaptive SoC CPM PCIE PIO EP 设计”CED 示例。‍
    的头像 发表于 05-10 09:39 509次阅读
    AMD Versal™ Adaptive SoC CPM <b class='flag-5'>PCIE</b> PIO EP设计CED示例

    如何利用Tcl脚本在Manage IP方式下实现对IP的高效管理

    Vivado下,有两种方式管理IP。一种是创建FPGA工程之后,在当前工程中选中IP Catalog,生成所需IP,这时相应的IP会被自动
    的头像 发表于 04-22 12:22 728次阅读
    如何利用Tcl脚本在Manage <b class='flag-5'>IP</b>方式下实现对<b class='flag-5'>IP</b>的高效管理

    PCIe可以添加哪些定位手段?PCIe需要的debug设计

    如图所示,PCIe IP作为endpoint与RC对接,用户实现了应用逻辑,与PCIe IP进行交互,交互信号中data格式为TLP报文格式,且交互信号包含相应的控制信号,例如
    的头像 发表于 02-26 18:19 1281次阅读

    如何禁止vivado自动生成 bufg

    操作: 打开Vivado工程,并进入项目导航器窗口。 选择下方的"IP"选项卡,展开"Clocking"选项。在这
    的头像 发表于 01-05 14:31 1959次阅读

    FPGA实现基于Vivado的BRAM IP核的使用

    文章是基于Vivado的 2017.1的版本,其他版本都大同小异。 首先在Vivado界面的右侧选择IP Catalog 选项。
    的头像 发表于 12-05 15:05 1551次阅读

    使用 PCIE 更新 AMD ZYNQ™ 的 QSPI Flash 参考设计

    的内部资源包括 DDR 控制器,QSPI 控制器,OCM,IIC,SPI 等。 本教程提供一个最小的参考设计,使上位机可以通过 PCIE 端口,通过 S_AXI_GP0 端口访问 ZYNQ 内部
    发表于 11-30 18:49