AXI总线(转)

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总线(转)

时间: 2024-10-12 00:01:12

AXI总线(转)的相关文章

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

 虽然Xilinx已经将和AXI时序有关的细节都封装起来,给出了官方IP和向导生成自定义IP,用户只需要关注自己的逻辑实现,但是还是有必要简单了解一下AXI的时序,毕竟咱是做硬件设计的. AXI(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0协议中最重要的部分,是一种面向高性能.高带宽.低延迟的片内总线.它的地址/控制和数据相位是分离的,支持不

AMBA AXI总线

目前, ARM公司设计的AMBA2.0 AHB总线规范以及AMBA3.0 AXI总线规范正被广泛运用于各种SOC芯片设计中.它们对接口和互联提供的标准,有助于模块化设计以适应设计超大规模SOC的需要. AXI总线与AHB总线相比,特点非常明显: 划分为5个独立的通道,单向传输,有助于提升时钟频率,减少延时 支持乱序 valid与ready握手方式,更加简单 burst方式下,只需提供初始地址,控制更加方便 对称的主从接口,系统互联更加灵活 支持低功耗模式 ? ? ? ? ? ? ? ? ? ?

Xilinx VDMA 24位流输出与32位AXI总线的内存 流数据关系

测试方法采用了VDMA仅有MM2S通道, 内存中的图像帧是用MicroBlaze核写入的一个colorbar. VDMA的mhs部分如下, 因为我的输出用了Digilent的HDMI核,而这个HDMI核是32位的,我自己写了个axis_24_32的位宽转换的ip,这个暂且按下不表. BEGIN axi_vdma PARAMETER INSTANCE = axi_vdma_0 PARAMETER HW_VER = 5.04.a PARAMETER C_USE_FSYNC = 0 PARAMETER

AXI总线

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

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

1.Tools->create and package IP 2.create AXI4总线的IP 3.新建block design 4.点击右键,选择edit in ip packager 此时生成了一个新的工程: 5.对生成的.v文件进行编辑 6.先修改顶层文件 添加一个LED输出端口 其实在文件的下面还可以添加自己的逻辑: 7.修改源文件 先添加端口,下面还有提示,编辑端口不要超过这条线.下面都是AXI总线的端口,不要去动它. 8.下一步操作 选择->Merge changes from

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

利用ZYNQ验证算法的一大优势在于,可以在上位机发送指令借助CPU的控制能力和C语言易开发特点,实时配置算法模块的工作模式.参数等对来对其算法模块性能进行全面的评估.最重要的是无需重新综合硬件模块. 接着上篇该系列博文,在sysGen中设计模块功能为:根据模式选择输入,来完成乘2或除2两种运算,0乘1除. 测试激励选用From Workspace模块,从MATLAB工作空间导入数据.利用MALTAB脚本可以非常容易地生成任意数据集,极大体现了sysGen开发的优势. 设计完成调用xilinx w

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

一.前言 最近花费很多精力在算法仿真和实现上,外设接口的调试略有生疏.本文以FPGA控制OLED中的SPI接口为例,重新夯实下基础.重点内容为SPI时序的RTL设计以及AXI-Lite总线分析.当然做些项目时可以直接调用Xilinx提供的SPI IP核,这里仅出于练习的目的考虑. 二.接口时序分析 本项目用的OLED型号为UG-2832HSWEG04,核心控制器是SSD1306.该芯片支持并口.I2C以及SPI接口,这里采用4线SPI作为数据总线.4线SPI接口包括: SCLK:串行时钟,SSD

AXI总线简介

AXI全称Advanced eXtensible Interface,是Xilinx从6系列的FPGA开始引入的一个接口协议,主要描述了主设备和从设备之间的数据传输方式.在ZYNQ中继续使用,版本是AXI4,所以我们经常会看到AXI4.0,ZYNQ内部设备都有AXI接口.其实AXI就是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)的一个部分,是一种高性能.高带宽.低延迟的片内总线,也用来替代以前的AHB和APB总线.第一个版本的AX

一步一步学ZedBoard & Zynq(四):基于AXI Lite 总线的从设备IP设计 转载

文章来源 http://www.cnblogs.com/surpassal/archive/2012/10/09/Zynq_Lab4.html 本小节通过使用XPS中的定制IP向导(ipwiz),为已经存在的ARM PS 系统添加用户自定IP(Custom IP ),了解AXI Lite IP基本结构,并掌握AXI Lite IP的定制方法,为后续编写复杂AXI IP打下基础.同时本小节IP定制方法同样适用于MicroBlaze处理系统. 本小节定制的是简单LED的IP,只有一个数据寄存器,向其