介绍:AMBA AHB-Lite 满足高性能可综合设计的需求。它是一种总线接口,支持单个总线主控,并提供高带宽操作。

AHB-Lite 实现了高性能、高时钟频率系统所需的功能,包括:
• 突发传输
• 单时钟边沿操作
• 非三态实现
• 宽数据总线配置,64、128、256、512 和 1024 位

最常见的 AHB-Lite 从设备是内部存储器设备、外部存储器接口和高带宽外设。虽然低带宽外设也可以作为 AHB-Lite 从设备,但出于系统性能的考虑,它们通常位于 AMBA 高级外设总线(APB)上。通过一个称为 APB 桥的 AHB-Lite 从设备来实现高层总线和 APB 之间的桥接。
image

上图展示了一个单主站 AHB -Lite 系统设计,其中包含一台 AHB -Lite 主站和三台 AHB -Lite 副站。总线互连逻辑由一个地址解码器和一个从站至主站的多路复用器组成。该解码器负责监控来自主站的地址信号,从而选择相应的从站;随后,多路复用器将该从站输出的数据路由回主站。因此AHB的主要构成就是主机、从机、解码器、多路复用(用于路由回数据到主机)。

1.结构

1)主机(Master)

image

2)从机(Slave)

image

3)解码器(Decoder)

该组件负责解码每次传输所涉及的地址,并为参与此次传输的从设备提供选通信号;同时,它还向多路复用器提供控制信号。在所有使用两个或更多从设备的 AHB -Lite 实现方案中,均需配置一个集中式解码器。AHB解码器产生的HSELx信号,其核心作用就是唯一地标识当前传输所选择的从机,这个信号会被同时用于两个目的:

  • 选通目标从机:将HSELx信号发送给总线上的所有从机,只有被选中的从机(即HSELx为高)才会响应本次传输。
  • 控制返回多路复用器:将同一个HSELx信号(或其直接派生信号)作为多路复用器的选择控制,从而将选中从机的读数据、响应信号等路由回主机。

4)多路复用(Multiplexor)

需使用从设备至主设备的多路复用器,将来自从设备的读取数据总线及响应信号进行多路复用,传输至主设备;该解码器负责为该多路复用器提供控制信号。
在所有使用两个或更多从设备的 AHB -Lite 实现方案中,均需配置一个集中式多路复用器。

2.操作

主设备通过驱动地址信号与控制信号来启动数据传输。这些信号提供了关于传输地址、方向、传输宽度的信息,并用于指示该传输是否属于突发传输的一部分。数据传输类型包括:
• 单次传输;
• 不在地址边界处循环的递增突发传输;
• 在特定地址边界处循环的循环突发传输。

写入数据总线将数据从主设备传输至从设备,而读取数据总线则将数据从从设备传输至主设备。每次数据传输均包含:地址阶段(一个地址及一个控制周期)和数据阶段(一个或多个数据传输周期)。

从设备无法请求延长地址阶段,因此所有从设备都必须能够在该时间段内对地址进行采样。然而,从设备可通过使用 HREADY 信号请求主设备延长数据阶段。当该信号为低电平时,系统会在数据传输过程中插入等待状态,从而使从设备拥有额外的时间来提供或采样数据。(这一点与APB一致)。

3.信号描述

1)全局信号(时钟和复位)
image

  • 时钟信号:每个 AHB -Lite 组件均使用单个时钟信号 HCLK 。所有输入信号均在 HCLK 的上升沿进行采样;所有输出信号的变化均须在 HCLK 的上升沿之后发生。

  • 复位信号:复位信号 HRESETn 是 AHB -Lite 协议中唯一的低电平有效信号,也是所有总线元件的主复位信号。该复位信号可异步置位,但在 HCLK 的上升沿之后会同步清零。在复位期间,所有主设备必须确保其地址和控制信号处于有效电平,且 HTRANS[1:0]表示IDLE状态;所有从设备则必须确保hreadyout为高电平。

2)主机信号
image
image

  • 主机到从机写数据传输(HWDATA):在写入传输过程中,主设备负责驱动写入数据总线。若传输数据宽度超过总线宽度,则主设备必须保持数据有效状态直至传输完成(此时 HREADY 高电平表示传输已完成)。对于数据宽度小于总线宽度的传输(例如在 32 位总线上进行 16 位传输),主设备仅需驱动相应的字节通道;而从设备则从正确的字节通道中选取写入数据。由于 AHB -Lite 并未规定必须采用的字节序,因此确保总线上的所有主设备与从设备均采用相同的字节序至关重要。

