一、AHB简介
AHB是用于高性能、高时钟频率的系统模块。
典型的应用如ARM核与系统内部的高速RAM、NAND FLASH、DMA、Bridge的连接
二、AHB基本特性
Burst传输
Split事务处理
单周期master移交
单一时钟沿操作
无三态
更宽的数据总线配置(64/128)
流水线操作
可支持多个总线主设备(最多16个)
三、AHB的组成
AHB主机:发起读\写操作(提供地址和控制信号)。任何时候只允许一个主机占用总线
AHB从机:响应读\写操作。总线从机将成功、失败或者等待数据传输的信号返回给有效的主机。
AHB仲裁器:决定哪一个主机能够将它的地址和控制信号连通到所有的从机。
AHB译码器:对地址译码并选择从机设备。
控制信号:传输方向(写\读)、带宽和brust类型
四、信号列表
AHB信号
名称 | 来源 | 描述 |
HCLK 总线时钟 | 时钟源 | 所有信号时序都和HCLK 的上升沿相关。 |
HRESETn 复位 | 复位控制器 | 总线复位信号低有效并用来复位系统和总线。这是唯一的低有效的信号。 |
HADDR[31:0] 地址总线 | 主机 | 主机发送目标地址 |
HTRANS[1:0] 传输类型 | 主机 | 传输的类型,可以是不连续、连续、空闲和忙 |
HWRITE 传输方向 | 主机 | 1:写 0:读 |
HSIZE[2:0] 传输大小 | 主机 | 表示传输的大小,典型情况是字节( 8 位)、半字( 16位)或者是字( 32 位)。 协议允许最大的传输大小可以达到1024 位。 |
HBURST[2:0] 突发类型 | 主机 | 表示传输是否组成了突发的一部分。 支持四个、八个或者 16 个节拍的突发传输 并且突发传输可以是增量或者是回环。 |
HPROT[3:0] 保护控制 | 主机 | 提供总线访问的附加信息并且主要是打算给那些希望执行某种保护级别的模块使用的。这个信号指示当前传输是否为预取指或者数据传输,同时也表示传输是保护模式访问还是用户模式访问。对带存储器管理单元的总线主机而言这些信号也用来指示当前传输是高速缓存的( cache)还是缓冲的(buffer)。 |
HWDATA[31:0] 写数据总线 | 主机 | 发送数据,主机发送到从机的数据。 |
HSELx 从机选择 | 译码器 | 根据主机发送地址 该信号是地址总线的简单组合译码。 |
HRDATA[31:0] 读数据总线 | 从机 | 接收数据,从机发送到主机的数据 |
HREADY 传输完成 | 从机 | 当 HREADY 为高时表示总线上的传输已经完成。 在扩展传输时该信号可能会被拉低。 注意:总线上的从机要求 HREADY 作为输入输出信号。 |
HRESP[1:0] 传输响应 | 从机 | 传输响应给传输状态提供了附加信息。提供四种不同的响应:OKEY、 ERROR、 RETRY 和 SPLIT。 |
仲裁信号
名称 | 来源 | 描述 |
HBUSREQx 总线请求 | 主机 | 主机x向仲裁器请求传输,最多支持16个主机 |
HLOCKx 锁定的传输 | 主机 | 主机x向仲裁器请求锁定传输,其他主机在锁定期内无法使用总线 |
HGRANTx 总线授予 | 仲裁器 | 该信号用来表示总线主机 x 目前是优先级最高的主机。 当 HREADY 为高时传输结束,地址/控制信号的所有权发生改变。 所以主机应在 HREADY HGRANTx都为高时获得对总线的访问。 |
HMASTER[3:0] 主机号 | 仲裁器 | 主机号,标记当前传输由哪个主机控制 HMASTER 的时序和地址以及控制信号对齐。 |
HMASTLOCK 锁定顺序 | 仲裁器 | 表示当前主机正在执行一个锁定顺序的传输。 该信号和 HMASTER 有相同的时序。 |
HSPLITx[15:0] 分块完成请求 | 从机(支持分块) | 从机用这 16 位的分块总线来指示仲裁器总线主机应该被允许重试一个分块传输。 分块总线上的每一位对应一个总线主机。 |
五、过程
Master获得主机使用权:有需要占用总线的Master向arbiter发出请求,
arbiter授权给指定的master。
地址阶段(一个周期)
首先发出地址和控制信号,提供地址信息、传输方向、带宽和burst类型。
总线统一规划slave的地址, 译码器根据地址和控制信号确定哪个slave与master进行数据交换。(地址周期)
数据阶段(多个周期)
数据传输通过数据总线完成。AHB将读写总线分开
(写数据总线用于从master到slave的数据传输,读数据总线用于从slave到master的数据传输)
数据周期可以通过HREADY信号扩展,但HREADY为低时给传输加入一个等待状态以使slave获得额外的时间来提供或采样数据,另外slave通过响应信号HRESP反映传输状态。
地址不长期有效所以所有从机必须在这个时段(传输地址时)采样地址。然而,通过HREADY 信号可以延长数据。当该信号为低时导致在传输中插入等待状态同时允许从机有额外的时间提供或者采样数据。
在传输中从机通过使用响应信号来表示状态, HRESP[1:0]:
OKAY | OKAY 响应用来表示传输进展正常并且当 HREADY 变高时表示传输成功完成。 |
ERROR | ERROR 响应表示发生了一个传输错误并且传输失败。 |
RETRY 和 SPLIT | RETRY 和 SPLIT 两个传输响应都表示传输不能立刻完成,但是总线主机应该继续尝试传输。 |