设为首页 加入收藏

TOP

AHB总线协议(二)(二)
2019-08-24 00:03:25 】 浏览:145
Tags:AHB 总线 协议
输必须对齐到和传输大小相等的地址边界。例如,字传输必须对齐到字地址边界(也就是 A[1: 0] = 00),半字传输必须对齐到半字地址边界(也就是 A[0] = 0)。
对于宽度小于总线宽度的传输,例如一个在 32 位总线上的 16 位传输,那么总线主机仅需要驱动相应的字节通道。从机必须负责从正确的字节通道选择写数据。 下面两个表中分别表示了小端系统和大端系统中哪个字节通道有效。如果有要求,这些信息可以在更宽的总线应用中扩展。传输大小小于数据总线宽度的突发传输将在每拍突发中有不同有效字节通道。
有效字节通道取决于系统的端结构,但是 AHB 并不指定要求的端结构。因此,总线上所有主机和从机的端结构相同这点很重要。
HRDATA[31: 0]
读数据总线在读传输期间由合适的从机驱动。如果从机通过拉低 HREADY 扩展读传输那么从机只需要在传输的最后一个周期提供有效数据,由 HREADY 为高表示。
对于宽度小于总线宽度的传输从机仅需要在有效的字节通道提供有效数据,如下两个表所示。总线主机负责从正确的字节通道中选择数据。
当传输以 OKAY 响应完成时从机仅需提供有效数据。 SPLIT、 RETRY 和 ERROR 响应不需要提供有效的读数据。

image

为了使系统正确运行事实上所有模块都是相同端结构的并且任何数据通路或者桥接器也是相同端结构的。
不支持动态端结构,因为在大多数嵌入式系统中,这将导致明显的硅晶片较高,也就是多余的。
对于模块设计者而言建议只有应用场合非常宽泛的模块才应该被设计为双端结构的,通过一个配置引脚或者内部控制位来选择端结构。对于更多的特定用途的模块,固定端结构为大端或者小端将产生体积更小、功耗更低、性能更高的接口

7、仲裁

仲裁机制用来确保任意时刻只有一个主机能够访问总线。仲裁器的功能是检测许多不同的使用总线的请求和决定当前请求总线的主机中哪一个的优先级最高。仲裁器也接收来自从机需要完成 SPLIT 传输的请求。
任何没有能力执行 SPLIT 传输的从机不需要了解仲裁的过程,除非它们需要检测因为总线所有权改变而导致突发传输不能完成的情况。

以下给出对每个仲裁信号的简短描述:
HBUSREQx 被总线主机用来请求访问总线的总线请求信号。每个总线主机都有自己的连接到仲裁器的 HBUSREQx 信号并且任何一个系统中都可以有高达 16 个独立的总线主机
HLOCKx 由主机在请求总线的同时时断言的锁定信号。这提示仲裁器主机正在执行一系列不可分割的传输并且一旦锁定传输的第一个传输已经开始仲裁器不能授予任何其他主机访问总线。 HLOCKx 必须在涉及到的地址被寻址到之前至少断言一个周期,以防止仲裁器改变授予信号。
HGRANTx 授予信号由仲裁器产生并且表示相关主机是当前请求总线的主机中优先级最高的主机,(优先)考虑锁定传输和 SPLIT 传输。
主机在 HGRANTx 为高时获取地址总线的所有权并且在HCLK 的上升沿 HREADY 为高电平。
HMASTER[3: 0] 仲裁器使用 HMASTER[3: 0]信号表示哪一个主机当前被授予总线并且该信号可被用来控制中央地址和控制多路选择器。有 SPLIT 传输能力的从机也可以请求主机的序号以便它们能够提示仲裁器哪个主机能够完成一个 SPLIT 传输。
HMASTLOCK 仲裁器通过断言 HMASTLOCK 信号指示当前传输是一个锁定序列的一部分,该信号和地址以及控制信号有相同的时序。
HSPLIT[15: 0] 这 16 位有完整分块能力的总线被有分块(SPLIT)能力的从机用来指示哪个总线主机能够完成一个 SPLIT 传输。仲裁器需要这些信息以便于授予主机访问总线完成传输。