3)从机信号
image

  • 在读取传输过程中,从设备负责驱动读取数据总线。若从设备通过保持 HREADY 为低电平来延长读取传输,则该从设备仅需在传输的最后一个时钟周期内提供有效数据(此时 HREADY 为高电平)。对于传输宽度小于总线宽度的情况,从设备仅需在有效字节通道上提供有效数据;主设备则从相应的字节通道中选取数据。从设备仅需在传输完成并收到“OKAY”响应时提供有效数据;而错误响应则无需提供有效读取数据。

4)解码器信号
image

5)多路复用信号
image

6)字节顺序

所有模块必须采用相同的字节序,且所有数据路由设备或网桥也必须采用相同的字节序,以确保系统正常运行。

动态字节序不被支持,因为在大多数嵌入式系统中,采用动态字节序会带来显著的冗余硅片资源开销。

4.数据宽度

该协议支持 AHB -Lite 数据总线的宽度为 8、16、32、64、128、256、512 或 1024 位。然而,建议至少使用 32 位的总线宽度;

对于几乎所有应用而言,最大 256 位的总线宽度均足够使用。在进行读写传输时,接收模块必须从总线上的正确字节通道中选取数据;无需在所有字节通道上进行数据复制。

1)在宽总线上传递窄从设备信号

image
在将窄总线转换为较宽总线时,可采用以下任一方法:
• 将数据复制到较宽总线的两个半段上,也就是上图,HADDR[2]会控制发送给从机高32位还是低32位,如果都需要,就分两拍发送,先发送低位再发送高位,对于从机返回的数据都是放在低332位,高位永远补零,这是一种选通机制;使用额外的逻辑电路确保仅对总线的相应半段进行修改,这种方式可降低功耗。
• 从设备仅能接受宽度与其原生接口宽度相同的传输;若主设备发起的传输宽度超过从设备所支持的范围,则从设备可采用错误传输响应机制。最简单的办法就是直接报错,但是和可以设计选通信号决定选通位数来适配窄从机位宽,也可以在从机内部设计FIFO来暂时存储,让从机分时处理。

2)在窄总线架构上传递宽从设备信号

image
可以通过使用外部逻辑,使预设或导入的从设备适配于更窄的数据总线环境。
这个时候宽从机内部都设有64位的寄存器,这样的话接收到完整的64位数据才开始处理。

3)在宽总线上传输主控信号

主控信号在 AHB 总线里特指控制信号(Control Signals)和地址信号(Address Signals)。它们的位宽是窄的(通常为 1 位、2 位、3 位或 32 位地址线),绝对不是像数据总线那样的“宽位宽”(如 64 位、128 位)。

在 AHB(AMBA 2.0/3.0)这类并行总线中,地址、数据、控制是三种并列的信号组,它们像高速公路上的并排行车道:
数据车道(64位宽):HWDATA[63:0] 和 HRDATA[63:0],专门负责搬货(大数据负载)。
地址车道(32位宽):HADDR[31:0],专门告诉从机去哪搬。
控制车道(1~3位宽):HWRITE(1位)、HSIZE[2:0](3位)、HTRANS[1:0](2位)等,专门负责下命令。

可以对主设备进行修改,使其支持比原设计更宽的总线,其操作方式与对从设备进行修改以支持更宽总线的方式相同。具体操作如下:
• 对输入总线进行多路复用
• 对输出总线进行复制

5.传输

1)简单传输

AHB -Lite 数据传输过程包含两个阶段:
第一阶段为单个 HCLK 周期的地址传输(除非该周期因前一次总线传输而延长);
第二阶段为可能需要多个 HCLK 周期的数据传输,可利用 HREADY 信号来控制完成此次传输所需的时钟周期数。

HWRITE 信号用于控制数据向主设备或从设备传输的方向。因此,当:
• HWRITE 为高电平时,表示进行写入传输,主设备将数据广播至写入数据总线(即 HWDATA [31:0]);
• HWRITE 为低电平时,表示进行读取传输,从设备需在读取数据总线(即 HRDATA [31:0])上生成数据。
最简单的数据传输方式不包含等待状态,因此该传输过程仅包含一个地址周期和一个数据周期。
读(低电平)
image
写(高电平)
image
在无等待状态的简单传输过程中:

  1. 主设备在 HCLK 信号的上升沿之后,将地址信号和控制信号驱动至总线;
  2. 从设备随后在 HCLK 信号的下一个上升沿对地址及控制信息进行采样;
  3. 从设备完成地址与控制信号的采样后,即可开始驱动相应的 HREADY 响应;该响应由主设备在 HCLK 信号的第三个上升沿时进行采样。传输时HREADY拉低就能延长读取数据的时间。
    HREADY拉低等待一个周期读过程
    image
    HREADY拉低等待一个周期写过程
    image
    真实传输时序图
    image
    向地址 A 和 C 的数据传输需经过零个等待状态; 向地址 B 的数据传输需经过一个等待状态;延长向地址 B 进行数据传输的数据阶段,可实现延长向地址 C 进行数据传输的地址阶段。

