1、写传输
无等待状态的写传输
Setup阶段出现在图中的T1,PSEL拉高时意味着PADDR,PWRITE和PWDATA必须有效。
Access阶段出现在图中的T2,PENABLE拉高。PREADY若拉高表示写数据将在T3被接收。PADDR,PWDATA和任何其他控制信号,必须在传输完成前保持稳定。
传输结束后,PENABLE拉低。PSEL也拉低,除非相同的外设还有下一次传输。
有等待状态的写传输:
在Access阶段,当PENABLE为高电平,Completer通过拉低PREADY来扩展传输。在PREADY为低电平期间,下列信号要保持不变。
地址信号,PADDR
传输方向信号,PWRITE
选中信号,PSELx
使能信号,Enable
写数据信号,PWDATA
写选通信号,PSTRB
保护类型信号,PPROT
用户请求信号,PAUSER
用户写数据信号,PWUSER
2、读传输
无等待状态的读传输
有等待信号的读传输
3、错误响应
PSLVERR用于表示APB传输时的错误状态。错误情况在读事务和写事务中都有可能出现。
PSLVERR只在APB传输的最后一个周期被认为是有效的,即PSEL,PENABLE和PREADY均为高电平时。
接收到错误事务可能改变外设状态也可能不改变。当一次写事务收到错误响应,并不表示外设的寄存器没被更新。
读事务收到一个错误可以返回无效数据。并不要求外设返回全0数据。Requester在读传输中收到错误响应也可能使用数据,Completer不能根据错误响应来阻止读取PRDATA的值。
Completer可能不支持PSLVERR,若Completer没有这个接口,Requester的这个接口应该保持低电平。
错误的写传输
错误的读传输
当桥接时:
从AXI到APB:APB的错误信号PSLVERR映射给RRESP(读)和BRESP(写)
从AHB到APB:APB的错误信号PSLVERR映射给HRESP(读和写)。
4、保护单元支持
为支持复杂系统设计,有必要为互连组件和系统中的其他设备提供保护而不是非法事务。对于APB接口,这种保护由PPROT[2:0]信号提供。
PPROT[0]为高表示优先存取,为低表示普通存取。
PPROT[1]为高表示非安全存取,为低表示安全存取。
PPROT[2]为高表示指令存取,为低表示数据存取。
Requester无PPROT信号,而Completer有是不兼容的,除非保护信号固定是正确的。
5、唤醒信号
唤醒信号,PWAKEUP用于表示APB接口上的任何行为。PWAKEUP提供了一个可被路由至一个时钟控制器无glitch信号,或者类似的使能被连接的组件的电源和时钟的元件。该信号只能在APB5协议接口中被添加。
PWAKEUP信号
PWAKEUP对于PCLK是同步的,但一定会被另一个时钟域异步采样。这要求PWAKEUP是无glitch的,可以来自寄存器输出或者一个无glitch或门树。
PWAKEUP允许在PSELx拉高之前,之中,之后拉高。
Completer允许在PREADY拉高前等待PWAKEUP被拉高。在存在PWAKEUP接口但从未拉高的情况下,接口可以死锁。
若PWAKEUP和PSELx在同一个周期中拉高,PWAKEUP必须保持拉高到PREADY拉高。
建议PWAKEUP至少在PSELx拉高前一个周期拉高,防止一个新事务接收的延迟。
建议不再有传输时再拉低PWAKEUP。
建议Completer和Requester一同门控。否则Completer可能会错过setup阶段。
APB操作状态机: