AHB(Advanced High Performance Bus)协议规范

本文深入探讨了Advanced High Performance Bus (AHB)协议,它是ARM公司的一种高性能总线标准。AHB协议支持多种操作模式,包括基本传输、突发传输、锁定传输和等待状态,适用于多主机系统。协议详细描述了地址和数据信号、传输类型、保护控制以及总线互连组件。此外,还讨论了如何在宽总线和窄从机之间实现兼容性,以及如何处理错误响应和安全传输。AHB协议的灵活性和高性能使其成为嵌入式系统设计的理想选择。

AHB(Advanced High Performance Bus)协议规范

参考:ARM (IHI 0033B.b) AMBA 5 AHB Protocol Specification : AHB5, AHB-Lite

文章目录

一. 介绍

出于说明目的,本规范中使用了32位数据总线。但允许额外的数据总线宽度,如后文6.3数据总线宽度所示。

1.1 关于协议

AMBA AHB是一个适合高性能可综合设计的总线接口。它定义了组件之间的接口,如主组件、互连组件和从组件。

最常见的AHB从机是内部存储器设备、外部存储器接口和高带宽外设。 尽管低带宽外设可以作为AHB从机,但出于系统性能原因,它们通常位于AMBA高级外设总线(APB)上。更高性能的AHB和APB之间的桥接是使用AHB从机完成的,称为APB桥。

图1-1显示了带有AHB主设备和三个AHB从设备的单主AHB系统设计。总线互连逻辑由一个地址解码器和一个从机到主机多路复用器组成。解码器监控来自主机的地址,以便选择合适的从机,多路复用器将相应的从机输出数据路由回主机。
在这里插入图片描述
AHB还通过使用互连组件支持多主机设计,该互连组件提供仲裁并将信号从不同主机路由到适当的从机。

1.1.1 主机

主机提供地址和控制信息来启动读写操作。图1-2显示了一个主机接口。
在这里插入图片描述

1.1.2 从机

从机响应系统中主机发起的传输。从机使用来自解码器的HSELx选择信号来控制何时响应总线传输。

从机向主机发回信号:

  • 总线传输的完成或延长。
  • 总线传输的成功或失败。

图1-3显示了一个从机接口。
在这里插入图片描述

1.1.3 互连

互连组件提供系统中主设备和从设备之间的连接。

单个主系统只需要使用解码器多路复用器,如下节所述。

多主机系统需要使用互连,该互连提供仲裁以及从不同主机到适当从机的信号路由。地址、控制和写数据信令需要这种路由。

解码器

该组件对每次传输的地址进行解码,并为参与传输的从机提供选择信号。它还向多路复用器提供控制信号。在所有使用两个或更多从设备的实现中,都需要一个集中式解码器。

多路复用器

需要一个从机到主机的多路复用器来多路复用从机到主机的读数据总线和响应信号。解码器为多路复用器提供控制。在所有使用两个或更多从机的实现中,都需要一个集中式多路复用器。

1.2 AHB修订版(略)

1.3 操作

主机通过驱动地址和控制信号开始传输。这些信号提供有关传输地址、方向、宽度的信息,并指示传输是否构成突发的一部分。传输可以是:

  • 单次。
  • 不在地址边界换行的递增突发。
  • 在特定地址边界换行的换行突发。

写数据总线将数据从主机移动到从机,读数据总线将数据从从机移动到主机。

每次传输包括:

地址阶段——一地址和控制周期。
数据阶段——数据的一个或多个周期。

从机不能请求延长地址阶段,因此所有从机必须能够在此期间对地址进行采样。但是,从机可以使用HREADY请求主机扩展数据阶段。该信号为低电平时,会将等待状态插入传输,使从机有额外时间提供或采样数据。从机使用HRESP来指示传输的成功或失败。

二. 信号描述

2.1 全局信号

在这里插入图片描述

2.2 主机信号

在这里插入图片描述
在这里插入图片描述

2.3 从机信号

在这里插入图片描述

2.4 解码器信号

在这里插入图片描述
通常,解码器还向多路复用器提供HSELx信号,或从HSELx信号导出信号/总线,以使多路复用器能够将适当的信号从选定的从机路由到主机。重要的是,这些额外的多路复用器控制信号被重定时到数据阶段。

2.5 多路复用器信号

在这里插入图片描述

三. 传输

3.1 基本传输(读写时序)

传输包括两个阶段:

Address:持续一个HCLK周期,除非它被前一个总线传输延长。
Data:可能需要几个时钟周期。使用HREADY信号控制完成传输所需的时钟周期数。

HWRITE控制与主机之间的数据传输方向。因此,当:

  • HWRITE为高电平时,表示写传输,主机在写数据总线上广播数据,HWDATA[31:0]
  • HWRITE为低电平时,执行读传输,从机在读数据总线上生成数据,HRDATA[31:0]

