购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 AMBA AHB规范

AHB是新一代的AMBA总线,目的是满足高性能可同步的设计要求。AMBA是一个新级别的总线,高于APB,用于满足高性能、高时钟频率系统的特征要求。这些要求如下。

(1)猝发传输。

(2)分割交易。

(3)单周期总线主设备交易。

(4)单时钟沿操作。

(5)无三态实现。

(6)更宽的数据总线配置(64/128位)。

2.3.1 AMBA AHB的结构

1.AMBA AHB的典型结构

一个典型的AMBA系统包括AHB和APB,如图2.8所示。例如,一个基于AMBA的微控制器包括高性能系统背板总线,该总线能够支持外部存储器的带宽。在这个总线上存在CPU和其他DMA设备,还存在一个较窄的APB。在APB上有较低带宽的外设。AHB和APB的特性比较如表2.3所示。

图2.8 典型的AMBA系统

表2.3 AHB和APB的特性比较

2.AMBA AHB互联

基于多路复用器互联机制设计AMBA AHB规范。使用这个机制,总线上的所有主设备都可以驱动地址和控制信号,用于表示它们希望执行的传输。仲裁器用于决定连接到所有从设备的主设备的地址和控制信号。译码器用于控制读数据和响应信号的切换,从从设备中选择合适的包含用于传输的信号。图2.9给出了一个结构,该结构中有3个主设备和4个从设备。

图2.9 多路复用器互联

2.3.2 AMBA AHB操作

1.操作概述

在开始一个AMBA AHB传输前,必须先授权总线主设备访问总线,通过主设备对连接到仲裁器请求信号的确认来启动这个过程,然后指示授权主设备将要使用总线。

通过驱动地址和控制信号,一个授权的总线主设备启动AHB传输。这些信号提供了地址、方向和传输宽度的信息,以及指示传输是否是猝发的一部分。AHB允许以下两种不同的猝发传输。

(1)增量猝发,在地址边界处不回卷。

(2)回卷猝发,在一个特殊的地址边界处回卷。

一个写数据总线用于将数据从主设备移动到从设备,而一个读数据总线用于将数据从从设备移动到主设备。每个传输的构成如下。

(1)一个地址和控制周期。

(2)一个或多个数据周期。

由于不能扩展地址,因此在传输期间内,所有从设备必须采样地址。然而,通过使用HREADY信号,允许对数据进行扩展。当HREADY信号为低电平时,允许在传输中插入等待状态。因此,允许额外的时间用于从设备提供或采样数据。

在一个传输期间内,从设备使用响应信号HRESP[1:0]显示状态。

(1)OKAY。OKAY响应用于指示正在正常地处理传输。当HREADY信号变为高电平时,表示传输成功地结束。

(2)ERROR。ERROR响应信号指示。当发生传输错误时,传输是失败的。

(3)RETRY和SPLIT。所有RETRY和SPLIT传输响应信号指示。该响应表示不能立即完成传输,但是总线主设备应该继续尝试传输。

在正常操作下,在仲裁器授权其他主设备访问总线前,允许一个主设备以一种特定的猝发方式完成所有传输。然而,为了避免产生太高的仲裁延迟,仲裁器可能对一个猝发进行分解。在这种情况下,主设备必须为总线重新仲裁,以便完成猝发传输中剩余的操作。

2.AMBA AHB的基本传输

一个AHB传输由两个不同的部分组成。

(1)地址周期,持续一个周期。

(2)数据周期,可能要求几个周期,通过使用HREADY信号来实现。

图2.10给出了一个简单的传输,没有等待状态。

图2.10 简单的传输

在一个没有等待状态的简单传输中,有以下结论。

(1)在HCLK的上升沿,主设备驱动总线上的地址和控制信号。

(2)在下一个时钟的上升沿,从设备采样地址和控制信息。

(3)从设备采样地址和控制信息后,驱动正确的响应信号。在第3个时钟上升沿,总线主设备采样这个响应。

这个简单的例子说明在不同的时钟周期如何产生地址和数据周期。实际上,任何传输的地址周期都可以发生在前一个传输的数据周期。这个重叠的地址和数据是总线流水线的基本属性,允许更高性能的操作,同时为一个从设备提供了充足的时间,用于对一个传输进行响应。

