设为首页 加入收藏

TOP

AHB总线协议(二)(三)
2019-08-24 00:03:25 】 浏览:146
Tags:AHB 总线 协议
成功完成并且没有接收到 SPLIT 或者 RETRY 响应。因此建议但不规定,主机在任何锁定连续传输之后插入一个空闲传输以提供给仲裁器在着手另外一个突发传输之前改变(总线授予)的机会。
仲裁器也负责断言 HMASTLOCK 信号, HMASTLOCK 信号和地址以及控制信号有相同的时序。该信号指示每个从机当前传输是锁定的因此必须在其他主机被授予总线之前被处理掉。

7.5默认总线主机

每个系统必须包含一个默认总线主机,如果所有其他主机不能使用总线时该主机被授予总线。当被授予总线时,默认主机必须只能执行空闲(IDLE)传输。
如果没有请求总线那么仲裁器可以授予默认主机(访问总线)或者访问总线延时较低的主机将因此受益而被授予总线。
授予默认主机访问总线也为确保在总线上没有新的传输开始提供了一个有用的机制并且也是预先进入低功耗操作模式的有用步骤。
如果其他所有主机都在等待 SPLIT 传输完成时默认主机必须被授予总线。

7.6 分块传输

分块传输通过根据从机的响应操作来分离(或者分块)主机操作以给从机提供地址和合适的数据,提高了总线的总体使用率。
当传输产生时如果从机认为传输的执行将占据大量的时钟周期那么从机能够决定发出一个 SPLIT 响应。该信号提示仲裁器尝试这次传输的主机不应该被授予访问总线,直到从机表示它准备好了完成传输时。因此仲裁器负责监视响应信号并且在内部屏蔽已经是 SPLIT传输主机的任何请求。
在传输的地址相位期间仲裁器在 HMASTER[3: 0]产生一个标记,或者总线主机序号,以表示正在执行传输的主机。任何一个发出 SPLIT 响应的从机必须表示它有能力完成这个传输,并且通过记录 HMASTER[3: 0]信号上的主机序号来实现。之后,当从机能够完成传输时,它就根据主机序号在从从机到主机的 HSPLITx[15: 0]信号上断言适当的位。然后仲裁器使用这个信息来解除来自主机请求信号的屏蔽并且主机将被及时授予访问总线以重试传输。仲裁器在每个时钟周期采样 HSPLITx 总线因此从机只需要断言适当的位一个周期以便仲裁器能够识别。
如果系统中有多个具有 SPLIT 能力的从机那么每个从机的 HSPLITx 总线可以逻辑或在一起以提供给仲裁器单个 HSPLIT 总线。
大多数系统中并没有用到最大 16 个总线主机的能力因此仲裁器仅要求一个位数和总线主机数量一样的 HSPLIT 总线。但是,建议所有有 SPLIT 能力的从机被设计成支持高达 16个主机。

