AXI总线
- 何处使用AXI
- ZYNQ异构芯片,内部总线使用的AXI总线
- 纯FPGA的IP接口也要用
- 高速接口,DDR(AXI、传统)等模块都有涉及到
- 什么是AXI总线
- AXI的三种形式:
- AXI-FULL:高性能的存储器映射需求—可以256个以内发送
- 存储器映射—主机对从机进行读写操作时,会指定一个目标地址,这个地址对应系统存储空间的地址,表示对该空间进行读写操作,存储器本身没有地址,给存储器分配地址的过程叫存储器映射。
- AXI-LITE:简化版本—不支持突发传输—单次一个数据
- AXI-STREAM:高速的流数据通信—移除地址的需求,直接发数据
- 利用DMA可以实现从数据流到存储器映射到转换
- AXI-FULL:高性能的存储器映射需求—可以256个以内发送
- AXI总线的设计者
- ARM公司是AMBA总线的一种(APB、AHB、AXI)
- AXI的三种形式:
- AXI机制
- 面向存储的一种设计
- AXI总线是一种突发总线,突发传输—效率高速度快。一直连续的传输,比如突发8次传输,就是指8个时钟连续传输8个数据
- 五个通道
- 每个独立的通道都包含一组信息信号、VALID信号和READY信号,用于提供双向握手机制
- 信息源端使用VALID信号表示当前通道地址、数据和控制信息什么时候有效,目的端使用READY信号表示什么时候可以接受信息
- 读地址通道—包含所需的地址和信息
- 读数据通道—包含last信号、由从机发送给主机,包含了读数据和读响应的信息,读响应的信号用于表示读传输是否操作完成
- 写地址通道—包含所需的地址和信息
- 写数据通道—包含last信号,由主机发送给从机,包含了写数据,然后通过WSTRB信号表示当前数据哪个字节有效
- 写响应通道—这是一个独立的通道,而读响应则直接在读数据通道中,从机通过这个响应传递给主机
- 信号的描述
- ACLK和ARESETn—全局信号不属于任何一个通道
- 写地址中的关键信号
- AWADD—写地址,指定突发传输下的第一个地址即起始地址
- AWLEN—突发长度—比输入的定义大一位
- AWSIZE—单个数据的大小
- AWABURST—突发类型—判断如何分配后续的地址增长—INCR—自增加模式—根据突发的大小来自增,发多大的AWSIZE就自增多少
- AWVALID—master发出—地址是否有效果
- AWREADY—slave决定是否准备接收好地址
- 写数据的关键信号
- WDATA—真正的数据
- WSTRB—WDATA哪个数据有效
- WLAST—最后一个数据拉高
- WVALID
- WREADY
- 写响应的关键信号
- BRESP—表示写传输的状态—OKAY表示成功—SLVERR从机错误
- BVALID—slave
- BREADY—master
- 读地址的关键信号
- 和写地址的一样
- 读数据的通道
- 和写一样
- 时序步骤
- 写地址
- 写数据
- 写响应
- 波形验证
- valid和ready同时为高代表数据当前有效
- 先写地址,再写数据,最后一个数据跟随last信号
- 先读地址再读数据,最后一个数据跟随last
- 写完数据,有一个响应信号
- 突发传输有指定需要
- 实现一个AXI总线的方式
- AXI写实现步骤
- 写首地址—有效信号和准备信号同时有效
- 紧接着写首地址,突发传输数据
- 控制last信号
- last脉冲后等待响应信号,从机给主机
- AXI读实现步骤
- 写首地址
- 紧接着等待从机传输过来的数据,当有效信号和准备信号都是高时,读取数据
- 接受last信号
- AXI写实现步骤
- AXI InterConnect和AXI SmartConnect的介绍
- 这两个IP核都用于连接单/多个存储器映射的AXI Master和单/多个存储器映射的AXI Slave(即为不可以连接stream类)
- AXI传输机制和死锁
- outstanding和out-of-order
- outstanding
- AXI总线的写地址和写数据是分离的,可以写地址总线上连续发送两次地址,再依次传输写数据
- out-of-order
- 多对多的情况下,ID不同,传输可以任意传输,AXI4中只针对从机有效。主机不支持
- outstanding
- 死锁
- AXI总线发生异常,死机了,无法正常工作
- 死锁产生原因
- 主要是没有严格执行AXI总线协议
- 死锁情况
- 一般是在一个主机对多个从机的时候(outstanding address),主机先发送地址顺序,由于先发送的距离远而后发送的距离近,因此,导致后发送的先收到了写信号,此时,会发送M1占用S1,导致了死锁
- 多个主机对多个从机(out-of-order)互联模块管理下会出现这种问题,两个主机,第一主机发送相同ID到S1,S2。第二个主机也发送相同的ID到S1、S2,但是经过AXI桥,将ID扩展后,对于从机来说是不同的ID,可以乱序传输。那么S1可能会先响应第二个主机而S2响应第一个主机。主机接受响应乱序,违反协议陷入死锁。
- outstanding和out-of-order
- AXI接口
- clock和reset—所有的输出都在clock的上升沿之后输出
- reset后关键是信号主机arvalid/awvalid/wvalid要为低,从机rvalid和bvalid为低
- 握手机制
- 都是使用一样的valid和ready,因此,主机和从机都可以控制传输速率
- valid和ready都是高才可以
- 优先级别示意图的意义—单箭头无所谓谁先拉高—双箭头有优先级别