AHB总线的基础理论

  • AHB总线结构如图所示:

  • 信号列表:

 

 

  • 仲裁信号

在一次 AMBA AHB 传输开始之前总线主机必须被授予访问总线。这个过程开始于总线主机向仲裁器断言一个请求信号。仲裁器指示主机何时能够被授予使用总线。被授权的总线主机通过驱动地址和控制信号来发起一次 AMBA AHB 传输。这些信号提供关于地址、方向和传输宽度的信息,以及表示传输类型是否为一次突发传输的部分。
写数据总线用来将数据从主机传输到从机上,而读数据总线用来将数据从从机传输到主机上。每次传输包含:

  • 一个地址和控制周期;
  • 一个或多个数据周期。

地址不长期有效所以所有从机必须在这个时段(传输地址时)采样地址。然而,通过HREADY 信号可以延长数据。当该信号为低时导致在传输中插入等待状态同时允许从机有额外的时间提供或者采样数据。

  • 基本传输

AHB 传输包含两个截然不同的部分:

  •  地址相位,只持续单个周期;
  •  数据相位,可能需要多个周期。这通过使用 HREADY 信号实现。

图 3.3表示了最简单的传输,没有等待状态。

在这个没有等待状态的简单传输中:

  •  主机在 HCLK 的上升沿之后将地址和控制信号驱动到总线上;
  •  然后在时钟的下一个上升沿从机采样地址和控制信息;
  •  在从机采样了地址和控制信号后能够开始驱动适当的响应并且该响应被总线主机在第三个时钟的上升沿采样。

这个简单的例子演示了在不同的时钟阶段传输的地址和数据相位是如何产生的。事实上,任何传输的地址相位在前一次传输的数据相位期间出现。这种地址和数据的交叠是总线传输通道的基本性质同时允许高性能的操作。同时仍然给从机提供足够的时间来产生传输响应。

从机只有当HREADY信号为高时才能采样地址信号、控制信号和HSELx信号,HREADY信号为高,表示当前传输完成。某些情况下HSELx信号会在HREADY信号为低时置位,但是从机会等到当前传输完成再做出响应。

从机也可能插入等待周期到任意传输中,如图 3.4所示,这样扩展了传输完成允许的附加时间

注:
对写操作而言总线主机必须保持数据在整个扩展周期中稳定。
对读传输从机没必要提供有效数据直到传输将要结束时。


当传输以这种方式扩展时随后的传输将会有地址相位扩展的副作用。如图 3.5所示,表示了到三个不相关的地址A、 B和C的传输。

在图 3.5中:

  •  到地址 A 和 C 的传输都是零等待状态;
  •  到地址 B 的传输是一个等待状态;
  •  传输到地址 B 的扩展数据相位对传输到地址 C 的扩展地址相位有影响。地址C的相关信号必须在地址B传输完成前保持稳定。

传输类型

在图 3.6中:

  •  第一个传输是一次突发的开始所以传输类型为非连续;
  •  主机不能立刻执行突发的第二次传输所以主机使用了忙传输来延时下一次传输的开始。在这个例子中主机在它准备还突发的下一次传输之前仅请求了一个忙周期,下一次传输的完成没有等状态;
  •  主机立刻执行突发的第三次传输,但是这时从机不能完成(传输)并用 HREADY来插入一个等待状态;
  •  突发的最后一个传输以无等待状态完成。

 

和传输类型和突发类型一样每次传输将会有一组控制信号以提供传输的附加信息。这些控制信号和地址总线有严格一致的时序。然而,在一次突发传输过程中它们必须保持不变。

当 HWRITE 为高,该信号表示一个写传输并且主机将数据广播到写数据总线上,HWDATA[31: 0]。当该信号为低时将会执行一个读传输并且从机必须产生数据到读数据总线 HRDATA[31: 0]。

HSIZE[2: 0]表示传输的大小,见表 3.3。

表 3.3 大小编码
HSIZE[2]HSIZE[1]HSIZE[0]大小描述
0008 位字节
00116 位半字
01032 位
01164 位-
100128 位4 字线
101256 位8 字线
110512 位-
1111024 位-

可以分配给单个从机的最小地址空间是1kB。所有的主机被设计成不会执行超过1kB边界的增量传输,从而确保一个突发永远不会跨越地址解码边界。

从机传输响应

在主机发起传输后,由从机决定传输该如何进行。 AHB 规范中没有做出总线主机在传输已经开始后取消传输的规定。只要从机被访问那它必须提供一个表示传输状态的响应。 HREADY 信号被用来扩展传输并且和响应信号 HRESP[1: 0]相结合,以提供传输状态。从机能够用许多种方式来完成传输。它能:

  •  立刻完成传输;
  •  插入一个或者多个等待状态以允许有时间来完成传输;
  •  发出一个错误信号来表示传输失败;
  •  延时传输的完成,但是允许主机和从机放弃总线,把总线留给其他传输使用。

传输完成

HREADY 信号用来扩展一次 AHB 传输的数据部分。当 HREADY 信号为低时表示传输将被扩展而当其为高时表示传输完成。


注:每个从机必须有一个预先确定的在从机放弃总线之前插入的最大等待状态数目,以便能够计算访问总线的延时。建议但不强制规定,从机不要插入多于 16 个等待状态以阻止任何单个访问将总线锁定较长的时钟周期。

传输响应

