首页 > 其他分享 >APB_AHB_AXI协议的简单介绍

APB_AHB_AXI协议的简单介绍

时间:2024-02-19 16:01:26浏览次数:24  
标签:AHB 总线 传输 APB AXI AMBA

一、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

标签:AHB,总线,传输,APB,AXI,AMBA
From: https://www.cnblogs.com/FireLife-Cheng/p/18021325

相关文章

  • 什么是 axios?axios与promise区别
    Axios是一个基于promise的HTTP库,可以用在浏览器和node.js中promise是现代javascript中异步编程的基础,是一个由异步函数返回的可以向我们指示当前操作所处的状态的对象使用cdn:<scriptsrc="https://unpkg.com/axios/dist/axios.min.js"></script>//为给定ID的u......
  • Codeforces Round 169 (Div. 2)C. Little Girl and Maximum Sum(差分、贪心)
    目录题面链接题意题解代码总结题面链接C.LittleGirlandMaximumSum题意给q个[l,r]将所有这些区间里面的数相加和最大。可以进行的操作是任意排列数组题解对出现的每个区间内的位置加上1,代表权值操作完之后求一遍前缀和,得到每个位置的权值然后贪心的考虑,权值越大,应......
  • BootstrapBlazor 模板适配移动设备使用笔记
    项目模板BootstrapBlazorApp模板为了方便大家利用这套组件快速搭建项目,作者制作了项目模板(ProjectTemplates),使用dotnetnew命令行模式,使用步骤如下:安装项目模板dotnetnewinstallBootstrap.Blazor.Templates::8.0.1创建工程dotnetnewbbapp官网教程https:......
  • AXI-STREAM简介
    AXI-STREAM简介概念AXI-Stream总线是一种高效、简单的数据传输协议,主要用于高吞吐量的数据流传输场景。相比于传统的AXI总线,AXI-Stream总线更加简单和轻量级,它通过无需地址的方式,将数据从一个模块传输到另一个模块,适用于需要高速数据传输的应用场景。部分术语Transfer:基于TVA......
  • axios 使用
    官网https://axios-http.com/安装npminstallaxios使用格式axios.method({configs}).then(function(response){//}).catch(function(error){//handleerrorconsole.log(error);}).finally(function(){//alwaysexecuted});axios函数axi......
  • .NET中使用BootstrapBlazor组件库Table实操篇
    前言Table表格在后台管理应用中使用的是相当频繁的,因此找一个功能齐全的前端框架对于我们而言是非常必要的,因为封装完善的前端框架能够大大提升我们的工作对接效率。今天我们主要来讲解一下在.NET中使用BootstrapBlazor组件库的Table表格组件(本章使用的数据都是程序自动生成的模......
  • axios导出Excel或word
    axios导出Excel或word1.通用方法书写importaxiosfrom'axios'import{saveAs}from'file-saver'//创建axios实例constrequest=axios.create({baseURL:'http://192.168.0.101:8081/zj_travel',//所有的请求地址前缀部分(没有后端请求不用写)timeout:80......
  • nodejs+axios调用第三方接口返回数据给前端
    nodejsaxios调用第三方接口返回数据给前端后端koalas前端vue0.内容和前后端框架本项目为前端执行时间段和航班,后端利用指定信息查询第三方航班信息接口并返回给前端。1.koajs+axiosapp.js文件中引入koa、添加初始化中间件并启动项目。1.1引入koa并添加初始化bodyPars......
  • Vue中如何对Axios进行二次封装
    作为一个前端开发者,你一定对Axios这个强大的HTTP库非常熟悉。它不仅简化了与后端API的通信,而且还提供了许多强大的功能,如拦截器、取消请求等。但是在实际开发中,我们经常需要对Axios进行二次封装,以便更好地适应我们的业务需求。今天,我将为大家分享一下如何在Vue中对Axios进行二次封......
  • CF1796C Maximum Set
    原题传送门当天比赛打完之后看了看跟我排名差不多的人的这题代码,感觉莫名其妙,写了几十行。我看了看我只有十几行的AC代码,陷入了沉思。分析题目的要求其实可以转换为:在区间\([l_0,r]\)中选择一些数,使得这些数排序后每个数都是前一个数的倍数,要求选的尽可能多。那既然要选的......