AHB 总线有 2 个阶段,地址阶段和数据阶段。
任何AHB(“AMBA 2 AHB”或“AMBA 3 AHB-lite”或“AMBA 5 AHB”)从机都必须具有HREADY作为输入和输出端口(不是双向的)。
从机需要HREADY作为输出,以便从机可以扩展传输的数据阶段。
还需要HREADY作为输入,以便从机可以确定先前选择的从机何时完成其最终传输以及该从机的第一个数据阶段传输即将开始。
每个 AHB 从设备都应该有一个HREADY输出信号(通常称为HREADYOUT),它连接到“从设备到主设备的多路复用器”。该多路复用器的输出是 AHB 主机看到的全局HREADY信号,该信号也作为其HREADY输入反馈给所有从机。
对于单个 AHB 从总线,这个“从机到主机多路复用器”被直接连接所取代,因此从机的HREADYOUT驱动 AHB 主机的HREADY输入,同时也反馈到从机的HREADY输入。
HREADY 是来自每个从站的输出信号,它被路由到每个主站和每个从站。这意味着每个从站将有 2 个 HREADY 信号HREADY_in 和 HREADY_out。
AHB 从机的 HREADY 输出信号是从机指示“扩展”AHB 传输的数据阶段。如果从机无法立即响应,则通常会发生这种情况,因此该从机将 HREADY信号输出置为“0”值,以告知主机延长数据阶段,以便从机有足够的时间响应。地址阶段不能根据定义进行扩展,因此所有从机必须在此期间对地址进行采样。
然而,重要的是要记住,如果从机“扩展”的数据阶段与地址阶段重合,那么这将产生这个地址阶段被扩展的副作用。
HREADY 信号既是从机的输入又是从机的输出。
Q. 为什么 HREADY 是从机的 输出?
A. HREADY 是来自从机的输出,因此如果需要更多时间,它可以扩展数据阶段
Q. 为什么 HREADY 是从机的输入?
A. 这是为了让总线上的所有从站都知道系统上是否有任何从站请求“扩展”数据阶段,如果是这样,那么任何其他从机可能不会开始响应任何可能与数据阶段重合的“地址”阶段。
事实上,来自每个从站的 HREADY 输出被“与”在一起以提供系统范围的 HREADY 信号,
该信号作为 HREADY 输入馈送到每个从站。
因此,如果任何从机将 HREADY 置为低电平,则该系统范围的 HREADY 信号(即所有从机的所有HREADY 输出的与)变为低电平。并且由于这个 ANDed HREADY 信号作为输入进入每个从站,每个从站等待这个 ANDed HREADY 变为“1”,然后它们才能响应。
因此,每个 AHB 从机必须有一个 HREADY 输出才能扩展数据阶段,并且每个 AHB 从机必须有一个 HREADY 输入,以了解系统上是否有任何其他从机正在请求数据相位扩展,并且如果任何从机的输入 HREADY 为“0”,则该从机必须等待其 HREADY 输入变为“ 1',在它可以响应任何 AHB 请求之前。