APB协议学习笔记

1. APB介绍

APB(Advance Peripheral Bus)是AMBA总线的一部分。它是一个低成本的接口,是以最低功耗和减少端口复杂性为目标进行设计的。
APB接口用在低带宽和不需要高性能总线的外围设备上。例如:UART,1248,键盘和鼠标等。并且,可以用它来访问外围设备的可编程控制寄存器。
它的主要特性如下:

  • 是非流水的

  • 所有信号仅与时钟上升沿有关(简化了外围设备的集成设计流程)

  • 每个事务至少需要两个时钟周期,无需等待周期和回应信号

  • 只有一个master——APB Bridge

  • 控制逻辑简单,只有四个控制信号

  • 可以和AXI和AHB进行连接

从1998年第一版至今共有3个版本。

  • AMBA 2 APB:定义最基本的信号 interface, 读写 transfer, APB bridge, APB slave.
  • AMBA 3 APB:增加定义信号 PREADY, PSLVERR 来完成对 wait state 和 Error reporting 的功能。
  • AMBA 4 APB:增加定义信号 PPROT, PSTRB 来支持Transaction protection和 sparse data transfer 的功能。

2. 接口描述

SignalSourceWidthDescription
PCLK时钟源1系统时钟,传输发生在上升沿
PRESETn复位源1复位信号,低使能
PPORTAPB Bridge3保护类型,该信号指示事务的正常、特权或安全保护级别,以及该事务是数据访问还是指令访问。
PADDRAPB Bridge地址信号,最高可达32位
PSELxAPB Bridge由APB bridge产生的信号,针对每一个Peripheral Bus Slave片选信号,表示x从机是否被选中
PENABLEAPB Bridge1使能信号,标记传输使能
PWRITEAPB Bridge1读/写控制信号,高位写,低为读
PWDATAAPB Bridge32写数据
PREADYSlave interface1标记从机是否已将数据发送到总线,高为ready
PRDATASlave interface32读数据
PSLVERRSlave interface1故障信号,高为发生故障

APB的读写数据总线是独立的,都是32bit。因为它们没有独立的握手信号,所以不可能在同时发生数据传输。

3. 运行状态

在这里插入图片描述

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;

4. 事务

4.1. Write transfer

4.1.2. With no wait states

在这里插入图片描述

4.1.1. With wait state

在这里插入图片描述

在写等待状态时:需要保持以下信号不能改变:
PADDR,PWRITE,PSEL,PENABLE,PWDATA,PSTRB,PPROT

建议地址和写入信号在传输后不要立即改变,而是保持稳定,直到另一个访问发生。这降低了功耗。

4.1.3. Write strobe

在这里插入图片描述

PSTRB,使稀疏数据传输在写数据总线上。每bit对应于写数据总线的一个字节。当断言为HIGH时,指示写数据总线的相应字节包含有效信息。

4.2. Read transfer

4.2.1. With no wait states

在这里插入图片描述

4.2.2. With wait state

在这里插入图片描述

在读等待状态时:需要保持以下信号不能改变:
PADDR,PWRITE,PSEL,PENABLE,PPROT

4.3. Error respond

使用PSLVERR来对读写过程中产生的错误进行指示。PSLVERR只在APB事务的最后一周期被认为是有效的,也就是当PSEL,PENABLE,PREADY全部为高电平。

建议在PSEL,PENABLE,PREADY中任意一个为低电平时,将PSLVERR也保持为低电平。

接收错误的事务可能改变了外设的状态,也可能没有,这两者都是可以接受的。当一个写事务收到一个错误时,这并不意味着外围设备中的寄存器没有被更新,接收错误的读取事务可能返回无效的数据。在发生读数据错误时,也没有必要把读数据总线置为全0。

PSLVERR在外围设备中不是一定非要实现的,如果外设中不包含该引脚。APB Bridge对应的输入被恒置为低电平。

4.3.1. PSLVERR的映射

当AXI和APB进行桥接时:读操作产生的PSLVERR映射到AXI的RRESP[1]信号,写操作产生的PSLVERR映射AXI到BRESP[1]信号。
当AHI和APB进行桥接时:读写PSLVERR都映射到AHB的HRESP[0]信号。

4.4. Protection unit support

为了支持复杂的系统设计,互连线和系统中的其他设备通常都需要提供防止非法传输的保护。对于APB接口,这种保护是由PPROT[2:0]信号提供的。
Normal or privileged, PPROT[0]:LOW表示一个正常访问,HIGH表示一个特权级访问。这是一些master用来指示其处理模式的。特权处理模式通常在系统中具有更高级别的访问。
Secure or non-secure, PPROT[1]:LOW表示一个安全访问,HIGH表示一个非安全访问。在处理模式需要更大程度区别的系统中使用。
Data or Instruction, PPROT[2]:LOW表示一个数据访问,HIGH表示一个指令访问。该指示做为一个提示出现,并不是所有的情况下都是准确的。当一个访问是指令数据混合项时,默认情况下建议将其标记为一个数据访问,除非明确知道它是一个指令访问。

使用PPORT主要目的是标记一个事务是secure还是no-secure。PPORT[0]和PPORT[2]被允许赋予其他含义。

5. ISSUE

5.1. 什么情况下会报ERROR?

PSLVERR是在PPORT之前引入的。

5.2. PPORT状态不匹配会报ERR吗?

5.3. 连接到APB Bridge的PRDATA是多个还是一个?

参考文献:https://blog.csdn.net/zhoutaopower/article/details/103729440
参考文献:IHI0024C_amba_apb_protocol_spec.pdf

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值