写作本文时,深深感受到很多英文难以用中文确切表达(上大学后语文彻底还给了老师),请读者遇到难以理解的词句,可以查阅原文。
在xilinx的IP中,常用AXI总线来引出各个端口,AXI总线是ARM推出的,soc通用互联协议。
三种AXI总线分别是:
(1)AXI4:(For high-performance memory-mapped requirements.)主要面向高性能地址映射通信的需求,是面向地址映射的接口,允许最大256轮的数据突发传输;
(2)AXI4-Lite:(For simple, low-throughput memory-mapped communication )是一个轻量级的地址映射单次,即无突发传输接口,占用很少的逻辑单元。
(3)AXI4-Stream:(For high-speed streaming data.)面向高速流数据传输;去掉了地址项,允许无限制的数据突发传输模式。
•AXI4 is for memory mapped interfaces and allows burst of up to 256 data transfer cycles with just a single address phase.
•AXI4-Lite is a light-weight, single transaction memory mapped interface. It has a small logic footprint and is a simple interface to work with both in design and usage.
•AXI4-Stream removes the requirement for an address phase altogether and allows unlimited data burst size. AXI4-Stream interfaces and transfers do not have address phases and are therefore not considered to be memory-mapped.
AXI总线是怎么工作的?
AXI4和AXI-Lite都有5个通道,分别是:
-
读地址通道
-
写地址通道
读写传输有独立的地址通道,该通道携带传输中所有需要的地址和控制信息。
-
读数据通道
读数据通道携带从机到主机的全部数据和读响应信息,数据总线的宽度可以为8,16,32,64,128,256,512或1024比特。读响应信号表明读传输的完成。
-
写数据通道
写数据通道携带从主机到从机的数据,数据总线的宽度可以是8,16,32,64,128,256,512或1024比特,每8个比特都会有一个字节选通信号(a byte lane strobe signal),来指示这些数据的哪些字节是有效的。
-
写响应通道
从机使用写响应通道来响应写处理,所有的写处理都需要在写响应通道有完成信号。
AXI4-lite数据总线宽度为32或64比特。
下图表述了读写过程中各个通道怎么工作的。
AXI4-lite与AXI4相似,最值得注意的是,AXI-lite不再支持突发传输(bursting)。
每一个独立的通道包含一对信号VALID和READY,来提供双向的握手方法。
信息源使用VALID信号来表明地址有效,通道上数据或控制信息可以有效;信息目的则使用READY信号表示它何时可以接收信息。无论是读通道,还是写通道,都包含一个LAST信号指示传输最后一个数据。
端口定义
1.全局信号
- ACLK
- ARESETn
所有的信号在ACLK的上升沿被采样。
2.写地址通道信号
信号名称 | 信号发出源 | 描述 |
---|---|---|
AWID | 主机 | 写地址ID,写信号地址组标签 |
AWADDR | 主机 | 写地址,给出突发传输的首地址 |
AWLEN | 主机 | 突发传输的长度,给出了一次突发传输数据的准确数目 |
AWSIZE | 主机 | 突发传输的大小,给出了在一次突发传输中,每次数据传输的最大字节数,一般等于AXI数据总线宽度 |
AWBURST | 主机 | 突发类型,有FIXED(地址固定),INCR(地址递增),WARP三种 |
AWLOC K | 主机 | 锁类型,用来提供传输中附加的原子操作信息 |
AWCACHE | 主机 | 内存类型,标识经过一个系统时传输应该如何处理 |
AWPROT | 主机 | 保护类型,标识一次传输的权限和安全等级,区分是获取数据还是获取指令 |
AWQOS | 主机 | 服务质量,每次写事务的QoS标识符 |
AWREGIO | 主机 | 区域标识符,使得从机上的单个物理接口能被用作多个逻辑接口 |
AWUSER | 主机 | 用户定义信号 |
AWVALID | 主机 | 写地址有效,此信号表示通道正在发送有效的写入地址和控制信息 |
AWREADY | 从机 | 写地址准备,此信号表示从机准备好接收一个地址以及与之关联的控制信号 |
3.写数据通道信号
信号名称 | 信号发出源 | 描述 |
---|---|---|
WID | 主机 | 写ID标签 |
WDATA | 主机 | 写数据 |
WSTRB | 主机 | 写选通,此信号指示哪些字节通道保存有效数据。写入数据总线的每8位有一个写选通位 |
WLAST | 主机 | 写末位,该信号表明在突发传输中的最后一次传输 |
WUSER | 主机 | 用户定义信号 |
WVALID | 主机 | 写有效,该信号表示有效的写入,可获得的选通 |
WREADY | 从机 | 写准备,该信号表明从机可以接收一个写数据 |
4.写响应通道信号
信号名称 | 信号发出源 | 描述 |
---|---|---|
BID | 从机 | 响应ID标签 |
BRESP | 从机 | 写响应,该信号表明了写事务的状态,有OKAY,EXOKAY,SLVERR,DECERR四种 |
BUSER | 从机 | 用户定义信号 |
BVALID | 从机 | 写响应有效,该信号表明该通道在传输有效的写响应 |
BREADY | 主机 | 响应准备,该信号表明主机可以接收一个写响应 |
5.读地址通道信号
信号名称 | 信号发出源 | 描述 |
---|---|---|
ARID | 主机 | 读地址ID |
ARADDR | 主机 | 读地址,该信号给出一个突发读中的第一个地址 |
ARLIEN | 主机 | 突发长度,该信号给出了一次突发读中的确切传输数目 |
ARSIZE | 主机 | 突发大小,给出了在一次突发传输中,每次数据传输的最大字节数 |
ARBURST | 主机 | 突发类型,有FIXED(地址固定),INCR(地址递增),WARP三种 |
ARLOCK | 主机 | 锁类型,用来提供传输中附加的原子操作信息 |
ARCACHE | 主机 | 内存类型,标识经过一个系统时传输应该如何处理 |
ARPROT | 主机 | 保护类型,标识一次传输的权限和安全等级,区分是获取数据还是获取指令 |
ARQOS | 主机 | 服务质量,每次读事务的QoS标识符 |
ARREGIO | 主机 | 区域标识符,使得从机上的单个物理接口能被用作多个逻辑接口 |
ARUSER | 主机 | 用户定义信号 |
ARVALID | 主机 | 读地址有效,此信号表示通道正在发送有效的读取地址和有关的控制信息 |
ARREADY | 从机 | 读地址准备,此信号表示从机准备好接收一个地址以及与之关联的控制信号 |
6.读数据通道信号
信号名称 | 信号发出源 | 描述 |
---|---|---|
RID | 从机 | 读ID标签 |
RDATA | 从机 | 读数据 |
RRESP | 从机 | 读响应,该信号表明了读事务的状态,有OKAY,EXOKAY,SLVERR,DECERR四种 |
RLAST | 从机 | 读末位,该信号表明在突发传输中的最后一次传输 |
RUSER | 从机 | 用户定义信号 |
RVALID | 从机 | 读有效,此信号表示通道正在发送有效的读数据 |
RREADY | 主机 | 读准备,该信号表明主机可以接收读数据和读响应信息 |
以上黑体为AXI4-lite接口也有的信号
时序要求
1.Clock,所有的AXI组件都需要一个时钟信号,所有的输入信号在ACLK的上升沿被采样,所有的输出信号在ACLK的上升沿后才能改变状态。
2.AXI协议使用低电平有效复位信号ARESETn。复位信号可以是异步的,但复位的取消一定要与ACLK的上升沿同步。在复位期间,以下接口应满足:
- 主机接口的ARVALID,AWVALID,WVALID应被拉低
- 从机接口的RVALID,BVALID应被拉低
以上信号最早可在复位信号拉高一个时钟周期后被拉高,如下图:
3.基本的读写传输
3.1握手过程
五对握手信号:
五个通道使用一对VALID/READY信号处理握手过程,这种双向控制方法意味着从机和直接都可控制两者之间移动的信息速率,信源(source)将VALID拉高,来表明需要传输的地址,数据,控制信号等信息可用( available),信宿(destination)将READY拉高,来表示它可以接收这些信息,只有当VALID和READY同时为高,的下一个ACLK的上升沿,一次传输才开始,如下图:
T1时刻过后,VAILD和信息为高(准备好),T2时刻过后,READY为高;则传输发生在T3时刻,该次传输持续一个时钟周期。
In Figure A3-2, the source presents the address, data or control information after T1 and asserts the VALID signal. The destination asserts the READY signal after T2, and the source must keep its information stable until the transfer occurs at T3, when this assertion is recognized.
T1时刻过后,READY为高;T2过后,VAILD和信息为高(准备好);则传输发生在T3时刻,该次传输持续一个时钟周期。
同理,该次传输发生在T2时刻之后,持续一个时钟周期。
值得注意的是,一旦VALID被拉高,它应保持到握手发生的时候。
A source is not permitted to wait until READY is asserted before asserting VALID .
Once VALID is asserted it must remain asserted until the handshake occurs, at a rising clock edge at which VALIDand READY are both asserted.
3.2信道握手信号之间的相关性
为了避免死锁的发生,在这些握手信号中应注意一些依赖关系。
发送信息的VALID信号一定不能依赖于接收该信息的READY信号。
接收信息的AXI接口可以在检测到VALID后再将READY信号拉高。
—注意—
虽然可以等到检测到VALID后再将READY信号拉高,但也可将READY信号先行拉高,这样可以使得更高效的设计(前者开始一次传输至少需要等待两个时钟周期)。
一些握手信号的依赖图:
单头箭头:该信号可以在箭头开始端信号拉高之前或之后拉高
双头箭头:该信号只能等到箭头开始信号拉高之后再拉高
读传输握手信号之间的依赖:
主机在拉高ARVALID时一定不能等待从机拉高ARREADY
从机在拉高ARREADY前可以等待ARVALID被拉高
从机也可以在ARVALID被拉高前拉高ARREADY
从机在拉高RAVLID前,一定要等待ARVALID和ARREADY的拉高
从机在拉高RVALID前,一定不能等待主机拉高RREADY
主机在拉高RREADY前,可以等待RVALID被拉高
主机在RVALID拉高前可以拉高RREADY
该图也可看作一次读传输的状态机转换图。
写事务
从机写响应
参考文献: