ZYNQ AXI总线解析

一,概述

总线是一组传输通道,是各种逻辑器件构成的传输数据的通道,一般由数据线、地址线、控制线等构成。接口是一种连接标准,又被称为物理接口。协议就是传输数据的规则。

ZYNQ AXI总线解析

二,详细介绍

1,AXI总线介绍

AXI4 总线和 AXI4-Lite 总线具有相同的组成部分:

(1)读地址通道,包含 ARVALID, ARADDR, ARREADY 信号;

(2)读数据通道,包含 RVALID, RDATA, RREADY, RRESP 信号;

(3)写地址通道,包含 AWVALID,AWADDR, AWREADY 信号;

(4)写数据通道,包含 WVALID, WDATA,WSTRB, WREADY 信号;

(5)写应答通道,包含 BVALID, BRESP, BREADY 信号;

(6)系统通道,包含:ACLK,ARESETN 信号。

AXI4 总线和 AXI4-Lite 总线的信号也有他的命名特点:

读地址信号都是以 AR 开头(A:address;R:read)

写地址信号都是以 AW 开头(A:address;W:write)

读数据信号都是以 R 开头(R:read)

写数据信号都是以 W 开头(W:write)

应答型号都是以 B 开头(B:back(answer back))

AXI4-Stream 总线的组成有:

(1)ACLK 信号:总线时钟,上升沿有效;

(2)ARESETN 信号:总线复位,低电平有效

(3)TREADY 信号:从机告诉主机做好传输准备;

(4)TDATA 信号:数据,可选宽度 32,64,128,256bit

(5)TSTRB 信号:每一 bit 对应 TDATA 的一个有效字节,宽度为 TDATA/8

(6)TLAST 信号:主机告诉从机该次传输为突发传输的结尾;

(7)TVALID 信号:主机告诉从机数据本次传输有效;

(8)TUSER 信号 :用户定义信号,宽度为 128bit。

对于 AXI4-Stream 总线命名而言,除了总线时钟和总线复位,其他的信号线都是以 T 字母开头,后面跟上一个有意义的单词,看清这一点后,能帮助读者记忆每个信号线的意义。如 TVALID = T+单词 Valid(有效),那么读者就应该立刻反应该信号的作用。

2,AXI接口介绍

ZYNQ将 ARM 和 FPGA 集成到了一个芯片上,支持 AXI4-Lite,AXI4 (又称为AXI-Full)和 AXI4-Stream 三种总线协议,注意 PS 与 PL 之间的接口(AXI-GP 接口,AXI-HP 接口以及 AXI-ACP 接口)只支持 AXI-Lite和 AXI 协议这两种总线协议。也就是说 PL 这边的 AXI-Stream 的接口是不能直接与 PS 对接的,需要经过 AXI4 或者 AXI4-Lite 的转换。比如 VDMA 这个IP核 ,就实现了在 PL 内部 AXI4 到 AXI-Stream 的转换,VDMA直接就是利用 AXI-HP 接口传输数据。4 条 AXI GP通道(2 个从机、2 个主机)和 4 条 AXI HP 通道(均为从机)能够提升系统数据交互带宽,使得软硬协同设计变得更为快速。AXI HP 总线是专为大吞吐量数据传输设定的,AXI GP则更多的是为了方便 ARM 侧对 PL(FPGA 逻辑)进行常规的数据寄存器读写控制或状态监控。

三种 AXI 接口分别是:

AXI-GP 接口(4 个):是通用的 AXI 接口,包括两个 32 位主设备接口和两个 32 位从设备接口,使用该接口可以访问 PS 中的片内外设。

AXI-HP 接口(4 个):是高性能/带宽的标准的接口,PL 模块作为主设备连接(从下图中箭头可以看出)。主要用于 PL 访问 PS 上的存储器(DDR 和 On-Chip RAM)

AXI-ACP 接口(1 个):是 ARM 多核架构下定义的一种接口,中文翻译为加速器一致性端口,用来管理 DMA之类的不带缓存的 AXI 外设,PS 端是 Slave 接口。

我们可以双击查看 ZYNQ 的 IP 核的内部配置,就能发现上述的三种接口,图中已用红色方框标记出来,我们可以清楚的看出接口连接与总线的走向:

ZYNQ AXI总线解析

1,基本结构

(1) 突发式读的时序图

ZYNQ AXI总线解析

这是一个 4 个数据的突发读操作。在这个实例中,主机发送地址信息,然后从机在一个时钟周期之后接收到地址信息。地址信号出现在地址总线后,数据传输则在读数据通道实现。从机保持 RVALID 信号为低电平,一直到读数据总线 RDATA 是有效的,则拉高RVALID 信号。对于突发传输的最后一个读数据,从机通过 RLAST 信号的拉高,指示此时数据总线 RDATA 上传输的是最后一个读数据。主机可以通过拉低 RREADY 信号来减慢从机送数据的速度。在 RVALID 为高电平时,从机会判断此时 RREADY 信号是否也为高,若为高,表明此次传输的 RDATA 数据已经被接收;若为低,则继续保持 RVALID 为高,并且保持当前的读数据 RDATA 不变,直到 RREADY 拉高为止,接着才会送下一个有效数据。

ZYNQ AXI总线解析

(2)重叠读突发传输实例

在从机接收第一个地址后(ARVALID 和 ARREADY 都为高电平),主机可以接着发起第二个地址。读数据通道送出的数据会遵循突发传输地址写入的先后,即“先来后到”的原则。

ZYNQ AXI总线解析

(3) 突发式写的时序图

ZYNQ AXI总线解析

