一、AMBA概述

  今天要介绍的三种嵌入式总线技术:APB、AHB、AXI,它们都属于AMBA 片上总线协议。所以,在介绍这几种总线技术之前,有必要先了解一下AMBA 片上总线协议是什么。

  AMBA (Advanced Microcontroller Bus Architecture) ,全称叫作高级微控制器总线架构,它是由ARM公司研发推出的高性能片上总线协议。它定义了高性能嵌入式微控制器的通信标准,可以将RISC处理器(精简指令集处理器)集成在其他IP芯核和外设中,它是有效连接IP核的“数字胶”,并且是ARM复用策略的重要组件;它不是芯片与外设之间的接口,而是ARM内核与芯片上其他元件进行通信的接口。比如在Xilinx公司的Zynq芯片中,它就是ARM与FPGA之间的连接通路。

  AMBA协议已经经历了好几代的演进:

  • AMBA 1只有ASB和APB协议;
  • AMBA 2引入AHB协议用于高速数据传输;
  • AMBA 3为适应高吞吐量传输和调试引入AXI和ATB,增加高级可扩展接口,而AHB协议缩减为AHB-lite,APB协议增加了PREADY和PSLVERR,ASB由于设计复杂而不再使用;
  • AMBA 4,AXI得到了增强,引入QOS和long burst的支持,根据应用不同可选AXI4,AXI4-lite,AXI4-stream。同时为满足复杂SOC的操作一致性引入ACE和ACE-lite协议,APB和ATB也得到增强,比如APB加入了PPROT和PSTRB。

接下来就依次介绍一下其中比较重要的三种总线:APB、AHB和AXI。

二、APB总线

APB (Advanced Peripheral Bus) ,全称叫作高级外围总线,至今已经有3个版本。

  • AMBA 1 APB,定义了最基本的信号interface, 读写transfer, APB bridge, APB slave;
  • AMBA 3 APB,增加定义信号 PREADY, PSLVERR 来完成对wait state和Error reporting功能的支持;
  • AMBA 4 APB:增加定义信号 PPROT, PSTRB来支持secure,supervisor和sparse data transfer 的功能。

APB主要用在低带宽和不需要高性能总线的外围设备上例如UART、1284等。 APB是非流水线结构,所有的信号仅与时钟上升沿相关,这样就可以简化APB外围设备的设计。它的总线架构不像AHB支持多个主模块,在APB里面唯一的主模块就是APB 桥。其特性包括:

  • 两个时钟周期传输;
  • 无需等待周期和回应信号;
  • 控制逻辑简单,
  • 只有四个控制信号。

APB可以与AMBA高级高性能总线(AHB)和AMBA高级可扩展接口(AXI)连接。APB上的传输可以用状态图来说明:

  • IDLE:这个是 APB 的默认状态,也就是没有传输时候的状态;
  • SETUP:当需要进行一个传输的时候,APB 首先进入这个状态;PSELx 信号首先拉高;总线仅仅在 SETUP 状态停留一个时钟周期,然后接着在下一个时钟的上升沿进入 ACCESS 状态;
  • ACESS:在 SETUP 状态转换到 ACCESS,PENABLE 信号被拉高;在 SETUP 状态转换到 ACCESS 状态这段时间里,address,write,select 和 write data 信号必须保持稳定;

处于 ACESS 状态下,如果PREADY为 0,会让其继续处于 ACCESS 状态;否则,PREADY 为 1,如果还有传输则再次进入 SETUP -> ACCESS ,如果没有传输,直接回到IDLE。

各端口信号说明(Ports)如下:

三、AHB总线

  AHB (Advanced High-performance Bus),全称叫作高级高性能总线。AHB用于高性能、高时钟频率的系统结构,典型的应用如ARM核与系统内部的高速RAM、NAND FLASH、DMA、Bridge的连接

  它的强大之处在于它可以将微控制器(CPU)、高带宽的片上RAM、高带宽的外部存储器接口、DMA总线master、各种拥有AHB接口的控制器等等连接起来构成一个独立的完整的SOC系统。不仅如此,还可以通过AHB-APB桥来连接APB总线系统。AHB可以成为一个完整独立的SOC芯片的骨架。

  相比于APB,区分了地址周期和数据周期

  典型的系统总线的结构如下图所示:

AHB系统设计主要包括以下四个部分:

  • Master AHB主控制器:主控制器可以通过地址和控制信息,进行初始化,读,写操作,同一时间只有1个Master会被激活;
  • Slave AHB从设备:从设备通常是指在其地址空间内,响应主控制器发出的读写控制操作的被动设备,并对Master返回成功、失败或者等待等状态,完成数据的传输控制;
  • Arbiter AHB仲裁器:仲裁器根据用户的配置,确保在总线上同一时间只有一个主控制器拥有总线控制权限,从而保证总线上一次只有1个Master在工作;AHB总线只能存在一个仲裁器;
  • Decoder AHB译码器:负责对地址进行解码,并提供片选信号到各Slave;AHB总线只能有一个译码器;

