APB是最简单的AMBA总线了,它多用于低速外围设备。相比AHB和AXI,有两个很不一样的点:
- 不能outstanding传输,数据有效时,其地址必然是当前数据的对应地址。
- 不能流水线式传输,必须至少2个周期传输一个数据,PSEL起来然后PENABLE起来。
1 前言
1.2 APB 版本
1998年发布的APB Specification Rev E现已过时,并被以下三个修订版所取代:
- AMBA2 APB Specification(即所谓APB2)
- AMBA3 APB Protocol Specification v1.0(即所谓APB3)
- AMBA APB Protocol Specification v2.0(即所谓APB4)
1.2.1 AMBA2 APB Specification(APB2)
AMBA2 APB 规范详见AMBA2 APB Specification Rev2(ARM IHI 0011A)。
该规范定义了接口信号、基本的读写传输以及APB的两个组件APB bridge和APB slave。
规范的这个版本被称为APB2。
1.2.2 AMBA3 APB Protocol Specification v1.0(APB3)
AMBA3 APB Protocol Specification v1.0定义了以下附加功能:
- 等待状态。参见Transfers。
- 错误报告。参见Error response。
以下接口信号支持此功能:
- PREADY 准备就绪的信号,表示APB传输完成。
- PSLVERR 传输失败的错误信号。
规范的这个版本被称为APB3。
1.2.3 AMBA APB Protocol Specification v2.0(APB4)
AMBA APB Protocol Specification v2.0定义了以下附加功能:
- 事务的保护。参见Protection unit support。
- 稀疏数据传输。参见Write strobes。
以下接口信号支持此功能:
- PPROT 一种保护信号,用于支持非安全事务和安全事务。
- PSTRB 一种写掩码信号,用于在写数据总线上实现稀疏数据传输。
规范的这个版本被称为APB4。
2 APB信号
2.1 数据总线
- APB协议有两个独立的数据总线,一个用于读取数据,一个用于写入数据。
- 总线可以达到32位宽。
- 由于总线没有各自的握手信号,因此数据传输不可能同时发生在两个总线上。
3 APB传输
3.1 写传输
介绍写传输的几种类型:
- 没有等待状态。
- 具有等待状态。
3.1.1 没有等待状态
图3-1表示没有等待传输的基本写传输。
T1时,写传输开始于地址PADDR、写数据PWDATA、写信号PWRITE、选择信号PSEL,寄存在PCLK上升沿。这称为写传输的起始阶段。
T2时,使能信号PENABLE和准备信号PREADY寄存在PCLK上升沿。
当断言时,PENABLE表示传输的访问阶段的开始。
当断言时,PREADY表示Slave可以在PCLK的下一个上升边完成传输。
地址PADDR、写数据PWDATA和控制信号都保持有效,直到传输在访问阶段的T3完成结束。
使能信号PENABLE在传输结束时被撤销。
选择信号PSEL也被去断言,除非在此传输之后立即有另一个传输到同一Slave。
下图给出了burst写的例子:
3.1.2 具有等待状态
图3-2在显示了如何在访问阶段使用PREADY信号扩展传输。当PENABLE为高,而Slave驱动PREADY为低时扩展传输。其他信号保持不变,而PREADY保持低。
当PENABLE为低时,PREADY可以取任何值。这确保了具有固定两个周期访问的外围设备可以让PREADY tie1。
—— 注意 ————
建议地址和写信号在传输后不要立即改变,而是保持稳定,直到发生另一次访问。这能降低功耗。
3.2 写掩码
写掩码信号PSTRB在写数据总线上实现稀疏数据传输。
每个写掩码信号对应于写数据总线的一个字节。当断言为高时,写掩码指示写数据总线的相应字节通道包含有效信息。写数据总线的每8位都有一个写掩码,因此PSTRB[n]对应于PWDATA[(8n +7):(8n)]。
在32位数据总线上,这种关系如图3-3所示。
——注意——
读传输时,Master必须驱动PSTRB的所有位为低。
3.3 读传输
本节介绍两种类型的读传输:
- 没有等待状态。
- 具有等待状态。
3.3.1 没有等待状态
如图3-4所示。地址、写、选择和使能信号的时序和前文<写传输>中描述的一样。
Slave必须在读传输结束之前提供数据。
下图给出了burst读的例子。
3.3.2 具有等待状态
图3-5显示了PREADY信号如何扩展传输。如果PREADY在访问阶段被驱动为低,则传输将被扩展。
该协议确保其他信号在额外的周期内保持不变。
图3-5显示了使用PREADY信号添加两个周期。然而,你可以添加从0开始的任何数量的额外周期。
3.4 错误响应
可以使用PSLVERR指示APB传输上的错误条件。读和写事务都可能发生错误。
当PSEL、PENABLE和PREADY均为高时,PSLVERR仅在APB传输的最后一个周期中被认为有效。
建议(但非强制)在当PSEL、PENABLE或PREADY中的任何一个为低时,即未进行采样时驱动PSLVERR为低。
接收到错误事务可能(也可能没有)改变了Slave的状态,这是特定于外围设备的,两者都是可以接受的。当写事务收到一个错误时,这并不意味着外围设备中的寄存器没有更新。接收到错误读事务可能返回无效数据,但没有要求Slave要驱动data总线为全0。
APB外设不需要支持PSLVERR引脚,现有的和新的APB外围设计都是如此。如果外设没有这个引脚,那么Slave的合适输入为Tie 0。
3.4.1 写传输
图3-6给出了一个写传输失败并报错的例子。
3.4.2 读传输
读传输也可以在错误响应后完成,这表明没有有效的读数据可用。
如图3-7所示,读传输完成后出现错误响应。
3.4.3 PSLAVERR映射
当桥接时:
从AXI到APB,PSLVERR被映射回RRESP/BRESP =SLVERR。这是通过将PSLVERR映射到用于读取的AXI信号的RRESP[1](对于读)和BRESP[1](对于写)来实现的。
从AHB到APB,PSLVERR被映射回HRESP = ERROR(对于读和写)。这是通过将PSLVERR映射到AHB信号的HRESP[0]来实现的。
3.5 保护单元的支持
为了支持复杂的系统设计,通常需要系统中的互连和其他设备提供防止非法交易的保护。对于APB接口,这种保护由PPROT[2:0]信号提供。
访问保护的三个级别是:
(1)Normal 或Privileged,PPROT[0]
- 0表示正常访问
- 1表示特权访问。
这被一些Master用来表示它们的处理模式。Privileged处理模式通常在系统中具有更高级别的访问权限。
(2)Secure或non-Secure,PPROT[1]
- 0表示安全访问
- 1表示非安全访问。
这用于需要在处理模式之间进行更大程度区分的系统。
—— 注意 ————
这个位的配置是这样的:当它为1时,事务被认为是非安全的;当它为0时,事务被认为是安全的。
(3)Data or Instruction,PPROT[2]
- 0表示数据访问
- 1表示指令访问。
该位表示该事务是数据访问还是指令访问。
—— 注意 ————
此指示只是作为提示,并非在所有情况下都是准确的。例如里面事务包含指令和数据项的混合。默认情况下,建议将访问标记为数据访问,除非明确知道它是指令访问。
—— 注意 ————
PPROT的主要用途是作为安全或非安全事务的标识符。
使用PPROT[0]和PPROT[2]标识符的不同解释是可以接受的。
4 APB运行阶段
4.1 运行阶段
图4-1表示APB的运行活动。
状态机通过以下状态运行:
(1)IDLE
这是APB的默认状态。
(2)SETUP
当需要传输时,总线进入SETUP状态,在该状态下,将断言适当的选择信号PSELx。总线只在一个时钟周期内保持SETUP状态,并且总是移动到时钟的下一个上升沿的ACCESS状态。
(3)ACCESS
使能信号PENABLE在ACCESS状态下被断言。地址、写、选择、写数据信号必须在从SETUP状态转换到ACCESS状态的过程中保持稳定。
从ACCESS状态的退出由Slave的PREADY信号控制:
- 如果PREADY被slave保持为低,那么外围总线仍然处于ACCESS状态。
- 如果PREADY被slave驱动为高,那么ACCESS状态将退出,如果不需要更多的传输,总线将返回IDLE状态。或者如果接下来发生另一个传输,总线直接移动到SETUP状态。
参考资料:
[1] AMBA APB Protocol Specification v2.0
标签:状态,访问,PREADY,总线,传输,信号,APB,AMBA From: https://www.cnblogs.com/xianyufpga/p/17279209.html