AHB学习笔记

article/2025/10/14 1:11:09

1.AHB概述

AHB总线是一种专为高性能同步传输设计的总线,层次高于APB总线,支持以下特性:

  • 突发传输
  • 拆分事务
  • 主设备单时钟周期传输
  • 单时钟沿操作
  • 非三态实现
  • 宽数据总线配置(64/128bit)

1.1.典型AHB系统

7241055-143708a9a56880ac.JPG

典型的AHB系统包括以下部分:

  • 可支持高带宽传输的主干总线
  • AHB主设备(如高性能CPU和DMA设备等)
  • AHB从设备(存储器和APB桥等)

1.2.AHB互连

AHB的互连使用多路复用器策略,由以下几个部分组成:

  • 主设备:发起通信,所有主设备将通行地址和数据发送到主设备多路复用器
  • 从设备:回应通信,从主设备多路复用器获得通信地址和数据,将回应数据发送到从设备多路复用器
  • 判决器:主设备多路复用器的控制器,控制哪一个主设备的通信数据可以被发送到从机
  • 解码器:从设备多路复用器的控制器,控制哪一个从设备的通信数据可以被发送回主机

2.AHB信号

2.1.基本AHB信号

信号名位宽来源描述
HCLK1系统时钟传输系统的时钟
HRESETn1复位系统传输系统复位信号,低有效
HADDR32主机主机发送传输目标地址
HTRANS2主机当前发生的传输类型
HWRITE1主机读写信号:1-写操作;0-读操作
HSIZE3主机传输位宽,标记一次传输的位宽
HBURST3主机突发传输类型
HPROT4主机协议类型,标记传输使用协议的额外信息
HWDATA32主机发送数据,主机发送到从机的数据
HSELxx解码器标记哪一个从机被选中,由地址解码产生
HRDATA32从机接收数据,从机发送到主机的数据
HREADY1从机传输完成信号,高有效
HRESP2从机传输状态的额外标记

2.2.多主机传输信号

信号名位宽来源描述
HBUSREQxx主机主机x向判决器请求传输,最多支持16个主机
HLOCKxx主机主机x向判决器请求锁定传输,其他主机在锁定期内无法使用总线
HGRANTxx判决器主机x权限标记信号,当有效时(为高有效),主机x在AHB总线空闲时具有最高的控制权限
HMASTER4判决器主机标号,标记当前传输由哪个主机控制
HMASTLOCK1判决器锁定标记,标记当前总线被某个主机锁定
HSPLITx16x从机事务分离标记,用于标记哪个主机应当重启事务

3.AHB传输

AHB传输分为以下几个部分:

  • 主机获取总线使用权:主机向判决器发送总线请求信号,判决器发送应答后主机可以开始传输
  • 数据传输:主机向从机传输数据,分为以下两个部分:
    • 发送地址和控制信号:包括地址,位宽,突发类型(增量突发和回卷突发)等控制信号,仅一个时钟周期
    • 数据传输:进行数据交换,一个或多个时钟周期
  • 从机应答:从机通过HRESP和HREADY标记完成状态,对于HRESP,有以下状态:
    • OKAY:标记传输完成,当HRESP为该状态且HREADY拉高时,传输完成
    • ERROR:标记传输出错
    • RETRY和SPLIT:标记传输未完成,主设备仍需要占用总线

关于突发传输,理论上进行突发传输的主设备应当一直占据总线,但是为了缩短等待时间,AHB允许打断突发传输,并在一段时间后重启该突发传输

3.1.基本传输

AHB的基本传输过程由两个部分组成:

  • 地址/控制传输:传输地址信息和控制信息,仅占一个时钟周期
  • 数据传输:可能需要多个时钟周期,由信号HREADY决定(拉高才结束数据传输)

3.1.1.无等待传输

7241055-4073d1762bc1a440.png
ahb_basic_nowait.png