典型的从机将会用 HREADY 信号来在传输中插入适当数量的等待状态而传输在HREADY 为高时完成并且给出 OKAY 响应,表示传输成功完成。ERROR 响应被从机用来表示某种形式的错误条件和相关的传输。这被用作错误保护,例如试图写一个只读的存储空间。SPLIT 和 RETRY 响应组合允许从机延长传输完成的时间,但是释放总线给其他主机使用。这些响应组合通常仅由有高访问延时的从机请求并且从机能够利用这些响应编码来确保其他主机在长时间内不被阻止访问总线。

对于从机来说,决定是否插入等待状态的优先级要比决定给出什么响应要高,所以插入等待状态时响应为“okey”。

双周期响应

仅有 OKAY 响应可以在单个周期里给出。 ERROR、 SPLIT 和 RETRY 响应需要至少两个周期。为了完成这些响应中的任意一个那么在倒数第二个(最后一个的前一个)周期从机驱动 HRESP[1: 0]以表示 ERROR、 RETRY 或者 SPLIT 并同时驱动 HREADY 为低以给传输扩展一个额外的周期。在最后一个周期 HREADY 被驱动为高电平以结束传输,同时HRESP[1: 0]保持驱动以表示 ERROR、 RETRY 或者 SPLIT。

如果从机需要两个以上的周期以提供 ERROR、 SPLIT 或者 RETRY 响应那么额外的等待状态可能会在传输开始时被插入。在这段时间 HREADY 信号将为低电平同时响应必须被设为 OKAY。

需要双周期响应是因为总线通道的本质特征。在从机开始发出 ERROR、 SPLIT 或者RETRY 中任何一个响应时接下来传输的地址已经广播到总线上了。双周期响应允许主机有足够的时间来取消该地址并且在开始下一次传输之前驱动 HTRANS[1: 0]为空闲传输。

对于 SPLIT 和 RETRY 响应接下来的传输必须取消因为在当前传输完成之前禁止下一次传输发生。然而,对于 ERROR 响应,由于当前传输不被重复,所以可以选择完成接下来的传输。

图中包含以下事件:

  •  主机从地址 A 发起传输;
  •  这次传输在接收到响应之前主机将地址移动到 A + 4;
  •  从机在地址 A 不能立刻完成传输因此从机发出一个 RETRY 响应。该响指示主机在地址 A 的传输无法完成并且在地址 A + 4 的传输被取消而用空闲传输替代。

图 3.14表示了一个传输中从机请求一个周期来决定将要给出的响应(在HRESP为OKAY的时间段),之后从机用一个双周期的ERROR响应结束了传输。

错误响应

如果从机提供一个错误响应那么主机可以选择取消突发中剩下的传输。然而,这并不是一个严格要求同时主机继续突发中剩下的传输也是可以接受的。

SPLIT和RETRY

分块和重试响应给从机提供了在无法立刻给传输提供数据时释放总线的机制。这两种机
制都允许在总线上结束传输因此允许更高优先级的主机能够访问主机。分块( SPLIT)和重试( RETRY)的不同之处在于仲裁器在发生 SPLIT 和 RETRY 后分配总线的方式:

  •  对 RETRY 而言仲裁器将继续使用常规优先级方案因此只有拥有更高优先级的主机将获准访问总线;
  •  对于 SPLIT 传输而言仲裁器将调整优先级方案以便其他任何主机请求总线即能获得访问(总线),即使是优先级较低的主机。为了完成一个 SPLIT 传输从机必须通知仲裁器何时数据可用。

SPLIT 传输都增加了仲裁器和从机的复杂性,但是却有可以完全释放总线给其他主机使用的优点,但是 RETRY(响应)的情况就只允许较高优先级的主机使用总线。总线主机应该以同样的方式来对待 SPLIT 和 RETRY(响应)。主机应该继续请求总线并尝试传输直到传输成功完成或者遇到 ERROR 响应时终止。

数据总线

为了不使用三态驱动而又允许执行AHB系统所以要求分开读和写数据总线。最小的数据宽度规定为 32 位,但是总线宽度却可以增加,参见关于AHB数据总线的位宽这一节中的描述。

HWDATA[31:0]

写数据总线在写传输期间由总线主机驱动。如果传输是扩展的那么总线主机必须保持数据有效直到传输完成,由 HREADY 为高表示。所有传输必须对齐到和传输大小相等的地址边界。例如,字传输必须对齐到字地址边界(也就是 A[1: 0] = 00),半字传输必须对齐到半字地址边界(也就是 A[0] = 0)。对于宽度小于总线宽度的传输,例如一个在 32 位总线上的 16 位传输,那么总线主机仅需要驱动相应的字节通道。从机必须负责从正确的字节通道选择写数据。 表 3.6和表 3.7分别表示了小端系统和大端系统中哪个字节通道有效。如果有要求,这些信息可以在更宽的总线应用中扩展。传输大小小于数据总线宽度的突发传输将在每拍突发中有不同有效字节通道。有效字节通道取决于系统的端结构,但是 AHB 并不指定要求的端结构。因此,总线上所有主机和从机的端结构相同这点很重要。

HRDATA[31:0]

读数据总线在读传输期间由合适的从机驱动。如果从机通过拉低 HREADY 扩展读传输那么从机只需要在传输的最后一个周期提供有效数据,由 HREADY 为高表示。对于宽度小于总线宽度的传输从机仅需要在有效的字节通道提供有效数据,如表 3.6和表 3.7所示。总线主机负责从正确的字节通道中选择数据。当传输以 OKAY 响应完成时从机仅需提供有效数据。 SPLIT、 RETRY 和 ERROR 响应不需要提供有效的读数据。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页