【ARM AMBA APB 入门 1 -- APB总线介绍】

本文详细介绍了ARM的AMBA总线架构中的APB总线,包括其历史发展、使用场景、信号列表、传输时序和错误响应机制。APB总线主要应用于低速外设连接,随着版本升级,性能和功能不断完善,如APB3.0引入了PREADY和PSLVERR信号。文章还对比了APB与其他如AHB、AXI总线的区别。
摘要由CSDN通过智能技术生成


请阅读【ARM AMBA 总线 文章专栏导读】

AMBA 总线介绍

AMBA(Advanced Microcontroller Bus Architecture)高级处理器总线架构,不同的速率需求构成了为高性能SoC设计的通信标准,主要包括:AHB(Advanced High-performance Bus)高级高性能总线。APB(Advanced Peripheral Bus)高级外围总线 AXI (Advanced eXtensible Interface)高级可拓展接口。

APB 总线历史

ARM APB总线(Advanced Peripheral Bus)是ARM公司推出的一种高速、低功耗的外设总线。它主要用于连接处理器和外设之间的通信,具有简单、灵活、可靠等特点。以下是APB总线的发展历史:

  • APB v1.0:最初的APB总线发布于1996年,它是一种基于8位数据传输的低速总线,主要用于连接一些简单的外设。
  • APB v2.0:随着ARM处理器性能的提升,APB总线也在不断升级。1998年,APB v2.0发布,它支持16位数据传输,速度提高了一倍,同时增加了一些新的特性。
  • APB v3.0:2000年,APB v3.0发布。它进一步提高了总线的速度和可靠性,并增加了一些新的特性,如支持burst传输和split-transaction。
  • APB v4.0:随着SoC(System on Chip)的广泛应用,APB总线也在不断演进。2003年,APB v4.0发布,它支持更高的数据传输速度和更多的特性,如支持DMA(Direct Memory Access)传输和pipelined burst传输。
  • AMBA3 APB:2004年,ARM发布了AMBA3协议,这是一种新的总线架构,它包括了APB、AXI(Advanced eXtensible Interface)和ATB(Advanced Trace Bus)三种总线。其中,APB总线成为AMBA3协议中的低速总线,主要用于连接一些简单的外设。
  • AMBA4 APB:2010年,ARM发布了AMBA4协议,这是一种全新的总线架构,它针对SoC的需求进行了优化,支持更高的数据传输速度和更多的特性。在AMBA4协议中,APB总线仍然作为低速总线的角色存在,但它的性能和可靠性得到了进一步提升。

以上是APB总线的发展历史,随着ARM处理器和SoC的不断发展,APB总线也将不断演进和完善。

1.1 APB 总线介绍

1.1.1 APB 使用场景

在SOC设计中,APB 一般作为IP的配置接口,包括低速外设如 I2C, UART, I2S等,也包括 DDR, PCIe, Ethernet 等高速IP,可以方便的实现CPU对外设IP的寄存器配置。系统中一般会实现一个AXI2APB 或者 AHB2APB 的桥接器将 APB 口挂载在系统上。
在这里插入图片描述

1.1.2 APB 信号列表

Y: Mandatory
N: Must not be preset
O: Optional for inputs and outputs
OO: Optional for output ports, mandatory for inputs
C: Conditional, must be present if the property is True
OC: Optional conditional, optional but can only be present if True
在这里插入图片描述

SignalSourceDescription
PCLK时钟源系统时钟,传输发生在上升沿
PRESETn复位源复位信号,低使能
PADDRAPB桥地址信号,最高可达32位
PSELxAPB桥由APB bridge产生的信号,针对每一个Peripheral Bus Slave片选信号,表示x从机是否被选中
PENABLEAPB桥使能信号,标记传输使能
PWRITEAPB桥读/写控制信号,高位写,低为读
PWDATAAPB桥写数据
PREADY从机标记从机是否已将数据发送到总线,高为ready
PRDATA从机读数据
PSLVERR从机故障信号,高为发生故障

APB 总线架构不支持多个主模块,其唯一的主模块(master)就是 APB桥, 此外,在 APB 总线中分别有 PWDATAPRDATA但这并不表示它支持同时读写

1.1.3 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;

1.2 APB 传输时序

1.2.1 APB 写传输时序

写传输分为不带等待信号的写,和带等待信号的写。

1.2.1.1 Write transfer with no wait states

