APB协议解读及历代协议对比
AMBA协议英文合集免积分下载,来源ARM官方网站
APB(Advanced Peripheral Bus,高级外围总线)协议是ARM公司中AMBA(Advanced Microcontroller Bus Architecture,高级微控制器总线)协议的一种。作为AMBA最基础的总线,APB经历AMBA2、AMBA3、AMBA4、AMBA5四代,其中每一代在前一代的基础上都有新增,最新的APB5是向下兼容。现在我们所说的APB总线一般是指APB3。APB使用的目的是实现与外围低功耗设备,低速设备进行数据传输。在APB总线中,唯一的M为APB Bridge,其他的一些低速低功率的外围设备均为Slave。
2.1 APB2
2.1.1 APB2信号描述
信号 | 描述 |
---|---|
PCLK | 总线时钟,APB协议里所有数据传输均在PCLK上升沿进行 |
PRESETn | 复位,低电平有效 |
PSELx | 选通信号,APB Bridge会给每个Slave分配一个PSELx信号 |
PENABLE | 使能为高时,数据有效 |
PWRITE | 读写控制,高为写,低为读 |
PWDATA | 写数据, APB Bridge驱动总线,可以8/16/32位 |
PRDATA | 读数据,Slave驱动总线,可以8/16/32位 |
2.1.2 写传输
所有数据在PCLK上升沿跳变。
T0-T1:初始状态;
T1-T2:(Setup Phase)Master把地址PADDR和读写控制PWRITE放在总线上,当PWRITE=1时为写。PSEL=1选通某Slave,并且把所要写的数据DATA1放在总线上;
T2-T3:(Access Phase)当PENABLE=1时,Master把DATA1写入该Slave;
T3:数据传输结束,回到初始状态,PENABLE=0,PSEL=0(除非继续传输),PADDR和PWRITE保持状态不变,等待下一次传输再改变,有助于降低功耗。
图2.1写传输时序
2.1.3 读传输
所有数据在PCLK上升沿跳变。
T0-T1:初始状态;
T1-T2:(Setup Phase)Master把地址PADDR和读写控制PWRITE放在总线上,当PWRITE=0时为读。PSEL=1选通某Slave;
T2-T3:(Access Phase)当PENABLE=1时,Master读取DATA1;
T3:数据传输结束,回到初始状态
图2.2读传输时序
2.2 APB3
2.2.1 APB3新增信号描述
信号 | 描述 |
---|---|
PREADY | 准备,Slave使用该信号延迟APB数据传输 |
PSLVERR | 错误反馈,Slave非必要支持该信号,不支持时置为低电平 |
2.2.2 等待传输
当PSEL,PENABLE,PREADY均为高电平时,写/读传输数据。
图2.3 (a)无等待和(b)有等待写传输时序
图2.4 (a)无等待和(b)有等待读传输时序
2.2.3 错误响应
PSLVERR只在APB传输的最后一个周期有效, 也就是说当PSEL,PENABLE和PREADY均为1时是有效的,在其他时间是无效的。建议当PSEL,PENABLE和PREADY任何一个为0时,驱动PSLVERR为0。接收到错误的事务可能改变了Slave的状态,也可能没有。当写事务收到错误反馈时,并不意味着Slave寄存器没有更新。接收到错误的读取事务可以返回无效数据,Slave无需将数据总线驱动为全0来处理读取错误。当一些APB模块不支持PSLVERR时,可以将APB Bridge上这个pin接0。
图2.5 写错误响应
图2.6 读错误响应
PSLVERR在系统中的连接映射关系,PSLVERR需要连接到AXI的RRESP/BRESP或者AHB的HRESP信号。
2.3 APB4
2.3.1 APB4新增信号描述
信号 | 描述 |
---|---|
PSTRB[3:0] | 写选通信号,32位APB数据总线需4个PSTRB,每个对应一个字节 |
PPROT[2:0] | 读写保护,指示事务正常、特权或安全保护级别,数据访问还是指令访问 |
2.3.2 写选通
当写数据位宽低于设计的数据位宽时,可以通过PSTRB[n]=1指定哪个字节有效,n=0,1,2,3,PSTRB[n]对应PWDATA[(8n + 7):(8n)],这使得APB稀疏数据传输成为可能。但是读传输必须满足4个PSTRB[n]=0。
2.3.3 读写保护
为了支持复杂的系统设计,通常需要系统中的互连和其他设备提供防止非法交易的保护。对于APB接口,这种保护由PPROT[2:0]信号提供。
PPROT[2:0] | 保护模式 |
---|---|
[0] | 1=特权模式;0=正常模式 |
[1] | 1=非安全模式;0=安全模式 |
[2] | 1=指定模式;0=数据模式 |
2.4 APB5
2.4.1 APB5新增信号描述
信号 | 描述 |
---|---|
PWAKEUP | 唤醒,与APB接口相关的的行为 |
PAUSER | 用户请求属性,建议最大128bits宽度 |
PWUSER | 用户写数据属性,建议最大DATA/2宽度 |
PRUSER | 用户读数据属性,建议最大DATA/2宽度 |
PBUSER | 用户响应属性,建议最大16bits宽度 |
2.4.2 唤醒信号
- 与PCLK同步,适用于不同时钟域异步采样;
- 可在PSELx前、中、后有效,但建议PREADY在PSELx提前1至少一个周期有效;
- Slave可以在PREADY有效之前接收PWAKEUP有效信号,如果PWAKEUP从未有效,Slave可能死锁;
- 当PWAKEUP和PSELx在同一个周期为高电平,PWAKEUP必须保持有效直至PREADY有效;
- 建议在无进一步传输时,使PWAKEUP无效;
- 没有传输时,PWAKEUP可以先有效再无效,协议允许但不建议;
- 建议Mater和Slave同时设置门控时钟
2.4.3 用户信号
2.5 状态转换