APB5协议详解

本文详细介绍了APB总线协议的发展历程,从APB2到APB5的新增信号和功能,如PSTRB、PSLVERR、PPROT、唤醒信号PWAKEUP等,以及数据传输机制。APB5还支持新信号如PNSE和用户自定义信号PAUSER。文章还提供了代码示例和协议下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

APB的演进

APB总线特点

APB4的信号

APB状态机

APB数据传输

1.没有等待状态的写

2. 有等待状态的写

3. 没等待状态的读

4. 有等待状态的读

写选通PSTRB

错误响应PSLVERR

总线保护PPROT

APB5新增的信号 —— PNSE

APB5新增的信号 —— 唤醒信号PWAKEUP

APB5新增的信号 —— 用户信号PAUSER

APB5新增的信号 ——接口校验保护

从APB代码示例

APB5协议下载网址


APB简介

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

APB的演进

  • APB2(2003年)协议主要定义了基本的总线接口,没有握手协议,只有基本的读写传输。
  • APB3(2004年)增加了PREADYPSLVERR信号。
    • PREADY用于表示APB传输的完成,可以实现slave的等待功能。
    • PSLVERR用以指示slave的错误状态。
  • APB4(2010年)增加了PPROTPSTRB
    • PPROT信号实现安全和非安全的数据传输,可实现系统在不同安全属性的控制传输,保证系统的安全性。
    • PSTRB信号用于实现部分数据的写操作,可以指示一笔传输中的一部分数据有效。
  • APB5(2021年)增加了wake-up信号userr信号pairty保护等。
    • wake-up用于实现低功耗的控制,通过控制时钟只在传输的时候开启,减少动态功耗的消耗。
    • user则增加了基本信号之后的用户自定义信号。
    • parity主要针对安全系统设计中的保护功能。 E版本支持ARM RME系统架构(2023年)