如图2.11所示,在任何一个传输中,一个从设备可能插入等待状态。

图2.11 有等待状态的传输

(1)对于写传输,在扩展周期内,总线主设备应该保持总线稳定。

(2)对于读传输,从设备不必提供有效数据,直到将要完成传输。

当传输以这种方式扩展时,在随后传输的地址周期中有副作用。图2.12说明传输了3个无关的地址 A B C

(1)传输地址 A C 都是零等待状态。

(2)传输地址 B 是一个等待周期。

(3)传输的数据周期扩展到地址 B ,传输的扩展地址周期影响到地址 C

图2.12 多个传输

2.3.3 AMBA AHB的传输类型

每个传输都可以归为4种不同类型中的一种,由表2.4中的HTRANS[1:0]信号表示。

表2.4 传输类型编码

图2.13给出了不同传输类型的例子。

(1)第一个传输是一个猝发的开始,因此传输类型为非连续传输。

(2)主设备不能立刻执行猝发的第二个传输,因此主设备使用忙传输来延时下一个传输的开始。在这个例子中,主设备在准备开始下一个猝发传输之前,仅要求一个忙周期,下一个传输完成不包含等待状态。

(3)主设备立刻执行猝发的第三个传输,但此时从设备不能完成传输,并用HREADY信号插入一个等待状态。

(4)以无等待状态完成猝发的最后一个传输。

图2.13 不同传输类型的例子

2.3.4 AMBA AHB的猝发操作

1.操作概述

AMBA AHB协议定义了4、8和16拍猝发,也有未指定长度的猝发和信号传输。协议支持递增和回卷。

(1)递增猝发:访问连续地址,并且猝发中每个传输的地址仅是前一个传输地址的一个递增。

(2)回卷猝发:如果传输的起始地址并未和猝发( x 拍)中的字节总数对齐,那么猝发的传输地址将在边界处回卷。例如,一个4拍回卷猝发的字(4字节)访问将在16字节边界处回卷。因此,如果传输的起始地址是0x34,那么它将包含4个地址,即0x34、0x38、0x3C和0x30。

通过使用HBURST[2:0]来提供猝发信息。表2.5给出了8种可能的猝发类型。

表2.5 猝发类型

猝发不能超过1KB的地址边界。因此,主设备不要尝试发起一个超过该边界的定长递增猝发。

当使用只有一个猝发长度、未指定长度的递增猝发来执行一个传输时,是可以接受的。

一个递增猝发可以是任何长度,但是其上限由地址不能超过1KB边界这个事实来限制。

注:猝发大小表示猝发的节拍数,并不是一个猝发传输的实际字节数。一个猝发传输的数据总量可以用节拍数乘以每拍数据的字节数来计算,每拍数据的字节数由HSIZE[2:0]指示。

所有猝发传输必须将地址边界和传输大小对齐。例如,字传输必须对齐字地址边界(A[1:0]=00),半字传输必须对齐半字地址边界(A[0]=0)。

2.猝发早期停止

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

如果总线主设备因为失去对总线的占有而不能完成一个猝发时,它必须在下一次访问总线时正确地重建猝发。例如,如果一个主设备仅完成了4拍猝发中的1拍,那么它必须用一个未指定长度的猝发来执行剩下的3拍。

图2.14给出了4拍回卷猝发,图2.15给出了4拍递增猝发。

图2.14 4拍回卷猝发

图2.15 4拍递增猝发

在4拍回卷猝发中,在第一个传输中,添加了一个等待状态。由于4拍回卷猝发的字传输的地址将在16字节边界处回卷,因此在地址0x3C后面是地址0x30。

图2.15表示出了回卷猝发和递增猝发的唯一不同,即地址连续通过16字节边界。

图2.16给出了8拍回卷猝发,地址将在32字节边界处回卷。因此,地址0x3C之后的地址是0x20。

图2.16 8拍回卷猝发

图2.17中的猝发使用半字传输,因此地址每次增加2字节,并且是递增猝发,故地址连续增加,穿过16字节边界。

图2.17 8拍递增猝发

图2.18表示未指定长度的递增猝发。其中有两个猝发。

图2.18 未指定长度的递增猝发

(1)在地址0x20处,开始传输两个半字,半字传输地址以2递增。