每个AHB都需要1个仲裁器和1个中央解码器,且有且仅有一个!下图就是一个包含三个主机和四个从机的AHB设计结构。

  AHB总线操作的基本过程是:

  1. 有需要占用总线的主设备向仲裁器发出请求,仲裁器授权给指定的主设备,任一时间周期只有一个主设备可以使用总线,对其指定的从设备进行读写操作。
  2. 获得授权的总线开始AHB传输,首先发出地址和控制信号,提供地址信息(HADDR)、传输方向、带宽(HSIZE)和burst类型信号(HBURST)。总线统一规划从设备的地址(HSELx),译码器根据地址和控制信号确定某个从设备与主设备进行通信。
  3. 数据传输通过数据总线完成,不出现三态总线,AHB将读写总线分为读总线和写总线。每次传输包括一个地址和控制周期,一个或多个数据周期。地址和控制周期不能扩展,从设备必须在一个周期内采样地址信号,数据周期可以通过HREADY信号扩展,这点与前面的APB的PREADY信号实现有等待信号传输一样。HREADY为低时给传输加入一个等待状态以使从设备获得额外的时间提供或采样数据,从设备通过响应信号HRESP反映传输状态。

四、AXI总线

  AXI(Advanced eXtensible Interface),全称叫作高级可扩展接口,是一种总线协议,该协议是ARM公司提出的AMBA3.0中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。AMBA4.0将其修改升级为AXI4.0。

  AMBA4.0 包括AXI4.0、AXI4.0-lite、ACE4.0、AXI4.0-stream。

  • AXI4.0-Lite是AXI的简化版本,
  • ACE4.0 是AXI缓存一致性扩展接口,
  • AXI4.0-Stream是ARM公司和Xilinx公司一起提出,主要用在FPGA进行以数据为主导的大量数据的传输应用。

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

  除了降低延时,AXI总线还定义了在进出低功耗节电模式前后的握手协议。规定如何通知进入低功耗模式,何时关断时钟,何时开启时钟,如何退出低功耗模式。这使得所有IP在进行功耗控制的设计时,有据可依,容易集成在统一的系统中。

  AXI的特点如下:

  • 单向通道体系结构。信息流只以单方向传输,简化时钟域间的桥接,减少门数量。当信号经过复杂的片上系统时,减少延时。
  • 支持多项数据交换。通过并行执行猝发操作,极大地提高了数据吞吐能力,可在更短的时间内完成任务,在满足高性能要求的同时,又减少了功耗。
  • 独立的地址和数据通道。地址和数据通道分开,能对每一个通道进行单独优化,可以根据需要控制时序通道,将时钟频率提到最高,并将延时降到最低。
  • 增强的灵活性。AXI技术拥有对称的主从接口,无论在点对点或在多层系统中,都能十分方便地使用AXI技术。

  下面再来具体介绍一下AXI协议的非常重要的一个特点,那就是它包含了五种信道,分别传输不同的信号,这大大提高了传输效率。

  AXI协议是基于burst的传输,它定义的5个独立的传输通道分别是:读地址通道、读数据通道、写地址通道、写数据通道、写响应通道

  AXI是基于VALID/READY的握手机制数据传输协议,传输源端使用VALID表明地址/控制信号、数据是有效的目的端使用READY表明自己能够接受信息

  • 读/写地址通道:读、写传输每个都有自己的地址通道,对应的地址通道承载着对应传输的地址控制信息。
  • 读数据通道:读数据通道承载着读数据和读响应信号,它包括数据总线(8/16/32/64/128/256/512/1024bit)和指示读传输完成的读响应信号。
  • 写数据通道:写数据通道的数据信息被认为是缓冲(buffered)了的,“主”无需等待“从”对上次写传输的确认即可发起一次新的写传输。写通道包括数据总线(8/16…1024bit)和字节线(用于指示8bit 数据信号的有效性)。
  • 写响应通道:“从”使用写响应通道对写传输进行响应。所有的写传输需要写响应通道的完成信号。

五、总结

AHB与AXI、APB的区别与联系:

  • AHB是先进的高性能总线,AXI是先进的可扩展接口,APB是高级外围总线;
  • AHB和APB都是单通道总线,不支持读写并行;而AXI是多通道总线,总共分为五个通道,能够实现读写并行;
  • AHB和AXI都是多主/从设备,且通过仲裁机制实现总线控制权的分配;而APB是单主设备多从设备,其主设备就是APB桥,不具有仲裁机制;

在数据操作方面,AHB和AXI支持突发传输,APB不支持;此外,AXI支持数据的非对齐操作,AHB和APB不支持

几种总线的性能对比分析:

参考链接:

