文章目录
协议版本:AMBA APB Protocol Version Specification2.0
官方协议网站:https://developer.arm.com/docs
1. 介绍 Introduction
APB(Advance Peripheral Bus)是AMBA(Advanced Microcontroller Bus Architecture)协议的一部分,其规定了一个低功耗、低复杂度的接口;APB协议不支持流水线操作,可与低带宽外设连接;信号转换发生在时钟上升沿,每次传输消耗至少两个周期。
- Advanced Peripheral Bus(APB, 先进外设总线)
- 低功耗,接口简单,
- 非流水线
- 每次传输至少两个周期
- 主要用于低速、功耗低的外设
2. 信号描述 Signal Descriotions
Signal | Source | Description |
---|---|---|
PCLK | Clock Source | 时钟信号,上升沿 |
PRESETn | System bus equivalent | 复位信号,低电平有效 |
PADDR | APB Bridge | 地址总线,最高32bits |
PSELx | APB Bridge | Slave选择信号 |
PEANBLE | APB Bridge | 使能信号,表明进入传输的第二阶段或下一阶段传输 |
PWRITE | APB Bridge | 读写标志,读(0),写(1) |
PWDATA | APB Bridge | 写数据,当PWRITE为HIGH时被外设驱动,最高32bits |
PRDATA | Slave interface | 读数据,最高32bits |
PREADY | Slave interface | 传输完成标志 |
PSLVERR | Slave interface | 传输失败标志 |
PPROT | APB Bridge | Protection type, 该信号指明事务保护等级是norma、privileged或secure;事务是数据传输还是指令传输 |
PSTRB | APB Bridge | Write strobes,指示在写入传输期间要更新哪些字节通道 |
APB具有两个独立数据总线,一个是读数据、一个是写数据;总线可达32bit位宽;因为二者不具有独立的握手信号,两数据总线上的数据传输不能在同一时刻发生。
3. 传输 Transfers
3.1 写操作
3.1.1 无等待 With no wait states
- T1时刻,PADDR、PWRITE、PSEL、PWDATA在上升沿PCLK被驱动,该阶段被称为写传输的Setup phase
- T2时刻,在PCLK上升沿,使能PENABLE和PREADY
- 当PENABLE信号被置位时,表明Accesss phase开始
- 当PREADY被置位时,表明Slave可进行下一个上升沿的传输
- 直到T3时刻,Access phase阶段结束,PADDR、PWDATA和控制信号都保持不变
- PENABLE信号在传输结束后置0;
- 对于PSEL信号,除非该处传输后立即在相同外设传输,否则置0
3.1.2 有等待 with wait states
在Access phase阶段,当PENABLE信号为HIGH时,Slave可将PREADY置LOW来延长传输。
当PREADY为LOW时,以下信号需保持不变:PADDR、PWRITE、PSEL、PENABLE、PWDATA、PSTRB、PPROT。
3.2 Write strobes
PSTRB,在写数据总线上传输稀疏数据;每个PSTRB对应一个字节写数据;当置HIGH时,表明所对应的字节存在有效数据。RSTRB[n]对应PWDATA[(8n+7):(8n)]。读操作时,PSTRB全部置LOW
3.3 写操作
3.3.1 无等待 with no wait states
3.3.2 有等待 with wait states
PREADY为LOW,PADDR、PWRITE、PSEL、PENABLE和PPROT保持不变
3.4 Error response
- PSLVERR,APB传输错误条件,在读、写操作中都可产生
- PSLVERR只在APB传输中最后的cycle(Access phase, PSEL=1,PENABLE=1,PREADY=1)中有效
- 建议在未对PSLVER LOW进行采样时, 即当PSEL、PENABLE或PREADY中的任何一个为LOW时,将其驱动。
3.5 Protection unit support
PPROT[2:0]信号提供针对非法transaction的保护
有三级
4. 操作状态
IDLE:APB的默认状态
SETUP:当总线需要传输时,移至该状态,该状态仅保持一个周期
ACCESS:PEABLE信号置位,address、write、select、write data信号在SETUP到ACCESS转换阶段保持不变
从ACCESS退出由PREADY控制
如果PREADY保持LOW,就保持ACCESS状态
如果PREADY置HIGH,就立即转换到IDLE状态;如果还有传输就直接转换到SETUP状态