无等待传输下,一个传输与三个时钟沿有关:

  • 第一个时钟沿:第一个时钟沿后,主机将地址信息和控制信息发送到总线上
  • 第二个时钟沿:第二个时钟沿上,从机采样主机的地址信息和控制信息。第二个时钟沿后,从机将响应信号和数据发送到总线上
  • 第三个时钟沿:主机采样从机响应信号和数据,传输完成

3.1.2.有等待传输

7241055-a9eb4d783b9b2792.png
ahb_basic_wait.png

有等待传输下,数据传输阶段可以扩展,即在HREADY拉高之前,数据传输阶段不结束。要求写数据在HREADY拉高前保持稳定,主机在HREADY拉高后采样读数据

3.1.3.流水线传输

7241055-ffd7109d7e0ca87d.png
ahb_basic_water.png

AHB总线支持流水线传输,即将传输分为地址-数据两个部分流水进行,本次传输的地址必然在上一次地址之后,本次传输的数据必定紧跟在本次传输地址之后。因此,当上一次的数据传输阻塞导致传输周期增加时,下一传输的地址周期也会相应的变长:

  • A1和C1为第一次传输的地址和控制信号
  • WD1和RD1是第一次传输的数据,该传输为单时钟即无阻塞的传输,同时发送的还有下一次传输的地址和控制信号:A2和C2
  • 第二次传输为多周期传输,因此WD2和RD2占据多个时钟周期,对应的,同时发送的第三次传输地址和控制信A3和C3也被延迟相同的时钟周期数
  • WD3和RD3为第三次传输的数据

3.2.传输类型

传输类型使用端口HTRANS标记,有以下取值:

  • IDLE(00):标志主机占有AHB总线,但是没有数据传输发生。从机需要使用OKAY状态回应该类型
  • BUSY(01):标志主机占有AHB总线并在进行猝发传输,但下一个传输不能立刻发生。从机需要使用OKAY状态回应
  • NONSEQ(10):标志主机当前发送的地址和控制信号与上一次传输无关(单次传输就是该状态)
  • SEQ(11):标记主机处于猝发传输的中间部分,即当前发送的地址和控制信号与上一次地址和控制信号有关

例子如下图所示:

7241055-5dbc9c5ea821bd5d.JPG
ahb_trantype.JPG
  • 第一次传输,开启一次猝发传输,因此该地址与上一次传输无关,使用类型NONSEQ
  • 第二次传输,无法立刻进行传输,因此使用BUSY标记延迟一个周期,延迟后可以进行传输,且处于猝发传输中,因此地址与上一次地址有关,使用SEQ标记
  • 之后均为猝发传输,均使用SEQ类型

3.3.猝发传输

3.3.1.猝发类型

猝发传输分为两类:

  • 增量猝发:传输过程中传输地址递增。下一次传输的地址是上一次地址加上一个增量
  • 回卷猝发:猝发的地址范围被限制在一个固定范围之内,传输地址递增,若是超出则回到地址范围的开始的地址。例如从0x34进行增量为4,范围为16的回卷猝发,地址顺序为0x34、0x38、0x3c,0x30

猝发类型使用字段HBURST标记,含义如下表所示:

HBURST[2:0]类型描述
000SINGLE单个传输
001INCR无限制长度的增量猝发传输
010WRAP44拍回卷猝发
011INCR44拍增量猝发
100WRAP88拍回卷猝发
101INCR88拍增量猝发
110WRAP1616拍回卷猝发
111INCR1616拍增量猝发

注意一次猝发传输不能跨越1kB的地址区间,且传输的起始地址必须与数据类型对应,例如传输字数据的二进制起始地址必须满足后两位为00。

3.3.2.猝发终止

从机通过监控HTRANS发现猝发传输的终止:

  • 若下一个HTRANS标记为BUSY或SEQ:猝发传输未终止
  • 若下一个HTRANS标记为NONSEQ或IDLE:上一次猝发传输已经终止