(2)在地址0x5C处,开始传输3个字,字传输地址以4递增。

2.3.5 AMBA AHB的传输控制信号

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

1.传输方向

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

2.传输大小

HSIZE[2:0]用于表示传输宽度,如表2.6所示。传输宽度与HBURST[2:0]信号一起决定回卷猝发的地址边界。

表2.6 传输宽度编码

续表

3.保护控制

保护控制信号HPROT[3:0]提供总线访问的附加信息,并且最初是给那些希望执行某种保护级别的模块使用的。控制保护级别如表2.7所示。

表2.7 控制保护级别

这些信号表示传输是:

(1)一次预取指或数据访问。

(2)特权模式访问或用户模式访问。

对包含存储器管理单元的总线主设备来说,这些信号也指示当前访问是带高速缓存的还是带缓冲的。并不是所有的总线主设备都能产生正确的保护信息,因此,建议从设备在没有严格要求的情况下不使用HPROT信号。

2.3.6 AMBA AHB地址译码

对每个总线从设备来说,使用一个中央地址译码器提供选择信号HSELx。选择信号是高位地址信号的组合译码,并且建议使用简单的译码方案,以避免复杂译码逻辑,确保高速操作。

从设备只能在HREADY信号为高电平时采样地址总线信号、控制信号和HSELx信号。当HSELx信号为高电平时,表示已经完成当前传输。在特定情况下,有可能在HREADY信号为低电平时采样HSELx信号,但是会在当前传输完成后更改选中的从设备。

能够分配给单个从设备的最小地址空间是1KB,所设计的总线主设备不能执行超过1KB地址边界的递增传输。因此,需要保证一个猝发不会超过地址译码的边界。在设计系统时,如果一个存储器映射未完全填满存储空间,就应该设置一个额外的默认从设备,以便在访问任何不存在的地址空间时提供响应。如果一个非连续传输或连续传输尝试访问一个不存在的地址空间,那么这个默认从设备应该提供一个ERROR响应。当空闲或忙传输访问不存在的空间(默认从设备)时,其应该给出一个零等待状态的OKAY响应。例如,默认从设备的功能将由中央地址译码器的一部分来实现。

图2.19表示一个地址译码系统和从设备选择信号。

图2.19 地址译码系统和从设备选择信号

2.3.7 AMBA AHB从设备传输响应

当主设备发起传输后,从设备决定传输方式。AMBA AHB规范中没有做出总线主设备在传输已经开始后取消传输的规定。

只要访问从设备,那么从设备必须提供一个表示传输状态的响应。HREADY信号用于扩展传输并与响应信号HRESP[1:0]相结合,提供传输状态。

从设备能够用多种方式完成传输。

(1)立刻完成传输。

(2)插入一个或多个等待状态,以允许有足够的时间完成传输。

(3)发出一个错误信号,表示传输失败。

(4)延时传输完成,但是允许主设备和从设备放弃总线,把总线留给其他传输使用。

1.传输完成

HREADY信号用来扩展一个AHB传输的数据周期。当HREADY信号为低电平时,表示将要扩展传输;当HREADY信号为高电平时,表示传输完成。

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

2.传输响应

一般从设备会使用HREADY信号,在传输中插入适当数量的等待状态,而当HREADY信号为高电平时,完成传输并给出OKAY响应,表示成功完成传输。

从设备用ERROR响应来表示某种形式的错误条件和相关传输,如将其用作保护错误或尝试写一个只读存储空间。

SPLIT和RETRY响应组合允许从设备延长传输完成的时间,但是,允许释放总线给其他主设备使用。这些响应组合通常仅由有较高访问延时的从设备请求,并且从设备能够利用响应编码保证在长时间内不阻止其他主设备访问总线。

HRESP[1:0]的编码、响应和每个响应的描述如表2.8所示。

表2.8 HRESP[1:0]的编码、响应和每个响应的描述

续表

在决定将要给出何种响应类型之前,从设备需要插入一定数量的等待状态。从设备必须驱动响应为OKAY。

3.双周期响应

在单个周期内,仅可以给出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响应,因为不重复当前传输,所以可以选择完成接下来的传输。

图2.20给出了带有RETRY响应的传输。其中包含以下事件。

图2.20 带有RETRY响应的传输

(1)主设备从地址 A 开始传输。

