APB协议详解

在这里插入图片描述
APB(Advanced Peripheral Bus) 作为高级外设总线是AMBA协议之一,也是最基本的总线协议。按照ARM官方定义,APB是一种低成本的接口协议,可以实现低功耗以及精简的接口设计,降低接口设计的复杂度。
APB协议不支持流水线设计,它主要应用在低带宽设计需求的接口中,高性能带宽需求可以使用AXI总线。APB协议的实现与时钟沿对齐,以简化外设接口的设计。每次传输至少需要消耗两个时钟周期
在SOC设计中,AHB一般作为IP的配置接口,包括低速IP如I2C,UART,I2S等,也包括DDR,PCIe,Ethernet等高速IP,可以方便的实现CPU对外设IP的寄存器配置。系统中一般会实现一个AXI2APB或者AHB2APB的转换桥将APB口挂载在系统上。
在这里插入图片描述
APB协议的演进

最早的一版APB协议是在1998发布,目前的APB协议已经达到APB5的版本。AMBA的具体发展历程可参考上一篇“AMBA发展历程”。
在这里插入图片描述
APB2协议主要定义了基本的总线接口,没有捂手协议,只有基本的读写传输。
APB3增加了PREADY,PSLVERR信号。PREADY用于表示APB传输的完成,可以实现slave的等待功能。PSLVERR用以指示slave的错误状态。
APB4增加了PPROT,PSTRB。PPROT信号实现安全和非安全的数据传输,可实现系统在不同安全属性的控制传输,保证系统的安全性。PSTRB信号用于实现部分数据的写操作,可以指示一笔传输中的一部分数据有效。
APB5增加了wake-up,user,pairty等信号。wake-up用于实现低功耗的控制,通过控制时钟只在传输的时候开启,减少动态功耗的消耗。user则增加了基本信号之后的用户自定义信号。parity主要针对安全系统设计中的保护功能。
我们可以看到随着系统设计的升级,协议也是在不断的更新,来适应我们目前的系统需求。比如最新的协议都是支持安全传输与安全验证,这就是针对目前的安全设计,比如汽车电子,自动驾驶补充的一些标准。
APB信号
在这里插入图片描述
APB传输
在这里插入图片描述

  • IDLE :APB的默认状态,此时没有数据传输,PSEL,PENABLE均为default 0;
  • SETUP:当需要进行一个传输的时候,APB 首先进入这个状态;PSELx 信号首先拉高;总线仅仅在 SETUP 状态停留一个时钟周期,然后接着在下一个时钟的上升沿进入 ACCESS 状态;
  • ACESS:在 SETUP 状态转换到 ACCESS,PENABLE 信号被拉高;在 SETUP 状态转换到 ACCESS 状态这段时间里,address,write,select 和 write data 信号必须保持稳定;
    ACCESS状态的跳转取决于slave 输出的PREADY信号状态:
    1)如果 PREADY 为 0,表示slave还没有准备接受传输的数据,或者没有准备好输出的数据,会让其继续处于 ACCESS 状态;
    2)如果PREADY 为 1,表示slave已完成数据,可以跳转到其他状态。如果后面有连续的数据传输则直接跳转到 SETUP -> ACCESS ,如果没有传输,直接回到 IDLE;
    with no wait states
    在这里插入图片描述
    T1 时刻 :在PCLK的上升沿,APB 将地址信息 PADDR 和数据 PWDATA 准备好,拉高 PWRITE 表示进入写,同时拉高 PSEL,从 IDLE 进入 SETUP
    T2 时刻:也就是下一个时钟周期拉高 PENABLE,表示开始进行数据传输,状态进入 ACCESS
    T3 时刻:检测到 PREADY 被拉高,也就是说 Slave 已经正确接收到数据,传输完成;PENABLE 拉低,PSEL 拉低 。
    一直到T3时刻所有数据传输完成之前所有的信号PADDR,PWDATA以及控制信号需要保持不变。
    在这里插入图片描述
    T1 时刻 :在PCLK的上升沿,APB 将地址信息 PADDR ,此时 PWRITE 为低表示读操作,同时拉高 PSEL,从 IDLE 进入 SETUP
    T2 时刻:也就是下一个时钟周期拉高 PENABLE,表示开始进行数据传输,状态进入 ACCESS
    T3 时刻:检测到 PREADY 被拉高,也就是说 Slave 已经将PRDATA准备好,MASTER可以接收SLAVE的数据,然后PENABLE 拉低,PSEL 拉低 。
    读操作是SLAVE将准备好的数据放到PRDATA总线上,然后通过PREADY通知MASTER。
    注意:slave需要在T2时刻将需要读取的数据准备好

with wait states
在这里插入图片描述
slave可以通过pready拉低,来延长slave的响应时间。此时需要注意,其他信号需要保持不变。

Wite strobes
在这里插入图片描述
通过PSTRB[n]控制PWDATA[(8*n+7):n]的数据写有效。可以方便的实现部分数据控制。

Error response

APB协议可以通过PSLVERR信号表示对应传输错误。只不过在APB协议中error只有1 bit表示所有的错误。具体的协议实现如下:
在这里插入图片描述
需要注意的是,PSLVERR是与ready信号同时返回的,只有这样master才能正确采样到错误信号。在salve内部处理之前需要将ready拉低以等待内部检测是否有错误发生。
APB新增属性
Protection transaction
在这里插入图片描述
PPROT可实现APB传输的保护控制。PPROT[0]表示不同优先级的传输,可实现salve对不同优先级数据的特殊处理操作。PPROT[1]表示对不同安全属性的数据传输,对Secure和Non-secure的数据进行数据处理,Non-secure不能更改secure属性的区域。PPROT[2]用来指数此时传输是数据传输还是指令传输。
APB的这个升级是集成的AHB与AXI的属性,也是为了更加符合现在系统设计的需求。
PWAKEUP SIGNAL
PWAKEUP用来指示本次传输是否有效,是随请求信号一块传输的。
设计上如果我们端口有pwakeup信号就一定要在传输的时候使能pwakeup信号,如果传输的时候pwakeup信号不使能,则slave会认为这一笔数据传输无效。
设计上建议pwakeup信号跟psel一块拉高或者先于psel拉高。也可以用pwakeup控制AHB的时钟达到低功耗的目的。

USER SIGNAL
APB信号增加了USER信号,可针对地址,读写数据,响应增加USER信号,可以用来传输用户自定信号,增加协议的灵活性。
信号的有无,以及位宽可以用户自定义。
在这里插入图片描述
PARITY protection
在这里插入图片描述
在最新的APB协议中,增加了对协议的parity保护,可以针对地址,数据以及控制信号的保护传输。在Source侧可以针对要传输的信号增加parity generation模块产生校验码,同时也可以对返回的数据进行校验。在Destination侧可以增加Parity check模块对Source侧传过来的数据与校验码进行校验,从而覆盖从Source到Destination的整个通路的安全保护,试下端到端(E2E)的保护机制。
具体的实现机制与奇偶校验都可以自行选择实现。

以上就是对APB协议的整体拆解与分析。

参考原文

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值