APB属于AMBA 3协议系列,它提供了一个低功耗的接口,并降低了接口的复杂性。APB接口用在低带宽和不需要高性能总线的外设上。APB是非流水线结构,所有的信号仅与时钟上升沿相关,这样可以简化APB外设的设计流程,每次传输至少消耗两个时钟周期。
APB可以与AMBA高级高性能总线和AMBA高级可扩展接口连接。
AMBA APB写传输包括两种类型:无等待状态写传输和有等待状态写传输。
1.无等待状态写传输
图2.1给出了一个无等待状态写传输的时序图。在时钟上升沿后,改变地址、数据、写信号和选择信号。
(1) T 1 周期。写传输开始于地址总线信号PADDR、写数据信号PWDATA、访问方向信号PWRITE和选择信号PSEL。这些信号在PCLK的上升沿寄存。 T 1 周期称为写传输的建立周期。
(2) T 2 周期。在PCLK的上升沿寄存使能信号PENABLE和准备信号PREADY。
①当确认时,使能信号PENABLE表示传输访问周期的开始。
②当确认时,准备信号PREADY表示在PCLK的下一个上升沿,从设备可以完成传输。
图2.1 无等待状态写传输的时序图
(3)地址总线信号PADDR、写数据信号PWDATA和控制信号一直保持有效状态,直到 T 3 周期完成传输后,结束访问周期。
(4)在传输结束后,使能信号PENABLE变成无效状态,选择信号PSEL也变成无效状态,除非相同的外设立即开始下一次传输,这些信号才重新有效。
2.有等待状态写传输
图2.2说明了从设备如何使用准备信号PREADY扩展传输。在访问周期内,当使能信号PENABLE为高电平时,可以通过拉低准备信号PREADY来扩展传输。
图2.2 有等待状态写传输的时序图
下面的信号保持不变。
(1)地址总线信号:PADDR。
(2)访问方向信号:PWRITE。
(3)选择信号:PSEL。
(4)使能信号:PENABLE。
(5)写数据信号:PWDATA。
(6)写选通信号:PSTRB。
(7)保护类型信号:PPROT。
当使能信号PENABLE为低电平时,准备信号PREADY可以为任何值。确保外部芯片使用两个固定周期,使准备信号PREADY为高电平。
注:推荐在传输结束后不要立即更改地址和写信号,保持当前状态,直到开始下一次传输,这样可以降低功耗。
AMBA APB读传输包括无等待状态读传输和有等待状态读传输两种总线类型。
1.无等待状态读传输
图2.3给出了无等待状态读传输的时序图。其中给出了地址总线信号PADDR、访问方向信号PWRITE、选择信号PSEL和使能信号PENABLE等。在读传输结束以前,从设备必须主动提供数据。
图2.3 无等待状态读传输的时序图
2.有等待状态读传输
图2.4给出了在读传输中,使用准备信号PREADY添加两个周期。在传输过程中,也可以添加多个周期。如果在访问周期内拉低准备信号PREADY,则可扩展读传输。协议保证在额外的扩展周期内,下面的信号保持不变。
(1)地址总线信号:PADDR。
(2)访问方向信号:PWRITE。
(3)选择信号:PSEL。
(4)使能信号:PENABLE。
(5)保护类型信号:PPROT。
图2.4 有等待状态读传输的时序图
在传输过程中,可以使用PSLVERR信号来指示APB传输的错误条件。在读和写的交易过程中,可能发生错误条件。
在一个APB传输的最后一个周期内,只有在PSEL、PENABLE和PREADY信号都为高电平时,PSLVERR信号才是有效的。
当外设收到一个错误的交易时,外设的状态可能发生改变,写交易并不意味着没有更新外设内的寄存器,读交易能够返回无效的数据。对于一个读错误,并不要求外设将数据总线驱动为0。
1.写传输和读传输的错误响应
图2.5给出了一个写传输失败的例子,图2.6给出了一个读传输失败的例子。
图2.5 写传输失败的例子
图2.6 读传输失败的例子
2.PSLVERR映射
1)从AXI到APB
将一个APB错误映射为RRESP/BRESP=SLVERR,通过将PSLVERR映射为RRESP[1]信号(用于读)和BRESP[1]信号(用于写)来实现该映射。
2)从AHB到APB
对于读和写,将PSLVERR信号映射为HRESP=SLVERR,通过将PSLVERR信号映射为AHB信号HRESP[0]来实现该映射。
图2.7给出了APB的操作状态。
图2.7 APB的操作状态
1.IDLE
IDLE表示空闲。这是默认的APB状态。
2.SETUP
SETUP表示建立。当请求传输时,总线进入SETUP状态,设置选择信号PSELx。总线仅在SETUP状态停留一个时钟周期,并在下一个时钟周期进入ACCESS状态。
3.ACCESS
ACCESS表示访问。在ACCESS状态下置位使能信号PENABLE。APB在从SETUP状态到ACCESS状态转变的过程中,地址总线信号、写信号、选择信号和写数据信号保持不变。APB是否从ACCESS状态退出由器件的准备信号PREADY控制。
(1)如果准备信号PREADY为低电平,则保持ACCESS状态。
(2)如果准备信号PREADY为高电平,则退出ACCESS状态。如果此时没有其他传输请求,则总线返回IDLE状态;否则进入SETUP状态。
表2.2给出了AMBA 3 APB信号及其描述。
表2.2 AMBA 3 APB信号及其描述