(2)在收到这个传输响应之前,主设备将地址变为 A +4。

(3)在地址 A 处的从设备不能立刻完成传输,因此从设备发出一个RETRY响应。该响应告诉主设备无法完成在地址 A 处的传输,并且取消在地址 A +4处的传输,使用空闲传输替代。

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

图2.21 错误响应

4.错误响应

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

5.分割和重试

分割(SPLIT)和重试(RETRY)响应给从设备提供了在无法立刻给传输提供数据时释放总线的机制。这两种机制都允许结束总线传输。因此,允许更高优先级的主设备访问总线。

分割和重试的不同之处在于仲裁器在发生分割和重试后分配总线的方式。

(1)重试:仲裁器将继续使用常规优先级方案,因此只有拥有更高优先级的主设备才能获准访问总线。

(2)分割:仲裁器将调整优先级方案,以便其他任何主设备请求总线时都能立即访问总线(即使是优先级较低的主设备)。为了完成一个分割传输,从设备必须通知仲裁器数据何时可用。

分割传输增加了仲裁器和从设备的复杂性,却有可以完全释放总线给其他主设备使用的优点。在重试响应的情况下,只允许具有较高优先级的主设备使用总线。

总线主设备应该以同样的方式对待分割和重试响应。主设备应该继续请求总线并尝试传输,直到传输成功完成,或者遇到错误响应。

2.3.8 AMBA AHB数据总线

为了不使用三态驱动,同时允许运行AHB系统,要求读和写数据总线分开。规定最小的数据宽度为32位。此外,可以增大总线宽度。

1.HWDATA[31:0]

在写传输期间,由总线主设备驱动写数据总线。如果是扩展传输,则总线主设备必须保持数据有效,直到HREADY信号为高电平(表示传输完成)。

对于传输宽度小于总线宽度的传输(如在32位总线上的16位传输),总线主设备只需驱动相应的字节通道,从设备负责从正确的字节通道中选择数据。表2.9和表2.10分别表示32位小端与大端数据总线的有效字节通道。如果有要求,则可以在更宽的总线应用中扩展这些信息。传输宽度小于总线宽度的猝发传输将在每拍猝发中有不同的有效字节通道。

表2.9 32位小端数据总线的有效字节通道

表2.10 32位大端数据总线的有效字节通道

有效字节通道由系统的端结构决定,但是AHB并不指定所要求的端结构。因此,要求总线上所有的主设备和从设备的端结构相同。

2.HRDATA[31:0]

在读传输期间,由合适的从设备驱动读数据总线。如果从设备拉低HREADY信号,则可以扩展读传输过程,从设备只需在传输的最后一个周期提供有效数据,由HREADY信号为高电平表示。

对小于总线宽度的传输来说,从设备只需在有效字节通道提供有效数据,如表2.9和表2.10所示。总线主设备负责从正确的字节通道中选择数据。

当传输以OKAY响应结束时,从设备只需提供有效数据。SPLIT、RETRY和ERROR响应不需要提供有效的读数据。

3.端结构

为了正确地运行系统,事实上,所有模块都具有相同的端结构,并且任何数据通路或桥接器也都具有相同的端结构。

在大多数嵌入式系统中,动态的端结构将导致明显的硅晶片开销,因此不支持动态的端结构。

对模块设计人员来说,建议只有应用场合非常广泛的模块才设计为双端结构。通过一个配置引脚或内部控制位来选择端结构。对于更多具有特定用途的模块,将端结构固定为大端或小端将产生体积更小、功耗更低、性能更高的接口。

2.3.9 AMBA AHB传输仲裁

使用仲裁机制保证任意时刻只有一个主设备能够访问总线。仲裁器的功能是检测多个使用总线的不同请求,以及确定当前请求总线的主设备中优先级最高的主设备。仲裁器也接收来自从设备需要完成分割传输的请求。

任何没有能力执行分割传输的从设备都不需要了解仲裁的过程,除非它们遇到需要检测由于总线所有权改变而导致猝发传输不能完成的情况。

1.信号描述

以下给出每个仲裁信号的简要描述。

1)HBUSREQx

HBUSREQx是总线请求信号。总线主设备使用这个信号请求访问总线。每个总线主设备各自都有连接到仲裁器的HBUSREQx信号,并且在任何一个系统中,最多可以有16个独立的总线主设备。

