AHB lite协议

article/2025/10/13 23:30:17

文章目录

  • 概述
  • 特点
  • AHB的组成
    • 单个master的AHB lite结构
    • 多个master的AHB lite结构
      • 结构1
      • 结构2
  • AHB lite基本信号
    • 1.系统信号
    • 2.master
    • 3.slave信号
    • 4.译码器信号
    • 5.多路器
  • 信号详细解释
    • HSIZE[2:0]
    • HTRANS[1:0]
    • HBURST[2:0]
    • HREADY与HREADYOUT
    • HRESP
  • AHB基本传输
    • 1.没有等待状态的单个传输
    • 2.有等待状态的单个传输
    • 3.多个传输的流水线操作
    • 4.Burst传输
      • 4.1增量Burst传输
      • 4.2 回环Burst传输
  • 什么是burst传输?
  • 补充:
    • 1.locked transfer
    • 2.Exclusive transfer
    • 3.HPROT

注:本文是基于讲解APB 5+ lite(轻量化的)版本,下图是AMBA的版本更新。
在这里插入图片描述

概述

AMBA高级处理器总线架构,不同的速率要求构成了高性能SOC设计的通信标准:

  • AHB高级高性能总线
  • APB高级外围总线
  • AXI高级可拓展接口

AHB:主要是针对高速率、高频宽及快速系统模块所设计的总线,可以连接在如微处理器、芯片上或芯片外的内存模块和DMA等高效率总线;

APB:主要应用在低速且低频率的外围,可针对外围设备做功率消耗及复杂接口的最佳化;APB在AHB和低带宽的外围设备之间提供了通信桥梁,所以APB是AHB的耳机拓展总线;

AXI:高速度、高带宽、管道化互联、单向通道,只需要首地址、读写并行、支持乱序、支持非对齐操作、
在这里插入图片描述

特点

  • 支持流水线操作(pipeline)
  • 支持分裂传输
  • 支持burst传输
  • 支持多个master/slave设备连接

其他的可以看上图中的总结。

AHB的组成

  • Maste(总线主机):能够发起读写操作,提供地址和控制信号。同一时间只有1个Master可以处于有效状态并能使用总线;
  • Slave(总线从机):在给定的地址范围内对读写操作作响应,并对Master返回成功、失败或者等待等状态;
  • Arbiter(仲裁器):负责保证总线上一次只有一个Master工作。仲裁协议是规定的,但是仲裁算法可以依据应用决定;
  • Decoder(解码器):负责对地址进行解码,并提供片选信号到个Slave;
  • 每个AHB都需要一个仲裁器和一个译码器。

单个master的AHB lite结构

AHB是一个多master多slave的组成,而AHB lite(轻量化的)则是针对单个master对多个slave的设计。如下所示:在这里插入图片描述

要注意的是:

  • salve的地址空间要以1 KB为单位,地址空间最好要1 KB对齐。
  • AHB lite虽然是针对单个master的,所以设计时可以省去arbiter。但这并不是说整个系统不可以存在多个master的情况。如下所示。

多个master的AHB lite结构

AHB 的结构比较灵活,以下是介绍的两种多master多slave的AHB lite扩展情况。

结构1

  • 3个master,用3组对应的BUS去访问slave
  • 每个slave的结构上都做一个 MUX (或者arbiter也行)对3个master发起的传输做一个选择
    请添加图片描述

结构2

  • 相对结构1 的变化就是,可以让一个slave4 独属于master3去访问,而master1和master2不能访问,那么这个slave4的访问速度就会比其他slave要快很多。
  • 同理也可以在右测进行slave的扩展。
    在这里插入图片描述

AHB lite基本信号

PS:这里只解释常用的信号。

1.系统信号

信号来源描述
HCLK时钟源时钟信号,上升沿采样
HRESETn系统总线复位信号,低有效

2.master