下列小节提供更多的信息:
请求总线访问;
授予总线访问;
突发提前终止;
锁定传输。

7.1请求总线访问

总线主机使用 HBUSREQx 信号来请求访问总线并且可以在任何周期请求总线。仲裁器将在时钟的上升沿采样(主机的)请求然后使用内部优先级算法来决定哪个主机将会下一个获得访问总线。
如果主机请求锁定访问(总线),那么主机也必须断言 HLOCKx 信号来提示仲裁器其它主机不应该被授予总线。
当一个主机被授予总线并且正在执行一个固定长度的突发,那么就没有必要继续请求总线以便完成传输。仲裁器监视突发的进程并且使用 HBURST[2: 0]信号来决定主机请求了多少个输入。如果主机希望在当前正在进行的传输之后执行另一个突发那么主机需要在突发中重新断言请求信号。
如果主机在一次突发当中失去对总线的访问那么它必须重新断言 HBUSREQx 请求线以重新获取访问总线。
对未定长度的突发主机应该继续断言请求直到已经开始最后一次传输。在未定长度的突发结束时仲裁器不能预知何时改变仲裁。
对于主机而言有可能当它未申请总线时却被授予总线。这可能在没有主机请求总线并且仲裁器将访问(总线)授予一个默认的主机时发生。因此,如果一个主机并没请求访问总线那么它驱动传输类型 HTRANS 来表示空闲传输显得很重要。

7.2授予总线访问

仲裁器通过断言适当的 HGRANTx 信号来表示请求总线的主机中哪个是当前优先级最高的。当前传输完成后,由 HREADY 为高时所表示,那么主机将被授予(总线)并且仲裁器将改变 HMASTER[3: 0]信号来表示总线主机序号。
下图表示了当所有传输都为零等待状态并且HREADY信号为高时的处理过程。

image

下图表示了在总线移交时等待状态的影响。

image

数据总线的所有权延时在地址总线的所有权之后。一次传输无论何时完成(由HREADY为高时所表示)然后占有地址总线的主机才能使用数据总线并且将继续占有数据总线直到传输完成。 下图表示当在两个总线主机之间移交总线时数据总线的所有权是如何转移的。

image

下图表示一个仲裁器如何能在一次突发传输结束时移交总线的例子。

仲裁器在倒数第二个(最后一个之前的)地址被采样时改变 HGRANTx 信号。新的HGRANTx 信息将在突发的最后一个地址被采样的同时被采样。

image

下图表示了HGRANTx和HMASTER信号是如何在系统中使用的。

image

注:因为使用了中央多路选择器,每个主机可以立刻输出它希望执行的地址而不需要等到被授予总线。HGRANTx 信号是仅被主机用来决定它何时拥有总线并因此需要考虑何时让地址被合适的从机采样。HMASTER 总线的延时版本被用来控制写数据多路选择器。

7.3 突发提前终止

通常仲裁器在突发传输结束之前不会将总线移交给一个新的主机。但是,如果仲裁器决定突发必须被提前终止以防止过长的总线访问时间那么它可能会在一个突发完成之前将(总线)授予转移给另外一个总线主机。
如果主机在突发传输中间失去了对总线的所有权那么它必须重新断言总线(请求)以完成突发。主机必须确保 HBURST 和 HTRANS 信号都被更新以反映主机不再执行一个完整的 4、 8 或者 16 拍的突发。
例如,如果一个主机仅能完成一个 8 拍突发的 3 个传输,那么当它重新获得总线时必须使用一个合法的突发编码来完成剩下的 5 个传输。主机可以使用任何合法组合,因此无论是5 拍未定长度的突发或者是 4 拍固定长度的突发然后跟上一个单拍未定长度的突发都是可以接受的。

7.4 锁定传输

仲裁器必须监视来自各个主机的 HLOCKx 信号以确定何时主机希望执行一个锁定连续传输。之后仲裁器负责确保没有其他总线主机被授予总线直到锁定传输完成。
在一个连续锁定传输之后仲裁器将总是为一个附加传输保持总线主机被授予(总线)以确保锁定序列的最后一个传输

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

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目