摘要:本文系统梳理 ARM AMBA 总线家族中 AHB 协议的演进脉络,覆盖 AMBA 2 AHB、AMBA 3 AHB-Lite 与 AMBA 5 AHB5 三个主要版本。内容从版本背景与对比总览出发,依次讲解 AHB2 的多主机仲裁与 Split 传输、AHB-Lite 的单主机精简架构及其信号与传输规则,再到 AHB5 在安全传输、排他访问、写选通、信号宽度属性、User 信号与奇偶校验等方面的扩展,最后介绍 Multi-layer AHB 互联矩阵结构,并附完整信号速查表,适合 SoC 设计与验证工程师作为 AHB 协议的系统性参考。
一、版本介绍
AMBA(Advanced Microcontroller Bus Architecture)是 ARM 公司推出的片上系统(SoC)互联标准,自 1996 年发布至今已历经 AMBA 1 → AMBA 5 五个主要版本。AHB(Advanced High-performance Bus)是 AMBA 总线家族中面向高性能、高时钟频率、低延迟的核心总线协议。
AHB 协议相较于简单的 APB,具有以下显著特点:
流水线(Pipelined)操作:地址相位与数据相位分离,地址相位占用一个周期,数据相位可通过 HREADY 反压扩展。
突发(Burst)传输:支持 INCR、WRAP、SINGLE 等多种突发模式,每次仅发送首地址即可完成整笔传输。
多主机(Multi-master)支持:AHB2 原生支持多主机仲裁;AHB-Lite 精简为单主机,但可通过 Multi-layer 互联实现多主机。
Split 传输(AHB2):Slave 可分离当前传输以释放总线,待数据就绪后再恢复。
信号级编码:HTRANS[1:0]、HSIZE[2:0]、HBURST[2:0]、HPROT[3:0]/[6:0] 等编码位域清晰,便于硬件实现。
Table1.1 AMBA 版本演进与 AHB 的关系
|
AMBA 版本 |
发布年份 |
总线协议 |
AHB 相关版本 |
|
AMBA 1 |
1997 |
ASB, APB |
— |
|
AMBA 2 |
1999 |
AHB, ASB, APB |
AHB(原始版,多主机仲裁+Split) |
|
AMBA 3 |
2003 |
AXI, AHB-Lite, APB, ATB |
AHB-Lite(单主机精简版) |
|
AMBA 4 |
2010 |
AXI4, ACE, AHB, APB4 |
AHB-Lite 继续使用 |
|
AMBA 5 |
2015+ |
AXI5, ACE5, AHB5, APB5, CHI |
AHB5(基于 AHB-Lite 扩展) |
二、版本对比一览
下表总结了 AHB2、AHB-Lite(AMBA 3)、AHB5(AMBA 5)三个版本间的主要信号与功能差异。
Table2.1 各个版本 AHB 的对比总览
|
功能/信号 |
AHB2 (AMBA 2) |
AHB-Lite (AMBA 3) |
AHB5 (AMBA 5) |
|
多主机仲裁 |
✓ 原生支持 |
✗(需 Multi-layer) |
✗(需 Multi-layer) |
|
Split 传输 |
✓ (HSPLITx) |
✗ |
✗ |
|
HADDR 位宽 |
32-bit |
32-bit |
10~64-bit (ADDR_WIDTH) |
|
HMASTLOCK |
✓ |
✓ |
✓ |
|
HPROT 位宽 |
4-bit |
4-bit |
0/4/7-bit |
|
扩展内存类型 |
✗ |
✗ |
✓ (HPROT[6:4]) |
|
安全传输 HNONSEC |
✗ |
✗ |
✓ |
|
排他传输 HEXCL/HEXOKAY |
✗ |
✗ |
✓ |
|
写选通 HWSTRB |
✗ |
✗ |
✓ (Issue C) |
|
User 信号 (HAUSER等) |
✗ |
✗ |
✓ (Issue C) |
|
接口奇偶校验 |
✗ |
✗ |
✓ (Issue C) |
|
信号宽度可配置 |
✗ |
✗ |
✓ (Issue C) |
|
原子性 |
✗ |
✗ |
✓ (Multi/SC Atomicity) |
|
端序支持 BE8/BE32 |
仅固定 |
仅固定 |
✓ Endian property |
三、AMBA2 AHB
AMBA 2 AHB(1999 年发布)是 AHB 协议的第一个版本,替换了原有的 ASB 总线。它的核心设计目标是支持多主机(Multi-master)操作,通过仲裁器(Arbiter)和地址/数据多路选择器(Mux)实现总线共享,涵盖了 Split 传输、Retry、锁定传输等进阶特性。
3.1 架构
AHB2 系统由以下组件构成:
Master:发起读写传输,驱动地址和控制信号。
Slave:接收传输请求,返回响应和数据。
Arbiter(仲裁器):管理多个 Master 的总线请求,生成授权信号 HGRANTx。
Decoder(译码器):根据地址选择目标 Slave,产生 HSELx 信号。
地址/数据多路选择器(Mux):由 Arbiter 和 Decoder 控制,选择正确的地址/数据路径。
AHB2 的地址相位和数据相位采用流水线结构,地址相位持续一个周期,数据相位可以通过 HREADY 扩展。
3.2 仲裁器信号
Table3.1 仲裁器信号列表
|
信号 |
位宽 |
方向 |
描述 |
|
HBUSREQx |
1 |
Master → Arbiter |
Master 请求总线使用权 |
|
HLOCKx |
1 |
Master → Arbiter |
锁定总线,表示正在执行不可打断的传输序列 |
|
HGRANTx |
1 |
Arbiter → Master |
授权 Master 使用总线 |
|
HMASTER[3:0] |
4 |
Arbiter → Slave |
标识当前拥有总线的 Master 编号 |
|
HSPLITx[15:0] |
16 |
Slave → Arbiter |
Split 传输响应的 Master 位掩码 |
|
HMASTLOCK |
1 |
Master → Slave |
锁定传输指示 |
3.3 Split传输
Split 传输是 AHB2 中提高总线利用率的关键机制:当 Slave 预计需要较多时钟周期才能完成传输时,Slave 记录 Master ID(HMASTER),发出 SPLIT 响应。Arbiter 收到 SPLIT 后降低该 Master 的优先级,将总线让给其他 Master。当 Slave 准备好后,通过 HSPLITx 断言对应的 Master 位,Arbiter 重新授权给该 Master 完成传输。
AHB-Lite 和 AHB5 已移除 Split 传输,因为单主机架构不需要此机制。
3.4 传输类型 HTRANS[1:0]
HTRANS[1:0] 编码与 AHB-Lite/AHB5 完全一致,参见第四章 4.4 节。
3.5 锁定传输 HMASTLOCK
若 Master 需要不可打断的原子序列(如 ARM SWP 指令),则置位 HMASTLOCK 信号,指示所有 Slave 当前传输不可被中断。锁定传输结束后,建议 Master 插入一个 IDLE 传输。
3.6 传输大小 HSIZE[2:0] 与突发 HBURST[2:0]
AHB2 的 HSIZE 和 HBURST 编码与 AHB-Lite 完全一致,详见第四章。
四、AMBA3 AHB-lite
AHB-Lite 是 AMBA 3(2003 年发布,2006 年正式规范 IHI0033A v1.0)中对 AHB2 的精简版本。其核心变化是移除仲裁器(Arbiter)和相关信号,变为单主机架构,同时保留 AHB 的高速流水线、突发、锁定等核心特性。
AHB-Lite 的典型应用场景是 Cortex-M 系列处理器与片内外设的互联。
4.1 AHB-lite架构框图