2)HLOCKx

在主设备请求总线的同时确定锁定信号HLOCKx。该信号告诉仲裁器主设备正在执行一系列不可分割的传输,并且一旦锁定传输的第一个传输已经开始,仲裁器就不能授权任何其他主设备访问总线。在寻址到所用的地址之前,必须保证HLOCKx信号在一个周期内有效,以防止仲裁器改变授权信号。

3)HGRANTx

由仲裁器产生授权信号HGRANTx,表示某个主设备是当前请求总线的主设备中优先级最高的,优先考虑锁定传输和分割传输。

当HGRANTx信号为高电平时,主设备获取地址总线的所有权,并且在HCLK的上升沿,HREADY为高电平。

4)HMASTER[3:0]

通过HMASTER[3:0]信号表示仲裁器当前授权使用总线的主设备,并且该信号可用来控制中央地址和多路选择器。有分割传输能力的从设备也可以请求主设备号,以便从设备提示仲裁器能够完成一个分割传输的主设备。

5)HMASTLOCK

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

6)HSPLIT[15:0]

HSPLIT[15:0]是16位有完整分割能力的总线。有分割能力的从设备用来指示能够完成一个分割传输的总线主设备。仲裁器需要HSPLIT[15:0],以便授权主设备能够通过访问总线来完成传输。

2.请求访问总线

总线主设备使用HBUSREQx信号请求访问总线,并且可以在任何周期请求访问总线。仲裁器先在时钟的上升沿采样主设备请求,然后使用内部优先级算法确定获准访问总线的下一个主设备。

如果主设备请求锁定访问总线,那么主设备必须通过断言HLOCKx信号来告诉仲裁器不会将访问总线授权给其他主设备。

当给一个主设备授权总线,且正在执行一个固定长度的猝发时,没有必要继续请求总线,以便完成传输。仲裁器监视猝发的进程,并且使用HBURST[2:0]信号决定主设备请求的传输个数。如果主设备希望在当前正在进行的传输之后执行另一个猝发,则主设备需要在猝发中重新断言请求信号。

如果主设备在一个猝发中失去了对总线的访问权限,那么它必须通过重新断言HBUSREQx信号请求线来获取访问总线的权限。

对未指定长度的猝发来说,主设备应该继续断言请求,直到已经开始最后一个传输。在未指定长度的猝发结束时,仲裁器不能预知改变仲裁的时间。

对主设备而言,有可能在它未申请访问总线时被授予总线的访问权限。在没有主设备请求访问总线且仲裁器将访问总线授权给一个默认主设备时,可能发生这种情况。因此,如果一个主设备没有请求访问总线,那么它驱动传输类型HTRANS来表示空闲传输。

3.授权访问总线

通过正确断言HGRANTx信号,仲裁器表示请求当前访问总线主设备中优先级最高的主设备。由HREADY为高电平表示完成当前传输。那么,仲裁器将授权主设备使用总线,并且通过改变HMASTER[3:0]信号,仲裁器表示使用的总线主设备序号。

图2.22表示当所有传输都为零等待状态且HREADY信号为高电平时的处理过程。

图2.22 没有等待周期的授权访问

图2.23表示移交总线时对等待状态的影响。

图2.23 有等待周期的授权访问

数据总线的所有权延时在地址总线的所有权之后。只有完成一个传输(HREADY为高电平)后,占有地址总线的主设备才能使用数据总线,并且将继续占有数据总线,直到完成传输。图2.24表示在两个总线主设备之间移交总线时,转移数据总线所有权的方法。

图2.24 转移数据总线所有权的方法

图2.25所示为仲裁器在一个猝发传输结束时移交总线的例子。在采样最后一个地址前面的地址时,仲裁器改变HGRANTx信号。在采样猝发最后一个地址的同时,采样新的HGRANTx信息。

图2.26表示在系统中使用HGRANTx和HMASTER信号的方法。

图2.25 仲裁器在一个猝发传输结束时移交总线的例子

图2.26 在系统中使用HGRANTx和HMASTER信号的方法

注:因为使用了中央多路选择器,所以每个主设备都可以立刻输出它希望执行的地址,而不需要等到被授权访问总线。通过HGRANTx信号,主设备决定拥有总线的时间。因此,需要考虑让合适的从设备采样地址的时间。

