AHB协议学习

article/2025/10/14 1:08:40

AHB协议总结

  • AHB协议学习
    • 1. AHB简介
    • 2. AHB的接口信号
      • 2.1 Global signals
      • 2.2 Master signals
      • 2.3 slave signals
      • 2.4 decoder signals
      • 2.5 multiplexor signals
    • 3. 传输
    • 4. Decoder
    • 5. Multiplexor
    • 6. 大小端Endianness:
    • 7. Exclusive transfer

AHB协议学习

1. AHB简介

AHB(Advanced Hight-performance Bus)是AMBA(Advanced Microcontroller Bus Architecture)协议中的一个。下面对AHB5/AHB-Lite协议进行简单介绍。

AHB总线为高速,高性能总线。具有以下特点:流水线操作;可支持最多16个总线主设备;支持burst传输;总线带宽为8/16/32/64/128bits(建议最小总线宽度为32位);上升沿出发操作。对于一个新的设计建议使用AHB总线接口。

AHB的组成部分有:主设备master,从设备slave,译码器decoder,多路转换器multiplexor。Master,用来初始化一次读/写操作,某一时刻只允许一个主设备使用总线;slave,响应一次读/写操作,通过地址映射来选择使用哪一个从设备; decoder,通过地址译码来决定选择哪一个从设备;multiplexor,由decoder提供控制,选择将那个从设备的response信号送给master。如下图为AHB的结构图。


在这里插入图片描述

AHB的结构图

每次传输包括两个阶段:Address phase,只有一个cycle; Data phase,一个或者更多cycles,由HREADY信号决定需要几个cycle。AHB是流水线传输,先是地址周期,然后是数据周期。

2. AHB的接口信号

将AHB信号分为五类:global信号,master interface,slave interface, decoder signals,multiplexor signals。AHB信号的前缀为“H”。

2.1 Global signals

名称来源描述
HCLKclock sourcePCLK上升沿,进行传输
HRESETnreset复位信号,低有效,直接接系统总线的reset信号

2.2 Master signals