在这里插入图片描述

  • T1 时刻 APB 将地址信息 PADDR 和写的数据 PWDATA 准备好,拉高 PWRITE 表示进入写,同时拉高 PSEL,从 IDLE 进入 SETUP;
  • T2 时刻也就是下一个时钟周期拉高 PENABLE,使得状态进入 ACCESS;
  • T3 时刻检测到 PREADY 被拉高,也就是说 Slave 已经正确接收到数据,传输完成;PENABLE 拉低,PSEL 拉低。
1.2.1.2 Write transfer with wait states

在这里插入图片描述

  • T1 时刻 APB 将地址信息 PADDR 和写的数据 PWDATA 准备好,同时拉高 PSEL,从 IDLE 进入 SETUP
  • T2 时刻也就是下一个时钟周期拉高 PENABLE,使得状态进入 ACCESS
  • T3 时刻检测到 PREADY 为 0,也就是说 Slave 还没有接收完数据,所以在此刻,下面信号必须保持,以便 Slave 能够继续采样:
    • PADDR 地址信号
    • PWRITE 数据方向信号
    • PSEL 片选信号
    • PENABLE 使能信号
    • PWDATA 数据
  • T4 时刻 PREADY 依然 为 0,所以还是保持不变
  • T5 时刻,PREADY 为 1,说明 Slave 已经正确接收到数据,传输完成;PENABLE 拉低,PSEL 拉低

注意:即便是传输结束了,Address 和 data 信号也不会立即改变,直到下一次传输才会刷新新的地址和数据信号,这样做的原因是减少功耗;

1.2.2 APB 读时序

1.2.2.1 Read transfer with no wait states

在这里插入图片描述

  • T1 时刻 APB 将地址信息 PADDR 准备好,拉低 PWRITE 表示进入读,同时拉高 PSEL,从 IDLE 进入 SETUP;
  • T2 时刻也就是下一个时钟周期拉高 PENABLE,使得状态进入 ACCESS;
  • T3 时刻检测到 PREADY 被拉高,也就是说 Slave 已经完成收据发送,PRDATA 上就是来自 Slave 的数据,传输完成;PENABLE 拉低,PSEL 拉低。
1.2.2.1 Read transfer with wait states

在这里插入图片描述
时序过程和上述一样,只不过 PREADY 被拉低了两个周期,真正从 Slave 读的数据到 T5 时刻才真正有效;

1.2.3 Error Respond

在读和写的过程,可能出现错误,错误通过 PSLVERR 信号来指明;APB外围设备不要求必须支持PSLVERR引脚,当不使用该引脚时,应被置低

1.2.3.1 Error response Write transfer

下面这个是写失败后的时序:
在这里插入图片描述
可以看到,在写失败后,PSLERR 信号被拉高了

1.2.3.2 Error response Read transfer

下面这个是读失败后的时序:
在这里插入图片描述
读失败后,PRDATA 上的数据不再有效。

1.2.3.3 Mapping of PSLVERR

如果发生了失败的情况 PSLVERR 信号会反馈到桥接的 AHB/AXI 总线上的回复信号上。

1.2.4 APB2和APB3有什么区别

  • APB2.0和APB3.0的差别:APB3.0提供了一个低功耗的接口,并降低了接口的复杂性。且APB3比APB2增加了两个信号:
  • PREADY:来扩展APB传输,主要是增加延时;
  • 错误信号PSLVERR:来指示传输失败。

1.2.5 APB3和APB4的差别

  • 增加了PROT和PRSTB两个信号。
  • PPROT一种保护信号,用于支持APB上的非安全交易和安全交易。
  • PSTRB一个写选通信号,用于在写数据总线上进行sparse data transfer(稀疏数据传输)。APB4用的比较少。

1.2.6 APB, AHB, AXI 差异

  • AHB:主要是针对高速率、高频宽及快速系统模块所设计的总线,可以连接在如微处理器、芯片上或芯片外的内存模块和DMA等高效率总线;APB:主要应用在低速且低频率的外围,可针对外围设备做功率消耗及复杂接口的最佳化;
  • APB在AHB和低带宽的外围设备之间提供了通信桥梁,所以APB是AHB的二级拓展总线;
  • AXI:高速度、高带宽、管道化互联、单向通道,只需要首地址、读写并行、支持乱序、支持非对齐操作。

推荐阅读
https://blog.csdn.net/zhoutaopower/article/details/103729440

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

主公CodingCos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值