AMBA 3 APB 协议规范笔记
1. 概述
AMBA (Advanced Microcontroller Bus Architecture) 是一种用于高性能嵌入式系统的片上总线架构。APB (Advanced Peripheral Bus) 是 AMBA 3 协议家族的一部分,专为低功耗和低复杂度设计优化的低成本接口。
主要特点:
- 低带宽连接: 适用于不需要高性能流水线总线接口的低带宽外设。
- 非流水线协议: 所有信号转换仅与时钟上升沿相关,易于集成到任何设计流程中。
- 接口兼容性: 可与 AMBA AHB-Lite 和 AXI 接口连接,用于访问外设的可编程控制寄存器。
- 最少两个周期完成一次传输。
2. 协议版本变化
AMBA 3 APB 协议规范 v1.0 的主要变化:
- 新增 PREADY 信号: 用于延长 APB 传输,允许从设备控制传输时长。
- 新增 PSLVERR 信号: 用于指示传输失败,支持错误响应。
3. 传输类型
3.1 写传输
3.1.1 无等待状态写传输
- Setup 阶段 (T1):
- 地址、数据、写信号 (PWRITE) 和选择信号 (PSELx) 在时钟上升沿后发生变化。
- 传输的第一个时钟周期称为 Setup 阶段。
- Access 阶段 (T2):
- 下一个时钟上升沿后,使能信号 (PENABLE) 被置位,表示 Access 阶段开始。
- 地址、数据和控制信号在 Access 阶段保持有效。
- 传输在当前周期结束时完成。
- PENABLE 在传输结束时被取消置位。
- PSELx 也被置为低电平,除非立即跟随对同一外设的另一次传输。
3.1.2 带等待状态的写传输
- PREADY 信号:
- 从设备可以通过将 PREADY 置为低电平来延长传输。
- 在 Access 阶段 (PENABLE 为高电平) 时,传输可以延长。
- 额外的周期中,地址 (PADDR)、写信号 (PWRITE)、选择信号 (PSELx)、使能信号 (PENABLE) 和写数据 (PWDATA) 保持不变。
- PREADY 在 PENABLE 为低电平时可以取任意值,确保具有固定两个周期访问时间的外设可以将 PREADY 置为高电平。
- 建议:
- 建议在传输结束后不要立即更改地址和写信号,而是保持稳定直到下一次访问,以减少功耗。
3.2 读传输
3.2.1 无等待状态读传输
- 与写传输类似,地址、写信号 (PWRITE)、选择信号 (PSELx) 和使能信号 (PENABLE) 的时序相同。
- 从设备必须在读传输结束前提供数据。
3.2.2 带等待状态的读传输
- 与带等待状态的写传输类似,传输可以延长。
- 协议确保额外的周期中,地址 (PADDR)、写信号 (PWRITE)、选择信号 (PSELx) 和使能信号 (PENABLE) 保持不变。
4. 错误响应
- PSLVERR 信号: 用于指示 APB 传输中的错误条件。
- 仅在 APB 传输的最后一个周期有效,当 PSELx、PENABLE 和 PREADY 都为高电平时。
- 建议(而非强制)在不采样 PSLVERR 时将其置为低电平,即当 PSELx、PENABLE 或 PREADY 为低电平时。
- 错误处理:
- 发生错误的传输可能会也可能不会改变外设的状态,具体取决于外设。
- 发生错误的写传输并不意味着外设内的寄存器未被更新。
- 发生错误的读传输可能会返回无效数据,外设无需将数据总线全部置为 0。
- APB 外设无需支持 PSLVERR 引脚。
- 对于现有和新的 APB 外设设计都是如此。
- 如果外设不包括此引脚,则 APB 桥的相应输入应接地。
4.1 错误映射:
- 从 AXI 到 APB:
- APB 错误映射回 RRESP/BRESP = SLVERR。
- 通过将 PSLVERR 映射到 AXI 信号 RRESP[1](读)和 BRESP[1](写)实现。
- 从 AHB 到 APB:
- PSLVERR 映射回 HRESP = ERROR(读和写)。
- 通过将 PSLVERR 映射到 AHB 信号 HRESP[0] 实现。
5. 操作系统状态
状态机通过以下状态运行:
- IDLE(空闲状态):
- APB 的默认状态。
- PSELx = 0, PENABLE = 0。
- SETUP(设置状态):
- 当需要传输时,总线进入 SETUP 状态,适当的 PSELx 信号被置位。
- 总线仅在 SETUP 状态停留一个时钟周期,并在下一个时钟上升沿始终进入 ACCESS 状态。
- PSELx = 1, PENABLE = 0。
- ACCESS(访问状态):
- 在 ACCESS 状态中,使能信号 PENABLE 被置位。
- 地址、写信号、选择信号和写数据信号在从 SETUP 状态过渡到 ACCESS 状态期间必须保持稳定。
- 退出 ACCESS 状态由从设备的 PREADY 信号控制:
- 如果从设备保持 PREADY 为低电平,则外设总线保持在 ACCESS 状态。
- 如果从设备将 PREADY 置为高电平,则退出 ACCESS 状态,如果不需要更多传输,则总线返回 IDLE 状态;否则,总线直接进入 SETUP 状态以进行下一次传输。
6. 信号描述
信号 | 源 | 描述 |
---|---|---|
PCLK | 时钟源 | 时钟。APB 上的所有传输都由 PCLK 的上升沿定时。 |
PRESETn | 系统总线 | 复位。APB 复位信号为低电平有效。该信号通常直接连接到系统总线复位信号。 |
PADDR | APB 桥 | 地址。APB 地址总线,最多 32 位宽,由外设总线桥单元驱动。 |
PSELx | APB 桥 | 选择。APB 桥单元为每个外设总线从设备生成此信号。它指示从设备被选中,并且需要数据传输。每个从设备都有一个 PSELx 信号。 |
PENABLE | APB 桥 | 使能。此信号指示 APB 传输的第二个及后续周期。 |
PWRITE | APB 桥 | 方向。此信号指示 APB 写访问(高电平)和 APB 读访问(低电平)。 |
PWDATA | APB 桥 | 写数据。在写周期期间,当 PWRITE 为高电平时,此总线由外设总线桥单元驱动。此总线最多可宽达 32 位。 |
PREADY | 从设备 | 就绪。从设备使用此信号来延长 APB 传输。 |
PRDATA | 从设备 | 读数据。在读周期期间,当 PWRITE 为低电平时,选定的从设备驱动此总线。此总线最多可宽达 32 位。 |
PSLVERR | 从设备 | 错误。此信号指示传输失败。APB 外设无需支持 PSLVERR 引脚。对于现有和新的 APB 外设设计都是如此。如果外设不包括此引脚,则 APB 桥的相应输入应接地。 |
7. 总结
AMBA 3 APB 协议是一种简单高效的协议,适用于低带宽、低功耗的外设连接。通过引入 PREADY 和 PSLVERR 信号,它在保持简单性的同时增加了灵活性和错误处理能力。