名称来源描述
HADDR[31:0]Slave & Decoder32位系统地址总线
HBURST[2:0]SlaveBurst类型。
3’b000: SINGLE (单个传输burst)
3’b001: INCR (未定义长度的incrementing burst)
3’b010: WRAP4 (4拍wrapping burst)
3’b011: INCR4 (4拍incrementing burst)
3’b100: WRAP8 (4拍wrapping burst)
3’b101: INCR8 (4拍incrementing burst
3’b110: WRAP16 (4拍wrapping burst)
3’b111: INCR16 (16拍incrementing burst)
HMASTLOCKSlave当为高的时候,表示当前的传输为locked sequence的一部分,该sequence不可分割,slave不能在sequence中间插入任何操作。它与地址和控制信号同步的。
HPROT[3:0]SlaveMemory types
HPROT[0] data/inst (1:data access , 0:instruction fetch)
HPROT[1] privileged特权位 (1: privileged access,0 :user access)
HPROT[2] bufferable位 (1:write响应可以在中间点给出,0 :write响应必须在终点给出)
HPROT[3] modifiable位 (1:传输特性可以被修改,0 :传输特性不能修改)
HPROT[6:4] Slave HPROT[4] lookup位 (1: 传输必须在cache中查找,0 :传输不需要再cache中查找)
HPROT[5] allocate位,性能相关 (1:传输被分配到cache,0 :传输没有被分配到cache)
HPROT[6] shareable位 (1:传输与系统中其他masters共享,0 :传输没有与系统中其他masters共享)
HSIZE[2:0]Slave数据传输的大小。(注意:transfer size必须小于等于数据总线的宽度)
3’b000: 8bits ; 3’b001: 16bits ; 3’b010: 32bits ;
3’b011: 64bits ; 3’b100: 128bits ; 3’b101: 256bits ;
3’b110: 512bits ; 3’b111: 1024bits
HNONSECSlave & Decoder安全传输相关。1:表示非安全传输 ,0:表示安全传输
HEXCL独占访问monitor独占访问。。。
HMASTER[3:0]Slave & 独占访问monitorMaster标识符。。。
HTRANS[1:0]Slave传输类型。
2’b00 : IDLE 空闲
2’b01 : BUSY 忙
2’b10 : NONSEQ 非连续
2’b11 : SEQ 连续
HWDATA[31:0]Slave写数据总线,建议最小宽度为32bits
HWRITESlave传输方向。为高表示写传输,为低表示读传输

2.3 slave signals

名称接收方描述
HRDATA[31:0]MultiplexorSlave的读数据总线
HREADYOUTMultiplexor为高,表示一次传输在总线上已经完成
HRESPMultiplexorSlave提供给master的传输响应。0:传输状态为OKAY ,1:传输状态为ERROR
HEXOKAYMultiplexor独占访问OKAY

2.4 decoder signals

名称接收方描述
HSELxSlaveSlave选择信号,表示选择哪个slave

2.5 multiplexor signals

名称接收方描述
HRDATA[31:0]Master读数据总线,从decoder中选择的。
HREADYMaster & Slave当为高,表示先前的传输已经完成。HREADY为高并且HRESP是OKAY(HRESP=0),表示成功的完成一次传输。一般不建议slave插入超过16个wait状态,否则影响性能,但是对于boot ROM,系统启动时,性能可以忽略,此时可以使用大于16个wait状态。
HRESPMaster传输响应
HEXOKAYMaster独占访问OKAY

3. 传输

读传输过程:
在这里插入图片描述

写传输过程
在这里插入图片描述

下图为三次不相关的传输
在这里插入图片描述

下面为一个4拍的incr读操作,第一拍传输类型为NONSEQ,如果期间master busy,则等到不busy时继续进行后面的传输,且后面的传输均为SEQ类型。
在这里插入图片描述

注:一次addr phase必须在成功检测到HREADY为高才能完成;

Wrap4
在这里插入图片描述

固定长度burst,busy后重新传输
在这里插入图片描述

未定义长度的burst,busy后,busy当拍丢掉
在这里插入图片描述

T3-T4,在HREADY为低的情况下slave返回ERROR,下一拍T4-T5,master将传输类型改为IDLE,在这一拍HREADY为高并返回ERROR。Slave返回ERROR时,允许地址在HREADY为低的情况下改变。
在这里插入图片描述

典型波形如下:
Addr=40000014, HTRANSP=NSEQ, 先读出数据为6,再写入数据为5,无论是addr phase还是dataphase, 都需看到HREADYP有效
在这里插入图片描述

4. Decoder

Decoder解码器用于产生HSELx信号到各个slave,decoder只负责解码,是纯粹的组合电路。
在这里插入图片描述

每个slave最小的地址空间有1KB,decoder最多只需要对22位地址进行解码,当master发burst传输时,address不可以跨越1KB边界,当需要跨越时,则需要将该transfer分为两次发。

5. Multiplexor

读数据和响应多路转换器
在这里插入图片描述

6. 大小端Endianness:

BE8 : Byte-invariant big-endian (字节不变大端,8bits)
BE32: Word-invariant big-endian (字不变大端,32bits)
Little endian ()

the Most Significant (MS) and the Least Significant (LS)
下面是大端小端的存储形式,

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

7. Exclusive transfer

HEXCL信号,表示独占传输
对于一个独占传输,有如下约束:
必须有一个single数据传输;
burst类型(HBURST)必须为SINGLE或INCR;
必须不能包含BUSY传输;
地址与数据大小对齐;
HPROT信号必须满足,独占访问monitor对该transfer有可见性。

HNONSEC 为non-secure

注意:如果exclusive access monitor在系统cache之后,传输必须为non-cacheable;如果在系统cache之前,则允许传输为cacheable。


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

相关文章

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

2019中兴捧月·总决赛心得

2019中兴捧月总决赛心得 原文链接&#xff1a;https://hey-yahei.cn/2019/05/25/zte_challenge_final/ 赛题背景 与初赛类似&#xff0c;不过初赛更多关注的是加速&#xff0c;而总决赛更关注的是压缩。 原始模型是一个简单的3x112x112输入大小的resnet18&#xff0c;人脸识…