https://zhuanlan.zhihu.com/p/161077476

https://blog.csdn.net/zhoutaopower/article/details/103808527

APB_AHB_AXI协议的简单介绍的更多相关文章

  1. MQTT协议的简单介绍和服务器的安装

    最近公司做的项目中有用到消息推送,经过多方面的筛选之后确定了使用MQTT协议,相对于XMPP,MQTT更加轻量级,并且占用用户很少的带宽. MQTT是IBM推出的一种针对移动终端设备的基于TCP/IP ...

  2. HTTP协议的简单介绍

    前传:HTTP协议的演变过程 HTTP(HyperText Transfer Protocol)协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是 ...

  3. 一:AMQP协议标准简单介绍

    一:AMQP协议?--->AMQP 是 Advanced Message Queuing Protocol,即高级消息队列协议.和前面罗列的技术不同,AMQP 是一个标准化的消息中间件协议--- ...

  4. Tomcatserverhttps协议配置简单介绍

    一. 数字签名证书制作 1. 用jdk自带的keytool工具生成证书. 2. 导出证书: 3. 交给CA签名认证: 注意:制作具体步骤演示样例參见附录. 二.改动server.xml文件 改动con ...

  5. MQTT介绍(1)简单介绍

    MQTT目录: MQTT简单介绍 window安装MQTT服务器和client java模拟MQTT的发布,订阅 MQTT: MQTT(Message Queuing Telemetry Transp ...

  6. HTTP协议系列(3)---包括WebSocket简单介绍

    一.HTTPS     HTTP是超文本传输协议,那HTTPS是什么尼?要明白HTTPS是什么先要明白HTTP的缺点,想一下我们在使用HTTP的时候会有那些缺点尼? 1.通信使用的明文(不加密),内容 ...

  7. 基于SIP和RTP协议的开源VOIP之QuteCom简单介绍

    **************************************************************************************************** ...

  8. UIDynamic(简单介绍)

    一.简单介绍 1.什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象 如:重力.弹性碰撞等现 ...

  9. iOS开发——UI精选OC篇&UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍

    UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍 一:UIApplication:单例(关于单例后面的文章中会详细介绍,你现在只要知道 ...

  10. iOS开发UI篇—UITableview控件简单介绍

    iOS开发UI篇—UITableview控件简单介绍 一.基本介绍 在众多移动应⽤用中,能看到各式各样的表格数据 . 在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView,UIT ...

随机推荐

  1. Blazor开发小游戏?趁热打铁上!!!

    大家好,我是沙漠尽头的狼. 网站使用Blazor重构上线一天了,用Blazor开发是真便捷,空闲时间查查gpt和github,又上线一个 正则表达式在线验证工具 和几个在线小游戏,比如 井字棋游戏.扫 ...

  2. 01-Shell脚本入门

    1.Shell介绍 1.1 疑问 linux系统是如何操作计算机硬件CPU,内存,磁盘,显示器等? 答: 使用linux的内核操作计算机的硬件 1.2 Shell介绍 通过编写Shell命令发送给li ...

  3. C++中vector容器详解

    参考链接:https://www.runoob.com/w3cnote/cpp-vector-container-analysis.html 一.什么是vector? 向量(Vector)是一个封装了 ...

  4. Vue- 绑定的图片不显示

    需要通过 require包裹 <template> <div> {{user.username}}: <img :src="user.avatar" ...

  5. [转帖]Linux 下rsync命令详细整理

    https://blog.csdn.net/weixin_44052462/article/details/116134761 rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面 ...

  6. [转帖]SQLServer的UTF8支持

    排序规则和 Unicode 支持 - SQL Server | Microsoft Learn UTF-8 支持 SQL Server 2019 (15.x) 完全支持广泛使用的 UTF-8 字符编码 ...

  7. [转帖]linux 下 {}大括号的用法

    我们平时使用Linux的时候经常遇到这样一个问题,举例有这样一种情况:执行命令 $ cp /etc/apt/sources.list /etc/apt/sources.list.bak 这里面有个问题 ...

  8. Oracle PDB的相关使用说明

    Oracle PDB的相关使用说明 摘要 PDB pluggable database 是Oracle12c以上的版本(Oracle18c.oracle19c) 新增加的一个特性. 他可以实现灵活插拔 ...

  9. 你也能成为“黑客”高手——趣谈Linux Shell编程语言

    作者:京东零售 杜兴文 我们看过很多在电脑命令行敲一些命令并给观众展示很高科技的画面感的电影,比如<盗梦空间><操作系统革命><代码>等等, 再想想电影黑客帝国中的 ...

  10. csv用Excel打开出现乱码

    CSV用Excel打开出现乱码 今天出现一个问题 使用wps打开不会出现乱码.但使用 excel 打开的时候会出现乱码. 其实在我们把文件流转成文件的时候需要在bolb 对象前加上unicode标识, ...