分块传输顺序
SPLIT 传输的基本步骤如下:
1、 主机以和其他传输一样的方式发起传输并发出地址和控制信息;
2、 如果从机能够立刻提供数据那么它可以马上提供数据。如果从机确认获取数据可能会占据较多的周期那么它给出一个 SPLIT 传输响应;
每次传输中仲裁器广播一个序号或者标记,表示哪个主机正在使用总线。从机必须记录该序号,以便用来在之后的一段时间重新发起传输;
3、 仲裁器授予其他主机使用总线并且 SPLIT 响应的动作允许主机移交总线。如果所有其他主机也接收到一个 SPLIT 响应那么默认主机将被授予总线;
4、 当从机准备完成传输那么它断言 HSPLITx 总线中的适当位给仲裁器以指示哪个主机应该被重新授予访问总线;
5、 仲裁器每个时钟周期监视 HSPLITx 信号,并且当 HSPLITx 中的任何一位被断言仲裁器将恢复对应主机的优先级;
6、 最后仲裁器将授予(SPLIT 的)主机总线,因此主机能重新尝试传输。如果一个优先级更高的主机正在使用总线的话这可能不会立刻发生;
7、 当传输终于开始后从机以一个 OKAY 传输响应来结束(传输)。
多重分块传输
总线协议只允许每个总线主机有一个未完成的处理。如果任何主机模块能够处理多于一个未完成的处理那么它需要为能够处理的每个未完成处理设置一个额外的请求和授予信号。
在协议级上一个信号模块可以表现为许多不同总线主机,每个主机只能有一个未完成的处理。
然而,可能一个有 SPLIT 能力的从机会接收比它能并发处理的(传输)还要多的传输请求。如果这种情况发生那么从机可以不用记录对应传输的地址和控制信息而仅需要记录主机序号就发出 SPLIT 响应。之后从机可以通过断言 HSPLITx 总线中适当的位给之前被给出SPLIT 响应的所有主机来表示它能处理另外一个传输,但是从机没有记录地址和控制信息。
之后仲裁器能够重新授予这些主机访问总线并且它们将重试传输,给出从机要求的地址和控制信息。这表示一个主机可以在它最终完成它要求的传输之前被多次授予总线。
预防死锁
SPLIT 和 RETRY 传输响应都必须在使用中注意预防总线死锁。单个传输决不会锁定AHB,因为每个从机必须被设计成能在预先确定的周期数内完成传输。但是,如果多个不同主机试图访问同一个从机,从机发出 SPLIT 或者 RETRY 响应以表示从机不能处理,那么就有可能发生死锁

分块传输
从机可以发出 SPLIT 传输响应,通过确保从机能够承受系统中每个主机(最多 16 个)的单个请求来预防死锁。从机并不需要存储每个主机的地址和控制信息,它只需要简单的记录传输请求已经被处理和 SPLIT 响应已经发出的事实即可。最后所有主机将处在低优先级然后从机可以有次序的来处理这些请求,指示仲裁器正在服务于哪个请求,因而确保了所有请求最终都被服务。
当从机有许多未完成的请求时它可能以任何顺序(随机的)来选择处理这些请求,尽管从机需要注意锁定传输必须在任何其他传输继续之前完成。
从机使用 SPLIT 响应而不用锁存地址和控制信息显得非常合法(合适)。从机仅需要记录特定主机做出的传输尝试并且稍后的时间段从机通过指示自己已经准备好完成传输就能获取地址和控制信息。主机将被授予总线并将重新广播传输,允许从机锁存地址和控制信息并且立刻应答数据,或者发出另外一个 SPLIT 响应如果还需要额外的一些周期的话。
理想情况下从机不应该有多于它能支持的未完成传输,但是要求支持这种机制以防止总线死锁。
重试传输
发出 SPLIT 响应的从机必须一次只能被一个主机访问。在总线协议中并没有强制而在系统体系结构中应该确保这一点。大多数情况下发出 RETRY 响应的从机必须是一次只能被一个主机访问的外设,因此这会在一些更高级协议中得到确保。
硬件保护和多主机访问 RETRY(响应)的从机相违背并不是协议中的要求,但是可能会在下文描述的设计中得到执行。仅有的总线级要求是从机必须在预先确定的时钟周期内驱动 HREADY 为高。
如果要求硬件保护那么这可以被 RETRY(响应)的从机自己执行。当一个从机发出一个 RETRY 信号后它能够采样主机序号。在这之后和传输最终完成之前 RETRY 的从机可以检查做出的每次传输尝试以确保主机序号是相同的。如果从机发现主机号不一致那么它可以选择下列的行动方式:
一个错误响应;
一个信号给仲裁器;
一个系统级中断;

一个完全的系统复位。

7.7分块传输的总线移交

协议要求主机在接收到一个SPLIT或者RETRY响应后立刻执行一个空闲传输以允许总线转移给另外一个主机。 图 3.20表示了发生一个分块(SPLIT)传输的顺序事件。

image

需要注意以下的要点:
传输的地址在时间 T1 之后出现在总线上。在时钟沿 T2 和 T3 后从机返回两个周期的 SPLIT 响应;
在第一个响应周期的末尾,也就是 T3,主机能够检测到传输将会被分块因此(主机)改变接下来的传输控制信号以表示一个空闲传输; 同样也在时间 T3 处仲裁器采样响应信号并确定传输已经被分块

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

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目