APB总线特点

  • APB总线只有一个master,其他的都是slave。
  • APB 总线传输是对数据目标的读写操作,总是至少需要 2个总线周期。
  • 可在高频下工作
  • 协议简单:无复杂的时序;
  • 只有三个控制信号(PSEL,PWRITEPENABLE
  • 同步总线:总线上所有的transaction(读写操作)都依赖于时钟的上升沿;
  • 一主多从:一般情况下,APB挂在AHB总线系统下,通过AHB-APB Bridge将事务在AHB总线系统之间进行转化,此时Bridgre即为APB的master,其他的外围设备均为slave。
  • APB主要用于低带宽的周边外设之间的连接,例如UART、I2C等

APB4的信号

APB状态机

  • IDLE :APB的默认状态,此时没有数据传输,PSELx,PENABLE均为default 0
  • SETUP:当需要进行一个传输的时候,APB 首先进入这个状态;PSELx 信号首先拉高;总线仅仅在 SETUP 状态停留一个时钟周期,然后接着在下一个时钟的上升沿进入 ACCESS 状态;
  • ACCESS:在 SETUP 状态转换到 ACCESS,PENABLE 信号被拉高;在 SETUP 状态转换到 ACCESS 状态这段时间里,PADDR,PWRITE,PSELx和 PWDATA信号必须保持稳定;
  • ACCESS状态的跳转取决于slave 输出的PREADY信号状态:
    • 如果 PREADY 为 0,表示slave还没有准备接受传输的数据,或者没有准备好输出的数据,会让其继续处于 ACCESS 状态;
    • 如果PREADY 为 1,表示slave已完成数据,可以跳转到其他状态。如果后面有连续的数据传输则直接跳转到 SETUP -> ACCESS ,如果没有传输,直接回到 IDLE;

APB数据传输

1.没有等待状态的写

  • T1 时刻 :在PCLK的上升沿,APB 将地址信息 PADDR 和数据 PWDATA 准备好,拉高 PWRITE 表示进入写,同时拉高 PSEL,从 IDLE 进入 SETUP
  • T2 时刻:也就是下一个时钟周期拉高 PENABLE,表示开始进行数据传输,状态进入 ACCESS
  • T3 时刻:检测到 PREADY 被拉高,也就是说 Slave 已经正确接收到数据,传输完成;PENABLE 拉低,PSEL 拉低 。
  • 一直到T3时刻所有数据传输完成之前所有的信号PADDR,PWDATA以及控制信号需要保持不变。
2. 有等待状态的写

slave可以通过pready拉低,来延长slave的响应时间。此时需要注意,其他信号需要保持不变。

3. 没等待状态的读

  • 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时刻将需要读取的数据准备好
4. 有等待状态的读

slave可以通过pready拉低,来延长slave的响应时间。此时需要注意,其他信号需要保持不变。

写选通PSTRB

  • PSTRB确保了在写数据总线上的稀疏传输。每一位PSTRB对应写数据总线上的1byte。当置为高时,PSTRB表明写数据总线的字节通道的有效信息。
  • 写数据总线的每8bit有一个写选通,因此PSTRB[n]对应PWDATA[(8n+7):(8n)]。
  • 可选。不支持的时候PSTRB所有的组合都兼容。

错误响应PSLVERR

  • PSLVERR信号用于指示APB读写传输错误,在读和写的时候都有可能出现。
  • 该信号只在APB传输的最后一个时钟周期, 当PSEL、PENABLE和PREADY同时为高时,才被视为有效。
  • 建议当PSEL、PENABLE或PREADY为低时,PSLVERR拉低,但不要求。
  • 接收到错误的传输可能已经改变了外围设备的状态,也可能没有改变。这是外围设备特定的,任何一种状态都是可以接受的。
  • 当写传输接收到一个错误时,并不意味着外围设备中的寄存器没有被更新。
  • 接收到错误的读传输可能会返回无效的数据。对于读取错误,不要求外围设备将数据总线置为全0。接收到读传输错误响应的master可能仍然会使用读取到的数据。slave不能依赖错误响应来防止读取PRDATA上的数据。
  • 不支持PSLVERR的从设备,需拉低。

总线保护PPROT

  • 为了支持复杂的系统设计,通常需要为互连和系统的其他设备提供保护,防止非法操作。对于APB接口,这种保护功能由PPROT[2:0]信号提供。
  • APB总线提供三层访问保护。
  • PPROT是可选的。

APB5新增的信号 —— PNSE

  • APB5支持ARM的RME(Realm Management Extension)系统架构。
  • RME将Root和Realm物理地址空间添加到Arm体系结构中,当APB传输时可用于权限检查。
  • PNSE扩展保护类型,当PSEL有效时,PNSE必须有效。
  • 高有效,只有APB5支持。 如果支持PNSE,也必须支持PPROT。
  • PNSE信号使用PCTRLCHK信号进行奇偶校验保护。

APB5新增的信号 —— 唤醒信号PWAKEUP

  • PWAKEUP高电平有效,用于指示本次传输是否有效。
  • 只有APB5支持PWAKEUP。
  • 唤醒与PCLK同步,并且必须适配不同时钟域中的异步采样。
  • PWAKEUP允许在PSELx有效之前、期间或之后有效。
  • 允许slave等到PWAKEUP有效后,再拉高PREADY。如果有PWAKEUP但一直不拉高,接口可能会死锁。
  • 如果在同一周期中PWAKEUP和PSELx都同时拉高,PWAKEUP必须维持高电平,直到PREADY拉高。
  • 建议在拉高PSELx之前PWAKEUP至少拉高一个时钟周期,防止传输被延迟。
  • 不需要继续读写时,拉低PWAKEUP。
  • 允许没有读写操作的时候拉低再拉高PWAKEUP。 推荐主从的连接一起进行时钟门控。如果从接口进行单独的时钟门控时,用PWAKEUP去唤醒从时钟时,可能从会错过读写的setup阶段。

APB5新增的信号 —— 用户信号PAUSER

  • APB协议的用户可能会遇到需要使用APB协议之外的额外信令的应用场景。用户信号定义了将此信号添加到传输中的标准方法,而不定义信号的用法。
  • 一般情况下,建议不使用用户信号。APB协议接口没有定义这些信号的功能,如果两个组件以不兼容的方式使用相同的用户信号,就会导致互操作性问题。
  • 只有APB5支持用户信号。
  • 所有的用户信号都是可选的。

APB5新增的信号 ——接口校验保护

  • 实现端到端保护的一种方式是在组件中利用定制的EDC(Error Detection and Correction)方案,并在组件中实现简单的错误侦测方案。在这些组件之间,没有逻辑,而且单比特错误不会传播到多比特错误。这一部分描述了一个在组件间的接口上检测单比特错误的校验方案。如果发生在不同的校验信号组,多比特可以被侦测到。
  • 只有APB5支持接口校验保护。
  • 接口的EDC方案是由Check_Type属性定义。
    • Check_Type为false,不支持校验保护;
    • Check_Type为Odd_Parity_Byte_All, 所有信号都包括奇校验。校验信号的每位覆盖8位。

从APB代码示例

APB5协议下载网址

APB的协议总共不超过50页,相对比较简单,推荐大家去读原文。下面是AMBA官网上面AMBA各个版本的协议下载入口:

https://www.arm.com/architecture/system-architectures/amba/amba-specifications

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值