AMBA3 AHB-Lite学习笔记

信号

全局信号

在这里插入图片描述
时钟信号与复位信号

主机

在这里插入图片描述
HADDR 地址
HBURST 突发传输 单次传输或者突发传输,支持定长4,8,16拍 突发传输可以自增或warapping 不定长的自增突发也支持
HMASTERLOCK 主机锁定 高电平表示当前传输是锁定序列 与地址和控制信号有相同时序
HPORT 保护控制信号
HSIZE 传输大小,字节,半字,字
在这里插入图片描述
HTRANS 传输类型,包括IDLE BUSY NONSEQ SEQ
HWDATA 写数据推荐32位
HWRITE 读或写

从机

在这里插入图片描述
HRDATA 读数据
HREADYOUT 高电平表示传输都已经完成,低电平表示传输扩展
HRESP 低电平OKAY,高电平ERROR

译码

在这里插入图片描述
HSEL 从机片选

选择

在这里插入图片描述
HRDATA 通过译码选择读的数据
HREADY 高电平表示上一次传输完成
HRESP 通过译码选择传输响应

传输

3.1 基本

在这里插入图片描述
与APB不同,Write Data在data phase才有效,这是为了实现流水线
在这里插入图片描述
HREADY表示一次传输完成,可以起到传输等待的效果(一般出现在data phase)
主机在等待时会保持数据稳定
在这里插入图片描述
data phase的扩展会带动下一个周期的address phase的扩展

3.2 传输类型

HTRANS

在这里插入图片描述

00 闲置
两次burst之间的无效,下一次换新的burst

01 忙碌
两次burst之间的无效,下一次为同样的burst
此时的地址和控制信号应该反映为下一次突发传输
此拍从机无须响应

10 非连续
突发的第一次传输或单个传输。地址和控制信号与之前的传输无关。

11 连续
突发中的连续传输。地址与之前的传输有关。控制信息与之前的相同。

NONSEQ或者IDLE代表着前一个突发传输完成
在这里插入图片描述
T0 四拍的读由NONSEQ开始
T1 主机插入一个BUSY来延迟传输,从机响应第一拍的数据
T2 主机传输第二拍,从机无响应
T3 主机传输第三拍,从机响应第二拍
T4 主机传输最后一拍,从机的第三拍无法响应,以HREADY插入等待
T5 主机维持最后一拍的信号,从机响应第三拍
T6 从机响应最后一拍的信号
这里的HBURST为INCR模式,表示地址累加的传输累加的大小由HSIZE决定

3.3 锁定

如果主机需要锁定访问,需要断言HMASTLOCK
表示当前传输序列不可分割
在这里插入图片描述
锁定传输完成,建议插入IDLE transfer
大多数从机不需要实现HMASTLOCK,因为它们只能按照接收顺序执行传输。可以由多个主设备访问的从设备,例如多端口存储器控制器(MPMC),必须实现HMASTLOCK信号。

3.4 传输大小

HSIZE

在这里插入图片描述
表示传输大小,应当小于等于数据总线
HSIZE与HBURST结合使用,决定回环突发传输的地址边界
HSIZE与地址总线的时序相同,在突发传输中应保持不变

3.5 突发传输

HBRUST

在这里插入图片描述
递增的突发访问顺序位置,并且突发中的每个传输的地址是先前地址的增量。
回环突发在跨越地址边界时进行回环。地址边界计算为突发中的拍数与传输大小的乘积。拍数由HBURST控制,传输大小由HSIZE控制。

0 一次传1个
INCR 地址累加的传输,由hsize决定地址累加的长度(可以只传输一个)

主机可以通过单次突发或者未定义长度的一次长度为一的突发

回环,碰到倍数的时候退回去
在这里插入图片描述

在这里插入图片描述
burst不能穿越1K(0X400)的边界,需要将SEQ换成NSEQ