若猝发传输是提前终止的,如总线控制权被剥夺,那么主机需要在可以进行传输时重建猝发传输。例如一个4拍传输仅发送了一拍就终止,主机需要使用INCR类型的猝发构建3拍传输以重建。

3.3.3.猝发切分传输

[暂时略过,需要使用时再补充]

3.4.数据总线

当传输位宽不同时,数据总线的使用情况如下所示(小端传输):

7241055-e60cb6438f1888e6.JPG
ahb_data_bus.JPG

4.控制信号

4.1.控制总线

4.1.1.HSIZE

HSIZE控制传输的数据结构位数,如下表所示:

HSIZE(bit)位宽描述
0008字节传输(Byte)
00116半字传输(Half word)
01032字传输(Word)
01164-
1001284字传输
1012568字传输
110512-
1111024-

4.1.2.HPROT

HPROT提供对传输协议的额外说明,如下所示:

  • HPROT[3]:0-Cacheable;1-Not cacheable
  • HPROT[2]:0-Bufferable;1-Not bufferable
  • HPROT[1]:0-Privileged access;1-User access
  • HPROT[0]:0-Opcode fetch;1-Data access

4.1.3.HSELx

HSELx由地址解码器产生,用于指示哪个从机被选中。从机当HREADY为高,即一次传输完成后锁存HSELx信号,若HSELx在HREADY为低时有效,将不会对本次传输产生影响。

4.1.4.HRESETn

HRESETn信号是复位信号,该信号是异步触发并同步释放的,当该信号有效时,所有主机均要将相关信号复位,包括将HTRANS置为IDLE。

4.2.响应信号

4.2.1.HREADY

HREADY信号标志传输是否完成:0-未完成,需要插入额外周期;1-已完成

4.2.2.HRESP

HRESP用于标记传输完成的状态:

  • OKAY(00):传输完成
  • ERROR(01):传输错误,例如协议错误或写入只读地址
  • RETRY(10):传输未正常完成,需要重新尝试传输。该响应不会改变优先级
  • SPLIT(11):传输未正常完成,需要从下一个地址重新启动传输。该响应可能改变优先级

4.3.总线仲裁

仲裁器保证一个时刻仅有一个主设备占有总线,因此当有多个主设备提出访问请求时,仲裁器通过仲裁信号仲裁哪一个主设备获得总线使用权

4.3.1.仲裁信号

仲裁信号见[2.2.多主机传输信号]

4.3.2.主机获取总线

主机获取总线控制权分为两个步骤:

  1. 主机分别通过HBUSREQx和HLOCKx分别向仲裁器申请获取或锁定总线控制权
  2. 仲裁器分配总线控制权

主机通过自己的HBUSREQx向仲裁器申请总线控制权,仲裁器在时钟上升沿采样该信号,并通过内置的优先级算法决定总线控制权归属。一般来说,仲裁器仅会在一次传输完成后分配总线控制权,即将HMASTER置为获取总线控制权的主机编号且在上一次突发传输的倒数第二个传输时改变HGRANTx,因此新HGRANTx可以在上一次突发传输的最后一次传输同时被采样。

但如果需要,仲裁器也可以通过打断传输的方式优先执行优先级更高的传输。若获取总线控制权的主机申请锁定总线,其他主机将无法获得总线控制权。

对于指定突发长度的突发传输,仲裁器根据突发长度判断需要总线控制权的时间,若结束后启动下一次突发传输,需要再次请求控制权。对于未指定长度的突发传输,主机需要在传输过程中一直保持请求信号拉高,否则将仲裁器无法判断何时收回总线控制权。

当无主机申请总线时,总线的控制权被交给默认的主机,即使该主机没有申请总线控制权。此时默认主机需要将HTRANS置为IDLE状态。


http://chatgpt.dhexx.cn/article/o54AlXvC.shtml

相关文章

AHB协议学习