2)传输类型
有四种传输类型,分别是IDLE,BUSY,NONSEQ,SEQ
b00(IDLE):表示无需进行数据传输。当主设备不想执行数据传输时,可采用 IDLE 传输模式;建议主设备通过 IDLE 传输来终止处于锁定状态的传输。从设备在响应 IDLE 传输时必须始终返回“OKAY”状态的零等待响应,且该传输应被从设备忽略。

b01(BUSY):BUSY传输类型允许主设备在突发传输过程中插入空闲周期。该传输类型表示主设备正在继续执行突发传输,但下一次传输无法立即进行。当主设备使用BUSY传输类型时,其地址和控制信号必须反映突发传输中的下一次传输。仅长度未定义的突发传输可将BUSY传输设为突发传输的最后一个周期。如需更多信息,请参阅第3-10页“BUSY传输后的突发传输终止”章节。从设备必须对BUSY传输始终返回“OKAY”零等待状态响应,且该传输应被从设备忽略。

b10(NONSEQ):表示单次传输或突发传输中的首次传输。地址与控制信号与前次传输无关。总线上的单次传输被视为长度为1的突发传输,因此该传输类型属于非顺序传输。

b11(SEQ):突发传输中的其余传输均为顺序执行,且当前传输的地址与前次传输相关联。控制信息与前次传输相同。当前传输的地址等于前次传输的地址加上传输大小(以字节为单位),其中传输大小由 HSIZE [2:0] 信号指示。在循环突发传输的情况下,传输地址在地址边界处进行循环。

image

  • T0-T1:第4个读取周期始于一次 NONSEQ 传输。
  • T1-T2:主设备无法执行第二个读取周期,因此插入一次BUSY传输以延迟第二个读取周期的开始;此时从设备为第一个读取周期提供读取数据。
  • T2-T3:主设备现已准备好开始第二个读取周期,因此发出SEQ传输信号;主设备忽略从设备在读取数据总线上提供的任何数据。
  • T3-T4:主设备执行第三个读取周期;此时从设备为第二个读取周期提供读取数据。
  • T4-T5:主设备执行最后一个读取周期;此时从设备无法完成传输,因此使用 HREADY 指令插入一个单个等待状态。
  • T5-T6:从设备为第三个读取周期提供读取数据。
  • T6-T7:从设备为最后一个读取周期提供读取数据。

3)锁定传输

若主设备需要锁定访问权限,则必须同时激活hmastlock信号。该信号向所有从设备表明当前传输序列不可分割,因此必须在处理任何其他事务之前先完成当前传输序列的处理。通常,锁定传输机制用于维护信号量的完整性——即确保从设备在执行微处理器 SWP 指令的读取阶段与写入阶段之间不执行其他操作。
image

4)传输大小
由 HSIZE 设置的传输大小必须小于或等于数据总线的宽度。例如,对于 32 位数据总线, HSIZE 仅可使用值 b000、b001 或 b010。
image

5)突发传输
突发传输包括:4个、8个及16个数据块组成的突发传输、长度不固定的突发传输以及单次数据传输。
AHB协议支持递增式突发传输与循环式突发传输:

• 递增式突发传输访问连续地址空间,且突发中每个数据传输的地址均等于前一个地址的递增值;
• 循环式突发传输在跨越地址边界时实现循环切换。地址边界计算方式为:突发中数据块数量与数据传输大小的乘积。数据块数量由参数 HBURST 控制,数据传输大小由参数 HSIZE 控制。例如,一个由4个数据块组成的循环式突发传输(每个数据块为4字节)会在16字节的地址边界处进行循环切换;因此,若该数据传输的起始地址为 0x34,则该传输将包含四次数据传输,分别指向地址 0x34、0x38、0x3C 和 0x30。

通过3bit来控制突发传输类类型
image
主设备不得尝试启动跨越 1 KB 地址边界的递增突发传输。主设备可采用以下任一方式执行单次传输:
• 单次突发传输
• 长度为 1 的未定义长度突发传输