AMBA3/4总线-APB3协议

一、发展历史

APB(Advanced  Peripheral Bus)高级外围总线,现在主要用于连接低速外设如UART,SPI、IIC、timer等。ARM公司于1999年发布了APB2,在2003年发布了APB3并且2004年发布了APB3的修订版,又于2010年发布了APB4。因为APB总线首次发布至今已经二十多年,现在已有更先进的AHB、AXI等总线,故其高级一词已经名不副实。

APB2是APB总线的基础版本,ARM官网上并无APB版本。APB3在APB2的基础上增加了PREADY和PSLVERR信号,PREADY用于反压,PSLVERR代表传输是否发生错误。APB4又在APB3的基础上增加了PPROT和PSTRB信号,PPROT为保护信号,PSTRB信号代表字节选通,允许稀疏的写。

二、端口列表

表2-1  APB3端口列表

PCLK,来自时钟源,时钟信号,上升沿同步。

PRESETn,来自系统复位,复位信号,低有效,通常将该信号直接连接到系统总线的复位信号。

PADDR,来自APB桥,地址信号,最多可达32位,被APB桥接单元驱动。

PSELx,来自APB桥,选通信号,选择指定的从机进行传输,当信号拉高则意味着要发起以此传输了。

PENABLE,来自APB桥,使能信号,表示以此APB的传输第二个周期及其后续周期。

PWRITE,来自APB桥,读写标志信号,高电平表示写数据,低电平表示读数据。

PWDATA,来自APB桥,写数据总线,主设备在PWRITE为高时进行驱动,最高可达32位。

PREADY,来自从设备,从设备状态标志信号,对于写操作来说,用于表示从设备是否准备好接收数据,对于读操作来说,用于表示从设备是否准备好 返回给主设备数据。该信号可以延长一次传输的时间,直到从设备准备好再进行传输。

PRDATA,来自从设备,读数据总线,从设备在PWRITE为低时进行驱动,最高可达32位。

PSLVERR,来自从设备,从设备返回给主设备传输错误标志信号。

三、信息传输

APB3相对于APB2增加了PREADY信号,从而使得从机可任意反压主机,增加了从机对通信的控制能力,从而避免主机写的数据从机没收到或者主机读出从机尚未准备好的数据的情况。

3.1 写操作

APB3无等待传输的写操作由两个时钟周期完成,其时序如图3-1所示。

在T1周期,PSEL信号拉高,意味着要发起一次新的传输了;PWRITE为高意味着这是一次写传输;PWDATA和PADDR分别为要传输的数据和地址,两者直到此次传输结束之前应该维持不变;PENABLE在这个时钟周期为0,PREADY信号此时的状态并不影响传输过程。

在T2周期,PSEL信号继续拉高;PWRITE,PADDR,PWDATA保持不变;PENABLE信号拉高表示这是传输的第二个周期;PREADY信号拉高表示从设备已经准备好接收这一笔数据。

两个时钟后数据完成传输。如果在同一时钟给出地址和数据理论上一个时钟就可以完成传输,为什么非要用两个时钟完成传输呢?主要时最初的APB受限于当时的技术所限制而这样设计的,而后面的APB版本为了向前兼容,所以导致这一问题一直延续至今。而APB的主要用途是连接低速外设配置寄存器等操作,因此多花一个时钟也可以忍受。

图3-1 无等待状态的传输

APB3有等待传输的写操作需要的时钟周期有PREADY信号控制,其时序如图3-1所示。

在T1周期,PSEL信号拉高,意味着要发起一次新的传输;PWRITE为高意味着这是一次写传输;PWDATA和PADDR分别为要传输的数据和地址;PENABLE在这个时钟周期为0,PREADY信号此时的状态并不影响传输过程。

在T2周期,PSEL信号继续拉高;PWRITE,PADDR,PWDATA保持不变;PENABLE信号拉高表示这是传输的第二个周期;PREADY信号为低表示从设备还没有准备好接收这一笔数据。

在T3周期,PREADY信号继续为低电平表示从设备依然没有准备好接收这一笔数据,故这一笔传输不能进行,而此时其他信号维持不变,直到PREADY拉高表示从设备可以准备接收这一笔数据的那个周期。

在T4周期,PREADY信号拉高,表示从设备准备好接收数据了,于是这个周期进行完成写传输的操作,此次传输结束。值得注意的是,在整个传输过程中,PADDR,PWRITE,PSEL,PWDATA都应该保持不变。

从时序图3-2可以看出来,有了PREADY信号,从机就可以反压主机,更好的控制传输过程,使得主从之间的传输更加可靠。

图3-2 有等待状态的传输

3.2 读操作

读操作与写操作基本类似,雷同内容此处就不再赘述。无等待和有等待的读操作分别如图3-3和图3-4所示。

图3-3 无等待的读操作

图3-4有等待的读操作

与写操作相比,读操作的过程中,PRDATA和PREADY信号在同一个周期发生变化,可以理解为从机此时提供的PRDATA才是有效的数据。

3.3 错误响应

PSLVERR信号用来表示一次APB传输是否出现错误,其为高电平时表示出现错误。至于为什么会产生错误,这是由slave自己定义的,比如读写了错误地址,或者访问超时等。

PSLVERR只在一次APB传输的最后一个周期才被认为有效,即PSEL,PENABLE和PREADY同时为高的周期。协议中推荐在PSEL,PENABLE和PREADY同时为低的周期时,PSLVERR也为低,不过这不是强制的。

