AHB协议相关

article/2025/10/14 0:26:49

AHB协议相关

Created: November 9, 2021 7:19 PM
Tags: AMBA

🍀简介

AHB(Advanced High Performance Bus)总线规范是AMBA(Advanced Microcontroller Bus Architecture) V2.0总线规范的一部分,AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus)、ASB (Advanced System Bus)、APB (Advanced Peripheral Bus)。AHB用于高性能、高时钟频率的系统结构,典型的应用如ARM核与系统内部的高速RAM、NAND FLASH、DMA、Bridge的连接。APB用于连接外部设备,对性能要求不高,而考虑低功耗问题。ASB是AHB的一种替代方案。

🌴文摘

总线周期(bus cycle): 总线周期是总线时间的基本单位,其实就是总线时钟的频率。对于 AMBA AHB 或者 APB 协议总线周期定义为从一个上升沿到临界的上升沿的变化区间。总线信号时序总是参考总线时钟周期。

总线传输: AMBA AHB 或者 ASB 总线传输是对数据目标的读写操作,可能会持续一个或者多个总线周期。总线传输在收到从机地址的完成响应后终止。 AMBA AHB 支持较宽的数据传输,包括 64 位和 128 位的数据传输。 AMBA APB 总线传输是对数据目标的读写操作,总是需要 2个总线周期

突发(Burst)传输:突发传输定义了一个或多个数据传输,由主线总机发起,在地址空间增加时,传输宽度保持不变。每次传输增加的步长(地址),由传输大小决定(字节,半字,字),APB不支持突发传输。

AHB总线的强大之处在于它可以将微控制器(CPU)、高带宽的片上RAM、高带宽的外部存储器接口、DMA总线主机、各种拥有AHB接口的控制器等等连接起来构成一个独立的完整的SOC系统,不仅如此,还可以通过AHB-APB桥来连接APB总线系统。AHB可以成为一个完整独立的SOC芯片的骨架

在这里插入图片描述

AHB总线的组成

AHB总线由AHB总线主机(Master)、AHB总线从机(Slave)和Infrastructure构成。Infrastructure由仲裁器、数据多路选择器、地址控制多路选择器、译码器构成。

AMBA AHB 总线协议设计使用一个中央多路选择器互联方案。该方案中,所有总线主机设备输出地址和控制信号来指示它们想执行的传输,同时仲裁器决定哪一个主机能够将它的地址和控制信号连通到所有的从机。当然也需要一个译码器来控制读数据和响应多路信号选择器,多路信号选择器选中来自传输中所包含从机的适当信号。

下图实现包含三个主机和四个从机的AMBA AHB设计的结构要求。
在这里插入图片描述

AHB 主机: 总线主机能够通过提供地址和控制信息发起读写操作。任何时候只允许一个总线主机处于有效状态并能使用总线。

AHB 从机: 总线从机在给定的地址空间范围内响应读写操作。总线从机将成功、失败或者等待数据传输的信号返回给有效的主机。

AHB 仲裁器: 总线仲裁器确保每次只有一个总线主机被允许发起数据传输。即使仲裁协议已经固定,任何一种仲裁算法,比如最高优先级或者公平访问都能够根据应用要求而得到执行。AHB 必须只包含一个仲裁器,单总线主机系统中这并不重要。

AHB 译码器: AHB 译码器用来对每次传输进行地址译码并且在传输中包含一个从机选择信号。所有 AHB 执行都必须仅要求有一个中央译码器。

信号描述

所有 AMBA 信号的命名都用名称的第一个字母来指示信号和哪个总线相关联。信号名称中用一个小写的 n 表示该信号低电平有效,否则信号的名称总是用大写字母来表示。测试信号有一个前缀T而与总线类型无关。

AHB信号前缀:H 表示一个 AHB 信号。例如, HREADY 是用来指示 AHB 部分数据传输完毕的信号。该信号高电平有效。

在这里插入图片描述

AHB总线操作概括