突发中的所有传输必须与等于传输大小的地址边界对齐。例如,必须将字传输与字地址边界(HADDR[1:0]=b00)对齐,并将半字传输与半字地址边界对齐(HADDR[0]=0)。空闲传输的地址也必须对齐,否则在模拟过程中,总线监视器可能会报告虚假警告。

3.5.1 突发传输后的突发终止

突发开始后,主机可插入BUSY,来在下一个传输之前获得更多时间。
主机决定不再传输时(INCR模式下),可以执行NONSEQ或者IDLE来结束突发传输。
固定长度的突发传输,协议不允许以BUSY结束突发传输。这些固定长度突发类型必须以SEQ传输终止。
不允许主机在单个突发之后立即执行忙传输。单脉冲串之后必须是IDLE传输或NONSEQ传输

3.5.2 提早结束突发

突发可以被从机错误响应和 多层互联终止结束
从机错误响应时,主机可停发,也可继续发送剩余数据。如果主设备未完成该突发,则不需要在下次访问该从设备时重建该突发。

示例

在这里插入图片描述
四拍回环,中间从机插入了一个等待
以NONSEQ开始,在16字节边界处回环,3c到40跨越边界,回到边界的开头

在这里插入图片描述
四拍递增突发,从机插入了一个等待
以字为单位递增
在这里插入图片描述
八拍回环,
32字节边界处回环,3c到40跨越边界,回到边界开头
在这里插入图片描述
八拍递增
此突发使用半字传输,因此地址增加两个
在这里插入图片描述
不定长突发
第一次突发,2次半字写传输
第二次突发,3次字读传输

3.6 传输等待

3.6.1 改变传输类型

IDLE transfer
等待时,传输类型可以从IDLE变为NONSEQ,但是变成NONSEQ后不能再改变
在这里插入图片描述
T5时刻获得单次burst的数据

BUSY transfer(定长传输)
等待时,允许主机将传输类型从BUSY更改为SEQ。变后不能再改变。
BUSY只能插在定长突发传输的中间,只适用于定长传输(不适用与单次和不定长)
在这里插入图片描述
BUSY transfer(不定长传输)

在这里插入图片描述
等待时,BUSY可以切换到任意状态
如果执行SEQ传输,则突发继续,但如果执行IDLE或NONSEQ传输则终止。

T3开始了新的传输,意味着之前的传输已经结束
T5给出了不定长传输的data

3.6.2 改变地址

IDLE状态或错误响应后,主机可以在等待时修改地址
IDLE
此状态下,传输的参数没有实际意义,可以随便修改。但是跳转到NONSEQ以后就不可以了

Error response
如果从设备以错误响应进行响应,则允许主设备在HREADY 低时更改地址。
在这里插入图片描述
T3 从机error响应
T4 主机在HREADY为低的情况下改变地址和传输类型
T5 从机在地址C0处响应OKAY

3.7 保护控制

在这里插入图片描述
[0] 取指还是取数据
[1] 用户权限还是特权
[2] 是否buffer缓存
[3] 是否cache缓存
ARM建议 主设备将HPROT设置为b0011,以对应于不可缓存、不可缓冲、有特权的数据访问。除非绝对必要,否则从设备不使用HPROT。

总线互联

4.1 地址译码

可分配给单个从设备的最小地址空间为1KB(0x400)。所有主机都设计为不在1KB地址边界上执行递增传输。这确保了突发永远不会跨越地址解码边界
在这里插入图片描述

4.1.1 默认从机

空白地址应该分配给默认从机,以提供响应

4.2 多路复用器互联

在这里插入图片描述

从机响应信号

在这里插入图片描述
错误条件需要两个周期的响应,在第二个周期中断言HREADY。
在这里插入图片描述
错误响应要两个周期

5.1.1 传输完成

5.1.2 传输等待

从机应该设置最大等待,建议不超过16个周期

5.1.3 错误响应