接收到错误信号可能改变了外设的状态,也可能没有改变,这是特定于外设的,两者都可以接受。当写操作接收到错误时,这并不意味着外设内的寄存器没有更新。读操作接收到错误时则可能返回的是错误的数据。

APB外设不需要支持PSLVERR引脚,如果外设不包括PSLVERR引脚,则此信号固定连接到低电平上。

图3-5 写传输失败示例

图3-6 读传输失败示例

四、APB状态机模型

APB3中的状态机模型如图4-1所示。APB3共有三个状态:

IDLE: 空闲状态,PSEL和PENABLE都为0,此状态为默认状态。

SETUP:发起传输状态,PSEL变为1,PENABLE仍为0。此状态表明要发起一次传输。

ACCESS:等待接受数据状态,PSEL为1,PENABLE变为1。此状态表明此时处于一次传输的第二个及第二个以上周期,PENABLE已经拉高,数据已经在总线上准备好,至于什么时候完成当次传输取决于PREADY信号什么时候拉高,当处于这个状态且PREDY为高电平状态时完成当次数据传输。

图4-1 传输状态机模型

为什么前面一直说是状态机模型而不是状态机呢,因为这个状态机模型只是方便我们理解的,这个模型也仅仅是解释了传输过程。对于设计实现APB master和APB slave来说,其可以完全不用状态机的方式来实现。

五、不同协议版本APB的连接

5.1 APB3和APB2

APB3由于比APB2多了PREADY信号使得slave可以反压数据,而APB2却没有这一机制导致两者的传输过程可能会有巨大的差异,两个不同协议的master和slave一起使用会非常困难,因此最好不要一起用这两个协议。

5.2 APB3和APB4

APB3与APB4相比少了PSTRB和PPROT两个信号,而这两个信号只要起到的功能要在两个不同版本协议的APB之间实现传输,也需要一些复杂的转换逻辑,因此也最好改为使用同一版本的协议。

六、参考资料

1. AMBA3 APB协议

2.lawlite知乎专栏《深入理解AMBA总线协议》APB部分

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: AMBA协议APB3(Advanced Peripheral Bus 3)是一种在ARM处理器与外围设备之间传输数据的总线协议。它是AMBA协议族中相对较简单的一种总线协议,主要用于连接芯片内部的低速IO设备,例如电源管理芯片、GPIO控制器或者LED驱动器等。 APB3协议的数据传输采用的是基于时钟沿的同步传输方式。在数据传输过程中,数据的传输和控制信号是分开发送的,控制信号比数据信号的带宽小,并且可以确定传输的具体位置和大小。APB3协议支持访问长度为8位、16位和32位的数据,以及读、写和读写的访问方式。 APB3协议的主从构架与其他AMBA协议类似。主设备通过传输起始地址和控制信号指示从设备进行数据操作;从设备接收到读或写请求后根据控制信号进行相应的数据操作,并向主设备返回操作结果。 总体来讲,APB3协议由于其简单易懂、适用范围广以及与其他AMBA协议兼容的优点,使其成为了嵌入式系统设计中非常常见的总线协议。 ### 回答2: AMBA协议是专门为嵌入式系统中处理器和外设之间的通信设计的一个通信协议。其中,APB3是AMBA协议中的一种总线协议。APB3全称为“Advanced Peripheral Bus 3”,意为高级外设总线第三版。 APB3协议的设计针对的是外设的低带宽、低功耗需求。与其他总线协议相比,APB3支持低功耗模式和深度睡眠模式,能够最大限度地节省外设的能耗。同时,APB3在数据线和地址线的数量上也做出了优化,能够在外设具有较小的面积和成本的同时满足通信需求。 按照APB3协议,外设需要具备一定的状态机和寄存器,从而能够被连接到APB3总线上进行数据传输和处理。在APB3总线上,数据是按照字节流进行传输的,数据传输流程通过读写控制信号的控制完成。同时,APB3还通过支持优先级编码和多主机机制来保证数据的传输的异步操作稳定和可信。 总之,APB3协议是一种适用于低带宽、低功耗的外设通信协议,通过其支持的低功耗模式、优先级编码、多主机机制和异步操作,能够帮助嵌入式系统开发中的处理器和外设之间实现更加高效可靠的数据传输和通信。 ### 回答3: AMBA协议是英国ARM公司开发的一种片内总线系统,其中包含了APB总线协议。APB3是AMBA APB的第三代协议,其核心设计思想是提高吞吐量和降低延迟。 APB3优化了交互协议,增加了对对称式管道传输和多条命令的支持,进一步提高了总线效率。同时,APB3还引入了带宽请求和数据传输等多条信号线,可以支持高带宽传输和多主机系统的需求。 APB3的数据传输采用存储器映射方式,在地址和数据之间以清晰的指令格式进行传输,支持多种类型的传输模式。此外,APB3还提供了用于连接外设到总线上的两种接口类型:主机接口和从机接口。 在实际应用中,APB3协议广泛应用于低速外设的连接,如GPIO、ADC、DAC等。此外,由于APB3协议具有可扩展性和易实现性,还可以适用于其他一些应用场景。 总体来说,APB3协议的设计和优化都旨在提高总线的性能和效率,为处理器和外设之间的高效通信提供了支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值