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都是高才可以
    • 优先级别示意图的意义—单箭头无所谓谁先拉高—双箭头有优先级别

AXI总线核心解读---基于官方文档相关推荐

  1. 使用cephadm部署单节点ceph集群,后期可扩容(基于官方文档,靠谱,读起来舒服)

    目录 ceph各种部署工具比较(来自官方文档的翻译,靠谱!) 材料准备 cephadm使用条件 服务器有外网访问能力 服务器没有外网访问能力 安装cephadm cephadm的功能 两种安装方式 基 ...

  2. 11 Themeleaf语法介绍 解读Themeleaf官方文档

    Themeleaf语法介绍 第一个入门程序 代码如下 入门程序存在的坑 [1]spring boot1.x中themeleaf中存在缓存,需要关闭 [2]themeleaf官方文档开头就讲的是国际化的 ...

  3. 基于官方文档Autosar_SWS_CanDriver 中文翻译记录

    Can驱动状态机 (1)上电或复位后,Can模块应处于CAN_UNINIT (2)在初始化CAN硬件单元内的所有控制器后 ,调用接口Can_Init()将Can模块状态更改位CAN_READY (3) ...

  4. python schedule运行了一遍说没有任务_python-schedule模块(定时任务)基于官方文档总结...

    一.模块安装 pip3 install schedule 二.常用的使用案例 #基本格式 #创建方法 def func(): print("方法") #创建定时 schedule. ...

  5. 迅搜安装流程(基于官方文档)

    运行下面指令下载.解压安装包 wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2 tar -xjf xunsear ...

  6. What、Why、How?解读Webpack官方文档

    What is Webpack? Webpack具有Grunt.Gulp对于静态资源自动化构建的能力,但更重要的是,Webpack弥补了requireJS在模块化方面的缺陷,同时兼容AMD与CMD的模 ...

  7. 微信小程序中,Bmob的入门(基于官方文档的补充)

    这两年小程序大火,从开始入门小程序到现在使用bmob,在这里我分享一下自己的心得和经历的坑. Bmob的导入 老规矩了,在bmob注册账号,在控制台创建应用,进入应用页面,在应用设置页面填写在微信公众 ...

  8. Detectron2 官方文档详细解读 (上)

    Detectron2解读全部文章链接: Facebook计算机视觉开源框架Detectron2学习笔记 - 从demo到训练自己的模型 Detectron2 "快速开始" Dete ...

  9. 如何下载 spring 官方文档 pdf

    spring 系列框架,官方文档都是html 格式的, 并未提供pdf 的下载入口.在html 路径后直接添加/pdf 即可进入pdf 下载页面 1. spring 官网 进入spring官网: ht ...

最新文章

  1. 【Linux】tail命令
  2. 【解决】Authentication plugin 'caching_sha2_password' cannot be loaded
  3. 微信小程序-WebSocket应用
  4. HelloGitHub
  5. 需要自己调研的框架,以及需要学习的内容
  6. 二级C语言程序设计备考方法
  7. 华为P50系列即将发布:麒麟9000E/9000处理器有戏?
  8. jquery中prop()方法和attr()方法
  9. LINQ语法类似于SQL的语法
  10. Codeforces Beta Round #7 C. Line 扩展欧几里德
  11. python人脸识别要怎么实现_详解如何用OpenCV + Python 实现人脸识别
  12. 如何在手机上安装linux系统并可视化界面
  13. java等额本息、等额本金计算Mark
  14. 强大的sed_拔剑-浆糊的传说_新浪博客
  15. Fuzzy SVM with a new fuzzy membership function--文献翻译
  16. 云原生(三十九) | Kubernetes篇之kustomize入门了解
  17. 蓝牙耳机的LDAC、aptX指的都是什么?
  18. python服务器性能测试工具locust使用指南
  19. numpy ndarray 与 array
  20. React全家桶(技术栈) redux 代码

热门文章

  1. 谢谢这世间,所有不动声色的善良
  2. 《大数据架构和算法实现之路:电商系统的技术实战》——1.5 相关软件:R和Mahout...
  3. 【Linux】Linux 指令练习题 (一)
  4. win7系统老是弹窗怎么解决_win7系统右下角经常弹广告怎么办|win7系统右下角弹出广告的屏蔽方法...
  5. 前端年后面试真题,会80%直接进大厂
  6. RabbitMQ-2-工作模式及参数配置
  7. C:fseek()与 ftell()
  8. 如何将Blender模型导入Panda3d
  9. DLL文件是怎么产生的,DLL文件是什么,DLL文件有什么用
  10. 反弹shell的十种姿势