AMBA APB4 与 AMBA3 AHB-Lite 1.0 协议介绍
时间:09-18
来源:互联网
点击:
作者:Allen Zhan
[介绍]
根据 ARM 的说法, 今天 AMBA 已经成为了业界事实上的总线标准. 本文我们简单对AMBA4 中的 APB v2.0(也称为 APB4), 以及 AMBA3 AHB-Lite v1.0 进行简单的了解. 我们的介绍集中在, 我们比较有兴趣的地方. 尽管如此, 也可能几乎覆盖了协议中几个最重要的部分.
[AMBA APB]
AMBA
Advanced Microcontroller Bus Architecture, 由ARM定义的总线架构(标准), 由一个协议家族组成. ARM 声称这一标准已经称为事实上的 uController 业界通用标准.
APB
The Advanced Peripheral Bus(APB) 是 AMBA 协议家族中一个组成部分.
它被定义为一个 low-cost 的接口, 为了最小能耗与减小接口的复杂性进行的优化设计.
被用于连接通用外围, 比如 timers, inerrupt controllers, UART是, and IOs.
通过 system-to-peripheral bus bridge 与 main system bus 相连, 有助于降低能耗.
APB 版本
当前(2013年9月), 最近的 APB协议版本是 AMBA APB Protocol Specification v2.0. 或者因为属于 AMBA4 家族中的发布协议, 一般也被称为 APB4.
而在第一个版本(APB2 )中, APB 的基本组元, APB bridge 与 APB slave 被定义.
而在 APB3 中, Ready signal 被引入, 这意味着增加了操作状态中, 增加了 wait state. 另外增加了 PSLVERR, 用于错误报告的 signal.
最近的 APB4, 增加了 PPROT 与 PSTRB signal.
APB bridge 与 APB slave
我们可以挂载各种"慢速"的外设在 APB 上, 比如 IO, 比如 UART, 比如 SPI, etc. 它们都作为 slave 的角色存在.
但是, 我们想想看, bridge 这个 role 就蛮有意思. 它实际上暗示我们, APB 不能"单独存在". 我们这里所谓不能"单独存在"的意思, 是说 APB 一定不能直接连接在 processor 上(或者说 arm core上). 而最可能的, 是通过 APB bridge 而连接在高速的 bus 上.
实际上, 在 AHB-Lite 协议中, 我们发现 APB bridge 被作为 AHB-Lite 的 slave 而被定义.
Data buses
APB 协议有两个独立的 data bus, 一个用来读 data, 一个用来写 data.
因为没有独立的握手信号, 所以在两根bus上, 同一时刻数据传输不能同时发生.
Write Transfers
我们简单对 APB 的 trasfers 过程进行分析, 比如我们分析 write transfer with no wait states:
[图例1: Write transfer with no wait states]
T0: Idle state
T1: Setup state
write address PADDR, write data PWDATA
setup state 仅仅只保持 1pcs clock cycle, 而在下一个 PCLK 的上升沿, 一定进入 Access state.
T2: Access state
APB bridge 通过拉高 PENABLE, 通知slave 第二阶段(也就是 access phase) 开始.
因为是 no wait states, 我们见到了 PREADY 在此被拉高, 表示 slave 通知 bridge, 在下一个 PCLK 的上升沿, 本次 transfer 的过程可以结束.
T3: finish transfer, then enter Idle state again or the next setup.
PREADY 拉低, 说明 slave 通知本次 transfer 结束. 在 PREADY unasserted 之前, PADDR, PWDATA, 以及其他的 signals 都应该保持有效.
从上述时序中, 我们了解到, write transfer 看来至少需要 3 cycles. setup - access - finish
而在一个 write transfer with wait states 时序中,
[图例2: Write transfer with wait states]
我们见到了, Slave 通过 unassert 的方式(拉低), 延迟了2pcs cycles(根据图例的例子), 这样在 T2 状态上的拉高动作, 被延时到 T4 进行拉高. 也就是 Slave 通知在 T5 cycle 中结束本次 transfer.
这就是通过 PREADY 引入了 wait state 后现象, 我们注意到, 一般的术语被称为"extend the transfer".
Operating States
Read Transfer 的情形与 Write Transfer 类似, 这样, 我们就基本完备讲述了 APB protocol, 附上 Operating States 进行理解:
[图例3: State Diagram]
transfer cycles
APB protocol 中, 明确指出: "每个 Transfer 至少消耗 2 cycles".
而我们检查, 即使是 transfer with no wait state, 也最少消耗了 3 cycles. 这里我们理解, 在图例1中, T3 状态下, finish 本次 transfer后, 如果要连续操作下一个写传递的过程, 那么则在 T3 状态下保持 PSEL asserted, 配合 PREADY unasserted, 恰好又进入了如 T1 cycle 相同的 setup state, 这时需要 bridge 更新地址 PWRITE, 以及数据 PWDATA. 也就是在连续 transfer(针对同一个 slave)的操作中, transfer 最少只消耗 2 cycle.
我们没有在 APB 协议中, 获得上述猜测的详解, 我们保留上述对 "2 cycles" 的理解猜测于此.
[介绍]
根据 ARM 的说法, 今天 AMBA 已经成为了业界事实上的总线标准. 本文我们简单对AMBA4 中的 APB v2.0(也称为 APB4), 以及 AMBA3 AHB-Lite v1.0 进行简单的了解. 我们的介绍集中在, 我们比较有兴趣的地方. 尽管如此, 也可能几乎覆盖了协议中几个最重要的部分.
[AMBA APB]
AMBA
Advanced Microcontroller Bus Architecture, 由ARM定义的总线架构(标准), 由一个协议家族组成. ARM 声称这一标准已经称为事实上的 uController 业界通用标准.
APB
The Advanced Peripheral Bus(APB) 是 AMBA 协议家族中一个组成部分.
它被定义为一个 low-cost 的接口, 为了最小能耗与减小接口的复杂性进行的优化设计.
被用于连接通用外围, 比如 timers, inerrupt controllers, UART是, and IOs.
通过 system-to-peripheral bus bridge 与 main system bus 相连, 有助于降低能耗.
APB 版本
当前(2013年9月), 最近的 APB协议版本是 AMBA APB Protocol Specification v2.0. 或者因为属于 AMBA4 家族中的发布协议, 一般也被称为 APB4.
而在第一个版本(APB2 )中, APB 的基本组元, APB bridge 与 APB slave 被定义.
而在 APB3 中, Ready signal 被引入, 这意味着增加了操作状态中, 增加了 wait state. 另外增加了 PSLVERR, 用于错误报告的 signal.
最近的 APB4, 增加了 PPROT 与 PSTRB signal.
APB bridge 与 APB slave
我们可以挂载各种"慢速"的外设在 APB 上, 比如 IO, 比如 UART, 比如 SPI, etc. 它们都作为 slave 的角色存在.
但是, 我们想想看, bridge 这个 role 就蛮有意思. 它实际上暗示我们, APB 不能"单独存在". 我们这里所谓不能"单独存在"的意思, 是说 APB 一定不能直接连接在 processor 上(或者说 arm core上). 而最可能的, 是通过 APB bridge 而连接在高速的 bus 上.
实际上, 在 AHB-Lite 协议中, 我们发现 APB bridge 被作为 AHB-Lite 的 slave 而被定义.
Data buses
APB 协议有两个独立的 data bus, 一个用来读 data, 一个用来写 data.
因为没有独立的握手信号, 所以在两根bus上, 同一时刻数据传输不能同时发生.
Write Transfers
我们简单对 APB 的 trasfers 过程进行分析, 比如我们分析 write transfer with no wait states:
[图例1: Write transfer with no wait states]
T0: Idle state
T1: Setup state
write address PADDR, write data PWDATA
setup state 仅仅只保持 1pcs clock cycle, 而在下一个 PCLK 的上升沿, 一定进入 Access state.
T2: Access state
APB bridge 通过拉高 PENABLE, 通知slave 第二阶段(也就是 access phase) 开始.
因为是 no wait states, 我们见到了 PREADY 在此被拉高, 表示 slave 通知 bridge, 在下一个 PCLK 的上升沿, 本次 transfer 的过程可以结束.
T3: finish transfer, then enter Idle state again or the next setup.
PREADY 拉低, 说明 slave 通知本次 transfer 结束. 在 PREADY unasserted 之前, PADDR, PWDATA, 以及其他的 signals 都应该保持有效.
从上述时序中, 我们了解到, write transfer 看来至少需要 3 cycles. setup - access - finish
而在一个 write transfer with wait states 时序中,
[图例2: Write transfer with wait states]
我们见到了, Slave 通过 unassert 的方式(拉低), 延迟了2pcs cycles(根据图例的例子), 这样在 T2 状态上的拉高动作, 被延时到 T4 进行拉高. 也就是 Slave 通知在 T5 cycle 中结束本次 transfer.
这就是通过 PREADY 引入了 wait state 后现象, 我们注意到, 一般的术语被称为"extend the transfer".
Operating States
Read Transfer 的情形与 Write Transfer 类似, 这样, 我们就基本完备讲述了 APB protocol, 附上 Operating States 进行理解:
[图例3: State Diagram]
transfer cycles
APB protocol 中, 明确指出: "每个 Transfer 至少消耗 2 cycles".
而我们检查, 即使是 transfer with no wait state, 也最少消耗了 3 cycles. 这里我们理解, 在图例1中, T3 状态下, finish 本次 transfer后, 如果要连续操作下一个写传递的过程, 那么则在 T3 状态下保持 PSEL asserted, 配合 PREADY unasserted, 恰好又进入了如 T1 cycle 相同的 setup state, 这时需要 bridge 更新地址 PWRITE, 以及数据 PWDATA. 也就是在连续 transfer(针对同一个 slave)的操作中, transfer 最少只消耗 2 cycle.
我们没有在 APB 协议中, 获得上述猜测的详解, 我们保留上述对 "2 cycles" 的理解猜测于此.
- 基于ARM的除法运算优化策略(01-14)
- 基于ARM的CAN总线智能节点的设计(01-24)
- ARM基础知识教程五 (02-08)
- ARM基础知识教程六(02-08)
- ARM基础知识教程七(02-08)
- ARM基础知识教程八(02-08)