Menu Close

AXI总线基础

AXI的历史:

AXI(Advanced extensible Interface)本是由ARM公司提出的一种总线协议。

随着SoC 设计复杂性的增加和CPU 处理能力的提升,总线结构会成为系统性能的瓶颈。在多处理器SoC 设计中,这种瓶颈现象更加明显。综合考虑成本、功耗和面积,SoC 设计中选用何种高效的总线结构是比较困难的,同时总线结构对系统所要求达到的性能又是非常重要的。

随着下一代高性能 SoC 设计的需要,比如多处理器核、多重存储器结构、DMA 控制器等,AMBA 需要新一代灵活性更强的总线结构,这就是AMBA 3.0 AXI 总线。AXI 是1999年发布的AMBA 2.0 的继承和提升,是ARM 公司与其他的芯片制造商包括高通、东芝和爱立信等公司共同研发的。新协议的发布,为新一代高性能SoC 的设计铺平了道路。

Xilinx 从 6 系列的 FPGA 开始对 AXI 总线提供支持,此时 AXI 已经发展到了 AXI4 这个版本,所以当你用到 Xilinx 的软件的时候看到的都是 “AIX4” 的 IP,如 Vivado 打包一个 AXI IP的时候,看到的都是 Create a new AXI4 peripheral。到了 ZYNQ 就更不必说了,AXI 总线更是应用广泛,双击查看 ZYNQ 的 IP 核的内部配置,随处可见 AXI 的身影。

AXI总线的分类:

AXI4:(For high-performance memory-mapped requirements.)主要面向高性能地址映射通信的需求,是面向地址映射的接口,允许最大256轮的数据突发传输;

AXI4-Lite:(For simple, low-throughput memory-mapped communication )是一个轻量级的地址映射单次传输接口,占用很少的逻辑单元。

AXI4-Stream:(For high-speed streaming data.)面向高速流数据传输;去掉了地址项,允许无限制的数据突发传输规模。

Stream的理解,可以想象一下水流,是连续不断的,向某一方向,以固定的速度输送的接口。以我们看视频为例,视频文件本来是保存在硬盘里的,怎么播放呢,不能一下子把整个文件都显示到屏幕上,而是以一定速度,连续不断地输出到屏幕上(每秒若干帧),这个过程就是流Stream接口完成的。

本文主要讲解AXI-Lite总线协议:

通过学习AXI4-Lite总线协议内容,一方面为AXI4,AXI4-Stream总线协议打基础;另一方面为后续的BAR0空间内容做铺垫。

AXI4-Lite是AXI协议的精简版,它适用于不需要AXI4完整功能的简单控制寄存器样式的接口。

相较AXI4,AXI4-Lite协议的特点是:

  • 所有读写交易的突发长度均为1
  • 仅支持32位或64位的数据总线宽度
  • 所有访问都是不可修改的,不可缓冲的
  • 不支持独占访问

一. AXI4-Lite接口信号

AXI4-Lite协议信号较AXI4少了很多,具体信号如下:

https://picgo-dakang.oss-cn-hangzhou.aliyuncs.com/img/AX4-Lite%E5%8D%8F%E8%AE%AE%E6%8E%A5%E5%8F%A3%E4%BF%A1%E5%8F%B7.png

1.1 全局信号

信号 描述
ACLK 时钟源 全局时钟信号,所有输入信号均在ACLK上升沿采样,所有输出信号的更改只能在ACLK上升沿之后。主从接口上的所有输入和输出信号间不允许有组合路径
同AXI4
ARESETn 复位源 全局复位信号,为异步复位同步置位信号,即ARESETn在任意时刻变为低电平可立刻生效,但置位为1时只能在ACLK的下一个上升沿生效
同AXI4

 

1.2 写地址通道

信号 位宽 描述
AWID(可选,仅但主机是AXI4而从机是AXI-Lite时需要此信号) 当需要和主机的AXI4协议互联时,从机的AXI-Lite协议增加此信号
AWADDR 可变,协议未定义位宽, Xilinx使用12, 13, … 64,一般为32/64 要写入数据的内存地址
同AXI4
AWPORT 3 写事务的保护属性:特权,安全级别和访问类型
提供用于禁止非法传输事务的访问权限信号
同AXI4
AWVALID 1
AWREADY 1

1.2.1 AxPORT

AxPORT共3位,每一位的值代表不同的意义。一般可设置为3‘b000,表示非特权且安全的数据访问。

AxPROT 功能 描述
[0] 0 Unprivileged access 非特权访问 AXI主站可能支持多个级别的操作特权,并将这种特权概念扩展到内存访问。 AxPROT [0]将访问标识为非特权或特权
[0] 1 Privileged access 特权访问
[1] 0 Secure access 安全访问 AXI主站可能支持安全和非安全操作状态,并将这种安全性概念扩展到内存访问。 AxPROT [1]将访问标识为安全或不安全。 AxPROT [1]可以视为定义了两个地址空间,一个安全地址空间和一个非安全地址空间。该信号可被视为附加地址位。安全和非安全地址空间之间的任何别名都必须正确处理。
[1] 1 Non-secure access 非安全访问
[2] 0 Data access 数据访问 该位指示事务是指令访问还是数据访问。 AXI协议将此指示定义为提示。并非在所有情况下都是准确的,例如,当事务包含指令和数据项的混合时。本规范建议主机将AxPROT [2]设置为LOW,以指示数据访问,除非已知该访问是指令访问。
[2] 1 Instruction access 指令访问

