pcie dma 相关知识整理(xilinx平台)

本文介绍了PCIe的DMA和PIO数据传输方式,重点解析了DMA的读写过程。在DMA模式下,数据传输不依赖CPU,效率更高。对比来看,PIO模式虽然简单但效率较低。文章还详细讨论了Xilinx平台上的PCIe参考例程,包括xapp859和xapp1052的设计要点和常见问题,指出XAPP1052在DMA效率和内存处理上的局限性,并提及了开源的riffa解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PCIE的DMA和PIO介绍

DMA数据传输方式

DMA(Direct Memory Access),直接内存访问,在该模式下,数据传送不是由CPU负责处理,而是由一个特殊的处理器DMA控制器来完成,因此占用极少的CPU资源。

DMA读过程
1、驱动程序向操作系统申请一片物理连续的内存;
2、主机向该地址写入数据;
3、主机将这个内存的物理地址告诉FPGA;
4、FPGA向主机发起读TLP请求—连续发出多个读请求;
5、主机向FPGA返回CPLD包—连续返回多个CPLD;
6、FPGA取出CPLD包中的有效数据;
7、FPGA发送完数据后通过中断等形式通知主机DMA完成;

DMA写过程
1、驱动程序向操作系统申请一片物理连续的内存;
2、主机将这个内存的物理地址告诉FPGA;
3、FPGA向主机发起写TLP请求,并将数据放入TLP包中—连续发出多个写请求;
4、FPGA发送完数据后通过中断等形式通知主机DMA完成;
5、主机从内存中获取数据;

PIO数据传输方式

PIO(Programmed Input-Output),可编程输入输出,在该模式下,数据传送由CPU执行I/O端口指令来按照字节或更大的数据单位来处理,占用大量的CPU资源,数据传输速度也大大低于DMA模式。

关于PIO相关实验, 参考 PCIE PIO工程验证

对比PIO和DMA数据传输方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值