Figure4.1 AHB-lite架构框图
4.2 全局信号
Table4.1 全局信号列表
|
名称 |
源 |
位宽 |
描述 |
|
HCLK |
时钟源 |
1 |
总线时钟,所有信号时序基于 HCLK 上升沿 |
|
HRESETn |
复位控制器 |
1 |
总线复位信号,低电平有效,唯一低电平有效信号 |
4.3 Master信号
Table4.2 Master信号列表
|
名称 |
位宽 |
方向 |
描述 |
|
HADDR[31:0] |
32 |
输出 |
32-bit 字节地址总线 |
|
HWRITE |
1 |
输出 |
写传输指示:1=写,0=读;突发期间保持恒定 |
|
HTRANS[1:0] |
2 |
输出 |
传输类型:IDLE/BUSY/NONSEQ/SEQ |
|
HSIZE[2:0] |
3 |
输出 |
传输大小编码,如 Byte/Halfword/Word 等 |
|
HBURST[2:0] |
3 |
输出 |
突发类型编码 |
|
HWDATA[31:0] |
32+ |
输出 |
写数据总线,最小 32-bit 推荐 |
|
HMASTLOCK |
1 |
输出 |
锁定传输指示 |
|
HPROT[3:0] |
4 |
输出 |
保护控制信号 |
注:在 AHB-Lite 中,Master 信号不包含 AHB2 的 HBUSREQx、HLOCKx 等仲裁器信号,因为 AHB-Lite 仅支持单主机。
4.4 Slave信号
Table4.3 Slave信号列表
|
名称 |
位宽 |
方向 |
描述 |
|
HRDATA[31:0] |
32+ |
输出 |
读数据总线 |
|
HREADYOUT |
1 |
输出 |
传输完成指示,低电平表示插入等待状态 |
|
HRESP |
1 |
输出 |
传输响应:0=OKAY,1=ERROR |
4.5 Decoder与Multiplexer信号
Table4.4 Decoder与Multiplexer信号列表
|
名称 |
位宽 |
源 |
描述 |
|
HSELx |
1 |
Decoder |
Slave 选择信号,高电平有效 |
|
HREADY(combined) |
1 |
Mux |
合并后的 HREADY,反馈给所有 Master 和 Slave |
|
HRDATA (muxed) |
32+ |
Mux |
多路复用后的读数据 |
|
HRESP (muxed) |
1 |
Mux |
多路复用后的传输响应 |
4.6 基本传输
AHB 传输由两个相位组成:
地址相位(Address Phase):一个 HCLK 周期,Master 驱动地址和控制信号。
数据相位(Data Phase):一个或多个 HCLK 周期,HREADY 信号控制数据相位是否完成。
(1) 零等待传输(无等待状态):数据相位紧接在地址相位后一个周期完成。
(2) 有等待传输:当 HREADY 为低时,数据相位被扩展,地址和控制信号保持不变,直到 HREADY 拉高。
(3) 流水线效应:在上一笔数据相位未完成时,下一笔的地址相位已经发出,形成了典型的流水线操作。
4.7 传输类型HTRANS[1:0]
Table4.5 HTRANS信号列表
|
HTRANS[1:0] |
类型 |
描述 |
|
0b00 |
IDLE |
无数据传输,Slave 必须返回零等待 OKAY 响应 |
|
0b01 |
BUSY |
Master 在突发中间插入空闲周期,地址反映下一拍传输 |
|
0b10 |
NONSEQ |
单次传输或突发的第一拍,地址与控制信号与上一笔无关 |
|
0b11 |
SEQ |
突发的后续拍,地址为上一拍地址 + 传输字节数 |
4.8 传输大小HSIZE[2:0]
Table4.6 HSIZE信号列表
|
HSIZE[2] |
HSIZE[1] |
HSIZE[0] |
大小 (bits) |
描述 |
|
0 |
0 |
0 |
8 |
Byte |
|
0 |
0 |
1 |
16 |
Halfword |
|
0 |
1 |
0 |
32 |
Word |
|
0 |
1 |
1 |
64 |
Doubleword |
|
1 |
0 |
0 |
128 |
4-word Line |
|
1 |
0 |
1 |
256 |
8-word Line |
|
1 |
1 |
0 |
512 |
— |
|
1 |
1 |
1 |
1024 |
— |
注意事项:
HSIZE 设置的传输大小必须 ≤ 数据总线位宽。例如 32-bit 总线只能使用 0b000/0b001/0b010。
HSIZE 在突发期间必须保持恒定。
HSIZE 与 HBURST 共同决定 Wrapping Burst 的地址边界。
4.9 突发传输HBRUST[2:0]
Table4.7 HBURST信号列表
|
HBURST[2:0] |
类型 |
描述 |
|
0b000 |
SINGLE |
单拍传输 |
|
0b001 |
INCR |
未定义长度递增突发 |
|
0b010 |
WRAP4 |
4 拍回环突发 |
|
0b011 |
INCR4 |
4 拍递增突发 |
|
0b100 |
WRAP8 |
8 拍回环突发 |
|
0b101 |
INCR8 |
8 拍递增突发 |
|
0b110 |
WRAP16 |
16 拍回环突发 |
|
0b111 |
INCR16 |
16 拍递增突发 |
关键规则:
固定长度突发(INCR4/8/16、WRAP4/8/16)必须以 SEQ 传输结束,不允许以 BUSY 结束。
未定义长度突发 INCR 可以以 BUSY 结束,之后由 NONSEQ 或 IDLE 终止。
Master 不得发起跨越 1KB 地址边界的递增突发。
突发传输所有拍必须地址对齐:Word 传输要求 HADDR[1:0]=0b00,Halfword 要求 HADDR[0]=0。
WRAP 回环边界 = HBURST 拍数 × HSIZE 字节数。例如 WRAP4 + HSIZE=Word(4B)时,边界为 16B。
SINGLE 突发后必须跟 IDLE 或 NONSEQ,不允许 BUSY。
4.10 锁定传输HMASTERLOCK
HMASTLOCK 信号置高指示当前传输序列不可被中断。在锁定传输序列结束后,建议 Master 插入一个 IDLE 传输。
典型应用:ARM SWP(Swap)指令的原子读-修改-写操作。
4.11 保护控制信号HPROT[3:0]
HPROT[3:0] 提供总线访问的额外保护信息,主要面向有 MMU 的 Master 和需要保护检查的模块。
Table4.8 HPROT信号列表
|
位 |
名称 |
描述 |
|
HPROT[0] |
Data/Opcode |
0=指令取指,1=数据访问 |
|
HPROT[1] |
Privileged |
0=用户访问,1=特权访问 |
|
HPROT[2] |
Bufferable |
0=不可缓冲,1=可缓冲 |
|
HPROT[3] |
Modifiable (AHB-Lite: Cacheable) |
0=不可缓存/不可修改,1=可缓存/可修改 |
如果 Master 无法产生精确的保护信息,建议设置 HPROT = 0b0011(Non-cacheable, Non-bufferable, Privileged, Data access)。
4.12 Slave响应信号HRESP
AHB-Lite 的 Slave 响应组合:
Table4.9 HRESP信号列表
|
HRESP |
HREADYOUT |
含义 |
|
0 (OKAY) |
0 |
传输未完成(等待状态) |
|
0 (OKAY) |
1 |
传输成功完成 |
|
1 (ERROR) |
0 |
ERROR 响应第一拍 |
|
1 (ERROR) |
1 |
ERROR 响应第二拍 |
ERROR 响应需要两个周期:第一周期 HRESP=HIGH, HREADYOUT=LOW;第二周期 HRESP=HIGH, HREADYOUT=HIGH,结束传输。

