之前在工作中用到了AMBA总线,私下对AMBA总线进行了初步地学习;后来一段时间又没有接触AMBA总线,就对AMBA总线的特点慢慢遗忘了。趁这次疫情带来的空闲时光,又重温了AMBA总线协议,今天就记录下对它的认识,以免再次遗忘。
       下面的内容主要摘自《AMBA总线规范_中文》一文,对文中有些语句进行了更改,便于理解记忆。
1. APB概述       
       高级外设总线(APB)是高级微控制器总线体系(AMBA)的总线层次的一部分,并且为降低功率消耗和接口复杂性做了优化。
       AMBA APB 应该被用来连接任何一种低带宽且不需要高性能通道总线接口的外设。
      最新版本的 APB 确保了所有信号转变仅和时钟的上升沿有关。这种改进意味着 APB 外设可以方便的集成到任何设计流程,并有以下优点:

在高频操作时性能得到提高; 
性能独立于时钟的占空比;
静态通过使用单时钟边沿简化了静态时序分析;
自动测试插件无需特别考虑因素;
许多特定用途集成电路(ASIC)库有较好的上升沿寄存器选择;
便于与基于周期的仿真器集成。

      APB 的这些改变也使得它简化了,成为新的高级高性能总线(AHB)的接口。
2. APB规范

2.1 状态图

       图1.1表示了状态图,可以用来表示外设总线的活动性。

AMBA总线规范的学习总结(转载 )—-APB-风君雪科技博客

 图1.1 状态图

状态机运行在以下三个状态:

        IDLE         外设总线的默认状态。

        SETUP     当有传输要求时,总线状态转移到SETUP状态,这时对应的选择信号PSELx被断言。总线仅在SETUP状态保持一个时钟周期,并将总是在下一个时钟的上升沿

                         移动到ENABLE状态。

        ENABLE  使能信号PENABLE在ENABLE状态中被断言。地址、写和选择信号都在从SETUP到ENABLE状态的转变过程中保持稳定。

                         ENABLE状态也仅持续一个周期,并且在这个状态之后如果没有进一步的传输要求,总线将返回IDLE状态。另外,如果紧跟着另一个传输,那么总线将移动到

                         SETUP状态。地址、写和选择信号在从ENABLE到SETUP状态的转变期间,有小跳变也是可以接受的。

2.2 写传输

       图1.2表示了基本的写传输。

AMBA总线规范的学习总结(转载 )—-APB-风君雪科技博客

 图1.2 写传输

       写传输开始于地址、写数据、写信号和选择信号在时钟上升沿之后的全部改变。传输的第一个时钟周期被称作SETUP周期。在下一个时钟边沿使能信号PENABLE生效,这表示ENABLE周期正在进行。地址、数据和控制信号全都在整个ENABLE周期保持有效。传输在这个周期结束时完成。

       使能信号 PENABLE,将在传输结束时失效。选择信号也将变成低电平,除非当前传输之后紧跟着另一个到该外设的传输。
       为了降低功率消耗,地址信号和写信号将在传输之后不再改变,直到下一个传输发生为止。
       协议仅要求在使能信号上有一个规则的转变(跳变)。在背靠背传输情况下,选择和写信号可能有小跳变。

2.3 读传输

      图1.3表示一个读传输。

AMBA总线规范的学习总结(转载 )—-APB-风君雪科技博客

 图1.3 读传输

           地址、写、选择和选通信号的时序都和写传输一样。在读传输的情况下,从机必须在EANBLE 周期提供数据。数据在 ENABLE 周期末尾的时钟上升沿被采样。

3. APB组成部分

3.1 APB桥

     APB 桥是 AMBA APB 中的唯一总线主机。另外, APB 桥也是高级系统总线中的一个从机。

3.1.1 接口框图

      图1.4 APB桥接口框图。

AMBA总线规范的学习总结(转载 )—-APB-风君雪科技博客

 图1.4 APB桥接口框图

3.1.2 APB桥描述

     桥接单元将系统总线传输转换成 APB 传输,并实现下列功能:

锁存地址,并使之在整个传输期间有效;
译码地址和产生一个外设选择信号PSELx。在一个传输期间,只有一个选择信号有效;
对于写传输,驱动数据到APB上;
对于读传输,驱动APB数据到系统总线上;
为传输产生一个时序选通信号PENABLE。      

3.1.3 时序图

AMBA总线规范的学习总结(转载 )—-APB-风君雪科技博客

 图1.5 APB桥传输

3.2 APB从机

       APB 从机有一个即简单又灵活的接口。接口的准确实现将依赖于设计人员的设计风格和许多不同的可能情况。