HMASTER信号总线的延时版本用于控制写数据多路选择器。

4.猝发早期停止

通常,在猝发传输结束之前,仲裁器不会将总线移交给一个新的主设备。但是,如果仲裁器决定必须提前终止猝发以防止过长的总线访问时间时,那么它可能会在一个猝发完成之前将总线访问授权转移给另外一个总线主设备。

如果主设备在猝发传输期间失去了对总线的所有权,那么它必须重新断言总线请求,以完成猝发传输。主设备必须确保更新HBURST和HTRANS信号,以反映主设备不再执行一个完整的4、8或16拍猝发。

例如,如果一个主设备仅能完成一个8拍猝发的3个传输,那么当它重新获得总线的所有权时,必须使用一个有效的猝发编码来完成剩下的5个传输。主设备可以使用任何有效的组合,因此无论是5拍未指定长度的猝发还是4拍固定长度的猝发(与前一个单拍未指定长度的猝发)都是可以接受的。

5.锁定传输

仲裁器必须监视来自各个主设备的HLOCKx信号,以确定主设备何时希望执行一个锁定连续传输。之后,仲裁器负责确保没有授权总线给其他总线主设备,直到完成锁定传输。

在一个锁定连续传输之后,仲裁器总是为一个附加传输保持将该总线主设备授权给总线,以确保成功完成锁定序列的最后一个传输,并且不会收到SPLIT或RETRY响应。因此,建议但不规定,主设备在任何锁定连续传输之后插入一个空闲传输,以提供给仲裁器在准备另外一个猝发发传输之前改变总线授权的机会。

HMASTLOCK信号指示每个从设备的当前传输是锁定传输,因此,必须在将其他主设备授权给总线之前将其处理掉。

6.默认主设备

每个系统都必须包含一个默认主设备。如果其他所有主设备都不能使用总线,则授权该主设备使用总线。当授权主设备使用总线时,默认主设备只能执行空闲传输。

如果没有请求总线,那么仲裁器可以授权默认主设备访问总线或访问总线延时较低的主设备。

授权默认主设备访问总线也为确保在总线上没有新的传输开始提供了一个有用的机制,也是预先进入低功耗操作模式的有用步骤。

如果其他主设备都在等待分割传输完成,则必须给默认主设备授权总线。

2.3.10 AMBA AHB分割传输

分割传输是指根据从设备的响应操作来分割主设备操作,以便给从设备提供地址和合适的数据,提高总线的总体使用效率。

当产生传输时,如果从设备认为传输的执行将占用大量的时钟周期,那么从设备能够决定发出一个分割响应。该信号提示仲裁器不给尝试这次传输的主设备授权总线,直到从设备表示它准备好完成传输。因此,仲裁器负责监视响应信号,并且在内部屏蔽已经是分割传输主设备的任何请求。

在传输的地址周期,仲裁器在HMASTER[3:0]上产生一个标记或总线主设备号,表示正在执行传输的主设备。任何一个发出分割响应的从设备都必须表示它有能力完成这个传输,并且通过记录HMASTER[3:0]信号上的主设备号来达到该目的。

当从设备能够完成传输时,它就根据主设备号在从设备到主设备的HSPLITx [15:0]信号上断言合适的位,仲裁器使用这个信息解除对来自主设备请求信号的屏蔽,并及时授权主设备访问总线,以尝试重新传输。在每个时钟周期,仲裁器采样HSPLITx总线。因此,从设备只需一个周期来断言适当的位,以便仲裁器能够识别。

如果系统中有多个具有分割能力的从设备,那么可以将每个从设备的HSPLITx总线逻辑“或”在一起,提供给仲裁器单个HSPLIT总线。

大多数系统中并没有用到最多16个总线主设备的功能。因此,仲裁器仅要求一个位数和总线主设备数量一样的HSPLIT总线。但是,建议将所有有分割能力的从设备都设计成支持最多16个主设备。

1.分割传输的基本步骤

分割传输的基本步骤如下。

(1)主设备以和其他传输一样的方式发起传输并发出地址和控制信息。

(2)如果从设备能够立刻提供数据,则立即提供数据。如果从设备确定获取数据可能会占用较多的时钟周期,那么它给出一个分割传输响应。

