APB

简介

  • APB(Advanced Peripheral Bus)是AMBA总线的一部分,从1998年第一版至今共有3个版本。
1
2
3
4
5
AMBA2 APB:定义最基本的信号 interface, 读写 transfer, APB bridge, APB slave.

AMBA3 APB:增加定义信号 PREADY, PSLVERR 来支持 wait state 和 Error reporting 的功能。

AMBA4 APB:增加定义信号 PPROT, PSTRB 来支持 transaction protection 和 sparse data transfer 的功能。
  • APB 是非流水线协议,用于连接低带宽和不需要高性能总线的外围设备,信号传输发生在时钟上升沿,每次传输至少需要两个时钟周期。

  • APB 可以同 AHB、AHB-Lite、AXI、AXI4-Lite互连。

信号

Signal Source Description
PCLK Clock source 时钟,上升沿有效
PRESETn System bus equivalent 复位,低有效(通常直连系统总线复位信号)
PADDR APB bridge 地址,位宽最高可达32 bits
PPROT APB bridge 保护类型。该信号指示事务的正常、特权或安全保护级别,以及该事务是数据访问还是指令访问。(Protection type. This signal indicates the normal, privileged, or secure protection level of the transaction and whether the transaction is a data access or an instruction access.)
PSELx APB bridge 片选信号,由APB bridge 产生对每个外围从设备的片选信号
PENABLE APB bridge 使能信号,标记传输开始
PWRITE APB bridge 读/写控制信号,高为写操作,低为读操作
PWDATA APB bridge 写数据,位宽最高可达32 bits
PSTRB APB bridge Write strobes. This signal indicates which byte lanes to update during a write transfer. There is one write strobe for each eight bits of the write data bus. Therefore, PSTRB[n] corresponds to PWDATA[(8n + 7):(8n)]. Write strobes must not be active during a read transfer.
PREADY Slave interface 标记从机是否已将数据发送到总线,高有效
PRDATA Slave interface 读数据,位宽最高可达32 bits
PSLVERR Slave interface 传输错误指示。非必须,如果外设不包含该引脚,输入APB bridge默认为低

由于APB 协议 读写数据总线不包含握手信号,所以不支持同时读写

传输时序

Write

分无等待和等待两种情况

① With no wait states

20220611180246529
  • T1 时刻, APB 将地址信息 PADDR 和写的数据 PWDATA 准备好,拉高 PWRITE 表示进入写,同时拉高 PSEL,从 IDLE 进入 SETUP
  • T2 时刻,拉高 PENABLE,使得状态进入 ACCESS
  • T3 时刻,检测到 PREADY 被拉高,也就是说 Slave 已经正确接收到数据,传输完成;PENABLE 拉低,PSEL 拉低

② With wait states

20220611181656041
  • T3时刻检测到PREADY为0,也就是说Slave还没有接收完数据,所以在此刻,下面信号必须保持,以便Slave能够继续采样;直到PREADY为1 ,说明Slave已正确接收到数据,传输完成,PENABLE 拉低,PSEL 拉低

注意:即使传输结束,也不要立即改变 address 和 data 信号,直到下一次传输才更新地址和数据。这样可以减少功耗

Write stobes

PSTRB信号,用于指示写数据中哪些字节有效,PSTRB[n] 对应 PWDATA[(8n + 7):8n],高有效

20220611182723163

注意:在读操作过程中,所有PSTRB信号要保持低电平

Read

读操作与写操作时序差不多

① With no wait states

20220611183023346
  • T1时刻APB将地址信息PADDR准备好,拉低PWRITE表示进入读,同时拉高PSEL,从IDLE 进入SETUP
  • T2时刻也就是下一个时钟周期拉高PENABLE,使得状态进入ACCESS
  • T3时刻检测到PREADY 被拉高,也就是说Slave已经完成收据发送,PRDATA上就是来自Slave的数据,传输完成;PENABLE拉低,PSEL拉低

② With wait states

20220611183111743

Error response

  • 在读和写的过程,可能出现错误,错误通过PSLVERR信号来指明;

  • APB外围设备不要求必须支持PSLVERR引脚,当不使用该引脚时,应被置低;

  • PSLVERR 只有在传输的最后一个周期有效,且此时 PSEL、PENABLE、PREADY均为高。

Write transfer

20220611184302886

Read transfer

20220611184319719

Mapping of PSLVERR

20220611184702117

Protection unit support

为了支持复杂的系统设计,互连和系统中的其他设备通常都需要提供防止非法交易的保护。对于APB接口,这种保护是由PPROT[2:0]信号提供的。

20220611193858821 20220611193916347

状态机

20220611194240094
  • IDLE:这个是APB的默认状态,也就是没有传输时候的状态;
  • SETUP:当需要进行一个传输的时候,APB 首先进入这个状态;PSELx信号首先拉高;总线仅仅在SETUP状态停留一个时钟周期,然后接着在下一个时钟的上升沿进入ACCESS状态;
  • ACESS
    • 在SETUP状态转换到ACCESS,PENABLE 信号被拉高;在SETUP状态转换到ACCESS状态这段时间里,address,write,select 和 write data 信号必须保持稳定;
    • 处于ACESS状态下,如果PREADY为0,会让其继续处于ACCESS状态;否则,PREADY为1,如果还有传输则再次进入,SETUP-> ACCESS,如果没有传输,直接回到IDLE;
Donate
  • © 2023 , Arlen .

请我喝杯咖啡吧~

支付宝
微信