最简单的传输没有等待状态,因此传输由一个地址周期和一个数据周期组成。图3-1显示了一个简单的读传输,图3-2显示了一个简单的写传输。
在这里插入图片描述
在没有等待状态的简单传输中:

  1. 主机在HCLK上升沿后将地址和控制信号驱动到总线上。
  2. 然后,从机在HCLK的下一个上升沿采样地址和控制信息。
  3. 从机对地址和控制进行采样后,可以开始驱动相应的HREADYOUT响应。主机在HCLK的第三个上升沿对该响应进行采样。

这个简单的示例演示了在不同的时钟周期内,传输的地址和数据阶段是如何发生的。任何传输的地址阶段都发生在前一次传输的数据阶段。 地址和数据的这种重叠是总线流水线特性的基础,能够实现高性能操作,同时仍然为从机提供足够的时间来响应传输。

从机可以在任何传输中插入等待状态,以获得额外的完成时间。每个从机都有一个HREADYOUT信号,在传输的数据阶段驱动。该互连负责组合来自所有从机的HREADYOUT信号,以生成用于控制整体进度的单个HREADY信号

图3-3显示了具有两个等待状态的读传输。
在这里插入图片描述
图3-4显示了具有一个等待状态的写传输。
在这里插入图片描述
当以这种方式扩展传输时,它具有扩展下一次传输的地址阶段的副作用。 图3-5显示了对不相关地址A、B和C的三次传输,其中地址C的地址阶段延长。
在这里插入图片描述
在图3-5中:

  • 到地址A和C的传输是零等待状态
  • 到地址B的传输是一个等待状态
  • 将到地址B传输的数据阶段扩展具有将到地址C传输的地址阶段扩展的效果

3.2 传输类型(HTRANS——IDLE,BUSY,NONSEQ,SEQ)

根据HTRANS[1:0]的控制,传输可以分为四种类型之一。表3-1列出了这些。
在这里插入图片描述
图3-6显示了NONSEQ、BUSY和SEQ传输类型的使用。
在这里插入图片描述
在图3-6中:

T0-T1 4拍读取从一次NONSEQ传输开始。
T1-T2 主机无法执行第二拍,插入一个BUSY传输来延迟第二拍的开始。从机提供第一拍的读取数据。
T2-T3 主机现在准备开始第二拍,所以SEQ传输信号出现。主机忽略从机在读数据总线上提供的任何数据。
T3-T4 主机执行第三拍。从机提供第二拍的读取数据。
T4-T5 主机执行最后一拍。从机无法完成传输,使用HREADYOUT插入单个等待状态。
T5-T6 从机提供第三拍的读取数据。
T6-T7 从机提供最后一拍的读取数据。

3.3 锁定传输(HMASTLOCK)

如果主机要求锁定访问,那么它还必须声明HMASTLOCK信号。该信号向任何从机指示当前传输序列不可分割,因此必须在处理任何其他传输之前进行处理。 通常,通过确保从机在微处理器SWP指令的读和写阶段之间不执行其他操作,锁定传输用于维护信号量的完整性。

图3-7显示了带有微处理器SWP指令的HMASTLOCK信号。
在这里插入图片描述
(锁定传输后,建议主机插入空闲传输。)

大多数从机不需要实现HMASTLOCK,因为它们只能按照接收的顺序执行传输。可以被多个主设备访问的从设备,例如,多端口内存控制器(MPMC)必须实现HMASTLOCK信号。

3.4 传输尺寸(HSIZE)

HSIZE[2:0]表示数据传输的大小。表3-2列出了可能的传输大小。
在这里插入图片描述
HSIZE设置的传输大小必须小于或等于数据总线的宽度。 例如,对于32位数据总线,HSIZE必须只使用0b000、0b001或0b010。)

HSIZEHBURST结合使用,以确定换行突发的地址边界。HSIZE信号的时序与地址总线完全相同。然而,它们必须在整个突发传输中保持不变。

3.5 突发操作(HBURST——SINGLE,INCR4/8/16,WRAP4/8/16)

4拍、8拍和16拍的突发、长度不确定的突发和单次传输在该协议中定义。它支持递增和换行:

  • 递增突发访问顺序位置,突发中每次传输的地址是前一个地址的增量。
  • 换行突发跨越地址边界时换行。地址边界计算为突发中的节拍数和传输尺寸的乘积。拍数由HBURST控制,传输大小由HSIZE控制。例如,字(4字节)的四拍换行突发访问16字节边界时换行。因此,如果突发的起始地址是0x34,那么它包括4次到地址0x34、0x38、0x3C和0x30的传输。

HBURST[2:0]控制突发类型。表3-3列出了可能的突发类型。
在这里插入图片描述
主机不得试图启动跨越1KB地址边界(如0x400、0x800、0xc00及其倍数等)的递增突发。

主机可以使用以下任一方式执行单次传输:

  • 单次传输突发。
  • 长度为1的未定义长度突发。

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

3.5.1 BUSY传输后突发终止</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值