在每个传输中,仲裁器都广播一个号码或标记,表示正在使用总线的主设备。从设备必须记录该号码或标记,以便在此之后的一段时间内重新发起传输。

(3)仲裁器授权其他主设备使用总线和分割响应,允许主设备移交总线。如果其他主设备也收到一个分割响应,那么将授权默认主设备使用总线。

(4)当从设备准备完成传输时,它断言HSPLITx信号中适当的位,告诉仲裁器应该重新授权访问总线的主设备。

(5)在每个时钟周期,仲裁器监视HSPLITx信号,并且当断言HSPLITx信号中的任何一位时,仲裁器将恢复对应主设备的优先级。

(6)仲裁器授权分割的主设备使用总线。因此,主设备可以重新尝试传输。如果一个优先级更高的主设备正在使用总线,那么这可能不会立刻发生。

(7)当最终开始传输后,从设备以一个OKAY响应结束传输。

2.多个分割传输

总线协议只允许每个总线主设备有一个未完成的处理。如果任何主设备模块都能够处理多个未完成的处理,那么它需要为每个未完成的处理设置一个额外的请求和授权信号。在协议级上,一个信号模块可以表现为许多不同的总线主设备,每个主设备都只能有一个未完成的处理。

然而,一个有分割能力的从设备可能会接收比它能并发处理传输还要多的传输请求。如果发生这种情况,那么从设备可以不用记录对应传输的地址和控制信息,仅需记录主设备号就可发出分割响应,之后通过断言HSPLITx信号中适当的位,从设备将该信息传给之前已经给出分割响应的所有主设备,表示它能处理另外一个传输。

之后,仲裁器能够重新授权这些主设备访问总线,它们将重试传输,并给出从设备所要求的地址和控制信息。这表示在最终完成所要求的传输之前,要多次授权主设备使用总线。

3.预防死锁

在使用分割和重试响应时,必须注意预防死锁。单个传输绝对不会锁定AHB,因为将每个从设备都设计成能在预先确定的周期数内完成传输。但是,如果多个不同的主设备尝试访问同一个从设备,而从设备发出分割或重试响应(表示从设备不能处理它们),就有可能发生死锁。

1)分割传输

从设备可以发出分割响应,通过确保从设备能够承受系统中每个主设备(最多16个)的单个请求来预防死锁。从设备并不需要存储每个主设备的地址和控制信息,它只需简单地记录已经处理和发出分割响应的传输请求即可。最后,所有主设备都将处于低优先级状态。此时,从设备可以有次序地处理这些请求,告诉仲裁器正在服务的请求,确保最终服务所有请求。

当从设备有许多未完成的请求时,它可能以任何顺序随机地处理这些请求。从设备需要注意锁定传输,而且必须在继续任何其他传输之前完成。

从设备使用分割响应而不使用锁存地址和控制信息显得非常合适。从设备仅需记录特定主设备做出的传输尝试,并且在稍后的时间段内,从设备通过告诉自己已经准备好完成传输,就能获取地址和控制信息,将授权主设备使用总线并重新广播传输,以允许从设备锁存地址和控制信息,而且立刻应答数据或发出另外一个分割响应(如果还需要额外的一些时钟周期)。

在理想情况下,从设备不应该有多于它能支持的未完成的传输,但是要求它支持这种机制以预防死锁。

2)重试传输

发出分割响应的从设备一次只能被一个主设备访问。在总线协议中并没有强调这一点,但是在系统体系结构中应该确保这一点。在大多数情况下,发出重试响应的从设备必须是一次只能被一个主设备访问的外设。因此,这会在一些更高级协议中得到保证。

硬件保护和多主机访问重试响应的从设备相违背并不是协议中的要求,但是可能会在后面描述的设计中得到执行。仅有的总线级要求是从设备必须在预先确定的时钟周期内驱动HREADY信号为高电平。

如果要求硬件保护,那么被重试响应的从设备可以自己执行。当一个从设备发出一个重试响应后,它能够采样主设备号。在这之后和传输最终完成之前,重试的从设备可以检查做出的每个传输尝试以确保主设备号是相同的。如果从设备发现主设备号不一致,那么它可以给出下列行为方式之一。

(1)一个错误响应。

(2)一个信号(发送给仲裁器)。

