赞
踩
Advanced eXtensible Interface (AXI) protocol是有ARM公司提出的高级可扩展接口协议,在AMBA4.0中将其修改升级为AXI4.0。主要包括AXI4.0
、AXI4.0-lite
、ACE4.0
、AXI4.0-stream
这四种。Xilinx从Spartan-6和Virtex-6设备开始,引入了AXI协议,因为其优点有很多,就不罗嗦了。总之,AXI4.0
在ip核以及zynq
的ps
与pl
交互中扮演这重要的角色,所以必须对此协议有一定的认识。
说到协议我想我们最先想到的一定是IIC
、SPI
、485
等总线协议,它们其实和AXI4.0
是由本质区别的。前者是外部通信协议,用于两个控制器之间通信。而AXI4.0
用于控制器内部通信。类似STM32中外设与CPU之间的通信,比如当我们访问串口的数据寄存器时,就需要通过内部协议来访问。当然,zynq
的ps
与pl
交互就属于控制器内部通信,Xilinx选择了AXI4.0
协议作为他们的交互协议。
在ZYNQ平台上,主要用到了AXI4.0协议族中的AXI4.0(AXI4.0-full)
、AXI4.0-lite
、AXI4.0-stream
三种协议。下面是三者的简单比较。
AXI4.0-lite
是AXI4.0-full
的简化版。用于简单、低吞吐量的内存映射通信。
AXI4.0-full
用于高性能内存映射需求。
AXI_stream
用于高速流数据。
AXI4.0-lite
主要用于内核和外设寄存器之间的通信。功能类似STM32中外设与CPU之间的通信时使用的协议,比如当访问串口的数据寄存器时,只访问四个字节的数据,所以使用AXI4.0-lite
就特别合适。再比如,在PL
写一个用于PS
端操作的外设时,其外设寄存器一般通过AXI4.0-lite
总线和PS
交互。AXI4.0-full
主要用于往DDR或者OCM中写入大量数据时使用。AXI_stream
主要用于往FIFO
等没有地址的数据缓冲区传送大量数据时使用。关于每种协议详细的使用会在单独介绍中详细介绍,下面主要描述他们一致的地方。
要对AXI4.0-lite
和AXI4.0-full
有一个全面的整体的框架认识,就必须熟记两点
关于AXI4_lite
协议的详细介绍请参看AXI4_lite协议详解。
关于AXI4-full
协议的详细介绍请参看AXI4-full协议详解。
每个通道在进行数据交互时,都需要先进行双向握手,以保证数据的可靠传输(双向握手控制机制意味着主从双方都可以控制信息移动的速率)。双向握手机制使用xxVALID
和xxREADY
信号线来控制,只有当xxVALID
和xxREADY
信号线都为高电平时,传输线上的信息才有效。下图是三种有效的握手协议时序图。在复位期间,所有的xxVALID
信号必须复位为低电平。
下图是主机在写数据和读数据时五个通道之间的关系。
与AXI4.0-lite
和AXI4.0-full
协议不同,AXI4.0-stream
协议没有上面提到的五个通道。但握手过程与上面的一致,此处不再罗嗦。
对于AXI4.0-stream
协议,经过握手后,直接进行信息传输。关于axi4-stream协议的详细介绍请参看AXI4_stream协议详解。
此处后的文字已经和题目内容无关,可以不看。
qq群:825695030
微信公众号:嵌入式的日常
如果上面的文章对你有用,欢迎打赏、点赞、评论。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。