axi3 和 axi4 总线的区别
1. burst_length 的变化
- axi3 burst_length 为4bit, 支持最大AxLEN为16
- axi4 burst_length 扩展为8bit,支持最大AxLEN为256
- 只有INCR传输支持超过16长度的burst,wrap和fixed最大burst还是16
- exclusive access的burst length长度小于16
2. axi4 增加了2个4bit的 qos命令信号
- qos 简单介绍
- awqos
- arqos
- 信号范围从0x0-0xf,值越大表示优先级越高
- qos默认值为0x0,表示未参与任何qos方案
- 应用场景
- 访问冲突:多个设备同时请求访问,qos可以确保高优先级的事务先处理
- 延迟优势:优先通过高优先级事务,减少关键数据流的延迟
- 带宽管理:可以为不同的事务分配不同的带宽
- 优势
- 提高系统响应速度
- 优化资源分配
- 提高系统灵活性
3. axi4新增Multiple region interfaces
- 可选信号,默认为0
- 标识逻辑区域,支持多从设备共享接口和动态地址映射
- 核心功能
- 通过 REGION 信号 动态标识目标区域,允许 重叠的地址空间 被区分
- ARADDR = 0x1000, ARREGION = 1 → 访问 区域1 的 0x1000
- ARADDR = 0x1000, ARREGION = 2 → 访问 区域2 的 0x1000(实际物理地址可能不同)
- 动态地址重映射
- 虚拟化(同一逻辑地址映射到不同物理地址)
- 安全域隔离(不同 REGION 对应不同的安全权限)
- 通过 REGION 信号 动态标识目标区域,允许 重叠的地址空间 被区分
4. write interleaving
- axi4 去掉了WID信号,不再支持write interleaving
- 为什么?
- 写交织增加了设计的复杂性,尤其处理多个事务,需要额外的缓存逻辑来管理不同事务的顺序
- 去掉写交织可以减少缓存需求,降低了硬件的成本和功耗
- 实际的应用比较少,大多数情况下,主设备可以通过缓存数据并以连续的Burst发送
- 写交织在axi3中引入了许多约束,导致死锁问题
- 尽管axi4 不支持写交织,但任然支持乱序响应,这意味着写地址和数据是顺序的,但是响应可以乱序返回,在简化设计的同时保留了一定的灵活性
5. writer response
- axi4对 write response 的产生做了更加严格的限制
- axi3 必须等到wvalid和wready后才能把bvalid置高
- axi4 规定,必须等到awvalid,awready,wvalid,wready,wlast都为高,slave才可以拉高bvalid响应
6. user signals
- axi4 新增了user 信号,该信号为用户自定义信号
7. locked transactions
- axi4去掉了对locked transaction的支持,axlock从2bit 减少到1bit,仅支持exclusive访问
- 变化原因:lock access效率比较低,exclusive提供了更加灵活的访问机制
- exclusive access介绍
- 用于实现原子操作,允许在特定内存位置上执行一系列操作,而这些操作不会被其它master干扰,它可以确保数据操作的原子性,同时也不会影响总线性
- 过程
- exclusive read
- Master发送一个读exclusive操作
- Slvae需要记住该操作的,ARID 和ADDR
- 如果slave可以支持该访问,则响应EXOKY,表示独占成功
- Exclusive write
- 在随后的时间,该master对该地址进行exclusive 写操作
- AWID和RID必须一致
- 期间是否有其它设备访问过该地址?
- 成功返回EXOKY,否则返回OKAY表示独占写失败
- exclusive read
- 优势
- 更高的效率
- 更好的性能
- 更加灵活
- 应用场景
- 在多核系统,独占访问可以确保对共享资源的原子操作
- 原子更新操作,在对内存中的某个变量进行修改,读取,确保这些操作不会被其它设备干扰
axi3 和 axi4的连接
- axi4没有wid信号,直接floating
- axi4 slave的 axlock[0] = axlock[0]
- axi4 slave的 axlen[7:4] = 4’h0
- qos/user/region信号需要额外处理
- axi4 master必须不支持write interleaving
axi3 和 axi4信号区别总结
| signal | axi3 | axi4 | 备注 |
|---|---|---|---|
| arlen/awlen | 4bit | 8bit | axi4支持256bit的burst |
| arqos/awqos | NA | 4bit | 服务质量,用于优先级控制 |
| arregion/awregion | NA | 可选 | 区域信号,用于访问控制 |
| aruser/awuser | NA | 可选 | 用户定义 |
| arlock/awlock | 2bit | 1bit | axi4去掉了locked access,仅保留Exclusive acess |
| wid | 4bit | NA | axi4去掉了wid,不支持乱序写数据 |