设为首页 加入收藏

TOP

AHB总线协议(二)(一)
2019-08-24 00:03:25 】 浏览:144
Tags:AHB 总线 协议

下图是8拍回环字突发传输:地址将在 32 字节边界处回环因此地址 0x3C 之后的地址是 0x20。

image

下图是8增量半字突发传输,所以地址每次增加 2 个字节并且突发在递增因此地址连续增加通过了 16 字节边界。


image

下图是未定义长度的增量突发。

两个半字传输在地址 0x20 处开始。半字传输地址增加为 2。 三个字传输在地址 0x5C 处开始。字传输地址增加为 4。


image


6 、地址译码

对于每个总线上的从机来说使用一个中央地址译码器提供选择信号, HSELx。选择信号是高位地址信号的组合译码,并且建议使用简单的译码方案以避免复杂译码逻辑和确保高速操作。
从机只能在 HREADY 信号为高时采样地址和控制信号以及 HSELx, HSELx 为高表示当前传输已经完成。在特定的情况下有可能在 HREADY 为低时采样 HSELx,但是被选中的从机将会在当前传输完成后变更。
能够分配给单个从机的最小地址空间是 1KB。所有总线主机必须被设计为不能执行超过 1KB 地址边界的增量传输,因此确保了一个突发绝不会超过地址译码的边界。

在系统设计中如果有包含一个存储器映射并未完全填满(存储空间)的情况时应该设置一个额外的默认从机以在访问任何不存在的地址空间时提供响应。如果一个非连续或者连续传输试图访问一个不存在的地址空间时这个默认从机应该提供一个 ERROR 响应。空闲或者忙传输访问不存在的空间(默认从机)应该给出一个零等待状态的 OKAY 响应。典型默认从机的功能将以作为中央地址译码器的一部分来实现。

image

7、从机传输响应

在主机发起传输后,由从机决定传输该如何进行。 AHB 规范中没有做出总线主机在传输已经开始后取消传输的规定。
只要从机被访问那它必须提供一个表示传输状态的响应。 HREADY 信号被用来扩展传输并且和响应信号 HRESP[1: 0]相结合,以提供传输状态。
从机能够用许多种方式来完成传输。它能:
立刻完成传输;
插入一个或者多个等待状态以允许有时间来完成传输;
发出一个错误信号来表示传输失败;
延时传输的完成,但是允许主机和从机放弃总线,把总线留给其他传输使用。

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

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

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

    当从机需要插入一定数量的等待状态优于决定将要给出何种响应时从机必须将响应驱动为 OKAY。


    HRESP[1: 0]的编码、传输响应信号和每个响应的描述参见下表:

    HRESP[1] HRESP[0] 响应 描述
    0 0 OKAY

    当 HREADY 为高表示传输已经成功完成。 OKAY 响
    应也被用来插入任意一个附加周期,当 HREADY 为
    低时,优先给出其他三种响应之一。

    0 1 ERROR

    该响应表示发生了一个错误。错误条件应该发信号给
    总线主机以便让主机意识到传输失败。
    一个错误条件需要双周期响应。

    1 0 RETRY

    RETRY(重试)信号表示传输并未完成,因此总线
    主机应该重试传输。主机应该继续重试传输直到完成
    为止。
    要求双周期的 RETRY 响应。

    1 1 SPLIT

    传输并未成功完成。总线主机必须在下一次被授予访
    问总线时重试传输。当传输能够完成时从机将请求代
    替主机访问总线。
    要求双周期的 SPLIT 响应。

  • 双周期响应

仅有 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 响应,由于当前传输不被重复,所以可以选择完成接下来的传输。
下图表示了一次RETRY操作的例子。

主机从地址 A 发起传输;
这次传输在接收到响应之前主机将地址移动到 A + 4;

从机在地址 A 不能立刻完成传输因此从机发出一个 RETRY 响应。该响指示主机在
地址 A 的传输无法完成并且在地址 A + 4 的传输被取消而用空闲传输替代。

image

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

image


  • 分块与重试

分块和重试响应给从机提供了在无法立刻给传输提供数据时释放总线的机制。这两种机制都允许在总线上结束传输因此允许更高优先级的主机能够访问主机。
分块(SPLIT)和重试(RETRY)的不同之处在于仲裁器在发生 SPLIT 和 RETRY 后分配总线的方式:
对 RETRY 而言仲裁器将继续使用常规优先级方案因此只有拥有更高优先级的主机将获准访问总线;
对于 SPLIT 传输而言仲裁器将调整优先级方案以便其他任何主机请求总线即能获得访问(总线),即使是优先级较低的主机。为了完成一个 SPLIT 传输从机必须通知仲裁器何时数据可用。

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

  • 数据总线

为了不使用三态驱动而又允许执行AHB系统所以要求分开读和写数据总线。最小的数据宽度规定为 32 位,但是总线宽度却可以增加,参见关于AHB数据总线的位宽这一节中的描述。
HWDATA[31: 0]
写数据总线在写传输期间由总线主机驱动。如果传输是扩展的那么总线主机必须保持数据有效直到传输完成,由 HREADY 为高表示。

所有传

首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【转载】Verilog中的parameter 下一篇数字IC设计入门必备——VIM自定义..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目