在一次 AMBA AHB 传输开始之前总线主机必须被授予访问总线权限。这个过程开始于总线主机向仲裁器断言一个请求信号。仲裁器指示主机何时能够被授予使用总线。被授权的总线主机通过驱动地址和控制信号来发起一次 AMBA AHB 传输。这些信号提供关于地址、方向和传输宽度的信息,以及表示传输类型是否为一次突发传输的部分。

允许有两种不同类型的突发传输:

  • incr 增量突发,在地址边界处不回环;
  • wrap 回环突发,在特定的地址边界上回环。

写数据总线用来将数据从主机传输到从机上,而读数据总线用来将数据从从机传输到主机上。每次传输包含:

  • 一个地址和控制周期;
  • 一个或多个数据周期。

地址不长期有效所以所有从机必须在这个时段(传输地址时)采样地址。然而,通过HREADY 信号可以延长数据。当该信号为低时导致在传输中插入等待状态同时允许从机有额外的时间提供或者采样数据。在传输中从机通过使用响应信号来表示状态,

HRESP[1: 0]:

OKAY OKAY 响应用来表示传输进展正常并且当 HREADY 变高时表示传输成功完成。

ERROR ERROR 响应表示发生了一个传输错误并且传输失败。

RETRY 和 SPLIT RETRY 和 SPLIT 两个传输响应都表示传输不能立刻完成,但是总线主机应该继续尝试传输。在常规操作中主机被允许在仲裁器授予另一个主机访问总线之前完成一个特定突发的所有传输。然而,为了避免过多的仲裁延时可能允许仲裁器打断一个突发并且这种情况下主机必须(申请)重新仲裁总线以完成剩下的突发传输。

基本传输

一笔传输由如下两部分组成:

地址阶段:一个周期

数据阶段:一个或多个周期,由HBURST信号决定需要几个有效周期,可以由HREADY发出请求延长一个周期。

所以不考虑burst传输,ahb一次数据传输至少需要两个clk周期。

5.1 没有等待状态的single transfer

在这里插入图片描述

第一个周期的上升沿,主机将地址信息和控制信息发送到总线上;

第二个周期的上升沿,从机采样地址和控制信号,并将HREADY拉高; 如果是写操作,主机会在第二个周期的上升沿过后传输要写入的数据;如果是读操作,从机会在HREADY信号拉高后将读取的数据写入总线;

第三个周期的上升沿,如果是写操作,主机获取HREADY高信号,表明从机已成功接收数据,操作成功;如果是读操作,主机获取HREADY高信号,表明此时的读数据有效并且接收下来,操作成功。需要注意,HREADY信号在数据有效期间必须为高,并且延续到第三个周期的上升沿之后,确保主机的正确采样。

5.2 slave插入等待状态的single transfer

从机可以及时处理主机请求,但也可能存在从机太慢不能立即处理的情况。这时需要让主机稍微等一等,需要从机插入一些等待的状态。如下图所示,HREADY信号在第二和第三周期拉低,意在告诉主机,从机不能立即处理,需要主机等待2个周期。在这里需要注意2点: 如果是写操作,主机要在等待期间保持写数据不变,直到本次传输完成; 如果是读操作,从机不需要一开始就给出数据,仅当HREADY拉高后才给出有效数据。
在这里插入图片描述

5.3 多个single transfer的pipeline操作

在这里插入图片描述

扩展数据周期的一个负效应是必需延长相应的下一笔传输的地址周期。A和C为零等待传输,B加入了一个等待周期,因此相应的C地址周期要进行扩展

第一个周期,主机发起一个操作A,并驱动地址和控制信号;

第二个周期,从机收到了来自总线的请求,将HREADY信号拉高;

第二个周期上升沿后,主机发现有操作B需要执行,并且检查到上一周期的HREADY为高,则发起第二个操作B;

第三个周期,主机获取HREADY信号为高,表示操作A已经完成;

第三个周期上升沿后,主机发现有操作C需要执行,并且检查到上一周期的HREADY为高,则发起第三个操作C;

第三个周期上升沿后,从机由于繁忙插入了一个等待状态,将HREADY拉低;

第四个周期,主机获取HREADY信号为低,知道从机希望等待,于是主机保持和上一拍一样的信号;

第四个周期,从机处理完了事务,将HREADY信号拉高,表示可以继续处理;

