内容参考:APB协议详解_Ky-优快云博客_apb协议https://blog.youkuaiyun.com/burningCky/article/details/109630018
APB2协议的特点:
- 低成本
- 低功耗
- 低带宽
- 无流水线
- 所有信号都是时钟上升沿有效
- 进行一次数据传输至少需要两个周期
APB:(APB3比APB2多两个信号,APB4比APB3多两个信号)
信号 | 描述 | |
P_clk | APB2 | 时钟。所有信号都是时钟上升沿有效。 |
P_reset_n | APB2 | 复位。低电平有效 |
P_addr | APB2 | APB地址总线。最大位宽为32位。 |
P_sel_x | APB3 | 选通。APB master会将此信号生成给每个slave。它指示已选择的slave,并且需要进行数据传输。每个slave都有一个P_sel_x信号。 |
P_enable | APB2 | 使能。当他为高时,表示数据有效。 |
P_write | APB2 | 读写控制。1:写;0:读; |
P_wdata | APB2 | 写数据。Master通过P_wdata将数据写到slave,该总线最大宽度为32位。 |
P_rdata | APB2 | 读数据。Master通过P_rdata将数据从slave读回来,最大位宽=32bit |
PREADY | APB3 | 是一个对于slave的准备信号,用于扩展APB的传输;(DUT的输出) |
PSLVERR | APB3 | 是一个错误反馈信号,表示当前传输的数据有误。 |
PPROT | APB4 | PPROT:一种保护信号,可支持APB上的非安全传输和安全传输。 PPROT [0]:0:普通;1:特权。一些master使用它来指示其处理模式。特权处理模式通常在系统内具有更高级别的访问权限。 PPROT [1]:0:安全;1:非安全。这用于需要更大程度区分处理模式的系统中。 PPROT [2]:0:数据;1:指令。该位指示事务是数据访问还是指令访问。此指示仅作为提示,并非在所有情况下都是准确的。 |
PSTRB | APB4 | PSTRB:一个写选通信号,用于在写数据总线上进行稀疏数据传输。 这个信号位宽为4,每一位代表不同的作用,对应于写数据总线的一个字节的有效与否。 |
无论是读还是写,都是两个周期。在第一个周期,PSEL为高,PENABLE为低,这个时候为data的传输做准备工作;第二个周期里,PSEL和PENABLE同时为高,进行data的传输。
APB2:写数据
APB3:写数据,有等待
相对于APB2无非就是多了个PREADY,也就是说,当PSEL为高,PENABLE为高时,总线会看PREADY是否为高,如果为高,则进行数据传输,如果为低,那么等待其变为高。
当PSEL和PENABLE都为高的时候,PREADY为低,说明slave没有准备好,需要继续等待PREADY拉高。
PSLVERR:当PSEL,PENABLE和PREADY均为高电平时,仅在APB传输的最后一个周期内才认为PSLVERR有效,其他时间不考虑PSLVERR。
PSTRB:写选通信号PSTRB使写数据总线上的稀疏数据传输成为可能。 每个写选通信号对应于写数据总线的一个字节。 当置为高电平时,写选通脉冲指示写数据总线的相应字节通道包含有效信息。