3.2.1 接口框图

AMBA总线规范的学习总结(转载 )—-APB-风君雪科技博客

图1.6 APB从机框图     

 3.2.2 APB从机描述

        对写传输,可以在下列要点时被锁存:

当PSEL为高时,在任意一个PCLK的上升沿;
当PSEL为高时,在PENABLE的上升沿。

       选择信号 PSELx、地址 PADDR 和写信号 PWRITE 可以组合来决定哪个寄存器由写操作来更新。
       对读传输,数据可以在 PWRITE 为低电平且 PSELx PENABLE 都为高电平时被驱动到数据总线上。而此时 PADDR 被用来决定哪个寄存器应该被读取。

3.2.3 从机时序图

AMBA总线规范的学习总结(转载 )—-APB-风君雪科技博客

 图1.7 APB从机传输

4. APB到AHB的接口

       AMBA APB AHB 的接口描述如下:

读传输;
写传输;
背靠背传输;
三态数据总线的实现。

4.1 读传输

  AMBA总线规范的学习总结(转载 )—-APB-风君雪科技博客

图1.8 到AHB的读传输

        传输在 AHB 上的时刻 T1 发起,并且地址在 T2 被 APB 桥采样。如果传输是到外设总线,那么该地址被广播并且产生合适的外设选择信号。在外设总线上的第一个周期成为 SETUP周期,当 PENABLE 信号被断言后,该周期后跟随着 ENABLE 周期。
       在ENABLE周期期间,外设必须提供读数据。通常可能会将要读的数据直接发回到AHB,总线主机在ENABLE周期结束时的时钟上升沿采样该数据,在图 1.8中为时间T4。
       在时钟频率很高的系统中,可能需要APB桥在ENABLE周期结束时寄存读数据,然后APB桥在接下来的周期将该数据驱动回AHB总线主机。尽管对外设总线读传输而言这将要求一个额外的等待状态,但这允许AHB运行在较高的时钟频率,这也导致了系统性能的全面提高。 图 1.9表示了一次突发读传输。(图中)所有读传输都要求一个等待状态。

 AMBA总线规范的学习总结(转载 )—-APB-风君雪科技博客

图1.9 突发读传输

4.2 写传输

 AMBA总线规范的学习总结(转载 )—-APB-风君雪科技博客

 图1.10 来自AHB的写传输

       单个来自 AHB 的写传输可以零等待状态发生。 APB 桥负责采样传输的地址和数据并在APB 的写传输期间保持这些数据值。
       图 1.11表示了一个突发写传输。

 AMBA总线规范的学习总结(转载 )—-APB-风君雪科技博客

 图1.11 突发写传输

        虽然第一个传输可以零等待状态完成,但对于之后到外设总线的传输,每个传输的执行都要求一个等待状态。
        APB 桥需要包含两个地址寄存器,以便 APB 桥可以采样下一次传输的地址而同时当前
传输继续在外设总线上(执行)。

4.3 背靠背传输

       图 1.12表示了许多的背靠背传输。传输序列以一个写操作开始,之后跟随着一个读操作,然后是一个写操作,之后是一个读操作。

AMBA总线规范的学习总结(转载 )—-APB-风君雪科技博客

图1.12 背靠背传输

       上图表示了如果一个读传输紧跟在一个写传输之后,那么需要 3 个等待状态来完成这次读操作。事实上,在基于处理器的设计中,一个写传输后跟随着一个读传输并不经常发生,因为处理器将在两个传输之间执行指令预取,并且指令存储器不太可能挂接在APB总线上。

4.4 三态数据总线的实现

       建议以分开的读和写数据总线来实现 AMBA APB,这允许使用一个多路复用总线或者或(OR)总线方案来互联许多 APB 总线上的从机。如果使用了三态总线那么读和写数据总线可以组合成单根总线,因为读和写数据绝不会同时发生。
       图 5.14表示了不需要特别考虑的因素如果数据总线是使用三态缓冲来实现。如果数据总线在读传输的SETUP周期为三态并且只要总线在空闲状态那么周转的整个时钟周期总是
在不同的数据驱动器之间发生。对突发写传输而言没有周转期因为APB桥将在每个传输的SETUP周期驱动数据,然而这非常合理因为APB桥是写传输唯一的数据总线驱动器因此不需要周转期。
       图 5.14表示了读和写数据总线是如何成功的组合到单根三态数据总线的。

AMBA总线规范的学习总结(转载 )—-APB-风君雪科技博客

 图1.13 三态数据总线