其他分享
首页 > 其他分享> > AMBA协议学习一之APB协议

AMBA协议学习一之APB协议

作者:互联网

引言

本文针对AMBA3家族中的APH协议。

APB协议是一种低成本的协议,它提供低功耗且复杂度最低的精简接口。对于任何外设而言,APB接口不需要流水线总线接口的高性能并且具有低带宽的特性。APB接口兼容AHB-Lite与AXI协议。

传输

APB协议具有三种传输方式:

首先介绍写传输

Write transfer

写传输分为2类,一类是无等待阶段写传输,另一类是有等待阶段写传输。

No wait states

无等待阶段写传输的时序如下:

先看后文中对于各信号的解释:

第一个时钟周期称之为setup阶段,给出地址,写信号拉高,同时选通信号拉高。下一时钟周期声明使能信号即PENABLE,表明进入访问阶段,在此阶段地址,数据和控制信号都要保持有效。时钟周期结束表示传输完成。

使能信号PENABLE在传输结束时刻撤除,PSEL如果没有紧接着一次传输的话也会在结束时拉低

With wait states

这种模式的传输是从机可以通过控制PREADY信号进行扩展, 在访问阶段当PENABLE高有效时,将PREADY信号拉低数个周期,保持相应信号不变。时序如下所示:

Read transfer

读传输与写传输一样具有两个模式

No wait states

读传输的时序如下图所示:可以看出这里PWRITE拉低,意味着读指令,因此在一定程度上精简了接口,不需要多个通道来分别指示读写。从机必须要在读传输结束前提供数据。

With wait states

具有等待阶段的读传输如下图所示:相应的地址信号、写信号、选通信号和使能信号都在额外的时钟周期保持了不变。这里PREADY在使用前延迟了2个时钟周期,实际设计中可以任意设置延迟时间。

Error response

在APB读写传输中都可能出现传输错误,因此PSLVERR信号标志了错误的传输情况。该信号仅在APB传输的最后一个时钟周期有效,即PSEL/PENABLE/PREADY都高有效时有效。

该协议建议非采样时刻将该信号置0,即PSEL/PENABLE/PREADY任意一信号为0时。

但是APB外设不是一定需要支持该信号引脚的,当外设不支持时将该信号拉低。

下图表示写传输时出错的时序:

Mapping of PSLVERR

当存在桥接时,存在两种映射情况

AXI to APB:一个APB的错误映射为RRESP/BRESP,即读传输错误映射为RRESP[1]而写传输错误映射为BRESP[1]。

AHB to APB:一个APB的错误映射为HRESP,即读/写传输错误均映射为HRESP[0]。

操作状态

APB的操作活动如下所示:

 

该状态机一共3个状态,当存在传输需求时进入SETUP状态,此时拉高PSEL信号,该总线在此阶段只保持1个时钟周期并在下一个时钟上升沿到来时进入ACCESS状态。当进入ACCESS状态后即拉高PENABLE信号,当状态由SETUP进入ACCESS状态时地址信号、写信号、选通信号和写数据信号都要保持稳定。

从ACCESS状态跳变到其他状态是由PREADY信号控制的,如果PREADY信号保持为低则状态保持在ACCESS不变,若从机将PREADY信号拉高则推出ACCESS状态,并且当没有传输请求时回到IDLE状态,但是如果有另一个请求,则直接跳转至SETUP状态。

参考文献

AMBA APB Protocol Specification

标签:状态,一之,PREADY,传输,信号,APB,AMBA,时钟
来源: https://www.cnblogs.com/Achilles7/p/16036471.html