当前位置: 首页 > news >正文

ARM 总线技术 —— AHB

ARM 总线系列文章:

ARM 总线技术 —— AMBA 入门
ARM 总线技术 —— AHB

1、AHB

  AHB(Advanced High-performance Bus)是新一代 AMBA 总线,旨在满足高性能可综合设计的要求。AHB 是一种新级别的总线,位于 APB 之上,实现了高性能、高时钟频率系统所需的功能,如下:

  • 高性能传输,时钟频率可达几百 MHz
  • 支持 burst 传输
  • 支持 split transactions
  • 总线带宽支持 64/128 bit
  • 主设备切换只需要一个周期
  • 所有信号在同一个时钟沿(上升沿)有效
  • 2 级流水线,先地址再数据。发送给数据的过程中,地址就可以更改

  下图是一个典型的 AHB 系统总线的结构示意图:
在这里插入图片描述

AHBAPB
高性能低功耗
流水线技术可以锁存地址和数据
突发传输接口简单
多主模式适应接口能力强
split 传输

AHB 最高支持 16 个主设备和任意多个从设备 。同一时间,只能有一个主设备获得总线使用权

AHB 一般可以分为 4 个组成部分:

  • AHB 主设备(master
    • 初始化一次读/写操作
    • 某一时刻只允许一个主设备使用总线
    • CPU、DMA、DSP、LCDC…
  • AHB 从设备(slave
    • 响应一次读/写操作
    • 外部存储器控制器 EMI、APB bridge、
  • AHB 仲裁器(arbiter
    • 允许某一个主设备控制总线
    • 在 AMBA 协议中没有定义仲裁算法,由各家硬件厂商自行决定
  • AHB 译码器(decoder
    • 通过地址译码来决定选择哪一个从设备

下面这张图,描述了具有三个主设备和四个从设备的 AMBA AHB 设计所需的结构:
在这里插入图片描述

  • Master 发起一个仲裁请求
  • Arbiter 会允许某个 Master 控制总线
  • Master 驱动地址信号和控制信号
  • 仅选中的 Slave 才会响应地址/控制信号
  • Slave 响应结束后,会拉高 HREADY 信号,总线传输完成

2、AHB 常见的信号

  如下:
在这里插入图片描述
在这里插入图片描述

3、AHB 组成

3.1 AHB Slave 接口

AHB 总线的 Slave 接口信号如下:
在这里插入图片描述

3.2 AHB Master 接口

AHB 总线的 Master 接口信号如下:
在这里插入图片描述

3.3 AHB Arbiter 接口

  在 AMBA 系统中,仲裁器(Arbiter) 的作用是控制哪个主设备(Master)能够访问总线。

  每个主设备都通过一个 请求/授权(REQUEST/GRANT) 接口与仲裁器相连,仲裁器根据一定的优先级策略来决定当前哪个主设备在请求总线时具有最高优先级,并获得总线使用权。

  此外,每个主设备还会产生一个 HLOCKx 信号,用于指示该主设备需要对总线进行独占访问(exclusive access)。

  仲裁器的优先级算法细节在 AMBA 规范中并未规定,而是由厂商自行定义。在实际设计中,仲裁器也可以根据其他信号(无论是 AMBA 信号还是非 AMBA 信号)来动态调整其所采用的优先级策略。

在这里插入图片描述

3.4 AHB Decoder 接口

  AHB 地址译码器(Address Decoder) 的主要功能是根据地址总线上的信息,生成各个从设备(Slave)的片选信号(HSELx),以确定当前总线访问的目标设备。

  译码器通常采用组合逻辑实现,通过对地址信号 HADDR 的特定位段进行译码,输出相应的 HSELx 信号。

  在 ARM 架构的典型实现中,芯片手册通常会规定每个外设在总线上的地址映射范围,且这些地址区间互不重叠。当 HADDR 落入某个外设的地址范围时,对应的 HSELx 信号会被拉高,从而选中该外设参与本次总线传输。

在这里插入图片描述

4、基础传输

AHB 传输通常分为两个阶段

  • 地址相位,只有一个 cycle
  • 数据相位,由 HREADY 信号决定需要几个 cycle(通常都是 1 个 cycle)

4.1 无等待状态的简单传输

下图是一个无需等待状态的简单传输:
在这里插入图片描述

  • 主设备在 HCLK 上升沿之后将地址与控制信号驱动至总线
  • 从设备在下一个上升沿对地址与控制信息进行采样
  • 从设备完成地址采样后,即可开始驱动对应的响应信号,总线主设备在第三个时钟上升沿对该响应进行采样

注意:一个周期只有一个有效上升沿。在 AHB(以及大多数同步总线)里,“时钟周期”是由两个边沿构成的区间:

  上升沿 → 稳定阶段 → 下降沿 → 稳定阶段 → 下一个上升沿。

  但!只有上升沿是逻辑采样的参考点。所有设备(master/slave)都对 每个周期的上升沿同步采样

A slave must only sample the address and control signals and HSELx when HREADY is HIGH, indicating that the current transfer is completing

  上面的图只是一个缩略图。如果地址相位之前,没有任何传输,HREADY 默认是高电平。因为,slave 通常是把 HREADY 拉高后、HREADY 处于高电平才会去采样。

4.2 有等待状态的单次传输

下图是一个带有等待状态的复杂传输:
在这里插入图片描述
  从图中可以看到,在第二个、第三个和第四个时钟周期内,HREADY 信号保持为低电平,表示上一次传输尚未完成。
  此时从设备还未准备好传输数据,因此主设备必须等待,整个总线处于 等待状态(wait states)。这些延长的时钟周期被称为 扩展周期(extended cycles)。

  • 对于写操作,总线主设备将在整个扩展周期内保持数据稳定
  • 对于读传输,从设备无需在传输完成前提供有效数据。

  在第 5 个时钟周期的上升沿,

  • 从设备采样 HREADY 信号为高电平,发出响应数据 Data(A)
  • 主设备采样到 HREADY 为高电平,说明传输结束。同时,并采样从设备所响应的数据 Data(A)

4.3 多个 Single Transfer 的流水线(pipeline)操作

  AMBA AHB 总线采用两级流水线结构,将传输过程划分为地址阶段(Address Phase)和数据阶段(Data Phase)。

  在数据传输的同时,主设备可以在下一时钟周期内发起新的地址阶段请求,从而实现地址与数据的重叠传输。只要主设备在时钟上升沿检测到上一次传输的 HREADY 信号为高电平,即表示前一笔传输已完成,主设备即可更新地址信号并启动下一次传输。

  这种机制显著提高了总线的并行度和数据吞吐率
在这里插入图片描述
  扩展数据周期的一个负效应是必需延长相应的下一笔传输的地址周期。A 和 C 为零等待传输,B 加入了一个等待周期,因此相应的 C 地址周期要进行扩展。

  • 第一个周期,主机发起一个操作 A,并驱动地址和控制信号
  • 第二个周期,
    • 上升沿,从机开始采样地址和控制信号 A。同时将 HREADY 信号拉高,确认当前 transfer 已经完成
    • 上升沿,主机采样 HREAD 为高,说明上一个 transfer 已经完成。主机发现有操作 B 需要执行,则发起第二个操作 B。同时,发送数据 DATA(A)
  • 第三个周期
    • 上升沿,从机开始采样地址和控制信号 B、数据信号 DATA(A),以及响应 DATA(A)。同时将 HREADY 信号拉高,确认当前 transfer 已经完成
    • 上升沿,主机检测到 HREADY 为高,确认上一个 transfer 已经完成。主机发现有操作 C 需要执行,则发起第三个操作 C。同时,发送数据 DATA(B)
    • 第三个周期中从机由于繁忙插入了一个等待状态,将 HREADY 拉低
  • 第四个周期
    • 上升沿,从机开始采样地址和控制信号 C、数据信号 DATA(B)。但是检测到 HREADY 为低,说明上一个 transfer 未完成,当前采样无效
    • 上升沿,主机检测到 HREADY 为低,说明上一个 transfer 未完成。当前周期,数据以及地址和控制信号要保持稳定
    • 第四个周期中从机处理完了事务将 HREADY 拉高,确认当前 transfer 已经完成
  • 第五个周期,
    • 上升沿,从机开始采样地址和控制信号 C、数据信号 DATA(B),以及响应 DATA(B)
    • 上升沿,主机检测到 HREADY 为高,确认上一个 transfer 已经完成,发送数据 DATA©。并采样从机的响应 DATA(B)
  • 第六个周期
    • 上升沿,从机开始采样数据信号 DATA©,以及响应 DATA©
    • 上升沿,主机采样从机的响应 DATA©,同时采样到 HREADY 为高,确认上一个 transfer 已经完成

4.4 AHB Transfer Type

  在介绍突发传输之前,我们再来看下 AHB 传输类型。如表 3-1 所示的 HTRANS[1:0] 信号所示,每次传输可分为四种不同类型之一:
在这里插入图片描述

4.5 Burst 传输

  在基本的单次传输模式中,每次传输都需要先进行地址阶段和从设备选择阶段,因此在每笔数据传输前都会产生一定的等待时间,用于地址译码(Decode)和总线仲裁。

  为了提高总线的整体传输效率,AMBA AHB 总线协议引入了 突发传输(Burst Transfer) 机制,使得多个连续地址的数据可以在一次地址阶段后连续传输,从而显著减少地址译码的开销并提升带宽利用率。

  AMBA AHB 协议定义了 4、8 和 16 突发长度,也有未定义长度的突发和信号传输。协议支持增量和回环操作:

  1. 增量突发访问连续地址并且突发中的每次传输地址仅是前一次地址的一个增量
  2. 回环突发,如果传输的起始地址并未和突发(x 拍)中字节总数对齐那么突发传输地址将在达到边界处回环。例如,一个四拍回环突发的字(4 字节)访问将在 16 字节边界回环。因此,如果传输的起始地址是 0x34,那么它将包含四个到地址 0x34、 0x38、 0x3C 和 0x30

突发信息通过使用 HBURST[2:0]并且 8 种可能的类型在中定义如下:

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

  • T1 - T2,因为是突发传输开始,所以传输的类型是 NONSEQ
  • T2 - T3,主机无法立即执行突发操作的第二次传输,因此采用 BUSY 传输类型来延迟下一个传输的启动
  • T3 - T4,从机忽略地址和控制信号,不进行新的传输操作,但是主机仍然需要给出第二个传输的地址和控制信号
  • T4 - T5,主机恢复执行状态,所以传输的类型是 SEQ,发送突发操作的第三次传输;从机采样主机的数据,并进行响应
  • T5 - T6,主机发送突发操作的第四次传输;从机将 HREADY 信号拉低,告诉主机需要等待一个周期
  • T6 - T7,因为从机将 HREADY 拉低,主机发送突发操作的第四个传输需要保持稳定
  • T7 - T8,结束传输

  协议规定,BURST 传输有一个边界,即对于递增 Burst 传输,不能超过 1K 的边界!!!

DMA 的 burst 概念其实就是把 AHB/AXI 的突发传输机制“搬”到 DMA 配置层面,让软件可以控制 DMA 发起的总线突发访问方式。当 DMA 控制器发起一个传输时,实际上,DMA 控制器就作为一个 Master。而 CPU 在配置 DMA 控制器时,CPU 为 Master,DMA 控制器为 Slave

4.5 响应信号(RESP)

  在主机发起传输后,由从设备决定传输的推进方式。AHB 协议未规定主机在启动传输后取消传输的机制

  当从设备被访问时,必须提供表明传输状态的响应信号:HREADY 信号用于延长传输周期,该信号与状态指示信号 HRESP[1:0] 协同工作,共同构成传输状态响应机制。

  从设备可通过多种方式完成传输:

  • 立即完成传输(OKAY + HREADY 拉高)
  • 插入一个或多个等待状态以争取完成传输的时间(拉低 HREADY)
  • 发送错误信号表明传输失败(ERROR)
  • 延迟传输完成,同时允许主机和从设备释放总线供其他传输使用(Split、Retry)

HRESP[1:0] 传输响应格式如下:
在这里插入图片描述
标准从设备操作流程
  常规从设备会通过控制 HREADY 信号插入适当数量的等待周期,最终以 HREADY 拉高并返回 OKAY 响应完成传输,标志着传输成功结束。

错误响应机制
  ERROR 响应用于从设备指示关联传输出现错误状况,典型应用场景包括保护性错误(例如尝试向只读存储器地址执行写操作)。

高级总线管理响应
  SPLIT 与 RETRY 响应组合允许从设备在延迟传输完成期间释放总线供其他主机使用。这些响应机制通常仅被高访问延迟的从设备采用,通过此类响应码确保总线不会被长期独占,从而维持系统整体访问效率

从上面可以看到,不管是从设备拉低 READY 还是主设备发送 BUSY 信号,总线都是不会被释放的,都在死等。而 SPLIT 和 RETRY 则会释放总线的使用权,重新进入下一次仲裁

5、关于 Split

  在 AMBA AHB 协议中,“Split Transaction(分离传输)”这个名字容易让人以为:

  传输被“拆成两部分”,中间断开,后面再接上。

  但实际上协议并没有真正拆分数据或命令流。它的机制是这样的:

  • 主设备(Master)发起一次传输
  • 从设备(Slave)收到后,发现数据暂时没准备好。 它返回一个 SPLIT 响应(HRESP = SPLIT)
  • 仲裁器(Arbiter)收到 SPLIT 响应后,暂时不再给这个 Master 分配总线(降低该 Master 的优先级)
  • 从设备准备好数据后,会在 HSPLITx 信号上告诉仲裁器“我现在准备好了,可以重新允许那个 master 使用总线”
  • 仲裁器再把总线分配给原来的 Master(恢复其优先级),它重新发起那次传输(重新开始整个地址阶段)。

所以这个 “split” 指的是:

传输时序上被分离(split apart in time),而不是物理上被拆分成两个包。

Split 和 Retry 不同的地方在于:

  • RETRY 响应:仲裁器会继续使用原先的优先级方案,更高优先级的主设备可以获得总线
  • SPLIT 响应:仲裁器通过从设备的 HSPLIT[15:0] 信息调整优先级

SPLIT 比 RETRY 更高效,因为它避免 master 无意义地重试占用总线。

http://www.dtcms.com/a/482021.html

相关文章:

  • .NET 程序自动更新的回忆总结
  • 自然语言处理笔记
  • 通州网站建设如何做信用网站截图
  • 网站空间控制网络服务采购
  • 方法合集——第七章
  • 定制衣柜厂柔性生产:客户需求拆解、板材切割与组装工序协同路径
  • 厦门外贸网站建设 之家wordpress菜单与顶部互换
  • openrewrite 的rewrite.yml 编写注意事项
  • 系统架构的平衡之道
  • 考研10.2笔记
  • Linux:传输层协议
  • 北京做网站建设的公司有哪些优化网站哪个好
  • 搭建网站工具抚州公司做网站
  • RK3588 + 银河麒麟部署 swarm 集群指南-续(自己应用程序部署)
  • 为什么我选择用 Rust 构建全栈后台管理系统?
  • 一篇文章讲清 UPD协议 与 TCP协议
  • 武邑网站建设价格wordpress 8小时
  • SSM高校职称申报系统337gs(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 深度解析:Linux sudo权限配置中的 %wheel ALL=(ALL:ALL) ALL 到底是什么意思?
  • d3.js:学习积累
  • ESLint
  • 大米CMS支付漏洞复现报告
  • SAP MM采购申请审批接口分享
  • 自定义类型:结构体、联合和枚举
  • iOS 是开源的吗?苹果系统的封闭与开放边界全解析(含开发与开心上架(Appuploader)实战)
  • 网站建设费 项目经费通用网址通用网站查询
  • 知道网站域名怎么联系wordpress插件的安装目录下
  • 网站建设价格与方案wordpress抓取别人网站
  • 服务网格 Service Mesh:微服务通信的终极进化
  • 计算机理论学习Day14