AMBA总线知识之AHB(下)

电子说

1.2w人已加入

描述

之前文章为大家介绍了AHB的基本结构,信号以及基本传输,这次续上次文章,继续为大家介绍AHB总线

内容概括

这次为大家讲述的内容包括:

AHB传输类型

突发操作

仲裁

01

AHB传输类型

每个传输都可以分类为四个不同类型之一,如HTRANS[1:0]信号所示状态,详解如下:

HTRANS[1:0] 传输类型 Description
00 IDLE 主设备占用总线,但没进行传输两次突发传输中间主设备可发IDLE。此时就算从机被使能,也不会从总线上获取任何的数据信号。如果此时从机被选中,那么每一个IDLE周期从机都要通过HRESP[1:0]返回一个OKAY响应
01 BUSY 主设备占用总线,但是在突发传输过程中还没有准备好进行下一次传输。一次突发传输中间主设备可发BUSY这时从机不会从总线上收取数据而是等待,并且通过HRESP[1:0]返回一个OKAY响应。需要注意的是,这个传输需要给出下一拍的地址和控制信号,尽管从机不会去采样。
10 NONSEQ 表明一次单个数据的传输或者一次突发传输的第一个数据地址和控制信号与上一次传输无关
11 SEQ 突发传输中剩下的传输是连续传输并且地址是和前一次传输有关的。控制信息和前一次传输一样。地址等于前一次传输的地址加上传输大小(字节)。在回环突发的情况下传输地址在地址边界处回环,回环值等于传输大小乘以传输的次数(4、 8 或者 16 其中之一)。

图2 表示了一组用到不同传输类型: soc

图2

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

02

突发操作

AMBA AHB 协议定义了四、八和十六拍突发,也有未定长度的突发和信号传输。协议支持增量回环操作:

**增量突发**访问连续地址并且突发中的每次传输地址仅是前一次地址的一个增量;对于 **回环突发** ,如果传输的起始地址并未和突发(x 拍)中字节总数对齐那么突发传输地址将在达到边界处回环。例如,一个四拍回环突发的字(4 字节)访问将在16 字节边界回环。因此,如果传输的起始地址是 0x34,那么它将包含四个到地址

0x34、 0x38、 0x3C 和 0x30;

突发信息通过使用 HBURST[2:0]并且 8 种可能的类型在中定义如下:

HBURST[2:0] 类型 描述
000 SINGLE 单一传输
001 INCR 未指定长度的增量突发
010 WRAP4 4拍回环突发
011 INCR4 4拍增量突发
100 WRAP8 8拍回环突发
101 INCR8 8拍增量突发
110 WRAP16 16拍回环突发
111 INCR16 16拍增量突发

突发禁止超过 1KB 的地址边界。 因此重要的是主机不要尝试发起一个将要超过这个边界的定长增量突发。将执行单个传输时使用未指定长度的增量突发理解为长度为一的突发比较合理。

一个增量突发可以是任何长度,但是(长度)上限由地址不能超过 1KB 边界这个事实限定了。

注:突发大小表示突发的节拍数量,并不是一次突发传输的实际字节数量。一次突发传输的数据总量可以用节拍数乘以每拍数据的字节数来计算,每拍字节数由 HSIZE[2:0]指示。所有突发传输必须将地址边界和传输大小对齐。例如,字传输必须对齐到字地址边界(也就是 A[1:0] = 00),半字传输必须对齐到半字地址边界(也就是 A[0] = 0)。

当一个突发不允许完成的特定情况下,对任一从机设计而言,如果突发提前终止那么利用突发信息能够采取正确的动作显得很重要。从机能够通过监控 HTRANS 信号决定一个突发何时提前终止并且确保在突发开始之后每次传输有连续或者忙的标记。如果产生一个非连续或者空闲传输那么这表明一个新的突发已经开始因此前一次突发一定已经终止。

如果总线主机因为失去对总线的占有而不能完成一次突发那么它必须在下一次获取访问总线时正确地重建突发。例如,如果一个主机仅完成了一个四拍突发的一拍那么它必须用一个未定长度突发来执行剩下的三拍突发。

下图表示了一个四拍回环突发并且第一次传输伴随一个附加等待状态。

soc

0****3

仲裁

仲裁机制被用来确保任意时刻只有一个主机能够访问总线。仲裁器的功能是检测许多不同的使用总线的请求和决定当前请求总线的主机中哪—个的优先级最高。仲裁器也接收来自从机需要完成 SPIIT 传输的请求。

任何没有能力执行 SPLIT 传输的从机不需要了解仲裁的过程,除非它们需要检测因为总线所有权改变而导致突发传输不能完成的情况。

以下给出对每个仲裁信号的简短描述:

HBUSREQx 被总线主机用来请求访问总线的总线请求信号。每个总线主机都有自己的连接到仲裁器的 HBUSREQx 信号并且任何一个系统中都可以有高达16个独立的总线主机。

**HLOCKx **由主机在请求总线的同时时断言的锁定信号。这提示仲裁器主机正在执行一系列不可分割的传输并且一旦锁定传输的第一个传输,己经开始仲裁器不能授子任何其他主机访问总线。HLOCKx必须在涉及到的地址被寻址到之前至少断言一个周期,以防止仲裁器改变授子信号。

**HGRANTx **授子信号由仲裁器产生并且表示相关主机是当前请求总线的主机中优先级最高的主机,(优先)考虑锁定传输和 SPLIT 传输。主机在 HGRANTx 为高时获取地址总线的所有权并且在HCLK 的上升沿 HREADY 为高电平。

**HIVIASTER[3:0] **仲裁器使用 HMASTER[3:0]信号表示哪一个主机当前被授子总线并且该信号可被用来控制中央地址和控制多路选择器。有SFLIT 传输能力的从机也可以请求主机的序号以便它们能够提示仲裁器哪个主机能够完成一个SFLIT 传输。

HMASTLOCK仲裁器通过断言 HVASTLOCK 信号指示当前传输是一个锁定序列的一部分,该信号和地址以及控制信号有相同的时序。

HSPLIT [15: 0] 这16位有完整分块能力的总线被有分块(SFLIT)能力的从机用来指示哪个总线主机能够完成一个 SPLIT 传输。仲裁器需要这些信息以便于授子主机访问总线完成传输。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分