第五个周期,主机获取HREADY信号为高,知道从机已经可以处理B操作;

第五个周期上升沿后,B操作完成;

第六个周期上升沿后,C操作完成。

需要注意几点:HREADY在一定程度上表示了从机的pipeline能力,在AHB中是2个pipe,也就是总线上最多存在2个未处理完的transfer。只有当总线上未完成的transfer少于2个时,主机才能发起操作

5.4 AHB控制信息

在介绍突发传输之前,我们再来看下AHB控制信息。

HWRITE - 这个信号是读写控制信号,也即transfer的方向控制信号。 高电平表示写操作,低电平表示读操作。

HSIZE - 这个信号是指明单次传输的数据宽度。表示传输的大小,三位表示0…7,分别对应8bits(byte), 16bits(halfword),32bits(word),64bits,128bits,256bits, 512bits,1024bits

HPROT[3:0] - 为transfer提供额外的访问保护和控制权限信号。一般不用,在此不做介绍。

HTRANS[1:0] - 进行一次传输时的传输类型,这个信号由主机根据自己要进行的传输类型生成的控制信号。一共4种类型

在这里插入图片描述

这个信号只有在突发传输中出现。当从机收到这个信号时,表明当前的传输是一个突发中的某一拍。这时,总线上的控制信号应当与之前的保持一致,地址视情况递增或者回环。(这些信号其实是由主机决定的,从机不用考虑,只需要单方面接收即可)

在这里插入图片描述

T1,主机传入地址和控制信号,因为是新的突发传输开始,所以传输的类型是NONSEQ;

T2,由于主机不能在第二个周期里处理第二拍,所以主机使用BUSY传输来为自己延长一个周期的时间。注意,虽然是延长了一个周期,但是主机需要给出第二个传输的地址和控制信号;

T3,从机采集到了主机发来的BUSY,知道主机需要等待一拍,所以从机会忽略这个BUSY传输; T3,主机发起了第二个传输,因为是同一个burst的第二个传输,所以传输的类型是SEQ;

T5,从机将HREADY信号拉低,告诉主机需要等待一个周期;

T8时刻完成最后一个传输。

需要注意的 虽然从机会忽略掉BUSY传输,但是主机也需要给出下一拍的地址和控制信号

5.5 突发操作

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

增量突发访问连续地址并且突发中的每次传输地址仅是前一次地址的一个增量;

对于回环突发,如果传输的起始地址并未和突发(x 拍)中字节总数对齐那么突发传输地址将在达到边界处回环。例如,一个四拍回环突发的字(4 字节)访问将在16 字节边界回环。因此,如果传输的起始地址是 0x34,那么它将包含四个到地址0x34、 0x38、 0x3C 和 0x30;突发信息通过使用 HBURST[2: 0]并且 8 种可能的类型在中定义如下:

在这里插入图片描述

突发禁止超过 1KB 的地址边界。因此重要的是主机不要尝试发起一个将要超过这个边界的定长增量突发。将执行单个传输时使用未指定长度的增量突发理解为长度为一的突发比较合理一个增量突发可以是任何长度,但是(长度)上限由地址不能超过 1KB (最大size* 最大burst次数 512bit*16)边界这个事实限定了。注:突发大小表示突发的节拍数量,并不是一次突发传输的实际字节数量。一次突发传输的数据总量可以用节拍数乘以每拍数据的字节数来计算,每拍字节数由 HSIZE[2: 0]指示。所有突发传输必须将地址边界和传输大小对齐。例如,字传输必须对齐到字地址边界(也就是 A[1: 0] = 00),半字传输必须对齐到半字地址边界(也就是 A[0] = 0)。

当一个突发不允许完成的特定情况下对任一从机设计而言如果突发提前终止,那么利用突发信息能够采取正确的动作显得很重要。从机能够通过监控 HTRANS 信号决定一个突发何时提前终止并且确保在突发开始之后每次传输有连续或者忙的标记。如果产生一个非连续或者空闲传输那么这表明一个新的突发已经开始因此前一次突发一定已经终止。如果总线主机因为失去对总线的占有而不能完成一次突发那么它必须在下一次获取访问总线时正确地重建突发。例如,如果一个主机仅完成了一个四拍突发的一拍那么它必须用一个未定长度突发来执行剩下的三拍突发。