信号目标处描述
HADDR[31:0]slave和译码器32位系统地址总线
HTRANS[1:0]slave传输类型。包括类型有 , NONSEQ:连续传输的首个数据传输类型;SEQ:连续传输的中间数据);IDLE:空闲周期;BUSY:准备发送数据,但是master还没准备好发,歇一歇,但是busy很少用
HWRITEslave传输方向,信号为高(1)时为写操作,为低(0)时表示读操作
HSIZE[2:0]slave单次传输的数据位宽,000~111分别对应不同的数据包大小,000对应8位(1 Byte),010对应1 word(4 Byte),111对应1024位
HBURST[2:0]slave传输的burst(突发)类型,包括SINGLE(单个)、递增突发(如INCR4为连续发起4个数据)和 回环突发(WRAP4、WRAP8和WRAP16)
HWDATA[31:0]slave写数据总线,从Master到Slave
HPROT[3:0]slave保护控制信号 ,指示传输是操作码获取还是数据访问,以及传输是特权模式访问或用户模式访问。要求slave具有保护功能,一般不使用

注:ABMA5中新增一下信号:

  1. HMASTLOCK信号,若为高则开启lock 传输。
  2. HEXCL和HMASTER[3:0]信号,用以设置Exclusive Transfer,设计中需要有一个Exclusive Access Monitor。
  3. HNONSEC信号,指示当前传输是否是个secure或non_secure传输。
  4. HPROT[6:4] 用来增加扩展的memory type。

3.slave信号

信号来源描述
HRDATA[31:0]多路器读数据总线,从Slave读到Master
HREADYOUT多路器为高时则结束传输,为低则延迟传输时间
HRESP多路器传输响应信号,经过多路器处理,给master反馈传输状态。为高时表示传输状态为ERROR,为低时则表示传输状态为OKAY

注:AMBA5中增加了HEXOKAY信号,用来表示Exclusive Transfer的成功或失败状态,经过多路器处理,返回给master。

4.译码器信号

信号来源描述
HSELxslave从机选择信号。由译码器控制,每个Slave都有自己独立的从机控制信号,表示当前传输是否发送给选择的从机

5.多路器

信号来源描述
HREADYmaster和slave为高时表示master和所有slave的当前传输结束
HRDATAmaster从slave读取的数据
HRESPmasterslave的传输响应信号,经过MUX选择

注:AMBA 5中增加了HEXOKAY信号,返回给master。

信号详细解释

HSIZE[2:0]

  • HSIZE的信号的所代表的每笔数据包的数据宽度,如下表:
HSIZE[2:0]数据包长度
0008 bit \ 1 Byte
00116 bit \ 2 Byte ,按半字传输
0101 word \ 32 bit \ 4 Byte ,按字传输
0112 word \ 64 bit
100128 bit
101256 bit
110512 bit
1111024 bit

HTRANS[1:0]

  • HTRANS[1:0] 包含传输类型的含义,包含:IDLE 、BUSY 、NONSEQ 和 SEQ。
HBURST[2:0]TRANS类型描述
00IDLE空闲周期
001BUSY准备发送数据,但是master还没准备好发,歇一歇,但是busy很少用
10NONSEQ连续传输的首个数据传输类型
11SEQ连续传输的中间数据数据类型

HBURST[2:0]

HBURST[2:0]Burst类型描述
000single transfer单个传输,HTRANS是NONSEQ或IDLE
001INCR地址从开始地址开始递增,突发长度不固定
010WRAP4突发4位,地址递增回环
011INCR4突发4位,地址递增
100WRAP8突发8位,地址递增回环
101INCR8突发8位,地址递增
110WRAP16突发16位,地址递增回环
111INCR16突发16位,地址递增

注意:

  • INCR类型(递增)和WRAP类型(回环)的Burst时,发送的地址值不能跨过1KB的地址空间。因为每个slave的地址值在设计时,都是以1 KB为单位,如果burst发送的地址空间跨过1KB边界时,有可能就导致地址译码出错,访问了另外一个slave。
  • WRAP类型的Burst主要用于CPU中有cache line需要填充。

