AXI(Advanced eXtensible Interface)是一种总协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。它的地址/控制和数据相位是分离的,支持不对齐的数 据传输,同时在突发传输中,只需要首地址,同时分离的读写数据通道、并支持显著传输访问和乱序访问,并更加容易就行时序收敛。AXI 是AMBA 中一个新的高性能协议。AXI 技术丰富了现有的AMBA 标准内容,满足超高性能和复杂的片上系统(SoC)设计的需求。

AXI的诞生

  随着SoC 设计复杂性的增加和CPU 处理能力的提升,总线结构会成为系统性能的瓶颈。在多处理器SoC 设计中,这种瓶颈现象更加明显。综合考虑成本、功耗和面积,SoC 设计中选用何种高效的总线结构是比较困难的,同时总线结构对系统所要求达到的性能又是非常重要的。   随着下一代高性能 SoC 设计的需要,比如多处理器核、多重存储器结构、DMA 控制器等,AMBA 需要新一代灵活性更强的总线结构,这就是AMBA 3.0 AXI 总线。AXI 是1999年发布的AMBA 2.0 的继承和提升,是ARM 公司与其他的芯片制造商包括高通、东芝和爱立信等公司共同研发的。新协议的发布,为新一代高性能SoC 的设计铺平了道路。

AXI的性能

AXI 能够使SoC 以更小的面积、更低的功耗,获得更加优异的性能。AXI 获得如此优异性能的一个主要原因,就是它的单向通道体系结构。单向通道体系结构使得片上的信息流只以单方向传输,减少了延时。   

选择采用何种总线,我们要*估到底怎样的总线频率才能满足我们的需求,而同时不会消耗过多的功耗和片上 面积。ARM一直致力于以最低的成本和功耗追求更高的性能。这一努力已经通过连续一代又一代处理器内核的发布得到了实现,每一代新的处理器内核都会引入新 的流水线设计、新的指令集以及新的高速缓存结构。这促成了众多创新移动产品的诞生,并且推动了ARM架构向性能、功耗以及成本之间的完美平衡发展。   

AXI总线是一种多通道传输总线,将地址、读数据、写数据、握手信号在不同的通道中发送,不同的访问之间顺序可以打乱,用BUSID来表示各个访问的归属。主设备在没有得到返回数据的情况下可发出多个读写操作。读回的数据顺序可以被打乱,同时还支持非对齐数据访问。   AXI总线还定义了在进出低功耗节电模式前后的握手协议。规定如何通知进入低功耗模式,何时关断时钟,何时开启时钟,如何退出低功耗模式。这使得所有IP在进行功耗控制的设计时,有据可依,容易集成在统一的系统中。

AXI的特点

  单向通道体系结构。信息流只以单方向传输,简化时钟域间的桥接,减少门数量。当信号经过复杂的片上系统时,减少延时。   

支持多项数据交换。通过并行执行猝发操作,极大地提高了数据吞吐能力,可在更短的时间内完成任务,在满足高性能要求的同时,又减少了功耗。   

独立的地址和数据通道。地址和数据通道分开,能对每一个通道进行单独优化,可以根据需要控制时序通道,将时钟频率提到最高,并将延时降到最低。   

增强的灵活性。AXI技术拥有对称的主从接口,无论在点对点或在多层系统中,都能十分方便地使用AXI技术。

低功耗性

摘要:随着多核、多级内存及众多外设的 SoC 设计的复杂化,急需一种性能更好、更加灵活的片上互连总线体系结构。AXI 是ARM 新推出的新一代AMBA 片上总线,AXI 的一序列新特点满足了高性能、高带宽、高速度的现代SoC 设计的要求。本文介绍了AXI 的新特性,并和旧一代总线标准AHB 性能做了详细的比较,同时给出了AXI 的典型应用。

1 引言

    AXI(Advanced eXtensible Interface) 总线协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0协议中最重要的部分。它面向高性能、高带宽、低延迟的片内总线。它的地址/控制和数据相位是分离的,支持不对齐的数据传 输,同时在突发传输中,只需要首地址,同时分离的读写数据通道、并支持显著传输访问和乱序访问,并更加容易就行时序收敛。
    AXI 有读地址和控制、读数据、写地址和控制、写数据、写响应5个通道。图1是读通道的结构。