(3)一个系统级中断。

(4)一个完全的系统复位。

4.分割传输的总线移交

协议要求主设备在收到一个分割或重试响应后立刻执行一个空闲传输,以允许将总线移交给另外一个主设备。图2.27表示发生一个分割传输的顺序事件。

需要注意以下要点。

(1)在时间 T 1 之后,传输的地址出现在总线上。在时钟沿 T 2 T 3 之后,从设备返回两个周期的SPLIT响应。

(2)在第一个响应周期的末尾,即 T 3 处,主设备能够检测到将传输分块。因此,主设备改变接下来的传输控制信号,以表示一个空闲传输。

图2.27 分割传输后的总线移交

(3)在 T 3 处,仲裁器采样响应信号并确定已经分块传输。之后,仲裁器可以调整仲裁优先级,并且在接下来的周期改变授权信号。这样能够在 T 4 后授权新的主设备访问地址总线。

(4)因为空闲传输总是在一个周期内完成,所以新的主设备可以保证立刻访问总线。

2.3.11 AMBA AHB复位

复位信号HRESETn是AMBA AHB规范中唯一的低电平有效信号,并且是所有总线设备的主要复位源。复位可以异步方式确认,但是在HCLK的上升沿被同步地撤销确认。

在复位期间,所有主设备必须确保地址和控制信号处于有效电平状态,并且使用HTRANS [1:0]信号表示空闲状态。

2.3.12 关于AHB数据总线的位宽

一种能提高总线带宽而不用提高操作频率的方法是使片上总线的数据通道更宽。金属层的增加和大容量片上存储模块(如嵌入式DRAM)的使用都是更宽片上总线使用的推动因素。

指定一个固定宽度的总线,意味着在大多数场合下,总线宽度在应用中并不是最佳的。因此,允许可变总线宽度的途径已经被采纳。但是,必须确保模块在设计中的高度可移植性。

协议允许AHB数据总线可以是8、16、32、64、128、256、512或1024位宽。然而,建议使用中最低的位宽为32位,并且预期最大256位宽的总线适合几乎所有应用。

对读和写传输来说,接收模块必须从总线的正确字节通道中选择数据。但是,不要求将数据复制到所有字节通道中。

1.在宽总线上实现窄从设备

图2.28表示在一个原始设计中,在较宽的64位总线上实现32位数据总线的窄从设备。此时,仅需增加外部逻辑,而不需要修改任何内部设计。因此,该技术也可以用在难以设计的宏单元上。

对于输出,当从较窄的总线转换成较宽的总线时,需要完成下列事件之一。

(1)如图2.28所示,将数据复制到宽总线上的两半部分上。

(2)使用额外的逻辑电平来确保总线上只有适当的那一半被改变,这会降低功耗。从设备可以只接受与它接口宽度相同的传输。如果一个主设备尝试一个宽度大于从设备能够支持的传输,那么从设备可以使用错误传输响应。

图2.28 在宽总线上实现窄从设备

2.在窄总线上实现宽从设备

图2.29所示为在窄总线上实现宽从设备。同样,此时只需增加外部逻辑。因此,通过简单的修改,初步的设计或导入的模块就可以工作在不同宽度的数据总线上了。

图2.29 在窄总线上实现宽从设备

与最初打算通过使用相同方式修改从设备以工作在宽总线上相比,经过下面简单的修改,总线主设备便能够工作在宽总线上。

(1)多路选择输入总线。

(2)复制输出总线。

然而,总线主设备不能工作在比原先设计窄的总线上,除非有一些限制。总线主设备尝试传输宽度的机制将主设备也包含在内。禁止主设备尝试宽度(由HSIZE表示)大于所连接数据总线的传输。

2.3.13 AMBA AHB接口设备

图2.30给出了AMBA AHB从设备符号,图2.31给出了AMBA AHB主设备符号,图2.32给出了AMBA AHB仲裁器符号。

图2.30 AMBA AHB从设备符号

图2.31 AMBA AHB主设备符号

图2.32 AMBA AHB仲裁器符号 NXAlJ7mkV8ofpNXp4PD2o6gVLfNmeuShVEHAtffeEgDFaOTtsiwJdj9MZkhEZtxN

点击中间区域
呼出菜单
上一章
目录
下一章
×