最近又看了一遍AXI协议,下面是AXI4_Full的内容,至于AXI_Lite和AXI_Stream的内容,请参看官方文档。

由于工作内容只涉及到这些,因此完整的协议剩余部分就不再更新了


AXI学习笔记:

一、UG1037(概述)

AXI(高级可扩展接口),是arm AMBA(高级微控制器总线架构)的一部分。1996年首次引入。

经过不断地更新、升级,目前所使用的接口是AXI4接口。

AXI4有三种接口类型:

  1. AXI4(AXI4_Full):高性能存储器映射需求(功能比较全,占用资源最多)

主机对从机进行读操作or写操作时,需要指定一个目标地址,从而对其进行数据的读取or存储。(处理大量数据)

  1. AXI4_Lite:简单的、低吞吐率的存储器映射通信(简化的AXI4_Full)

(对寄存器进行读写操作)低速通信

  1. AXI4_Stream(ST):高速的流数据通信(可用于视频数据传输)

·AXI4_Full和AXI4_Lite都属于存储器映射,在利用这两个接口进行通信时,主机需要指定需要读写的地址。

而AXI4_Stream不用,因为它不属于存储器映射。

AXI优势:

·Xilinx的很多IP核都带有AXI接口,因此掌握了AXI协议,很多IP核的使用都会变得简单。

·允许高吞吐率突发,最大支持256个数据传输(AXI4_Full),并且只需要给定一个单一的地址

  (即:在利用AXI4接口进行读写操作时,只需要指定一个单一地址)

·AXI4_Lite,只支持单次传输一个数据,不支持突发传输

·AXI4_Stream:不需要指定地址,单次突发传输个数不受限制。

AXI的工作方式:

描述了单个主机和从机之间的接口,用于主从机之间交互信息的IP核。多个存储器映射的AXI主从机可以通过AXI基础结构IP核(AXI Interconnect IP and AXI SmartConect IP)进行连接。

AXI4和AXI4_Lite都包含5个不同的通道。

//主机对从机的读操作

·AR(读地址)

·R(读数据)

//主机对从机的写操作

·AW(写地址)

·W(写数据)

·B(写响应)

这5个通道的意思就是:把AXI4里的端口信号分成了5组而已。

axios直接调接口_数据

该IP核带AXI的主接口M_AXI,和从接口S_AXI。

其实这就是一个AXI SmartConnect IP核,通过M_AXI连接master,通过S_AXI连slave,从而实现master和slave的互连。

aclk和arestn分别是全局时钟和复位信号。

S_AXI是一个接口,它里面的端口信号被隐藏了,如果把该接口展开,就可以看到里面详细的端口定义。

axios直接调接口_数据_02

将M_slave展开,它里面的端口信号和S一样的。只不过S展开以字母s开头,M展开以m开头。

前文所说的5个通道,其实就对应①②③④⑤所对应的5组信号。

axios直接调接口_fpga_03

上图展示了AXI4的读操作:

(这只是一个简化框图,它并没有把里面每一个端口的时序作详细讲解)

可以看出

·读地址通道携带了地址和控制信息,这个控制信息包括了突发长度,而读数据通道返回读到的数据。

·地址和控制信息只包含一个地址,却返回了很多个数据,这是根据突发长度的大小来返回不同个数的数据。

写操作示意图:

axios直接调接口_数据_04

·由于读写的地址和数据通道相互独立,因此支持双向同时传输

·AXI4:只需指定一个地址,最大可支持256个数据传输(即突发传输)

  AXI4_Lite:和AXI4比较类似,但不支持突发传输。

  AXI4_Stream:对于一些不存在地址,只关心数据流的场景时使用。单一通道、单向数据流通信

基础架构的IP核:

·AXI Register slices(寄存器片)(for pipelining)

·AXI FIFOs(for buffering/clock conversion)

·AXI Interconnect IP and AXI SmartConect IP (for connecting memory-mapped IP together)

  都用于连接一个or多个存储器映射的主设备到一个or多个存储器映射的从设备

(AXI_Full和AXI_Lite接口)

·AXI DMA,可实现存储器映射的数据流到Stream数据流的转换(for memory-mapped to stream conversion)(move streams in and out of memory)

·AXI Performance Monitors and Protocol

·AXI Verification IP

使用vivado AXI IP核搭建RTL工程

创建和封装带AXI接口的IP核(封装完成后,软件会生成模板代码)

AXI Interconnect IP使用模型

·Conversion Only(1对1)

·N对1

·1对N

·N对M

当一个master与一个slave互连时,AXI Interconnect IP可以实现各种conversion和pipelining functions:

·Data width conversion(数据位宽转换)

·Clock rate conversion(时钟速率转换)

·AXI4_Lite从机自适应

·AXI3从机自适应

·Pipelining,such as a register slice or data channel FifO

  • IHI0022D(端口和时序)

通道定义:

·AXI4_Full、AXI4_Lite都有5个通道,每个独立通道都包含一组信息信号和VALID-READY信号,用于提供双向的握手机制。

·information source使用VALID表示当前通道的地址、数据or控制信息有效;

destination使用READY表示它可以接收信息了

information source和destination并不是指master和slave,而是指VALID、READY的发起端、接收端

·读写数据通道:都包含LAST信号,表示当前传输的最后一个数据。由information source拉高

读数据通道:包含来自于从机的data(数据位宽可以是8、16、32、64、128、256、512 or 1024bits wide)和read response information(表示读传输完成)

区别:写响应通道不包含写响应,写响应是一个独立的通道

  写数据通道:包含主机给从机的写数据(数据位宽可以是8、16、32、64、128、256、512 or 1024bits wide)

并通过频闪信号WSTRB(a byte lane strobe signal)用于表示当前数据的哪一个字节有效

比如:32bits的数据,有4个byte,所以WSTRB共有4位,分为表示这4个字节是否有效

·读写地址通道:携带所需的地址(指起始地址,其余地址由从机计算)和控制信息

·写响应通道:从机反馈给主机的,用于表示当前写操作完成

信号描述:(以AXI4_Full来说)

  1. 全局信号(不属于某个通道)

 ·ACLK:所有信号都在时钟上升沿进行采样

 ·ARESET:低电平有效

 2.写地址通道信号

source表示由哪一端控制发出

axios直接调接口_fpga_05

 

axios直接调接口_fpga_06

 3.写数据通道信号

WATRB可用于屏蔽不需要写入的数据 

axios直接调接口_数据通道_07

 4.写响应通道

axios直接调接口_IP_08

 5.读地址通道

 6.读数据通道

包含了BRESP信号

接口:

·复位期间:

·master接口必须驱动ARVALID、AWVALID、WVALID为低

·slave必须驱动RVALID、BVALID为低

其余信号可以为任意值

复位之后可以拉高VALID信号

双向握手机制表明主机和从机都可以控制传输速率,当VALID和READY同时为高时,传输才可以发生

写响应要跟在写传输的最后一个数据后

读数据必须跟在读地址后面

单箭头:所指向的信号可以提前/滞后源头拉高或拉低

双箭头:必须滞后

BVALID必须在WVALID和WREADY、WLAST都拉高之后才能拉高

RVALID要在ARVALID、ARREADY之后拉高

AXI4_Lite:P121