图1 AXI 读通道结构
    可以看到,控制和数据通道分离,可以带来很多好处。地址和控制信息相对数据的相位独立,可以先发地址,然后再是数据,这样自然而然的支持显著操作,也就是 outstanding 操作。Master访问slave的时候,可以不等需要的操作完成,就发出下一个操作。这样,可以让slave在控制流的处理上流水起来,达到提速的作 用。同时对于master,也许需要对不同的地址和slave就行访问,所以可以对不同的slave 连续操作。而这样的操作,由于slave 返回数据的先后可能不按照master 发出控制的先后进行,导致出现了乱序操作(out of order )。
    同时相对AHB 接口的单向hready 信号,AXI的5个通道由双向的valid和ready信号进行握手。同时在读写操作中,有last 信号表明当前传输的是最后一个数据。

2 AXI的低功耗特性

    AXI的低功耗接口本身也是数据传输协议的扩展。它针对自身具有低功耗处理的设备和自身不具有低功耗处理的设备都是通用的。
    AXI低功耗控制接口包括两类信号:
    设备给出表示当前时钟是否可以被gated的信号。外设使用CACTIVE信号表明它希望时钟,时钟控制模块必须马上给设置时钟。
    对于系统时钟控制模块,提供可以进入或退出低功耗状态的握手信号。CSYSREQ表明了系统请求设备进入低功耗状态,而设备使用CSYSACK信号来握手低功耗状态请求和退出。

图2 AXI低功耗握手时序(1)
    在CSYSREQ和CSYSACK信号为高的时候,也就是T1时刻之前,设备处于正常状态。在T1时刻,系统拉低了CSYSREQ信号,在T2时刻,外设 拉低CSYSACK信号。在T3时刻系统拉高CSYSREQ表示系统要求设备从低功耗状态退出。T4时刻设备握手拉高CSYSACK表明已经退出。在握手 中,CACTIVE可以作为拒绝或者同意的标志。下图中CATIVE一直拉高,来表示当前不接受这种低功耗的请求,而不是依靠ACK信号。可以看 出,ACK 信号只是表示状态迁移的完整性,而对于是否进入低功耗状态,需要CACTIVE信号表示。同时该信号也表示了设备在低功耗状态需要退出。
    在系统层面的操作:
    有两种方法进行设备的低功耗控制。第一种是系统不断的轮询设备,一旦某个设备可以进入低功耗状态,就把相应的CATIVE 拉低,然后把CSYSACK信号拉低。这样做的效率不是很高,系统并不知道哪个设备已经可以提前进入低功耗状态,而是简单的按照时间进行查询,并不能精确 的控制。这一种方案主要强调系统与设备的强耦合性。只有系统需要的时候才开始轮询,系统不需要,就不能进入低功耗模式。

图3 AXI低功耗握手时序(2)

图4 基于AXI的低功耗控制示意

    第二种方法是系统被动接受设备发出来的CATIVE,然后开始低功耗处理流程。这样可以提高效率。但是可能系统由于预测到马上需要使用该device,不发起低功耗请求。值得注意的是,两种低功耗管理是可以混合使用的。