AHB协议总结 AHB协议学习1. AHB简介2. AHB的接口信号2.1 Global signals2.2 Master signals2.3 slave signals2.4 decoder signals2.5 multiplexor signals 3. 传输4. Decoder5. Multiplexor6. 大小端Endianness:7. Exclusive transfer AHB协议学习 1. AHB简介 AH…

AHB总线介绍【1】

1.简介 AHB总线规范是amba总线的一部分,全称是Advanced high performance bus。AMBA总线常用的有AXI,AHB,APB。APB 的全称:Advanced Peripheral Bus 作为 AMBA 总线的一层,APB 总线是为了功耗最小化和减低接口复杂度而…

AMBA总线—AHB总线协议详解

文章目录 一、AMBA总线介绍1.1.AMBA发展史1.2.典型的AMBA系统 二、AHB总线(宏观构造)2.1.AHB总线组成2.2.AHB总线组成互连2.3.AHB操作概述2.4.AHB基本传输阶段 三、AHB总线传输(时序)3.1.AHB信号描述(重要)…

Docker详解之EXPOSE

EXPOSE <端口1> [<端口2>...] 大家都知道以上代码是Dockerfile中来声明端口的命令&#xff0c;但是你真的了解过它吗&#xff1f;现在我带大家来深入了解我们的EXPOSE命令。 首先&#xff0c;我们最应该明确的一点就是&#xff0c;EXPOSE命令只是声明了容器应该打…

Network: use `--host` to expose

vite启动后提示&#xff1a; Network: use --host to expose&#xff0c;且无法通过网络IP访问服务 你遇到的问题是不是跟下图这样&#xff1a; 此问题的原因 当 局域网 中另一台设备需要访问该服务时&#xff0c;必须通过本机 IP 端口 访问。 尝试访问后&#xff0c;发现找…

AE(Auto Expose)自动曝光

AE Auto Expose自动曝光 1.作者&#xff1a;一隅生 自动曝光就是相机根据光线条件自动确定曝光量。 从根本测光原理上分可分两种&#xff1a;入射式和反射式。入射式就是测量照射到相机上的光线的亮度来确定曝光组合&#xff0c;这是一种简单粗略的控制&#xff0c;多用于低档相…

简单的聊一聊 Vue3.2 中新出的 expose 是做啥用的?

随着Vue 3.2的发布&#xff0c;一个新的组合工具提供给我们&#xff0c;叫做 expose。 你是否曾经创建过一个需要向模板提供一些方法和属性的组件&#xff0c;但又希望这些方法对组件是私有的&#xff0c;不能被父类调用&#xff1f; 如果你在开发一个开源的组件或库&#xff0…

Android gson解析@SerializedName、transient、@Expose