从设备使用错误响应来指示与相关传输有关的某种形式的错误条件。通常这表示保护错误,例如试图写入只读存储器位置。
错误维持两个周期,通过HREADY延长一个周期。
由于总线的流水线特性,需要两个周期的响应。当从设备开始发出错误响应时,随后传输的地址已经广播到总线上。两个周期响应为主机提供了足够的时间来取消下一次访问,并在下一次传输开始之前将HTRAN[1:0]驱动到空闲状态。
如果需要额外的时间产生错误,可以先用HREADY插入等待,此时响应为OKAY
在这里插入图片描述

数据总线

6.1 数据总线

对于比总线宽度窄的传输,例如32位总线上的16位传输,主机只需驱动适当的字节通道。从设备从正确的字节通道中选择写数据。
在这里插入图片描述
一般采用小端数据总线

6.2 数据总线的宽度

一般建议32位
在这里插入图片描述

在这里插入图片描述

时钟和复位

异步复位,同步释放
复位时,主机的地址和控制信号必须处于有效电平,传输状态为IDLE
复位时HREADYOUT拉高




AHB总线与AHB-Lite的不同

AHB-Lite是AHB的子集
如果主机由于失去总线二无法完成突发,则它必须在下次访问总线时适当建立突发。
如主机只完成了四拍中的一拍,则它应采用不定长突发完成剩余三次传输。

从机响应

HRESP

在这里插入图片描述
00 成功
01 失败
10 未完成,重新开始
11 未完成,重新开始(降低Master优先级(Arbiter))
00 为单周期响应,其他为两周期响应

SPLIT和RETRY响应为从设备提供了一种机制,当它们无法立即为传输提供数据时,可以释放总线。这两种机制都允许传输在总线上完成,因此允许更高优先级的主机访问总线。
这些响应组合通常仅由具有高访问延迟的从设备需要,并且可以利用这些响应代码来确保其他主设备不会被阻止长时间访问总线。

SPLIT和RETRY之间的区别在于仲裁器在SPLIT和RETRY发生后分配总线的方式:

  • 对于RETRY,仲裁器将继续使用正常优先级方案,因此只有具有较高优先级的主机才能访问总线。
  • 对于SPLIT传输,仲裁器将调整优先级方案,以便请求总线的任何其他主机都可以访问,即使其优先级较低。为了完成拆分传输,必须在从机具有可用数据时通知仲裁器。

SPLIT传输在从机和仲裁器中都需要额外的复杂性,但其优点是它完全释放总线供其他主机使用,而RETRY情况只允许更高优先级的主机进入总线。
总线主控器应以相同的方式处理SPLIT和RETRY。它应继续请求总线并尝试传输,直到成功完成或以错误响应终止。

在这里插入图片描述

HRESP相对于AHB-Lite多了一位,但是可以兼容AHB-Lite

仲裁机制

仲裁机制用于确保在任何一个时间只有一个主机可以访问总线。
仲裁器通过观察使用总线的多个不同请求并决定当前哪个是请求总线的最高优先级主机来执行此功能。仲裁器还从希望完成SPLIT传输的从机接收请求。

任何不能执行SPLIT传输的从属设备不需要知道仲裁过程,除非它们需要观察到,如果总线所有权发生变化,传输突发可能无法完成。

ARBITER

在这里插入图片描述
HBUSREQx
总线请求
总线请求信号由总线主控器用于请求访问总线。每个总线主控器都有自己的HBUSREQx信号发送给仲裁器,在任何系统中最多可以有16个独立的总线主控。

HLOCKx
高电平请求锁定总线
锁定信号与总线请求信号同时由主控器断言。这向仲裁器指示主控器正在执行多个不可分割的传输,并且一旦锁定传输的第一次传输已经开始,仲裁器不得授予任何其他总线主控器对总线的访问。HLOCKx必须在其引用的地址之前至少一个周期被断言,以防止仲裁器更改授权信号。