AXI总线(转)的更多相关文章

  1. zedboard如何从PL端控制DDR读写(二)——AXI总线

     虽然Xilinx已经将和AXI时序有关的细节都封装起来,给出了官方IP和向导生成自定义IP,用户只需要关注自己的逻辑实现,但是还是有必要简单了解一下AXI的时序,毕竟咱是做硬件设计的. AXI(Ad ...

  2. AXI总线

    AXI(Advanced eXtensible Interface)是一种总协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture) ...

  3. FPGA中的除法运算及初识AXI总线

    FPGA中的硬件逻辑与软件程序的区别,相信大家在做除法运算时会有深入体会.硬件逻辑实现的除法运算会占用较多的资源,电路结构复杂,且通常无法在一个时钟周期内完成.因此FPGA实现除法运算并不是一个&qu ...

  4. 自定义AXI总线形式SPI接口IP核,点亮OLED

    一.前言 最近花费很多精力在算法仿真和实现上,外设接口的调试略有生疏.本文以FPGA控制OLED中的SPI接口为例,重新夯实下基础.重点内容为SPI时序的RTL设计以及AXI-Lite总线分析.当然做 ...

  5. 利用ZYNQ SOC快速打开算法验证通路(6)——利用AXI总线实时配置sysGen子系统

    利用ZYNQ验证算法的一大优势在于,可以在上位机发送指令借助CPU的控制能力和C语言易开发特点,实时配置算法模块的工作模式.参数等对来对其算法模块性能进行全面的评估.最重要的是无需重新综合硬件模块. ...

  6. AXI总线介绍

    原帖地址:https://wenku.baidu.com/view/7c424c17e3bd960590c69ec3d5bbfd0a7956d5b9.html   1.AXI简介 AXI(Advanc ...

  7. 将自己写的HDL代码封装成带AXI总线的IP

    将自己写的HDL代码封装成带AXI总线的IP 1.Tools->create and package IP 2.create AXI4总线的IP 3.新建block design 4.点击右键, ...

  8. zynq里面的AXI总线(2017-1-11)

    在ZYNQ中有支持三种AXI总线,拥有三种AXI接口,当然用的都是AXI协议.其中三种AXI总线分别为: AXI4:(For high-performance memory-mapped requir ...

  9. AXI总线的工作流程---握手机制

    AXI总线的工作流程---握手机制 信息来源 首先分析AXI Master的工作机制 握手机制 CMD和Data的流程图: 写操作流程:write transaction flow read操作的流程 ...

  10. 弄清AXI总线上每一个信号的含义

    弄清AXI总线上每一个信号的含义 1.信息来源 2.AXI总线的端口描述 时钟与复位端口 AXI M总线--写操作--地址通道的相关信号 AXI M总线--读操作--地址通道的相关信号 AXI M总线 ...

随机推荐

  1. pyplot文本显示

    pyplot文本显示 pyplot中文字符显示 pyplot默认不支持中文字符,因为默认字体是sans-serif,英文字体不能显示中文 方法1,修改需要输出中文字符的地方 在有中文输出的地方,添加属 ...

  2. Python模拟登录的几种方法

    目录 方法一:直接使用已知的cookie访问 方法二:模拟登录后再携带得到的cookie访问 方法三:模拟登录后用session保持登录状态 方法四:使用无头浏览器访问 正文 方法一:直接使用已知的c ...

  3. Containerpilot 配置文件 之 Telemetry

    如果提供telemetry选项,ContainerPilot将公开可用于刮擦性能telemetry的Prometheus HTTP客户端界面. telemetry接口被公告为consul服务. tel ...

  4. docker问题

    Docker报错 WARNING: IPv4 forwarding is disabled. Networking will not work. 解决办法: # vim /usr/lib/sysctl ...

  5. quartz2.2.1 web配置

    首先到http://www.quartz-scheduler.org/downloads/catalog下载工具包 将下载包中lib目录下的所有jar包导入到项目中 因为quartz依赖log4j,需 ...

  6. dfs小练 【dfs】

    1.前n个自然数的所有排列: #include <iostream> #include <cstdio> #include <cstring> using name ...

  7. 基于快速排序的数组划分:2组 3组 K组(sort color)大小写排序 · Partition Array

    2组: [抄题]: 给出一个整数数组 nums 和一个整数 k.划分数组(即移动数组 nums 中的元素),使得: 所有小于k的元素移到左边 所有大于等于k的元素移到右边 返回数组划分的位置,即数组中 ...

  8. 把System.Drawing.Image对象img,在页面的Image控件上显示出来

    1.保存到本地,然后调用. //定义文件名    string iname = DateTime.Now.ToString("yyMMddhhmmss"); //保存到服务器,b是 ...

  9. vi编辑时出现E325:ATTENTION

    我们用vi编辑文件时,系统会提示E325:ATTENTION. 这是由于在编辑该文件的时候异常退出了,因为vi在编辑文件时会创建一个交换文件swap file以保证文件的安全性. 但是每次打开文件时都 ...

  10. SSH三大框架需要的jar包

    1. Struts2框架 * struts-2.3.24\apps\struts2-blank\WEB-INF\lib\*.jar -- Struts2需要的所有jar包 * struts2-spri ...