惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
雷峰网
雷峰网
S
SegmentFault 最新的问题
博客园 - 【当耐特】
博客园_首页
量子位
爱范儿
爱范儿
博客园 - 叶小钗
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
V
V2EX
美团技术团队
V
Visual Studio Blog
博客园 - 三生石上(FineUI控件)
IT之家
IT之家
Hugging Face - Blog
Hugging Face - Blog
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
博客园 - 聂微东
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The Cloudflare Blog
宝玉的分享
宝玉的分享
WordPress大学
WordPress大学
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

博客园 - huakaimanlin的博客

verilog 扰乱信号名方法 volatile 关键字用法及场景总结 iverilog、gtkwave工具链接 Petalinux 2018.3构建zynq7020 linux系统 Prototyping ARM Cortex-A Processors using FPGA platforms 资料汇总 AXI unaligned 芯片之SRAM介绍 仿真、硬件加速验证、FPGA原型验证的一些基础概念 ARM 相关文章分享 开源VIP 分享 分享zynq acp的用法example 异步CDC及异步FIFO分享 Verilog 排序算法 预读取FIFO实现原理 Linux系统硬盘读写测试--转载 异步fifo转载 基于CYUSB3014的Mass Storage方案介绍 彩色转灰度图像如何而来。
基于Lattice Crosslink PCIe DMA框架(一种通用PCIe DMA框架...
huakaimanlin的博客 · 2022-04-11 · via 博客园 - huakaimanlin的博客

  上图所示为一种通用的PCIe DMA框架图,对于FPGA来讲,PCIe核本身一般是硬核,PCIe核内部负责的是PCIe协议层的东西,对外的接口一般是通过AXI Stream或者类似的接口出来,协议的内容为TLP包的内容,因此在实现基于PCIe的DMA是需要直接和TLP报文打交道,当然如果使用厂家提供的DMA IP是不用关心TLP的,厂家一般会把TLP的报文格式封装起来,对外只留AXI协议的访问接口。好处是可以直接拿来用,满足大部分引用场景;但是也就了解不了其中的原理了。

  比较通用的DMA一般是会做成链式DMA,Altera提供的DMA较早的器件上都是提供了一个Channing DMA的源码的实例,实际使用过程中还是有些bug存在的。Xilinx厂家生成的一个很简单的PIO访问的例子,不能满足大部分应用场景。还有一些开源的DMA,个人看过在Xilinx平台上实现的开源PCIe DMA “epee”,代码很高,不过没有相关文档,需要看代码,感兴趣的读者可以搜索去看一下。

  链式DMA的应用场景是在主机单次配置的数据需要保存在主机DDR中的多个不连续的位置时用到,此时的效率最高,可以支持的场景更多。不过大部分的应用场景其实也用不到链式DMA;上图所示为一个Simple模式的DMA,即通过简单的配置地址、长度、开始位就可以开启DMA传输,已经在Lattice Crosslink 系列及安路的PH100平台上验证,效率也很好,在大数据量传输的时候效率可以达到80%。实现上述DMA的初衷也是上述两个厂家不能提供有效好用的DMA,提供的Demo太过粗糙,于是笔者在结合以前使用经验及开源代码的理解基础上实现了上述DMA框架,分享给大家。

  另外分享一个相关的连接:http://xillybus.com/tutorials/pci-express-tlp-pcie-primer-tutorial-guide-1/ 

  感兴趣的可以加Q交流:QQ:314097602

************************************************************************************************
作者:huakaimanlin
出处:https://www.cnblogs.com/huakaimanlin/
版权所有,如需转载请声明出处