这是一次突发写传输的例子,写操作开始于主机在写地址通道发送一个地址和控制信息。然后主机在写数据通道上发送所有的有效写数据。在主机发送最后一个写入数据时,WLAST 信号变成高电平。当从机接收好所有的数据后,从机通过写响应通道将信息反馈给主机,指示写数据已经被接收,写传输完成。

ZYNQ AXI总线解析

2,读写通道详解

AXI 协议一共定义了 5 个独立的通道,每一个通道都是由一组控制和响应信号组成的,使用双向的有效(VALID)信号和准备好(READY)信号实现握手机制。发送端使用有效信号来指示何时有效数据或者控制信息在通道中是有效的。接收端使用准备好信号来指示何时可以接收数据。读数据通道和写数据通道都包含一个结束(LAST)信号来指示何时一个传输中的最后一个数据出现。

读和写地址通道 :
每一个读和写传输都有独立的地址通道。地址通道上有一个传输所需要的全部的地址和控制信息。AXI 协议支持以下地址传输机制:
● 1~16 个可变数据个数的突发传输
● 8~1024bits 可变数据位宽的突发传输
● 跳变、递增和非递增的突发传输
● 专用的或锁定的传输控制
● 系统级的缓存、缓冲控制
● 安全的、专有的传输控制
读数据通道 :
读数据通道包含读数据和从从机返回给主机的全部读响应信息。读数据通道包含:
● 读数据总线,总线宽度可以是 8、16、32、64、128、256、512 或者 1024bits
● 用于指示读传输完成状态的一个读响应信号
写数据通道 :
写数据通道实现从主机到从机的写数据。写数据通道包含:
● 写数据总线,总线宽度可以是 8、16、32、64、128、256、512 或者 1024bits
● 为每 8bits 数据提供一个有效标识位,标示数据总线的每个 byte 是否有效
写数据通道信息会被接收端缓存,因此主机在进行写传输时,无需确认上一次写传输的状态。
写响应通道 :
写响应通道提供了一种让从机对写传输作出响应的机制。所有的写传输都必须基于完成信号的状态确认传输是否成功。每次突发传输都有一次传输完成的信号响应,注意完成信号只在一次突发传输完成后才产生,而不是为一次突发传输中的每个独立的数据产生。

3,接口和互联:

一个典型的系统包含数个主机和从机设备,这些设备通过互联总线的形式连接在一起,AXI 协议将读地址通道,读数据通道,写地址通道,写数据通道,写响应通道分开,各自通道都有自己的握手协议。每个通道互不干扰却又彼此依赖,通过共享的地址总线与多个数据总线来达成平行数据传输。

AXI Interconnect作用是:当存在多个主机以及从机器时,AXI Interconnect负责将它们联系并管理起来。由于 AXI 支持乱序发送,乱序发送需要主机的 ID 信号支撑,而不同的主机发送的 ID 可能相同,而 AXI Interconnect解决了这一问题,他会对不同主机的 ID 信号进行处理让 ID 变得唯一。

ZYNQ AXI总线解析ZYNQ AXI总线解析

AXI 协议提供单一接口定义的形式来描述这种互联:
● 在主机与互联总线之间
● 在从机与互联总线之间
● 在主机与从机之间
大多数系统使用以下三种互联方式中的一种:
● 地址和数据总线共享
● 地址共享,有多个数据总线
● 多层互联,即有多个地址和数据总线

三,信号描述

1,全局信号

ZYNQ AXI总线解析

2,写地址通道信号

对于一般的应用,AWBURST、AWLOCK、AWCACHE 和 AWPROT 通常赋一个特定的值,即设定为固定的工作模式即可。

ZYNQ AXI总线解析

3,写数据通道信号

ZYNQ AXI总线解析

4,写响应通道信号

ZYNQ AXI总线解析

ZYNQ AXI总线解析

5,读地址通道信号

ZYNQ AXI总线解析

6,写数据通道信号

ZYNQ AXI总线解析

ZYNQ AXI总线解析

四,握手过程

全部 5 个通道使用同样的 VALID 和 READY 握手机制来实现数据和控制信息的传输。这个双向的流控制机制使主机和从机能控制数据和控制信息的传输速度。发送端产生 VALID 信号指示数据或控制信息有效,接收端产生 READY 信号表明它可以或已经接收数据或控制信息。只有在 VALID 和 READY 信号都为高电平的时候才能进行有效的传输,VALID 和 READY 信号的出现有三种关系如下

1,VALID 先变高 READY 后变高:在箭头处信息传输发生。

发送端送出数据或控制信息(INFORMATION),并将VALID 信号拉高。来自发送端的数据或控制信息保持稳定直到接收端将 READY 信号拉高,指明接收端已经接收数据或控制信息。箭头表明了传输实际发生的时机。

ZYNQ AXI总线解析

2,READY 先变高 VALID 后变高:在箭头处信息传输发生。

接收端在 VALID 信号拉高之后,才将 READY 信号拉高,表示发送端发出的数据或控制信息被接收。这意味着,接收端若在 VALID 信号拉高之前就已经将 READY 拉高表示准备好,那么只需要 1 个时钟周期就可以完成一次数据或控制信息的有效传输。箭头表明传输发生的时机。

ZYNQ AXI总线解析

3,VALID 和 READY 信号同时变高:信息传输立马发生,如图箭头处指明信息传输发生。

接收端送出的 READY 信号在 VALID 拉高之后才拉高,在这个握手机制中是允许的。如果 READY 为高电平,在 VALID 拉高之前将 READY 拉低也是允许的。如图所示,在这个实例
中,VALID 和 READY 信号同一个时钟周期拉高了,那么这正好是一次有效的数据或控制信息的传输。

ZYNQ AXI总线解析

 

上一篇:pynq axi4读写ddr python代码


下一篇:单目、双目和三目运算