背景:FPGA的系统搭建中必定出现DMA和AXI总线的相关内容。
目的:介绍DMA与AXI总线的相关知识,以便理解与应用。
相关内容:
FPGA基础知识(一)UG998中FPGA相关的硬件知识与基本结构
FPGA基础知识(四)UG902 RTL仿真与输出
FPGA基础知识(六)UG586 Mermoy Interface Solutions内存接口的生成与使用
FPGA基础知识(七)片上单片机
vivado HLS硬件化指令(一)HLS针对循环的硬件优化
vivado HLS硬件化指令(二)HLS针对数组的硬件优化
vivado HLS硬件化指令(三)HLS增大运算吞吐量的硬件优化
目录
一、三种类型的AXI总线
二、不同类型的DMA
2.1 GPIO
2.2 PL general purpose AXI
2.3 GP AXI utlilizing PS DMAC
2.4 High performance w/DMA
2.5 ACP w/DMA
2.6 几种DMA的总结
三、DMA基础知识
3.1 DMAC为DMA控制器,
3.2 PL based DMA
3.3 PS与PL之间的AXI HP接口
四、AXI总线知识
(一)AXI总线是什么?
(二)AXI4的优势
(三)AXI4的工作模式
1.握手机制
2.axi的工作模式:
A.读操作:
B.写操作:
3.axis工作模式
搭建系统中有一个重要的因素是DMA:(Direct Memory Access),即直接存储器存取,是一种快速传送数据的机制。数据传递可以从适配卡到内存,从内存到适配卡或从一段内存到另一段内存。
可以将数据传到DDR和OCM
可以直接将data传输到memory
以下内容转自:https://www.cnblogs.com/lifan3a/articles/4682464.html
AXI是ARM 1996年提出的微控制器总线家族AMBA中的一部分。AXI的第一个版本出现在AMBA3.0,发布于2003年。当前的最新的版本发布于2010年。
AXI4:主要面向高性能地址映射通信的需求;
AXI4-Lite:是一个简单地吞吐量地址映射性通信总线;
AXI4-Stream:面向高速流数据传输;
AXI4总线分为主、从两端,两者间可以连续的进行通信。
ISE从12.3版本,Virtex6,Spartan6芯片开始对AXI4总线提供支持,并且随着Xilinx与ARM的合作面逐渐展开而得到大力推广。
1.通过统一的AXI接口,开发者为开发ip core只需要学习一种协议即可;
2.AXI4是面向地址映射的接口,允许最大256轮的数据突发传输;
3.AXI4-Lite是一个轻量级的地址映射单次传输接口,占用很少的逻辑单元;
4.AXI4-Stream去掉了地址项,允许无限制的数据突发传输规模;
NetFPGA10G采用了AXI4系列总线架构,而Xilinx从Virtex6,Spartan6才开始支持AXI4。因此斯坦福的开发人员对在Virtex6上编译出的带有AXI4总线的ngc文件进行了修改加载到NetFPGA10G的ipcore中,使之骗过ISE,继续网表映射流程。
NetFPGA10G主要使用了其中的轻量级AXI4-lite(后文简写为axi)以及AXI4-stream(后文简写为axis)两者。前者用于CPU与ip core之间的通信;后者用于各ip core之间进行高速数据传输。如果将整个构架分为控制层面与数据层面,则axi主要负责控制层面,axis主要负责数据层面。
本文后续内容主要对轻量级axi以及axis总线进行介绍,如需AXI4整体总线通信模式,请参看ARM AXI4 Specification, Xilinx UG761 AXI Reference Guide.
AXI4所采用的是一种READY,VALID握手通信机制,即主从模块进行数据通信前,新根据操作对各所用到的数据、地址通道进行握手。主要操作包括传输发送者A等到传输接受者B的READY信号后,A将数据与VALID信号同时发送给B。如下图所示:
axi总线分为五个通道:
其中ACLK为axi总线时钟,ARESETN是axi总线复位信号,低电平有效;读写数据与读写地址类信号宽度都为32bit;READY与VALID是对应的通道握手信号;WSTRB信号为1的bit对应WDATA有效数据字节,WSTRB宽度是32bit/8=4bit;BRESP与RRESP分别为写回应信号,读回应信号,宽度都为2bit,‘h0代表成功,其他为错误。
顺序为主与从进行读地址通道握手并传输地址内容,然后在读数据通道握手并传输所读内容以及读取操作的回应,时钟上升沿有效。如图所示:
顺序为主与从进行写地址通道握手并传输地址内容,然后在写数据通道握手并传输所读内容,最后再写回应通道握手,并传输写回应数据,时钟上升沿有效。如图所示:
axis分为:
通信时序如图所示:
axi与axis是AXI4总线中通信复杂度较低的两条总线,最大开发难度存在于axi的控制平面向axis的数据平面下发参数时,由于axi与axis时钟频率不同而产生的跨时钟域数据传输问题。
AXI-Lite具有轻量级,结构简单的特点,适合小批量数据、简单控制场合。不支持批量传输,读写时一次只能读写一个字(32bit)。
AXI4接口和AXI-Lite差不多,只是增加了一项功能就是批量传输,可以连续对一片地址进行一次性读写。
深鉴科技FPGA2017最佳论文ESE Efficient speech recognition engine with sparse LSTM on FPGA论文详解
PipeCNN论文详解:用OpenCL实现FPGA上的大型卷积网络加速
韩松EIE:Efficient Inference Engine on Compressed Deep Neural Network论文详解
韩松博士毕业论文Efficient methods and hardware for deep learning论文详解
FPGA基础知识(一)UG998相关硬件知识
FPGA基础知识(二)HLS相关知识
FPGA基础知识(三)UG902 接口综合
FPGA基础知识(四)UG902 RTL simulation and export
FPGA基础知识(五)系统集成知识
FPGA基础知识(六)UG586 Mermoy Interface Solutions
FPGA基础知识(七)片上单片机
FPGA基础知识(八)vivado设计流程中的知识
FPGA基础知识(九)SDK相关知识
FPGA基础知识(十)DMA与AXI4总线
尝试用IPcore调用DDR3及相关知识
vivado HLS硬件化指令(一)HLS针对循环的硬件优化
vivado HLS硬件化指令(二)HLS针对数组的硬件优化
vivado HLS硬件化指令(三)HLS增大运算吞吐量的硬件优化
vivado HLS硬件化指令(四)卷积相关的指令优化
卷积操作的HLS优化
FPGA实践教程(一)用HLS将c程序生成IPcore
FPGA实践教程(二)连接片上ARM
FPGA实践教程(三)系统搭建与烧录
FPGA实践教程(四)片上ARM运行程序
FPGA实践教程(五)PS用MIG调用DDR
FPGA实践教程(六)AXI-Lite实现PS与PL通信
FPGA实践教程(八)PS与PL共享DDR
FPGA vivado系统集成操作
DMA在linux下PS端c语言相关内容
数据流输入输出IPcore时c语言相关内容
调通DMA系统集成中遇到的问题
ARM用MIG调用DDR3的c程序解析
MIZ7035上的AXI接口的MIG测试
MIZ7035交叉编译单片机程序运行