1.1 概述
高级外围总线(APB)是AMBA的一部分。 它定义了一种低成本接口,该接口经过优化以最小化功耗并降低接口复杂性。
APB协议不是流水线,请使用它连接到不需要高性能AXI协议的低带宽外围设备。
APB协议将信号转换与时钟的上升沿相关联,以简化APB外设到任何设计流程中的集成。 每次传输至少需要两个周期。
APB: mainly used for access to registers and peripherals
1.2 APB修订版
1998年发布的APB规范修订版已过时,并由以下三个修订版取代:
•AMBA 2 APB规范
•AMBA 3 APB协议规范v1.0
•AMBA APB协议规范v2.0。
1.2.1 AMBA 2 APB规范
AMBA 2 APB规范在AMBA规范修订版2(ARM IHI 0011A)中进行了详细说明。
该规范定义了接口信号,基本的读取和写入传输以及APB bridge和APB slave的两个APB组件。
规范的该版本称为APB2。
1.2.2 AMBA 3 APB协议规范v1.0
AMBA 3 APB协议规范v1.0定义了以下附加功能:
•等待状态-wait state。
•错误报告 -error report。
以下接口信号支持此功能:
PREADY就绪信号,指示APB传输已完成。
PSLVERR错误信号,指示传输失败。
规范的该版本称为APB3。
1.2.3 AMBA APB协议规范v2.0
AMBA APB协议规范v2.0定义了以下附加功能:
•transaction proprotection。
•sparse data transfer。
以下接口信号支持此功能:
PPROT一种保护信号,用于支持APB上的非安全交易和安全交易。
PSTRB一个写选通信号,用于在写数据总线上进行sparse data transfer。
规范的该版本称为APB4。
2.1信号描述
2.1.1数据总线
注意:APB协议有两条独立的数据总线,一条用于读取数据,另一条用于写入数据。 总线的最大宽度为32位。 由于总线没有自己的握手信号,因此不可能同时在两个总线上进行数据传输。
3.基本传输
3.1 写传输
3.1.1无等待写传输
如上图3.1所示,
在T1处,写传输从地址PADDR,写数据PWDATA,写信号PWRITE和选择信号PSEL开始,并记录在PCLK的上升沿。 这称为写传输的设置阶段。
在T2,在PCLK的上升沿记录使能信号PENABLE和就绪信号PREADY。
置位后,PENABLE指示传输访问阶段的开始。
置位后,PREADY表示从机可以在PCLK的下一个上升沿完成传输。
地址PADDR,写数据PWDATA和控制信号都保持有效,直到在访问阶段结束的T3传输完成为止。
在传输结束时,使能信号PENABLE被置为无效。 选择信号PSEL也被置为无效,除非在紧接着该传输之后是另一传输到同一外设。
3.1.2有等待写传输
图3-2显示了从机如何使用PREADY信号扩展传输。
在access阶段,当PENABLE为高电平时,从机通过驱动PREADY为低电平来扩展传输。 当PREADY保持为低电平时,以下信号保持不变:
•地址,PADDR
•写信号,PWRITE
•选择信号,PSEL
•使能信号,PENABLE
•写数据,PWDATA
•写选通脉冲,PSTRB
•保护类型,PPROT。
当PENABLE为低电平时,PREADY可以取任何值。 这样可确保具有固定两个周期访问权限的外围设备可以设置PREADY 为高。
建议:建议在传输后不要立即更改地址和写入信号,但要保持稳定,直到发生另一次访问为止。 这减少了功耗。
3.2写选通-write strobes
写选通信号PSTRB允许在写数据总线上进行选通数据传输。 每个写选通信号对应于写数据总线的一个字节。 当置为高电平时,写选通信号指示写数据总线的相应字节通道包含有效信息。
写数据总线的每八位有一个写选通脉冲,因此PSTRB [n]对应于PWDATA [(8n + 7):( 8n)]。 图3-3显示了32位数据总线上的这种关系。
注意:对于读传输,总线主机必须将PSTRB的所有位驱动为低电平。
3.3 读传输
3.3.1无等待读传输
图3-4显示了读取传输。 地址,写入,选择和使能信号的时序如图3.1的写入传输中所述。 从机必须在读取传输结束之前提供数据。
3.3.2 有等待读传输
图3-5显示了PREADY信号如何扩展传输。 如果在access阶段将PREADY驱动为LOW,则传输将延长。
该协议确保以下内容在其他周期中保持不变:
•地址,PADDR
•写信号,PWRITE
•选择信号,PSEL
•使能信号,PENABLE
•保护类型,PPROT。
图3-5显示了使用PREADY信号添加了两个周期。 但是,可以添加任意数量的附加循环等待。
3.4错误响应-error response
可以使用PSLVERR来指示APB传输上的错误情况。 读取和写入事务都可能发生错误情况。
当PSEL,PENABLE和PREADY均为高电平时,仅在APB传输的最后一个周期内才认为PSLVERR有效。
建议(但不是强制性)在不采样时将PSLVERR驱动为低电平。 也就是说,当PSEL,PENABLE或PREADY中的任何一个为低电平时。
接收到错误的事务可能会或可能不会更改外围设备的状态。这是特定于外围设备的,可以接受。 当写事务接收到错误时,这并不意味着外围设备内的寄存器尚未更新。 收到错误的读取事务可能返回无效数据。 对于读取错误,不需要外设将数据总线驱动为全0。
不需要APB外设支持PSLVERR引脚。 对于现有和新的APB外设设计都是如此。 如果外设不包含此引脚,则APB桥接器的适当输入连接为LOW。
3.4.1有错误的写传输
3.4.2有错误的读传输
3.4.3 PSLVERR信号的映射
桥接时:
从AXI到APB APB错误被映射回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.普通或特权,PPROT [0]=0表示普通访问 =1 表示特权访问。
一些主控使用它来指示其处理模式。 特权处理模式通常在系统内具有更高级别的访问权限。
2.安全或不安全,PPROT [1]=0表示安全访问 =1表示不安全访问。
这用于需要更大程度区分处理模式的系统中。
注意:配置此位后,当它为高电平时,该事务被视为不安全;而当它为低电平时,该事务被视为安全。
3.数据或指令,PPROT [2]=0表示数据访问 =1表示指令访问。
该位指示事务是数据访问还是指令访问。
注意:此指示仅作为提示,并非在所有情况下都是准确的。 例如,交易包含指令和数据项的混合。 建议默认情况下,除非明确将其称为指令访问,否则将访问标记为数据访问。
PPROT的主要用途是作为安全或非安全交易的标识符。 可以使用对PPROT [0]和PPROT [2]标识符的不同解释。
4.运行状态
4.1状态图
状态机通过以下状态进行操作:
1.IDLE------
这是APB的默认状态。
2.SETUP ---------
当需要传输时,总线进入设置状态,在此状态下,相应的选择信号PSELx被置位。 总线仅在一个时钟周期内保持SETUP状态,并始终在时钟的下一个上升沿移至ACCESS状态。
3. ACCESS----------
使能信号PENABLE处于ACCESS状态。 从SETUP到ACCESS状态的转换期间,地址,写入,选择和写入数据信号必须保持稳定。
从ACCESS状态的退出由来自从机的PREADY信号控制:
•如果从机将PREADY保持为LOW,则外围总线保持在ACCESS状态。
•如果从机将PREADY驱动为HIGH,则退出ACCESS状态,并且如果不需要更多传输,总线将返回IDLE状态。
或者,如果随后进行另一次传输,则总线直接移动到SETUP状态。