1.3 写数据通道

信号 位宽 默认值 描述
WDATA 32/64 要写入的数据,大部分数据总线为32位。32位主机可访问64位丛机,通常使用64位中的低32位作为有效位宽
WSTRB 4/8 全0 写选通,指示哪些字节通道保存有效数据
WSTRB为高表示数据总线的哪一/几字节是有效数据,
具体的WSTRB [n]为高对应于WDATA [(8n+7:8n]这一字节的数据有效
4位对应32位总线,8位对应64位总线
WVALID 1
WREADY 1

1.3.1 WSTRB

AXI4-Lite协议支持写选通。这意味着可以实现多尺寸寄存器,如8位/16位寄存器。

所有的主机接口和与主机互联的元件都必须支持写选通,而从机被允许:

  • 充分利用写选通信号
  • 忽略写选通信号并将所有写访问视为整个数据总线宽度(我的理解:无论写选通信号是多少,都将数据总线上的所有位视为有效位)
  • 检测不支持的写选通信号并提供错误响应,如一个32位从机仅支持低8位写选通,如果WSTRB为4‘b1000表示高8位写选通,则此时从机不支持并报错。

特殊的:提供内存访问的从站必须完全支持写选通。存储器映射中的其他从机可能支持更有限的写选通选项。

1.4 写响应通道

信号 位宽 默认值 描述
BID可选,仅但主机是AXI4而从机是AXI-Lite时需要此信号) 从机接收到AWID,写响应返回BID,主机的AXI4协议需要BID才能识别从机的写响应
BRESP 2 2‘b00 写响应,指示写事务状态
2’b00 OKAY 正常访问成功
2’b01 EXOKAY 无意义,在AXI4中表示独占访问成功,但AXI4-Lite不支持独占访问
2‘b10 SLVERR 从机反映错误
2’b11 DECERR 互连模块无法成功解码从属访问
BVALID 1
BREADY 1

1.5 读地址通道

信号 位宽 默认值 描述
ARID(可选,仅但主机是AXI4而从机是AXI-Lite时需要此信号) 接收主机AXI4协议的ARID
ARADDR 可变,协议未定义位宽, Xilinx使用12, 13, … 64,一般为32/64 要读取的内存地址
同AXI4
ARRPOT 3 写事务的保护属性:特权,安全级别和访问类型
提供用于禁止非法传输事务的访问权限信号,同AWRPOT
同AXI4
ARVALID 1
ARREADY 1

1.6 读数据通道

信号 位宽 默认值 描述
RID(可选,仅但主机是AXI4而从机是AXI-Lite时需要此信号) 从机接收到ARID,读数据返回RID,主机的AXI4协议需要RID才能识别从机的读数据
RDATA 32/64 读数据
RRESP 2 2‘b00 读响应,指示读事务状态,同BRESP
同AXI4
RVALID 1
RREADY 1

二.AXI协议的传输顺序

AXI协议支持乱序传输。他给每一个通过接口的事务一个IDtag。协议要求相同ID tag的事务必须有序完成,而不同ID tag可以乱序完成。

  1. 通道之间的关系

地址、读、写和写响应通道之间的关系是灵活的。

例如,写数据可以出现在接口上早于与其相关联的写地址。也有可能写数据与写地址在一个周期中出现。

两种关系必须被保持:

(1)读数据必须总是跟在与其数据相关联的地址之后。

(2)写响应必须总是跟在与其相关联的写事务的最后出现。

  1. 读通道握手信号之间的依赖性——读事务握手依赖关系如图:

(1)设备可以在ARVALID出现的时候在给出ARREADY信号,也可以先给出ARREADY信号,再等待ARVALID信号。

(2)但是设备必须等待ARVALID和ARREADY信号都有效才能给出RVALID信号,开始数据传输。

%title插图%num

写事务握手依赖关系如图:

(1)主机不一定得等待设备先给出AWREADY或WREADY信号信号后再给出信号AWVALID或WVLAID。

(2)设备可以等待信号AWVALID或WVALID信号有效或者两个都有效之后再给出AWREADY信号。

(3)设备可以等待AWVALID或WVALID信号有效或者两个信号都有效之后再给出WREADY信号。

%title插图%num

双箭头表示绝对的依赖关系,如BVALID必须等待WVALID 和WREADY 都为高之后,才能为高。

三. AXI4与AXI4-Lite的互联

AXI4协议和AXI4-Lite是可以互联的,唯一需要注意的是当主机是AXI4且从机是AXI4-Lite时,从机的AXI4-Lite协议需增加AXI ID信号以匹配主机的AXI ID

https://picgo-dakang.oss-cn-hangzhou.aliyuncs.com/img/AXI4%E5%92%8CAXI4-Lite%E4%BA%92%E8%81%94.png

后续,我们会重点解析AXI-LITE的代码。

 

Posted in FPGA, IC, SoC, SoC, Vivado, 教材与教案, 文章

发表评论

相关链接