AMBA协议笔记(APB)
Chapter 1 概述
APB(Advanced Peripheral Bus),是低功耗和减少接口复杂度的优化接口协议。APB接口是低带宽,不需高性能流水线的接口协议,同时APB也具有非流水线的协议。
所有信号都只在时钟的上升沿跳变,目的是为了简化设计流程中的APB外设融合。每次传输至少需要两个cycles。APB可以与AHB,AXI连接,可以使用APB进行程序级的控制寄存器和外设。
Chapter 2 信号描述
信号 | 来源 | 描述 |
---|---|---|
PCLK | 系统时钟 | 时钟。传输发生在时钟上升沿 |
PRESETn | 等效的系统总线 | 复位信号。低电平有效,通常与系统的复位信号直接连接 |
PADDR | APB桥 | 地址,APB地址线,位宽最高32bit,由外设驱动 |
PSELx | APB桥 | 选择信号,APB产生,用来选择外设。该信号表明外设从设备被选择,进行数据传输。每个从设备具都有一个PSELx信号 |
PENABLE | APB桥 | 使能信号,表示传输的第二个cycle和接下来的cycle传输有效 |
PWRITE | APB桥 | 方向信号,为高时表示APB写,为低时表示APB读 |
PWDARA | APB桥 | 写数据,在写cycle由外部设备驱动,最高32bits |
PREADY | 从接口 | 就绪信号,表明从设备已就绪,进行接下来的传输 |
PRDATA | 从接口 | 读数据,在读cycle被选中的从设备驱动此信号,位宽最高32bits |
PSLVERR | 从接口 | 表示传输失败,APB从设备不要求支持此信号 |
Chapter 3 传输
3.1 写传输
- 没有等待状态的写传输
传输开始时钟上升沿(T1),PADDR,PWRITE,PSEL,PWDATA改变。传输的第一个阶段称为Setup phase。在随后的一个时钟周期,当PENABLE拉高后(T2),表示进入Access Phase(因为是无等待阶段的写操作,所以PREADY默认拉高的)。PADDR,PWRITE,PSEL,PWDATA信号在Access Phase保持不变。在Access Phase结束后表示此次传输完成。
传输完成后PENABLE信号拉低(T3)。如果接下来对同一个外设进行传输,则PSEL信号保持为高(Setup Phase),否则拉低。
-
有等待阶段的写传输
在Access Phase阶段,从端发送的PREADY可以延长此阶段(T2~T4)。此时,PENABLE为高,当PREADY为低时,各控制信号(PWRITE,PSEL,PENABLE),数据信号(PADDR,PWDATA)保持不变,一直等到PREADY为高时,完成此次传输。当PENABLE为低时,PREADY可以为任意值。
注:推荐PADDR和PWRITE信号保持不变直到下一个传输开始,这有助于降低功耗。
3.2 读传输
- 没有有等待阶段的读
Setup Phase与Write相似,不同的是PWRITE为低,表示APB读,PRDATA为读数据,从从设备接收读数据。在Acess Phase(T2),PENABLE拉高,PREADY拉高,完成握手,然后从设备发送读数据Data1,读传输结束。
- 有等待阶段的读
与带有等待阶段的写相似,在进入Access Phase时(T2),如果从端PREADY为低,则其他控制信号(PWRITE,PSEL,PENABLE),数据信号(PADDR,PRDATA)保持不变,一直等到PREADY为高(可以延长任意时钟周期),PRDATA接收从从端读取的数据Data1,传输结束。
3.3 错误反馈
可以使用PSLAERR表明APB传输的过程中发生了错误。错误的情形可以发生在读和写过程中。PSLVERR只能在APB传输的第二个cycle拉高,即Access Phase阶段,也就是PSLE,PENABLE,PREADY都为高时。
传输收到一个错误时,从设备的状态可能发生或者没有发生变化(如读/写传输过程发生错误,则无法保证读/写的数据正确性,具有不确定性)。也就是说,在一个写传输过程中发生了错误,并不意味着从设备中寄存器的值没有更新。在读传输的过程中发生了错误也可能返回的是非法的读数值。这里并没有要求从设备在读传输发生错误时将数据总线设置为0。
APB从设备并没有要求支持PSLVERR管脚(信号),这对于现有的和新的APB设计通用。(此特性非强制实现)
写传输
在上述的写传输过程中,Access Phase阶段,T3时,PREADY拉高,同时从设备将PSLVERR拉高,表明此次传输发生错误。此时Addr1的数据可能为Data1也可能不是Data1,具有不确定性。
读传输
在读传输的Access Phase阶段,T4周期内,PREADY拉高,从设备发送PSLVERR为高,表明此次读传输发生错误,PRDATA读到的数据可能是非法值(不确定性)。
PSLVERR的映射关系
PSLEERR与AHB,AXI协议中错误信号存在映射关系[后续补充]。
Chapter 4 操作状态
状态机包括以下几种状态:
IDLE:APB的默认状态。
SETUP:当有传输需求总线进入SETUP状态(PSELx拉高,选中要进行传输的从设备,进入SETUP状态)。总线总是保持SETUP状态一个周期,然后在下个始终在后期上升沿进入ACCESS状态。
ACCESS:PENABLE拉高时,进入ACCESS状态。在总线由SETUP到ACCESS过程中,PADDR,PWRITE,PSEL,PWDATA必须保持不变。离开ACCESS状态是由从设备PREADY进行控制:文章来源:https://www.toymoban.com/news/detail-686959.html
- 如果PREADY为低,则从设备总线保持ACCESS状态。(PSELx==1,PENABLE==1,PREADY==0)
- 如果PREADY为高,则退出ACCESS状态。如果接下来有传输,则总线直接进入SETUP状态。如果接下来没有传输,则进入IDLE状态。
参考资料:AMBA 3 APB Protocol v1.0 Specification文章来源地址https://www.toymoban.com/news/detail-686959.html
到了这里,关于AMBA协议笔记(APB)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!