AXI总线核心解读---基于官方文档

AXI总线
  • 何处使用AXI
    • ZYNQ异构芯片,内部总线使用的AXI总线
    • 纯FPGA的IP接口也要用
    • 高速接口,DDR(AXI、传统)等模块都有涉及到
  • 什么是AXI总线
    • AXI的三种形式:
      • AXI-FULL:高性能的存储器映射需求—可以256个以内发送
        • 存储器映射—主机对从机进行读写操作时,会指定一个目标地址,这个地址对应系统存储空间的地址,表示对该空间进行读写操作,存储器本身没有地址,给存储器分配地址的过程叫存储器映射。
      • AXI-LITE:简化版本—不支持突发传输—单次一个数据
      • AXI-STREAM:高速的流数据通信—移除地址的需求,直接发数据
      • 利用DMA可以实现从数据流到存储器映射到转换
    • AXI总线的设计者
      • ARM公司是AMBA总线的一种(APB、AHB、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 InterConnect和AXI SmartConnect的介绍
    • 这两个IP核都用于连接单/多个存储器映射的AXI Master和单/多个存储器映射的AXI Slave(即为不可以连接stream类)
  • AXI传输机制和死锁
    • outstanding和out-of-order
      • outstanding
        • AXI总线的写地址和写数据是分离的,可以写地址总线上连续发送两次地址,再依次传输写数据
      • out-of-order
        • 多对多的情况下,ID不同,传输可以任意传输,AXI4中只针对从机有效。主机不支持
    • 死锁
      • AXI总线发生异常,死机了,无法正常工作
    • 死锁产生原因
      • 主要是没有严格执行AXI总线协议
    • 死锁情况
      • 一般是在一个主机对多个从机的时候(outstanding address),主机先发送地址顺序,由于先发送的距离远而后发送的距离近,因此,导致后发送的先收到了写信号,此时,会发送M1占用S1,导致了死锁
      • 多个主机对多个从机(out-of-order)互联模块管理下会出现这种问题,两个主机,第一主机发送相同ID到S1,S2。第二个主机也发送相同的ID到S1、S2,但是经过AXI桥,将ID扩展后,对于从机来说是不同的ID,可以乱序传输。那么S1可能会先响应第二个主机而S2响应第一个主机。主机接受响应乱序,违反协议陷入死锁。
  • AXI接口
    • clock和reset—所有的输出都在clock的上升沿之后输出
    • reset后关键是信号主机arvalid/awvalid/wvalid要为低,从机rvalid和bvalid为低
    • 握手机制
      • 都是使用一样的valid和ready,因此,主机和从机都可以控制传输速率
      • valid和ready都是高才可以
    • 优先级别示意图的意义—单箭头无所谓谁先拉高—双箭头有优先级别

你可能感兴趣的:(fpga开发)