Figure4.2 遇见ERROR响应的传输图
T1-T2:Slave插入了一个等待状态,提供了一个OKAY响应。
T2-T3:Slave发布了一个ERROR响应,这是ERROR响应两拍机制的第一拍,此时HREADY为低电平。
T3-T4:Slave发布了一个ERROR响应,这是第二拍,此时HREADY为高电平,Master改变传输类型为IDLE,取消了原计划对地址B的传输,这是由于Slave在T2是一个错误的登记。说人话,就是Slave由于流水线的存在在T2接受了B的地址,现在Master告诉Slave需要取消。
T4-T5:Slave回应一个OKAY响应。
4.13 数据总线
AHB 支持 8/16/32/64/128/256/512/1024-bit 数据总线。推荐最小 32-bit。数据总线宽度可以不对称(读/写总线可不同宽度)。
端序支持:AHB-Lite 支持 Little-endian 和 Big-endian。Big-endian 有两种方式:BE8(字节不变)和 BE32(字不变)。
当窄 Master 连接宽 Slave 或反之,需要通过外部逻辑进行数据对齐和扩展,不支持超出自身接口位宽的传输。
4.14 时钟与复位
HCLK:总线时钟,所有信号在 HCLK 上升沿采样。
HRESETn:低电平复位信号,复位时 Master 必须驱动 HTRANS=IDLE,HWDATA=0,其他信号相应复位。
如果 Master 无法产生精确的保护信息,建议设置 HPROT = 0b0011(Non-cacheable, Non-bufferable, Privileged, Data access)。
五、AMBA5 AHB5
AHB5 是 AMBA 5 规范(2015 年 IHI0033C Issue B,2021 年 Issue C)中基于 AHB-Lite 的功能扩展版本。它保留了 AHB-Lite 的单主机架构,但通过属性(Property)机制新增了多项能力:
Issue B(2015):增加 AHB5。新功能包括扩展内存类型(HPROT[6:4])、安全传输(HNONSEC)、排他传输(HEXCL/HEXOKAY/HMASTER)。
Issue C(2021):增加信号宽度属性(ADDR_WIDTH/DATA_WIDTH 等)、写选通(HWSTRB)、User 信号更新、接口奇偶校验保护。
术语变更:Issue C 将 Master/Slave 更名为 Manager/Subordinate。
5.1 新增信号总览
Table5.1 AHB5新增信号列表
|
信号 |
位宽 |
属性 |
描述 |
|
HNONSEC |
1 |
Secure_Transfers |
指示传输安全属性:1=Non-secure,0=Secure |
|
HEXCL |
1 |
Exclusive_Transfers |
排他传输指示 |
|
HMASTER[m:0] |
0~8 |
Exclusive_Transfers |
Manager 标识符 |
|
HEXOKAY |
1 |
Exclusive_Transfers |
排他传输成功/失败指示 |
|
HWSTRB |
DATA_WIDTH/8 |
Write_Strobes |
写字节选通信号 |
|
HAUSER/HWUSER/HRUSER |
自定义 |
User_Signals |
用户自定义信号 |
|
HPROT[6:4] |
3 |
Extended_Memory_Types |
扩展内存类型:Lookup/Allocate/Shareable |
5.2 扩展内存类型HPROT[6:4]
AHB5 定义了 Extended_Memory_Types 属性。启用后,HPROT 扩展为 7-bit(HPROT[6:0]),其中 HPROT[6:4] 提供额外的内存类型信息:
Table5.2 扩展内存类型信号列表
|
位 |
名称 |
描述 |
|
HPROT[4] |
Lookup |
1=需要查找缓存,0=不需要查找,直接访问最终目的地 |
|
HPROT[5] |
Allocate |
1=建议分配缓存行,0=建议不分配 |
|
HPROT[6] |
Shareable |
1=共享内存区域,响应必须保证对其他 Manager 可见;0=非共享 |
HPROT[6:2] 的组合定义具体内存类型:
Table5.3 内存类型组合定义表
|
HPROT[6] Shareable |
HPROT[5] Allocate |
HPROT[4] Lookup |
HPROT[3] Modifiable |
HPROT[2] Bufferable |
内存类型 |
|
0 |
0 |
0 |
0 |
0 |
Device-nE(不可提前响应) |
|
0 |
0 |
0 |
0 |
1 |
Device-E(可提前响应) |
|
0 |
0 |
0 |
1 |
0 |
Normal Non-cacheable, Non-shareable |
|
0 |
0/1 |
1 |
1 |
0 |
Write-through, Non-shareable |
|
0 |
0/1 |
1 |
1 |
1 |
Write-back, Non-shareable |
|
1 |
0 |
0 |
1 |
0 |
Normal Non-cacheable, Shareable |
|
1 |
0/1 |
1 |
1 |
0 |
Write-through, Shareable |
|
1 |
0/1 |
1 |
1 |
1 |
Write-back, Shareable |
5.3 安全传输HNONSEC
AHB5 的 Secure_Transfers 属性启用后,新增 HNONSEC 信号:
HNONSEC = 1:Non-secure 传输(非安全)。
HNONSEC = 0:Secure 传输(安全)。
HNONSEC 是地址相位信号,在整个突发期间必须保持恒定。
5.4 排他传输 HEXCL/HMASTER/HEXOKAY
AHB5 的 Exclusive_Transfers 属性启用后,支持排他访问(Exclusive Access)机制,用于实现信号量(Semaphore)操作。
排他访问序列:
(1) Master 发起排他读传输(HEXCL=1),从目标地址读取数据。
(2) Master 根据读取值计算新值。
(3) Master 发起排他写传输(HEXCL=1)到同一地址。
(4) 若从排他读之后没有其他 Master 写入该地址,排他写成功(HEXOKAY=1),内存更新;否则失败(HEXOKAY=0),内存不更新。
(5) 若排他写失败,Master 应重试整个排他序列。
HMASTER[m:0]:Manager 标识符,用于区分同一 Manager 内的多个排他线程。推荐位宽:Manager 端 4-bit,Slave 端 8-bit。
5.5 写选通HWSTRB
AHB5 Issue C 定义了 Write_Strobes 属性。启用后,新增 HWSTRB 信号:
HWSTRB 宽度 = DATA_WIDTH / 8,每个 bit 对应 HWDATA 的一个字节。
HWSTRB[n] = 1 表示 HWDATA[(8n)+7:(8n)] 包含有效数据。
HWSTRB 是数据相位信号,与 HWDATA 具有相同的有效性规则。
支持稀疏写(Sparse Write):部分字节选通位为 0,允许只更新指定字节。
所有选通位为 0 的传输是合法的,不写入任何字节。
5.6 信号宽度属性
Issue C 引入了信号宽度属性机制,允许接口配置以下宽度:
ADDR_WIDTH:HADDR 位宽,推荐 10~64。Issue A/B 固定为 32。
DATA_WIDTH:HWDATA/HRDATA 位宽,可选 8/16/32/64/128/256/512/1024,推荐 32~256。
HBURST_WIDTH:HBURST 位宽,必须为 0 或 3。
HPROT_WIDTH:HPROT 位宽,必须为 0、4 或 7(取决于 Extended_Memory_Types)。
HMASTER_WIDTH:HMASTER 位宽,推荐 0~8。
5.7 User信号
AHB5 Issue C 定义了 User 信号,分为三组:
HAUSER:地址相位 User 信号,伴随 HADDR。
HWUSER:写数据相位 User 信号,伴随 HWDATA。
HRUSER:读数据相位 User 信号,伴随 HRDATA。
协议规范不强制要求实现 User 信号,建议仅在互联组件中包含 User 信号透传。若两个组件以不兼容的方式使用相同 User 信号,会导致互操作性问题。
5.8 接口奇偶校验保护
IHI0033C Issue C 新增了接口保护机制,使用奇偶校验检测关键控制信号和数据的传输错误:
奇偶校验信号:针对 HADDR、HWDATA、HRDATA 等关键信号提供奇偶校验位。
错误检测行为:定义奇偶校验错误时的处理方式,包括错误上报和恢复机制。
适用于需要高可靠性(如汽车电子、工业控制)的 SoC 设计。
5.9 信号有效性规则
AHB5 Issue C 定义了信号有效性规则(Signal Validity Rules),明确信号在何时必须有效:
地址相位信号:HADDR、HWRITE、HSIZE、HBURST、HPROT、HMASTLOCK、HNONSEC、HEXCL 在 HTRANS 非 IDLE 时必须有效。
数据相位信号:HWDATA、HWSTRB 在写传输的数据相位有效期间必须有效。
HRDATA 在读传输的数据相位有效期间必须有效。
5.10 原子性(Atomicity)
AHB5 定义了两种原子性属性:
Single-copy Atomicity(单拷贝原子性):定义单个访问的最小原子访问大小。
Multi-copy Atomicity(多拷贝原子性):定义多 Manager 系统中写操作的全局可见性保证。
5.11 端序支持(Endianness)
AHB5 引入 Endian 属性,定义了两种 big-endian 模式:
BE8(Byte-invariant big-endian):字节不变大端序。字节访问使用与 little-endian 相同的数据总线位。多字节传输时,最高有效字节放在传输地址,后续字节依次放在递增地址。
BE32(Word-invariant big-endian):字不变大端序。字访问时最高有效字节和最低有效字节分别使用与 little-endian 相同的数据总线位。
六、Multi-layer AHB(多层AHB互联)
Multi-layer AHB 是一种基于 AHB-Lite 协议的互联矩阵方案(2004 年 DVI0045B),用于在 AHB-Lite 单主机架构上实现多主机系统。每个 Master 拥有独立的 AHB-Lite 层,通过互联矩阵(Interconnect Matrix)连接到共享的 Slave。
关键优势:
多 Master 可同时访问不同的 Slave,实现并行数据传输。
每层使用 AHB-Lite 协议,无需修改标准 AHB 模块。
每层只有单个 Master,不需要仲裁器或 Master-to-Slave Mux。
仲裁仅在多个 Master 同时访问同一个 Slave 时发生,是点对点仲裁。
可复用已有的 AHB Master 和 Slave 模块,无需修改。
6.1 互联矩阵结构
互联矩阵(Interconnect Matrix)包含以下组件:
译码器(Decoder):每层一个,确定当前传输目标 Slave。
仲裁器(Arbiter):每个 Slave 端口一个,管理多个 Master 对该 Slave 的访问优先级。
输入级(Input Stage):当某层被等待时,存储流水线地址和控制信息副本。
多路选择器(Mux):将传输从对应层路由到目标 Slave。
6.2 仲裁策略
每个 Slave 端口独立仲裁,常见策略:
Round-robin(轮询):每传输或每突发轮换。
Fixed Priority(固定优先级):高优先级层始终优先。
未被授权的层通过 HREADY 信号被等待,直到获得访问权限。
6.3 高级配置选项
本地 Slave(Local Slave):将特定 Slave 私有化到某层,减少互联矩阵复杂度。
多 Slave 单端口:将多个低带宽 Slave 合并为一个逻辑端口。
多 Master 共享层:多个低带宽 Master 共享一个 AHB 层。
多端口 Slave:支持从多个层同时访问的 Slave(如多端口内存控制器)
七、Appendix 信号速查表
A.1 全局信号
|
信号 |
源 |
位宽 |
描述 |
|
HCLK |
时钟源 |
1 |
总线时钟,上升沿采样 |
|
HRESETn |
复位控制器 |
1 |
总线复位,低电平有效 |
A.2 Master(Manager)信号
|
信号 |
位宽 |
AHB-Lite |
AHB5 |
描述 |
|
HADDR |
32 / ADDR_WIDTH |
✓ |
✓ |
地址总线 |
|
HWRITE |
1 |
✓ |
✓ |
写传输指示 |
|
HTRANS |
2 |
✓ |
✓ |
传输类型 IDLE/BUSY/NONSEQ/SEQ |
|
HSIZE |
3 |
✓ |
✓ |
传输大小编码 |
|
HBURST |
3 |
✓ |
✓ |
突发类型编码 |
|
HWDATA |
DATA_WIDTH |
✓ |
✓ |
写数据总线 |
|
HMASTLOCK |
1 |
✓ |
✓ |
锁定传输 |
|
HPROT |
4/7 |
✓ |
✓ |
保护控制信号 |
|
HNONSEC |
1 |
✗ |
✓ |
安全传输属性 |
|
HEXCL |
1 |
✗ |
✓ |
排他传输指示 |
|
HMASTER |
HMASTER_WIDTH |
✗ |
✓ |
Manager 标识符 |
|
HWSTRB |
DATA_WIDTH/8 |
✗ |
✓ |
写字节选通 |
|
HAUSER |
自定义 |
✗ |
✓ |
地址相位 User 信号 |
|
HWUSER |
自定义 |
✗ |
✓ |
写数据相位 User 信号 |
A.3 Slave(Subordinate)信号
|
信号 |
位宽 |
AHB-Lite |
AHB5 |
描述 |
|
HRDATA |
DATA_WIDTH |
✓ |
✓ |
读数据总线 |
|
HREADYOUT |
1 |
✓ |
✓ |
传输完成/等待指示 |
|
HRESP |
1 |
✓ |
✓ |
传输响应 OKAY/ERROR |
|
HEXOKAY |
1 |
✗ |
✓ |
排他传输成功/失败 |
|
HRUSER |
自定义 |
✗ |
✓ |
读数据相位 User 信号 |
A.4 Decoder与Multiplexer信号
|
信号 |
位宽 |
源 |
描述 |
|
HSELx |
1 |
Decoder |
Slave 选择信号 |
|
HREADY |
1 |
Mux |
合并后的传输完成指示 |
|
HRDATA(muxed) |
DATA_WIDTH |
Mux |
多路复用读数据 |
|
HRESP(muxed) |
1 |
Mux |
多路复用传输响应 |
A.5 编码速查表
HTRANS[1:0]
|
编码 |
类型 |
说明 |
|
0b00 |
IDLE |
无传输 |
|
0b01 |
BUSY |
突发中间插入空闲 |
|
0b10 |
NONSEQ |
首拍/单拍 |
|
0b11 |
SEQ |
后续拍 |
HSIZE[2:0]
|
编码 |
大小 |
说明 |
|
0b000 |
8-bit |
Byte |
|
0b001 |
16-bit |
Halfword |
|
0b010 |
32-bit |
Word |
|
0b011 |
64-bit |
Doubleword |
|
0b100 |
128-bit |
4-word |
|
0b101 |
256-bit |
8-word |
|
0b110 |
512-bit |
— |
|
0b111 |
1024-bit |
— |
HBURST[2:0]
|
编码 |
类型 |
说明 |
|
0b000 |
SINGLE |
单拍 |
|
0b001 |
INCR |
未定义长度递增 |
|
0b010 |
WRAP4 |
4拍回环 |
|
0b011 |
INCR4 |
4拍递增 |
|
0b100 |
WRAP8 |
8拍回环 |
|
0b101 |
INCR8 |
8拍递增 |
|
0b110 |
WRAP16 |
16拍回环 |
|
0b111 |
INCR16 |
16拍递增 |
HPROT[3:0](AHB-lite)
|
位 |
名称 |
0 |
1 |
|
[0] |
Data/Opcode |
指令取指 |
数据访问 |
|
[1] |
Privileged |
用户访问 |
特权访问 |
|
[2] |
Bufferable |
不可缓冲 |
可缓冲 |
|
[3] |
Modifiable |
不可修改 |
可修改 |
HPROT[6:4](AHB5 扩展)
|
位 |
名称 |
0 |
1 |
|
[4] |
Lookup |
不需查找缓存 |
需查找缓存 |
|
[5] |
Allocate |
不建议分配 |
建议分配 |
|
[6] |
Shareable |
非共享 |
共享 |
HRESP
|
HRESP |
HREADYOUT |
含义 |
|
0 |
0 |
传输未完成(等待) |
|
0 |
1 |
传输成功完成 |
|
1 |
0 |
ERROR 第一拍 |
|
1 |
1 |
ERROR 第二拍 |
242

被折叠的 条评论
为什么被折叠?