HGRANTx
授权信号
授权信号由仲裁器生成,并指示适当的主机当前是请求总线的最高优先级主机,考虑到锁定传输和SPLIT传输。
当HGRANTx为高且HREADY在HCLK的上升沿为高时,主机获得地址总线的所有权。

HMASTER
指出哪个主设备在传输
仲裁器使用HMASTER[3:0]信号指示当前授予总线的主机,这可用于控制中央地址和控制多路复用器。具有SPLIT功能的从设备也需要主设备编号,以便它们可以向仲裁器指示哪个主设备能够完成SPLIT事务。

HMASTERLOCK
指出主设备正在进行一次锁定传输
仲裁器通过断言与地址和控制信号具有相同时序的HMASTLOCK信号来指示当前传输是锁定序列的一部分。

HSPLIT
从告诉Arbiter哪个主设备尝试split
16位SPLIT完成总线由具有SPLIT功能的从设备使用,以指示哪个总线主设备可以完成SPLIT事务。仲裁器需要此信息,以便它可以授权主控器访问总线以完成传输。

3.11.1 请求总线

总线主控器使用HBUSREQx信号请求访问总线,并可在任何周期内请求总线。仲裁器将在时钟上升时对请求进行采样,然后使用内部优先级算法来决定下一个访问总线的主机。
通常,仲裁器仅在突发完成时授予不同的总线主控器。
然而,如果需要,仲裁器可以提前终止突发,以允许更高优先级的主机访问总线。
如果主机需要锁定访问,则它还必须断言HLOCKx信号,以向仲裁器指示不应向其他主机授予总线。
当主设备被授予总线并且正在执行固定长度突发时,不需要继续请求总线以完成突发。仲裁器观察突发的进程,并使用HBURST[2:0]信号来确定主机需要多少传输。如果主机希望在当前正在进行的突发之后执行第二突发,则它应该在突发期间重新断言请求信号。
如果主机在突发过程中失去对总线的访问,那么它必须重新断言HBUSREQx请求行以重新获得对总线的存取。
对于未定义长度的突发,主机应继续断言请求,直到它开始最后一次传输。仲裁器无法预测何时在未定义长度突发结束时改变仲裁。
当主设备不请求总线时,可以授予总线。当没有主机请求总线并且仲裁器授予对默认主机的访问时,可能会发生这种情况。因此,重要的是,如果主机不需要访问总线,它将驱动传输类型HTRAN以指示空闲传输。

3.11.2 授予总线

仲裁器通过断言适当的HGRANTx信号来指示哪个总线主控器当前是请求总线的最高优先级。当当前传输完成时,如HREADY HIGH所示,则主控器将被授权,仲裁器将更改HMASTER[3:0]信号以指示总线主控器编号。
在这里插入图片描述
T2 请求总线
T4 得到授权
T5 给出主机标识,并给出地址
在这里插入图片描述
T2 请求总线
T4 给出授权
T5 HREADY有效。
T6 给出主机标识,并给出地址。
T7 由于wait,T7保持T6的地址。
T8 更新了地址
T9 读取写数据

在这里插入图片描述
T4 给M2授权
T5 由于wait,保持上一拍的信号
T6 M2获得主机标识,地址变更为M2
T7 由于wait,保持
T8 地址增加

在这里插入图片描述

T2 M1请求总线
T2 M1获得授权
T3 M1得到主机标识,对地址进行传输
T4 M2请求总线
T6 M2获得授权
T7 由于wait保持
T8 M2获得主机标识,对地址传输
在这里插入图片描述
由于使用了中央多路复用器,每个主控器都可以驱动出它希望立即执行的传输地址,并且不需要等待直到它被授予总线。HGRANTx信号仅由主设备用于确定其何时拥有总线,从而确定其何时应考虑地址已被适当的从设备采样。
HMASTER总线的延迟版本用于控制写数据多路复用器。

3.11.4 提前结束突发