目录 SerializedName和transient Expose SerializedName和transient SerializedName 自定义序列化与反序列化过程中json数据的的key transient 加这个关键字表示这个字段 不会参与任何的序列化与反序列化 看代码 该商品类,name字段加上SerializedName("goodsName"…

kubectl 命令详解(七):expose

一、命令作用 将资源暴露为新的Kubernetes Service。 指定deployment、service、replica set、replication controller或pod &#xff0c;并使用该资源的选择器作为指定端口上新服务的选择器。deployment 或 replica set只有当其选择器可转换为service支持的选择器时&#xf…

Dockerfile EXPOSE指令 语法解析

Docker容器启动后&#xff0c;需要宿主机和容器端口进行映射&#xff0c;以便容器内服务对外暴露&#xff0c;这可以在启动是通过docker run -p host:port ...指定&#xff0c;也可以在镜像构建时通过dockerfile的EXPOSE指令指定&#xff0c;本文本来具体对EXPOSE指令进行解析。…

Dockerfile中的expose到底有啥用

如题&#xff0c;看过Dockerfile常识的肯定都知道这个EXPOSE指令是暴露容器的端口。 docker run 的时候指定 -P 或者 -p 将容器的端口映射到宿主机上。这样外界访问宿主机就可以获取到容器提供的服务了。 -P命令可以结合这个dockerfile文件中的EXPOSE暴露的端口。会将容器…

Dockerfile(6) - EXPOSE 指令详解

EXPOSE 通知 Docker 容器在运行时监听指定的网络端口 EXPOSE 端口号 EXPOSE 端口号/协议 默认协议是 TCP 同时在 TCP、UDP 上暴露端口 EXPOSE 80/tcp EXPOSE 80/udp EXPOSE 原理 个人理解&#xff1a;EXPOSE 暴露的端口更像是指明了该容器提供的服务需要用到的端口EXPOSE 并不…

2019中兴捧月·初赛心得

2019中兴捧月初赛心得 原文链接&#xff1a;https://hey-yahei.cn/2019/05/22/zte_challenge_preliminary/ 赛题背景 自从 Alex Krizhevsky 夺得 ILSVRC 2012 ImageNet 图像分类竞赛的冠军后&#xff0c;深度卷积神经网络在图像分类、物体检测、语义分割、目标跟踪等多个计算…

2019中兴捧月之智能音频处理参赛总结

抱着免笔试的心态参加了中兴捧月比赛&#xff0c;赛题一下来&#xff0c;呦&#xff01;题目可选余地很大&#xff0c;稳了&#xff01;看完题之后&#xff0c;凉了&#xff01;再见&#xff0c;中兴。。。 正题开始&#xff0c;博主选的是智能音频识别&#xff0c;题目给了几段…

算法4-中兴捧月杯热身赛1素数判断-热身赛2亲和串-热身赛3旅游路线-

题目1&#xff1a;素数判断 需求 给定一个数n&#xff0c;要求判断其是否为素数(0,1&#xff0c;负数都是非素数)。输入描述:测试数据有多组&#xff0c;每组输入一个数n。输出描述:对于每组输入,若是素数则输出yes&#xff0c;否则输入no。 样例1: 输入:13输出:yes 代码 //…

2021中兴捧月神算师算法赛,4-24第一场,第四题:D-换队伍,2021-4-28

第四题&#xff1a;D-换队伍 分析&#xff1a; 1.问题本身很简单&#xff0c;也只有两条队伍&#xff0c;一个队伍中的人换到另一个队伍的末尾。问题在于对其他人排队位置的保存和排序。 2.用什么数据结构进行保存&#xff0c;是一个很关键的问题&#xff0c;对问题解决的方法和…

中兴捧月算法挑战赛-RAW夜景图像去噪总结

最终排名 85/1159 网址&#xff1a;https://zte.hina.com/zte/denoise 无缘复赛&#xff0c;太菜了&#xff0c;不好意思说自己学去噪的了&#xff0c;代码会开源&#xff0c;但是感觉没什么人看吧 尝试过的模型 DnCNN&#xff1a;很差&#xff0c;0分UNet&#xff1a;很蓝…

2021中兴捧月神算师算法赛,4-24第一场,第二题:B - 切绳子,2021-4-27

第二题&#xff1a;B - 切绳子 题目如下图所示&#xff1a; 这道题目难度中等&#xff0c;但是有很多细节要注意。 分析&#xff1a; 1.首先数据类型问题&#xff0c; 1<n<1e18,这个显然超过了int的长度65535&#xff0c;需要使用big int 或者是long long 型进行定义…

中兴捧月算法-切绳子

中兴捧月算法-切绳子 题目描述 来源&#xff1a;牛客网 示例一&#xff1a;

中兴捧月比赛DIJKSTRA派算法说明

因为文章包含太多公式&#xff0c;无法复制&#xff0c;所以只能截图 我现在不知道怎么传源码&#xff0c;代码的话如果有人要&#xff0c;留言QQ 输出的次优解路径为&#xff1a; S->N2->N4->N5->N3->N7->N8->N14->N13->N12-…