AMBA-AHB的控制信号
控制信号
1、传输类型


IDLE(HTRANS=00)
功能:
- 表示主设备已获得总线授权但无需传输数据,总线处于空闲状态。
- 从设备必须忽略此类传输,并立即返回 HREADY=1 和 HRESP=OKAY 响应。
应用场景:
- 主设备完成突发传输后释放总线,但需保持总线占用权(如防止其他主设备抢占)。
- 系统初始化或低功耗模式下主动挂起总线活动。
BUSY(HTRANS=01)
功能:
- 允许主设备在突发传输中插入空闲周期,延迟下一次传输。
- 地址和控制信号仍需保持为下一次传输的正确值,但数据段无效。
应用场景:
- 主设备因内部处理延迟(如缓存未命中)需暂停数据传输。
- 突发传输中调整数据对齐或等待外设响应。
示例:
在 INCR4突发传输 中,主设备可能在第二拍插入BUSY状态,此时地址仍指向下一拍(如0x04→0x08),但数据段无效。
NONSEQ(HTRANS=10)
功能:
- 表示突发传输的首拍或单次独立传输,地址与控制信号与前次传输无关。
- 用于启动新的操作序列或非连续地址访问。
应用场景:
- 突发传输起始(如 INCR4 的0x00地址)。
- 单次读写操作(如配置寄存器访问)。
时序特性:
地址按 HSIZE 定义的大小对齐(如 HSIZE=010(32位),地址需4字节对齐)。
SEQ(HTRANS=11)
功能:
- 表示突发传输的后续连续传输,地址按前次地址递增或回环。
- 控制信号与传输大小(HSIZE)必须与前次一致。
应用场景:
- 突发传输的后续节拍(如 INCR4 的第2~4拍)。
- 内存块连续读写(如DMA搬运数据)。
地址计算:
- 增量突发(INCR):
当前地址 = 前次地址 + HSIZE字节数
。 - 回环突发(WRAP):地址在 HSIZE × 突发长度 边界回环(如 WRAP4 突发中,地址0x3C后回绕至0x30)。
传输类型与突发操作的关系
突发类型 | HTRANS序列 | 地址行为 |
---|---|---|
SINGLE | NONSEQ → IDLE | 单次独立地址 |
INCR4/WRAP4 | NONSEQ → SEQ → SEQ → SEQ | 地址递增或回环 |
BUSY插入 | NONSEQ → BUSY → SEQ | 地址保持为下一拍,数据段暂停 |
关键区别与设计考量
-
IDLE vs BUSY:
- IDLE为主动空闲,用于总线保留;BUSY为被动等待,用于突发内部暂停。
- BUSY需保持地址连续性,IDLE无此要求。
-
NONSEQ vs SEQ:
- NONSEQ启动新操作,SEQ延续当前操作。
- 突发传输中,SEQ的地址依赖前次传输,需严格遵循递增或回环规则。
-
错误响应与传输类型的关系:
- HRESP[1:0] 信号(如RETRY/SPLIT)用于从设备反馈传输状态,与HTRANS独立。例如,从设备可通过 HRESP=SPLIT 中断当前传输,主设备需重新仲裁总线。
典型时序示例
INCR4突发传输(无等待):
- T1:HTRANS=NONSEQ,地址=0x00,启动传输。
- T2~T4:HTRANS=SEQ,地址依次递增(0x04→0x08→0x0C),数据段连续传输。
- T5:HTRANS=IDLE,释放总线。
AHB通过 HTRANS[1:0] 实现灵活的时序控制,支持高带宽流水线操作。设计时需注意:
- 突发完整性:SEQ必须严格延续NONSEQ的地址与控制信号。
- 响应分离:传输类型(HTRANS)与状态响应(HRESP)需独立处理。
- 性能优化:合理使用BUSY避免总线带宽浪费,同时通过SEQ最大化突发效率。
2、Burst传输
AHB 协议规定了 4、8、16beat 传输,以及未定义长度INCR和 single 传输。其中 beat 数乘以transfer即为burst 的长度。AHB 协议支持incrementing和wrap burst,incrementing为递增的, 没有边界;wrap 将地址划分为传输 burst 长度的边界,超过边界部分折返回边界开始处。如传输一笔 wrap4 的 burst,字长为 4byte,第一笔传输的地址为 0x34,会在16byte绕回,因此4笔传输的地址为 0x34,0x38,0x3c,0x30。表为 Burst 信号编码说明。
按照上述表格可知AHB协议支持的Burst传输类型由 HBURST[2:0] 信号编码决定,主要分为 增量突发(INCR)和 回环突发(WRAP) 两类,具体特征如下:
-
INCR(Incrementing Burst)
- 地址递增,无边界限制,每次地址增量由 HSIZE 决定(如HSIZE=32位,增量4字节)。
- 典型应用:连续内存访问(如DMA搬运数据块)。
- 示例:INCR4突发起始地址0x1000,地址序列为0x1000→0x1004→0x1008→0x100C。
-
WRAP(Wrapping Burst)
- 地址在达到 回环边界 时折返,边界值由 Burst长度(Beat数) × HSIZE 决定。
- 典型应用:缓存行填充(Cache Line Fill),优化循环数据访问。
- 示例:WRAP4突发(HSIZE=4字节),起始地址0x34,地址序列为0x34→0x38→0x3C→0x30(16字节边界回绕)。
参数计算
-
回环边界计算
公式:边界值 = Burst长度 × HSIZE字节数
示例:WRAP8突发(HSIZE=16位,即2字节),边界值为8×2=16字节。若起始地址0x48,地址序列为0x48→0x4A→…→0x58→0x40(折返到16字节边界起点)。 -
1KB地址边界限制
- 所有Burst传输(包括INCR未定义长度)不得跨越1KB(1024字节)边界。
- 原因:从设备地址空间通常以1KB划分,避免跨设备访问错误。
- 处理方法:接近边界时拆分Burst(如INCR8在地址0x3FC时拆分为两个INCR4)。
时序与等待状态处理
-
流水线特征
地址段与数据段交叠,允许高吞吐量。例如:当前传输的地址段(T1)与上一传输的数据段(T2)并行处理。 -
等待状态插入
从设备通过拉低 HREADY 延长数据段周期(图七示例):- Master在T1周期发起WRAP4传输(地址0x34,HTRANS=NONSEQ)。
- Slave在T2采样地址后因处理延迟拉低HREADY,插入等待周期(T3)。
- T3周期地址保持0x34,数据段完成时HREADY恢复,后续传输继续(0x38→0x3C→0x30)。
协议限制与设计考量
-
Burst完整性
- 固定长度Burst(如INCR4/WRAP8)必须完整执行,不可中途终止(除非从设备返回ERROR响应)。
- 未定义长度INCR突发可通过HTRANS切换为IDLE或NONSEQ提前终止。
-
异常处理
- 从设备返回 HRESP=ERROR 时,Master可终止未完成Beat(如WRAP8突发在第二拍出错,后续6拍取消)。
- 多层总线仲裁中,高优先级请求可抢占当前Burst,从设备需支持中断恢复。
AHB协议通过 INCR/WRAP Burst 和 流水线机制 实现高效数据传输,其设计核心在于地址计算与时序优化。 1KB边界限制 和 等待状态处理 是确保系统稳定性的关键约束。实际应用中需结合从设备特性(如Cache行大小)选择Burst类型,并通过协议转换桥接兼容不同性能模块(如AXI与AHB协同)。
在AHB总线协议中,Burst(突发传输)中的Beat(节拍)是核心时序单元,其定义和计算规则如下:
Beat的定义
-
基础概念
- Beat是Burst传输中的单个数据传输单元,代表一次地址和数据操作的最小周期。
- 每个Burst由多个Beat组成,例如:
INCR4
表示4个Beat的递增突发,WRAP8
表示8个Beat的回环突发。
-
Beat与Transfer的关系
- Transfer(传输)与Beat等同,即一个Beat即为一拍数据。在突发操作中,Burst的长度由Beat数决定,例如:
Burst长度 = Beat数 × HSIZE字节数
。
- Transfer(传输)与Beat等同,即一个Beat即为一拍数据。在突发操作中,Burst的长度由Beat数决定,例如:
Beat的计算规则
1. Beat数量的确定
-
固定长度Burst:直接由HBURST编码决定:
HBURST编码 类型 Beat数 010 WRAP4 4拍 011 INCR4 4拍 110 WRAP16 16拍 -
未定义长度Burst(INCR):Beat数由Master动态控制,但需遵循1KB地址边界限制(突发地址不能跨越1024字节边界,否则需拆分)。
2. Beat地址的计算
-
增量突发(INCR):
- 地址按HSIZE字节数递增。
- 示例:若
HSIZE=32位(4字节)
,INCR4
突发起始地址为0x00
,则Beat地址为:0x00 → 0x04 → 0x08 → 0x0C
-
回环突发(WRAP):
- 地址在回环边界(
HSIZE字节数 × Beat数
)处折返。 - 示例:
WRAP4
突发(HSIZE=4字节
)起始地址为0x34
,回环边界为4×4=16字节
,则地址序列为:0x34 → 0x38 → 0x3C → 0x30(回绕到16字节边界起点)
- 地址在回环边界(
3.关键约束与设计考量
-
地址对齐要求
- 起始地址必须与HSIZE对齐(如
HSIZE=32位
时,地址需4字节对齐)。
- 起始地址必须与HSIZE对齐(如
-
1KB地址边界限制
- 所有Burst传输(包括未定义长度的INCR)不得跨越1KB边界。例如:若
INCR8
突发在地址0x3FC
时接近边界,需拆分为两个INCR4
突发。
- 所有Burst传输(包括未定义长度的INCR)不得跨越1KB边界。例如:若
-
时序与延迟控制
- 从设备可通过HREADY信号拉低插入等待周期,但Master需保持当前Beat地址和数据直至传输完成。
4.典型应用场景
- Cache行填充:使用
WRAP突发
优化循环地址访问,例如缓存行大小为16字节时,WRAP4
可高效回绕填充。 - DMA数据传输:
INCR突发
适用于连续内存块搬运,通过多Beat减少总线仲裁次数。
5.总结
Beat是AHB协议实现高效突发传输的基础单元,其计算需结合HSIZE、HBURST类型和地址边界规则。设计时需重点关注时序对齐和边界约束,以最大化总线带宽利用率。
3、传输方向
功能与机制
- HWRITE信号定义:
- 高电平(HWRITE=1):表示主设备(Master)发起写操作,数据通过HWDATA总线从Master传输到从设备(Slave)。
- 低电平(HWRITE=0):表示主设备发起读操作,数据通过HRDATA总线从Slave传输到Master。
关键特性:
- 地址与控制阶段锁定:
- HWRITE信号在地址阶段(Address Phase)被Slave采样,后续数据阶段(Data Phase)方向不可更改。
- 例如:若地址阶段HWRITE=1,则后续数据阶段必须完成写操作,即使Master后续改变HWRITE值也无效。
- 数据总线隔离:
- AHB协议通过分离的HWDATA和HRDATA总线避免读写冲突,确保高带宽并行操作。
应用示例:
- DMA写内存:DMA作为Master,HWRITE=1,通过HWDATA总线将数据批量写入内存Slave。
- CPU读外设:CPU作为Master,HWRITE=0,通过HRDATA总线读取传感器Slave的数据。
4、传输大小

HSIZE与HBURST的协同作用
-
增量突发(INCR):
- 地址按HSIZE定义的字节数递增(如HSIZE=010时4byte,每次地址+4)。
- 例如:INCR4突发(HBURST=011)下,若HSIZE=010,地址序列为0x00→0x04→0x08→0x0C。
-
回环突发(WRAP):
- 地址边界由公式:
边界值 = HSIZE字节数 × Burst长度
计算。 - 示例:
- WRAP4突发(HBURST=010) + HSIZE=010(4字节) → 边界值=4×4=16字节。
- 起始地址0x34的WRAP4突发地址序列:0x34→0x38→0x3C→0x30(在16字节边界回绕)。
- 地址边界由公式:
设计约束:
- 地址对齐:
- HSIZE定义的传输宽度需与起始地址对齐(如HSIZE=010时,地址需4字节对齐)。
- 1KB地址边界限制:
- 所有突发传输(包括INCR未定义长度)不得跨越1KB边界,避免访问错误。
典型场景与性能优化
场景1:视频帧写入(HSIZE=100 + WRAP8)
- 配置:HSIZE=100(128位),HBURST=100(WRAP8)。
- 地址计算:
- 边界值=128位(16字节)×8拍=128字节。
- 起始地址0x120时,地址序列为0x120→0x130→…→0x1E0→0x100(回绕到128字节边界)。
场景2:高速缓存填充(HSIZE=010 + INCR4)
- 配置:HSIZE=010(32位),HBURST=011(INCR4)。
- 带宽优化:
- 每次突发传输4个32位数据(共16字节),利用流水线特性隐藏内存延迟。
Note:AHB协议通过HWRITE和HSIZE实现灵活的数据传输控制
- HWRITE确保读写操作隔离,支持高并发流水线操作。
- HSIZE与HBURST联合定义地址行为,优化内存访问效率,尤其适用于缓存行填充、DMA搬运等场景。
- 设计时需严格遵循地址对齐与1KB边界限制,确保系统稳定性。
5、保护控制
AHB协议中HPROT[3:0]保护控制信号详解
HPROT[3:0]是AHB总线中用于提供访问保护信息的信号,主要面向需要执行特定安全或优化策略的模块。尽管并非所有主设备(Master)都能精确生成这些信号,但其设计初衷是为系统提供以下功能扩展:
1. HPROT[3:0]的功能定义
HPROT的每个比特位代表不同的保护属性:
- HPROT[3](Cacheable):
- 0:数据不可缓存(Non-cacheable),适用于外设寄存器等需直接访问的场景。
- 1:数据可缓存(Cacheable),适用于频繁访问的内存区域(如CPU指令缓存)。
- HPROT[2](Bufferable):
- 0:数据不可缓冲(Non-bufferable),要求写操作立即生效。
- 1:数据可缓冲(Bufferable),允许写入缓冲区后再同步到目标地址,优化性能但可能引入延迟。
- HPROT[1](Privileged/User Mode):
- 0:用户模式(User Mode),限制对特权资源的访问。
- 1:特权模式(Privileged Mode),允许访问系统关键资源(如操作系统内核空间)。
- HPROT[0](Data/Opcode):
- 0:操作码访问(Opcode Fetch),用于指令预取。
- 1:数据访问(Data Access),用于常规读写操作。
2. 应用场景与设计建议
-
典型应用场景:
- 缓存优化:CPU通过设置
HPROT[3]=1
将内存数据缓存至L1/L2 Cache,减少访问延迟。 - 外设安全:对GPIO或DMA控制器等外设设置
HPROT[1]=1
(特权模式),防止用户程序越权操作。 - 实时性要求:对中断控制器等需即时响应的模块,配置
HPROT[2]=0
(不可缓冲)以确保写操作立即生效。
- 缓存优化:CPU通过设置
-
使用限制与默认配置:
- 非必要不启用:若Slave模块无需保护机制,应忽略HPROT信号,避免增加设计复杂度。
- 默认设置:多数主设备在未明确需求时,将HPROT设为
0011
(Non-cacheable、Non-bufferable、User Mode、Data Access)以兼容基本操作。
3. 与系统架构的关联
- 与缓存一致性协议协同:HPROT的Cacheable信号需与系统缓存管理单元(如CACHE Controller)配合,确保数据一致性。
- 安全扩展:在支持TrustZone的SoC中,HPROT还可与安全状态信号(如NS位)结合,实现硬件级安全隔离。