PS:WRAP起始地址位置的确定?
起始地址根据cache line的大小确定。每个cache line完全是在一个突发读操作周期中进行填充或者下载的,即使CPU只存取1bit的存储器数据,cache也会启动整个存取器访问周期并请求整个数据块。cache line的每条line的地址总是burst length的倍数。比如,cache line是由8个word组成,即4 x 8word = 32 Byte = 256 bit ,所cache line的各条line的起始地址是按加16’h20递增的,即 0x00 、0x20、0x40、0x60、0x80…,

HREADY与HREADYOUT

  • 如果单个master对单个slave,那HREADYOUT要与HREADY相连,然后把HREADY接到master和slave上。
  • 如果是单个master对多个slave,那就要把各个slave的HREADYOUT通过一个MUX,产生HREADY相连,然后把HREADY接到master和各个slave上。

在这里插入图片描述
注意:上图所示,如果slave1没完成transfer,slave2和slave3完成,那么此时slave2和slave3要等待slave1完成后,才能接收下一个transfer。

HRESP

1.为低时表示 OKAY 。传输完成(HREADY为高)
2. 为高时表示ERROR。但必须是两个clk周期完成,目的是给master来选择是否结束当前burst,还是在返回error的情况下继续进行传输。
注意:这里要与AHB 2版本区分,AHB 2中HRESP[1:0],有OKAY、ERROR、RETRY、SPLIT四种传输状态。
如果master收到error后,master要取消BURST传输,如下时序图,:

  • T0 - T1:发送地址A
  • T1 - T2:hready为低,发送地址A
  • T2 - T3:地址A出错,HRESP拉高,发送一拍ERROR给master;
  • T3 - T4:master决定结束当前burst,并舍弃当前传输A。然后把HREADY拉高,发送IDLE,继续维持HRESP为高一拍
  • T4 - T5:结束当前burst传输。
    在这里插入图片描述

如果master收到error后,master仍然继续burst传输的时序图,时序如下:

  • 跟上面不同的是,尽管传输A出错了,将传输A舍弃后,发送一个SEQ,继续后面的A+4、…的burst传输。
    请添加图片描述

AHB基本传输

  • 具有两个阶段:地址周期和数据周期;
  • 地址周期(AP),只有一个周期
  • 数据周期(DP),由HREADY信号决定需要几个周期;
  • 支持流水线传送
  • 遵循先是地址周期,然后是数据周期
  • 有效的写入和读出数据都发生在HREADY信号拉高的周期里。

1.没有等待状态的单个传输

读操作:
在这里插入图片描述
写操作:
在这里插入图片描述

图解:HREADY信号在地址周期后拉高,开始数据传输。

2.有等待状态的单个传输

slave可能存在不能及时处理master传输的数据,这时需要让master稍微等一等,需要slave插入一些等待的状态。
在这里插入图片描述

图解:HREADY信号在第二和第三周期拉低了,并没有直接拉高。因为传输只有在HREADY信号为高时才有效,所以此时master会等待2个周期。
在这里插入图片描述

注意:

  • 如果是写入数据,那么些数据线在HREADY信号为低的阶段要保持不变,一直都传输完成
  • 如果是读出数据,那么只有在HREADY信号拉高后,数据才会到总线上。

3.多个传输的流水线操作

当总线上有多个未处理完的请求时,也就是当A请求被master执行后,slave作响应期间,紧接着master又收到新的请求B,这是master就要执行流水线一样的操作,如下图所示:
在这里插入图片描述
图中的流水线操作:

  • A和C是没有等待的写操作,B是有等待的读操作。
  • 对地址B进行读操作时插入了等待,也影响了发送地址C的地址周期。

注意:

  • AHB最多只允许总线上存在2个未处理完传输,因为AHB只有2个pipe。

4.Burst传输

AHB协议有两种突发模式:

  • 增量突发(INCR):地址递增,在地址边界处不回环;

  • 回环突发(WRAP):地址递增,但会在特定的地址边界上回环;一般在需要填充cache line的时候使用。

4.1增量Burst传输

有INCR、INCR4、INCR8和INCR16四种类型。
INCR类型如下:
在这里插入图片描述