通常,仲裁器在传输突发结束之前不会将总线移交给新的主控器。然而,如果仲裁器确定突发必须提前终止,以防止对总线的过多访问时间,则它可以在突发完成之前将授权转移到另一总线主控器。
如果主机在突发过程中失去总线所有权,则必须为总线重新仲裁,以完成突发。主设备必须确保HBURST和HTRANS信号适合于反映其不再需要执行完整的4、8或16拍突发的事实。
例如,如果主机只能完成8拍突发的3次传输,那么当它重新获得总线时,它必须使用合法的突发编码来完成剩余的5次传输。可以使用任何合法组合,因此可以接受5拍未定义长度突发或4拍固定长度突发,然后是单拍未定义的长度突发。

3.11.5 锁定传输

仲裁器必须观察来自每个主机的HLOCKx信号,以确定主机何时希望执行锁定的传输序列。然后,仲裁器负责确保在锁定序列完成之前,没有其他总线主控器被授予总线。
在一系列锁定传输之后,仲裁器将始终允许总线主控器进行额外传输,以确保锁定序列中的最后一次传输已成功完成,且未收到SPLIT or RETRY响应。
因此,建议(但不是强制性的)主机在任何锁定序列之后插入空闲传输,以在开始另一个传输突发之前提供仲裁改变的机会。
仲裁器还负责断言HMASTLOCK信号,该信号具有与地址和控制信号相同的时序。该信号向任何从设备指示当前传输已锁定,因此必须在任何其他主设备被授予总线之前进行处理。

3.11.6 默认总线主机

每个系统必须包括一个默认总线主控器,如果所有其他主控器无法使用总线,则授予该总线。授予时,默认总线主控器只能执行空闲传输。
如果没有主控器请求总线,则仲裁器可以授予默认主控器,或者它可以授予将从对总线的低访问延迟中受益最大的主控器。
授予对总线的默认主访问权还提供了一种有用的机制,用于确保在总线上不启动新的传输,并且是在进入低功率操作模式之前要执行的有用步骤。
如果所有其他主机正在等待SPLIT传输完成,则必须授予默认主机。

3.12.0 SPLIT传输

SPLIT传输通过将向从设备提供地址的主设备的操作与用适当数据响应的从设备的操作SPLIT来提高总线的整体利用率。
当传输发生时,如果从属设备认为传输将需要大量周期才能执行,则它可以决定发出SPLIT响应。这向仲裁器发出信号,表示在从设备指示其准备完成传输之前,不应授予尝试传输的主设备访问总线的权限。因此,仲裁器负责观察响应信号并在内部屏蔽来自已SPLIT的主机的任何请求。
在传输的地址阶段,仲裁器在HMASTER[3:0]上生成一个标签或总线主机号,用于标识正在执行传输的主机。发出SPLIT响应的任何从机必须能够指示其可以完成传输,并通过在HMASTER[3:0]信号上记录主机编号来完成此操作。
随后,当从机可以完成传输时,它根据主机编号在从机到仲裁器的HSPLITx[15:0]信号上断言适当的位。仲裁器然后使用该信息来解除来自主机的请求信号的屏蔽,并且在适当的时候,主机将被授予对总线的访问权以重试传输。仲裁器在每个周期对HSPLITx总线进行采样,因此从机只需要为单个周期断言适当的位,以便仲裁器识别它。
在具有多个可SPLIT的从机的系统中,来自每个从机的HSPLITx总线可以一起被“或”以向仲裁器提供单个结果HSPLIT总线。
在大多数系统中,将不使用16个总线主控器的最大容量,因此仲裁器仅需要具有与总线主控相同位数的HSPLIT总线。但是,建议将所有具有SPLIT功能的从设备设计为支持最多16个主设备。

reference

AMBA™ Specification(Rev 2.0)
AMBA® 3 AHB-Lite Protocol v1.0


都看到这儿了,点个赞吧!
||
\/

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值