AXI/AHB/APB总线协议

1.学习笔记

转自月见樽github文章

APB学习笔记

AHB学习笔记

AXI学习笔记

转自Paul安

接口与协议学习笔记-AMBA片上通信协议_APB_AHB_AXI_AXI4不同版本(二)

关于AHB,也可参考第3章给出的本人转载文章,讲的也是非常之详细。

如果有AXI/APB的基础,可以只看第2.3节即可了解AHB的基本时序 

2.AXI/AHB/APB差别

2.1.性能和架构

APB如果不考虑ready信号的话 即非等待模式下读写都需要2个周期,如果考虑ready,读写都需要slave的ready拉高。只有一个master

AXI性能可以达到one transfer per cycle,支持多mst,多slv互联

AHB在无反压的时候性能页可以达到one transfer per cycle,支持多mst,多slv互联

需要注意的是AHB的地址和控制信号至少早于wdata/rdata一次时钟周期

----这里应该是考虑读传输slv侧 要先接收addr,最快下一拍回数据

2.2.通道和burst传输

AHB的读写地址总线是共用一根的,共3个通道,AHB的传输可以被打断,本来需要Burst4只传了burst1被打断,后续需要重新取得总线控制权,传输剩下的burst3,这个就是transfer之间可以支持interleaving。支持Burst传输

AHB即使发送Burst传输,无论是读还是写,都要求每个transfer都发送地址和控制信号

2.3.握手和outs的区别

apb是psel/penable和pready握手,不支持outs,或者说outs=1。slv可以通过pready反压,但是mst不会反压总线。

axi是valid和ready握手,支持outs。mst和slv都可以通过自己的ready反压总线

ahb是htrans可以表示transfer的地址和控制信号有效,用htrans和hready握手,可以采样地址和控制信号Htrans可以表示地址和控制信号的有效性

但是数据信号是没有握手的,那怎么知道读写数据的有效性呢?分两种情况考虑:

1.slv没有反压的时候,也即Hready一直为1,对于读和写,数据比地址和控制信号晚一拍

2.当slv有反压的时候,直到Hready=1的当拍数据对应于前一次Hready=1时对应的地址和控制信号

换句话说,数据与地址/控制信号的时序关系就是,Hready=1时的数据和前一拍Hready=1的地址/控制信号对应【没有握手靠的是和HADDR/HTRANS的约定时序】

所以AHB是不支持outs的,或者说outs=1.

如上图所示,在HREADY=1 采样A3/C3/RD2或者WD2,WD2/RD2对应的地址和控制信号在前一拍HREADY=1的时刻,对应A2/C2

2.3.1. AHB的 Htrans

传输类型使用端口HTRANS标记,有以下取值:

  • IDLE(00):标志主机占有AHB总线,但是没有数据传输发生。从机需要使用OKAY状态回应该类型
  • BUSY(01):标志主机占有AHB总线并在进行猝发传输,但下一个传输不能立刻发生。从机需要使用OKAY状态回应
  • NONSEQ(10):标志主机当前发送的地址和控制信号与上一次传输无关(单次传输就是该状态)
  • SEQ(11):标记主机处于猝发传输的中间部分,即当前发送的地址和控制信号与上一次地址和控制信号有关

例子如下图所示:

  • 第一次传输,开启一次猝发传输,因此该地址与上一次传输无关,使用类型NONSEQ
  • 第二次传输,无法立刻进行传输,因此使用BUSY标记延迟一个周期,延迟后可以进行传输,且处于猝发传输中,因此地址与上一次地址有关,使用SEQ标记
  • 之后均为猝发传输,均使用SEQ类型
  • BUSY时HADDR保持不变

类比AXI的last信号,NONSEQ下一拍Hready拉高的时候对应的数据就是当前transaction的最后一笔transfer。

上图的时序再次印证了2.3节的AHB时序。

2.4. AHB/AXI/APB的互联结构

APB只支持单mst,多slv。仲裁比较简单,就是通过对地址译码,来产生对应slv的psel信号即可

下面分别给出AXI和AHB的 interconnect结构

2.5.应用场景上的区别

转自arm社区APB, AHB, AXI 3, AXI 4 的区别是什么?

APB是双cycle设计,只有一半的cycle在传数据,设计简单,一般用来连接吞吐量需求较低配置端口,不过在ARM总线内部都会转成AXI来传输。AHB算是三通道协议,分别是读写数据和地址通道,读写共用一个地址通道,所以吞吐量也不是很理想,但是设计简单,cortex m0就是ahb的,还有很多legacy device采用ahb,ahb在ARM总线内部也是转成AXI传输和仲裁。AXI的是5通道设计的,读写地址分开,吞吐量大,第一个版本叫AXI3,后来更新到AXI4,支持最多256beat的long burst和QoS。AMBA 4之后ARM还发布了AMBA CHI,以便更多处理器通过环形总线互联,实现环形总线上的数据传输。

APB一般用来连接配置接口,AHB和AXI多用来接数据传输接口,从性能和设计复杂度来看 APB < AHB < AXI。

APB (Advanced Peripherals Bus)是低带宽的总线,主要用来连接外设,比如系统外设的寄存器接口。它的信号要少的多,但必须支持32位

AHB(Advanced High-performance Bus)是AMBA2里定义的总线协议。它支持单边时钟协议,单周期总线权限交接,64/128位总线带宽等特性。速度比AHB高