图解:

  • 图中HBURST指定的是INCR类型,地址连续递增,不指定突发长度;
  • HTRANS中指定了NONSEQ(表示这是连续发送的数据里面的第一个数据)BUSY(准备发送数据,但是还没准备好发)、SEQ(传输过程里面的数据)
  • HTRANS信号指定为BUSY时,那一拍的数据就不会发送;
  • 注意:地址的递增与HSIZE 有关,当HSIZE指定单个传输数据位宽为半字(16bit)时,地址是按每次加2递增。当HSIZE指定单个传输数据位宽为1个word(32bit)时,地址是按每次加4递增。

在这里插入图片描述

图解:地址在0x30并不回环,而是继续递增。
注意:

  • HBURST指定的是INCR4类型,表示要连续发送4个数据
  • 地址的递增与HSIZE指定是有关的,因为HSIZE指定单次传输的位宽为1word,对应地址是每次加4.

比如INCR8类型的burst传输,连续突发8个数据,地址递增,如下:
在这里插入图片描述

4.2 回环Burst传输

在这里插入图片描述

图解:

  • 在0x3C地址之后,根据回环的地址边界,第四拍的地址变为0x30。4个地址(0x30、0x34、0x38和0x3c ),每个地址各不相同,这四个地址是一个回环范围。起始地址决定了回环操作的回环范围;
  • 地址的递增与HSIZE指定是有关的,因为HSIZE指定单次传输的位宽为1word,对应地址是每次加4.

比如WRAP8类型的burst传输:
在这里插入图片描述

PS:解释一下什么是burst传输:

什么是burst传输?

突发(Burst):是指在同一行中相邻的存储单元连续进行数据传输的方式, 连续传输所涉及到存储单元(列)的数量就是突发长度 (Burst Lengths,简称BL)。 换成人能听懂的,就是地址只发一次,首个地址发出就决定了后面的地址是什么。而不是发送一个地址,再传一个数据的方式。

那么为什么要使用burst传输呢?

Burst传输就是提高了传输效率。如果不使用burst,普通访问模式下,主设备发出的传输命令到达从设备,由于仲裁等原因,传输会产生一定的延时。如果主设备读一个数据,处理一个数据的话,由于延时的存在,处理速度会极低。在进行突发传输时,只要发送一次地址,内存就会依次地自动对后面相应数量的存储单元进行读/写操作。而不再需要控制器连续地提供访问地址。所以,第一次数据的传输需要若干个周期,而其后每个数据只需一个周期的即可获得。

举例:

  1. AHB协议需要一次突发传输的所有地址,地址与数据锁定对应关系,后一次突发传输必须在前次传输完成才能进行。

  2. AXI只需要一次突发的首地址,可以连续发送多个突发传输首地址而无需等待前次突发传输完成,并且多个数据可以交错传递,此特征大大提高了总线的利用率。

补充:

1.locked transfer

  • 也就是当某个master要执行一个原子操作(对同一个地址进行先读后写操作)时,如果有其他的master占用了总线,block住了原子操作,就会导致逻辑上的错误,读写不一致。这是为了返回有传输打断原子操作,就用一个locked transfer来保护。
  • 但是这个操作会影响性能,用的比较少。

2.Exclusive transfer

AMBA5中新增的。

3.HPROT

AMBA5中HPROT信号由4位扩展到7位。


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

相关文章

【读书笔记】AMBA 2 AHB、AMBA 3 AHB(AHB_Lite)和AMBA 5 AHB协议比较

1、牛客算是一个Verilog宝藏刷题网站了&#xff0c;网站提供在线仿真环境&#xff0c;不用自己找题&#xff08;点击直达&#xff09;&#xff0c;<刷题记录>专栏&#xff0c;持续打卡中… 2、官方手册&#xff1a;AMBA系列官方协议规范文档&#xff0c;点击下载 更详细的…

Ahb2ApbBridge

一、设计前需注意 &#xff08;1&#xff09;要做总线&#xff0c;协议是关键&#xff0c;每个控制信号与输入输出的时序一定要搞清楚&#xff0c;直接看amba官方spec&#xff0c;链接已贴出http://pan.baidu.com/s/1gfwxTWB。 &#xff08;2&#xff09;Ahb2Apb桥作为逻辑连接…

