SoC设计与验证——总线篇——AXI总线

1. AXI总线特征

axi总线可以连接CPU的cache和其他外设,比如内存等。内存是从属设备,它接受信号,并驱动ready信号;主从设备都会驱动data信号,总线仲裁器只看request和grant信号,而忽略所有的其他信号。

详情参考:AXI学习笔记-11.AXI总线结构2.AXI接口时序3.数据结构4.传输特性 - 云+社区 - 腾讯云

1.1 数据传输特征

(1) AXI总线有5个通道,分别为写请求、写数据、写响应、读请求、读响应,通道之间存在依赖关系

(2) 单通道内的事务存在顺序关系,详细参见2.4节
 

1.2 写事务和读事务的过程

对于总线上的设备来说,一个写过程为:master发出写请求,则slave接收写请求并发出写响应,master接收写响应,然后发出写数据,接着slave接收写数据;
一个读过程为:master发出读请求,则slave接收读请求并发出读响应,然后master接收读响应

2. 协议内容

2.1 五种通道

2.2  valid和ready的握手机制

无论是写事务还是读事务,通信的双方都可分为发送方和接收方(与master和slave概念区分,二者都可以是发送方和接收方),而其中承担握手机制的主要是valid和ready信号(二者均是高电平有效)。

发送方置高valid时:表示发送方已经将地址,数据,控制信息准备就绪,并保持在总线上。
接收方置高ready时:表示接收方已经做好接收地址,数据和控制信息的准备。
当双方的valid和ready信号同时为高时,在时钟的上升沿完成一次数据传输。所有数据传输完毕后,双方同时置低自己的信号。

注意:

  1. ready信号只由接收方自身决定,当然编程时可综合考虑发送方的valid信号。

具体时序图可见:AXI总线协议时序_yundanfengqing_nuc的专栏-CSDN博客_axi时序

2.3 突发传输机制

参考链接1:ARM系列 -- AXI(三)

在xxburst=INCR模式下,每次传输的数据是 <ax_len>+1 个 <size>大小的数据传输,其中有效字节为<strb>索引号的部分。

2.4 事务序

AXI支持事务的乱序和顺序处理,可以将并行操作事务,从而提升系统性能。

2.4.1 顺序

不同ID的多个请求事务,返回事务可以乱序完成

2.4.2 乱序

同一ID的多个请求事务,返回事务必须按顺序完成

2.4.3 outstanding

AXI的outstanding指同时在总线上处理的最大事务量,要求master和slave都支持。

3. AXI总线主要信号定义

重要信号定义

axcache的字段定义和使用

参考链接:深入 AXI4 总线(四)传输事务属性(draft) - 知乎

AWCACHE[3] 信号置高表示本主机先前的写事务可能已经将该位置上的数据缓冲于CPU下的cache中,首先在 cache 中查找对应表项。当 AWCACHE[3] 信号置低,但 AWCACHE[2] 置高时,该位置上的数据可能因为其他主机的操作、或者本机的读事务缓存于 cache 中,同样需要首先查找 cache。

同样,ARCACHE[3]信号拉高表示该地址的数据可能被其他主机的操作、或者两外一个主设备的写事务缓存于cache中,首先要到cache中查找该地址的数据,如果ARCACHE[2]同样拉高,也必须查询cache,如果ARCACHE[2]拉低,则不需要到cache中查询

信号list

以master的信号为例,包括主动发出和被动接收的信号:

aw_id[n: 0]输出写请求标识号
aw_addr[m: 0]输出写请求地址
aw_len[3: 0]输出写请求数据长度
aw_size[2: 0]输出写请求数据宽度
aw_burst[1: 0]输出写请求类型
aw_valid输出写请求有效信号
aw_ready输入写请求接受准备好信号
id[n: 0]输出写数据标识号,与aw_id对应
w_data[j: 0]输出写数据
w_strb[k: 0]输出写数据屏蔽信号,1位对应8个数据位
w_valid输出写数据有效信号
w_ready输入写数据接受准备好信号
写回复:针对整个写数据的操作,而不是写某个数据的单独操作
d[n: 0]输入写响应标识号,与aw_id对应
b_resp[1: 0]输入写响应状态
b_valid输入写响应有效信号
b_ready输出写响应接受准备好信号
_id[n: 0]输出读请求标识号
ar_addr[m: 0]输出读请求地址
ar_len[3: 0]输出读请求数据长度
ar_size[2: 0]输出读请求数据宽度
ar_burst[1: 0]输出读请求类型
ar_valid输出读请求有效信号
ar_ready输入读请求接受准备好信号
id[n: 0]输入读响应标识号,与ar_id对应
r_data[j: 0]输入读的数据
r_resp[1: 0]输入读响应状态
r_valid输入读响应有效信号
r_ready输出读响应接受准备好信号
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KGback

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值