AXI(Advanced eXtensible Interface)是最初AMBA3定义的总线标准。目标服务高性能和高时钟频率的系统设计。它提供单独的地址/控制和数据周期,支持非对齐的数据传输,爆发(burst)型总线事务等特性。AXI3和AXI4就是AMBA3和AMBA4定义的高速总线标准。

APB和AHB用在ARM7, ARM9和Cortex-M的ARM处理器中。AXI3应用比较广泛,比如Cortex-A9,Cortex-R5/F。AXI4在最新的Cortex-A7和Cortex-A15使用。

2.6 AHB-lite

AHB-lite和AHB的最大区别就是lite只支持单mst

3.AHB协议详解

详见本人转载的文章:

AMBA总线(2)—— AHB协议-优快云博客

这篇文章详细介绍了AHB的时序,互联和各种信号

同时给了AHB5.0上的Hready_in和Hready_out的使用

03-25
<think>嗯,用户问的是AMBAAHBAPB的区别以及在SoC设计中的使用。首先,我需要回忆一下AMBA总线的基本知识。AMBA是ARM公司推出的总线架构,不同版本有不同的组成部分。比如AMBA2有AHBAPBAMBA3可能增加了AXI。用户提到的是AHBAPB的区别,所以应该集中在这些总线的特性上。 首先,AMBA是什么?它是片上系统的总线标准,用于连接处理器、外设等。AHB是高性能总线,用于高速模块,比如处理器、内存控制器、DMA等。APB是低速外设总线,连接像UART、SPI这样的设备。需要比较它们的结构、速度、连接方式等。 然后,用户可能需要知道在SoC设计中如何应用这两种总线。通常,AHB作为主总线,APB通过桥接器连接到AHB,这样高速和低速设备可以分开,优化系统性能。比如,在AMBA2中,系统可能分为AHB用于高性能,APB用于低功耗外设。 还要注意用户提到的引用,里面提到AMBA3包括ATB和AHB-Lite。可能AHB-Lite是简化版的AHB,用于不需要全功能AHB的场合。不过用户的问题集中在AHBAPB,所以可能不需要深入讨论AMBA3的内容,但可以稍微提一下。 另外,用户提供的引用中有关于组合逻辑和寄存器的内容,这可能与APB的设计有关,因为APB接口简单,可能使用较少的逻辑资源,但需要确保时序正确,避免glitch。不过这部分可能属于更底层的实现细节,用户可能更关注架构层面的区别。 在回答时,需要分点列出区别,包括总线类型、性能、结构、连接方式、应用场景,并给出SoC设计中的使用例子。比如,AHB用于CPU和高速外设,APB用于低速设备,通过桥接器连接,这样层次化设计节省功耗和面积。 可能用户的实际需求是在设计SoC时如何选择总线和架构,或者理解现有设计中的总线使用。需要确保回答清晰,结构分明,帮助用户快速抓住关键点。同时,生成的问题可以引导用户深入性能优化、桥接器实现或具体设计案例。</think>### AMBA AHBAPB的区别及在SoC设计中的应用 #### 1. **AMBA总线概述** AMBA(Advanced Microcontroller Bus Architecture)是ARM推出的总线协议标准,用于片上系统(SoC)中处理器与外设的高效互连。其核心目标是平衡性能、功耗和面积(PPA)[^1]。在SoC设计中,AHB(Advanced High-performance Bus)和APB(Advanced Peripheral Bus)是AMBA 2.0协议中最常用的两类总线。 --- #### 2. **AHBAPB的关键区别** | **特性** | **AHB** | **APB** | |----------------|----------------------------------|----------------------------------| | **总线类型** | 高性能并行总线 | 低功耗、低复杂度总线 | | **性能** | 支持高带宽、多主设备并发操作 | 单主设备、顺序传输 | | **结构** | 多层级互联(如矩阵或交叉开关) | 单层星型结构 | | **连接方式** | 直接连接高速模块(CPU/DMA等) | 通过AHB-APB桥接低速外设 | | **典型应用** | 内存控制器、GPU、高速接口 | 定时器、UART、GPIO等低速外设 | --- #### 3. **SoC设计中的使用场景** 1. **分层架构** - **AHB层**:作为主总线,连接CPU、DMA、高速内存等,支持流水线操作和突发传输(Burst Transfer)以提高吞吐量。 - **APB层**:通过AHB-APB桥接器扩展,用于配置寄存器和控制低速外设,减少系统功耗和布线复杂度。 2. **性能优化** - AHB的多主设备支持允许并行操作(如CPU与DMA同时访问内存),而APB的简单协议适合低频率外设,避免资源竞争。 3. **示例拓扑** ```plaintext CPU (AHB Master) | v AHB Matrix <--> DDR Controller (AHB Slave) | v AHB-APB Bridge | v APB Bus <--> UART/SPI/I2C (APB Slaves) ``` --- #### 4. **实际设计注意事项** - **AHB-APB桥接器**:需处理时钟域同步(AHB通常高频,APB低频)和协议转换(如AHB突发传输转为APB单次传输)。 - **功耗控制**:APB外设在不工作时可关闭时钟,而AHB需保持活跃以响应主设备请求。 - **时序收敛**:AHB的复杂互联可能引入时序挑战,需通过流水线或握手信号(如`HREADY`)解决[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值