AHB总线协议

文章目录 1.说明2.简介3. SOC中的AHB4.完整的AHB架构5.AHB接口信号列表6.htrans[1:0]/hsize[2:0]/hburst[2:0]/hresp[1:0]信号解读1.htrans[1:0]2.hsize[2:0]3.hburst[2:0]4. hresp[1:0] 7.基本传输1. 没有等待的读写操作2.有等待的传输3. 多个流水传输3.WRAP4的传输 8. hready…

AMBA AHB介绍

AMBA AHB介绍 AHB是为提出高性能可综合设计的要求而产生的新一代AMBA总线。它是一种支持多总线主机和提供高带宽操作的高性能总线。 AMBA AHB实现了高性能&#xff0c;高时钟频率系统的以下特征要求&#xff1a; 突发传输分块处理单周期总线主机移交非三态执行更宽的数据总线…

qspi AHB总线学习 - 01

经过几天的学习发现如果不了解AHB总线有些知识get不到&#xff0c;下面是转 qixin_william的博客 http://blog.163.com/qixin_william/blog/static/240217035201491133626819/ 一、AHB的基本介绍 AHB是ARM退出的AMBA总线系列中的其中一种&#xff0c;它是一种高性能的pipe系统总…

AMBA5 AHB协议规范(AHB5,AHB-Lite)中文版-第五章 从机响应信号

第五章 从机响应信号 介绍从机响应信号。它包括以下部分: – 从机传输响应on page 5-56. 5.1 Slave transfer responses 在主机开始传输后&#xff0c;控制传输的进展。在传输开始后&#xff0c;主机不能取消传输。 对于支持AHB5 Exclusive_Transfers属性的组件&#xff0c;…

AHB总线学习汇总

博客不是写书&#xff0c;基本的背景也不做什么介绍了&#xff0c;了解的人是不会介意这些东西的。 一、AHB的基本介绍 AHB是ARM退出的AMBA总线系列中的其中一种&#xff0c;它是一种高性能的pipe系统总线。 1. AHB总线有一下特性&#xff1a; a.Burst 传输 b.Split 事务处理…

AHB协议相关

AHB协议相关 Created: November 9, 2021 7:19 PM Tags: AMBA &#x1f340;简介 AHB(Advanced High Performance Bus)总线规范是AMBA(Advanced Microcontroller Bus Architecture) V2.0总线规范的一部分&#xff0c;AMBA总线规范是ARM公司提出的总线规范&#xff0c;被大多数…

AHB协议

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

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&#xff08;控制信号&#xff09;**2.4 transfer &#xff1a;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 没有等待状态的单次传输&#xff08;Single Transfer&#xff0…

AHB总线

大部分的总结在csdn里面都有。这里只是总结自己理解的。 AHB基本特性有&#xff1a; Burst传输&#xff08;一共有Hburst[2 : 0]的类型&#xff09;&#xff0c;single&#xff0c;incr&#xff0c;wrap4&#xff0c;incr4&#xff0c;wrap8&#xff0c;incr8&#xff0c;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中就已经定义&#xff0c;AHB总线一开始主要是作为系统高速总线使用&#xff0c;适用于高性能&#xff0c;低功耗的系统设计。目前因为AXI总线作为高速总线的优势更加明显&#xff0c;AHB会用在相对低速的系统设计中。基本排序就是APB适用于低速设计&am…

AHB学习笔记

1.AHB概述 AHB总线是一种专为高性能同步传输设计的总线&#xff0c;层次高于APB总线&#xff0c;支持以下特性&#xff1a; 突发传输拆分事务主设备单时钟周期传输单时钟沿操作非三态实现宽数据总线配置&#xff08;64/128bit&#xff09; 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&#xff1a;7. Exclusive transfer AHB协议学习 1. AHB简介 AH…

AHB总线介绍【1】

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

AMBA总线—AHB总线协议详解

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

Docker详解之EXPOSE

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