下图表示了一个四拍回环突发并且第一次传输伴随一个附加等待状态。
在这里插入图片描述

作为一次四拍字突发传输,地址将会在 16 字节边界回环,因此传输到地址 0x3C之后接下来传输的地址是 0x30。 下图表示了(回环突发)和增量突发的唯一不同,既是地址连续通过了 16 字节边界,并不回环,而是递增。
在这里插入图片描述

AHB Lite简单理解,就是阉割掉仲裁器,总线只允许一个主设备,这样就是ahb lite.

AHB总结:

**

  1. AHB支持burst传输,burst有两种方式,incr和wrap。
  2. HSIZE[2:0]支持8,16,32,64,128,256,512bit.
  3. burst传输两种方式分别支持4,8,16拍突发传输。最大边界1KB(512b*16)
  4. 支持多个single transfer的pipeline操作。
  5. 支持多主多从。

**


http://chatgpt.dhexx.cn/article/8HIGSyUB.shtml

相关文章

AHB协议

文章目录 什么是AHB总线协议AHB总线组成AHB信号描述AHB传输Bust传输 AMBA高级处理器总线架构,不同的速率要求构成了高性能SOC设计的通信标准: AHB高级高性能总线APB高级外围总线AXI高级可拓展接口 什么是AHB总线协议 AHB:主要是针对高速率、高频宽及快…

AHB 协议学习

文章目录 AHB 协议学习一、 AHB 协议 信号二、 AHB 协议 传输2.1 a read transfer with two wait states2.2 a write transfer with one wait states2.3 transfer with HTRANS(控制信号)**2.4 transfer :Eight-beat incrementing burst, INCR…

AMBA5 AHB协议规范(AHB5,AHB-Lite)中文版-第三章 传输

第三章 Transfers 本章描述读写传输。它包括以下部分: – 基本传输 on page 3-28. – 传输类型 on page 3-30. – 锁定传输 on page 3-32. – 传输大小 on page 3-33. – 突发操作 on page 3-34. – 等待传输 on page 3-39. – 保护控制 on page 3-44. – 内存类型 on page 3-…

AMBA 系列之 AHB 协议

目录 1. 简介 1.1 AHB总线的架构 1.2 AHB基本特性 2. AHB总线的组成 3. 信号描述 3.1 AHB Slave 接口 3.2 AHB Master 接口 3.3 AHB Arbiter 接口 3.4 AHB Decoder 接口 4. 总线操作 5. 基本传输 5.1 没有等待状态的单次传输(Single Transfer&#xff0…

AHB总线

大部分的总结在csdn里面都有。这里只是总结自己理解的。 AHB基本特性有: Burst传输(一共有Hburst[2 : 0]的类型),single,incr,wrap4,incr4,wrap8,incr8,wra…

AMBA5 AHB协议规范(AHB5,AHB-Lite)中文版-第一章 引言

ARM AMBA 5 AHB 协议规范 AHB5, AHB-Lite 发行信息 变更历史 日期版本保密性更改2006/6/26A非保密First release for v1.02015/6/25B.a保密Update for AMBA 5 AHB Protocol Specification2015/10/30B.b非保密Confidential to Non-Confidential Release Contents ARM AMBA 5 A…

AHB协议详解

AHB总线 AHB总线在AMBA2中就已经定义,AHB总线一开始主要是作为系统高速总线使用,适用于高性能,低功耗的系统设计。目前因为AXI总线作为高速总线的优势更加明显,AHB会用在相对低速的系统设计中。基本排序就是APB适用于低速设计&am…

AHB学习笔记

1.AHB概述 AHB总线是一种专为高性能同步传输设计的总线,层次高于APB总线,支持以下特性: 突发传输拆分事务主设备单时钟周期传输单时钟沿操作非三态实现宽数据总线配置(64/128bit) 1.1.典型AHB系统 典型的AHB系统包括以…

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 并不…