使用DMA/Bridge Subsystem for PCI Express相关

通过对Xilinx Demo以及相关知识进行了解,得出部分个人总结,可能有错误的地方,请大家指正!
首先对PCIe接口做一简单介绍:
在这里插入图片描述
首先对整个IP core的内部结构做简单了解。
通过该IP core,位于上层(FPGA)的用户应用可以与主机通过PCIE接口进行通信。在上图中按照从右往左,从上往下的方向进行介绍:
1.Integrated Blockfor PCIe IP
即最底层的PCIe数据收发模块。
2.用户接口分为 4 个独立接口,数据通过这些接口在 PCIe 链路与用户应用之间进行传输:RQ(请求方请求)、RC(请求方完成)、CQ(完成方请求)以及CC(完成方完成)接口
在PCIe传输协议中,一般一个事务的起始发出方被称为请求方,而对请求方消息进行实际执行的一方被称为完成方,事务类型可能是寄存器的读写、内存读写之类,所以PCIe设备可根据不同的事务具有请求方或者完成方的身份。在FPGA设备中,用户可以是请求主机(PC或其他设备)完成相应事务的发起方,也可以是响应主机事务的完成方,所以在这里的四个接口可以理解如下:
• PCIe 完成方请求 (Completer Request, CQ) 接口,源自链路的请求通过该接口交付到用户应用。这里主机向PCIe设备(指FPGA)发出请求消息,最终由用户逻辑完成相关的事务,所以在CQ接口这里,对主机来说它是完成方,对用户逻辑来说它是请求方,所以这里称为完成方请求。(PS:这里纯属个人理解,可能和文档的本意有出入,还请各位指出)其他三个接口类似分析。
• PCIe 完成方完成 (Completer Completion, CC) 接口,用户应用通过该接口将响应发送回完成方请求接口。用户应用可将所有非转发 (Non-Posted) 的传输事务作为独立拆分的传输事务来进行处理。即,它可持续接受完成方请求接口上的新请求,同时针对请求发送完成 (completion) 包。
• PCIe 请求方请求 (Requester Request, RQ) 接口,用户应用可通过该接口生成请求并发送到链路随附的远程 PCIe 器件。
• PCIe 请求方完成 (Requester Completion, RC) 接口,用户应用可通过该接口接收来自链路的完成包(以作为 PCIe请求方来响应用户应用请求)
3.H2C通道
H2C 通道负责处理从主机到卡的 DMA 传输。它负责根据最大读取请求大小和可用内部资源来拆分读取请求。
4.C2H通道
C2H 通道负责处理从卡到主机的 DMA 传输。
5.AXI写入/读取接口(MM或ST)
根据使用环境来选择协议类型,通过DDR进行大量数据读写时,会使用AXI-full总线模式,也就是在IP核设置中的AXI Memory Mapped选项。AXI Stream协议是不包含地址线的,所以在读写FIFO等没有地址的数据缓存区时,可以使用AXI Stream协议,也就是AXI Stream选项。
6.IRQ模块
IRQ 模块会接收到来自用户逻辑的中断连线,其数量可配置,每个 DMA 通道 1 条中断连线。此模块负责基于 PCIe 生
成中断。可在 IP 配置期间指定对 MSI-X、MSI 和传统中断的支持。
7.目标桥接器
目标桥接器用于接收来自主机的请求。根据 BAR,请求将通过 AXI4-Lite 主接口转发至内部目标用户或 CQ 旁路端口。
在下游用户逻辑返回非转发请求的数据后,目标桥接器就会生成读取完成 TLP,并通过 CC 总线将其发送至 PCIe IP。
8.PCIe to AXI Lite Master Interface
在BARs页面中,会有PCIe to AXI Lite Master Interface一栏,由于主机访问地址与下位机实际控制地址是不一样的,所以PCIe to AXI Lite Master Interface这个接口就是将上位机地址与下位机地址进行一个映射,将两部分联系起来,比如在这一栏中设置0x80000000,那么实际的意义就是bar的0地址对应的是外设的0x80000000地址,当上位机对0地址进行操作的时候实际是对下位机的0x80000000地址进行操作。
9.主机 DMA 旁路(AXI MM 主接口)
到达 PCIe 到 DMA 旁路 BAR 的主机请求都将被发送到此模块。旁路主端口属于 AXI4 MM 接口,支持读写访问。
以下为根据Xilinx的一个通过PCIe接口对DDR进行读写的demo配置:
1.首先是Basic界面
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

集成块用户接口原理图

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值