Advertisement

AHB总线协议(一)

阅读量:

AHB总线摘要
本文介绍了Advanced High Performance Bus(AHB)总线及其在SoC设计中的应用。AHB作为AMBA V2.0的一部分,主要用于连接微控制器(ARM核)、高速RAM、NAND Flash等外部设备,并支持高带宽的应用需求。
_AHB的核心架构包括主机、从机和仲裁器。主机负责发起数据传输请求并管理地址/控制信号;从机接收数据并响应状态;仲裁器确保仅一个主机能使用总线。关键信号包括HADDR用于地址编码,HTRANS表示传输类型,HWRITE控制写入方向,HSIZE指定数据宽度,HPROT提供保护控制等。
_AHB支持多种传输类型:单次传输(SINGLE)、增量突发(INCR)、回环突发(WRAP)等,并采用管道式多任务处理以提升效率。每个周期分为地址阶段和数据阶段,数据阶段可延长至多个周期以提高带宽。
AHB的特点包括分块处理、流水线操作及无三态门限设计,在低功耗环境仍具有高性能优势。总体而言,AHB为复杂SoC设计提供了高效的数据传输解决方案。

1. 简介

AHB总线规范作为AMBA V2.0总线规范的重要组成部分之一,在SoC设计领域得到了广泛应用。该标准由ARM公司开发,并规定了AHB( Advanced High-performance Bus )、ASB( Advanced System Bus )、APB( Advanced Peripheral Bus )等核心接口规范。其中,AHB专为高性能及高时钟频率的系统架构设计,主要用于连接ARM核与系统内部高速RAM、NAND FLASH、DMA和Bridge等组件,满足对性能要求较高的应用场景需求。而APB则侧重于连接外部设备,在功耗控制方面表现更为出色。此外,ASB作为一种替代方案,也为复杂系统提供了灵活的选择。

1.1 AHB总线的架构

下面先看几个贯穿全文的术语:

总线周期被视为总线时间的基本单位。 总体上来说就是指总线时钟频率。 对于基于AMBA AHB或APB协议的系统而言,
总线周期被定义为从一个上升沿到临界上升沿的时间间隔。 这些信号的变化通常会根据这个基准周期进行安排。

总线传输:采用AMBA AHB或ASB总线进行数据读写操作时,可能会持续一个或多个总线周期,在接收至机地址确认响应后结束传输过程。AMBA ASB型式支持的基本数据传输单位包括单字(8位)、半字(16位)及整字(32位)。而AMBA AHB型式则能实现较宽的数据传输能力,并可处理64位及128位数据单元。相比之下,APB总线则总是占用两个总线周期来完成相应的读写操作。

突发(Burst)传输:涵盖一个或多个数据传输过程,在地址空间扩展时维持固定宽度。这些数据传输均源自主线总机发起,并通过指定的步长(以字节、半字或字为单位)进行扩展。值得注意的是,在这一技术特性下(即APB),突发传输功能并未被支持。

该AHB总线展现出显著的功能特性,在其设计中巧妙地整合了微控制器(CPU)、高带宽的片上RAM以及高带宽外部存储器接口等多种关键组件,并通过DMA总线主机实现数据传输能力。此外,在与APB总线系统的协同工作下,可以通过AHB-APB桥实现无缝对接。同时,在体系架构构建方面,AHB展现出强大的组织能力,并可作为独立完整的 SOC 系统框架存在。

[

image

](https://img2018.cnblogs.com/blog/361409/201902/361409-20190212140152307-94841926.png)

1.2 AHB基本特性

分块处理
单周期总线主机移交
单时钟沿操作

无需三态门的应用
采用64位或更高精度的总线架构
基于流水线的操作
能够支持多达16个不同类型的主设备

2. AHB总线的组成

该系统采用AHB总线作为核心通信介质,并基于AHB总线主机(Master)、AHB总线从机(Slave)和Infrastructure构建其功能模块。其中,Infrastructure作为关键组件,在系统架构中主要包含仲裁器、数据多路选择器、地址控制多路选择器以及译码器四个子模块。

该协议采用中央多路选择器作为核心连接模块。该方案中,所有主机设备通过发送地址码和控制指令来指示其所需操作,并由仲裁单元负责选出有效信息进行广播传送。为确保通信可靠性,在此系统中还配置了一个解码单元来接收并确认各节点的有效数据。

下图实现包含三个主机和四个从机的AMBA AHB设计的结构要求。

[

image

](https://img2018.cnblogs.com/blog/361409/201902/361409-20190212140153415-2018201256.png)

典型的 AMBA AHB 系统设计包含以下的部分

AHB 主机: 总线主机负责发送地址信息及控制指令以完成读写操作。
AHB 从机: 总线从机在指定的地址空间内响应读写请求,并根据结果返回相应的状态信号。
AHB 仲裁器: 该系统确保只有一个主机有权发起数据传输操作。即便协议已固定设置,不同仲裁算法的选择可根据具体需求进行配置,例如采用最高优先级或公平访问策略等。
AHB 译码器: AHB 译码器负责对每次传输进行地址解码,并根据从机选择信号进行处理。
所有 AHB 执行均需配置一个中央译码器以完成任务。

3. 信号描述

所有基于AMBA协议的信号命名均遵循以下规则:每个信号名称的第一个字母用于标识其所属总线。具体而言,在这种情况下使用小写字母n来表示低电平有效性;而对于其他情况则使用大写字母来表示信号名称。测试信号带有前缀T而不依赖于总线类型。

AHB前缀:H 代表一个 AH B前缀。例如, H_READY则表示 AH B部分数据传输完成。该前缀在高电平状态下有效。

在本节中主要阐述了AHB信号的基本概念和作用机制。具体而言,在后续章节将深入探讨每个信号的具体功能和应用细节。

名称 来源 描述
HCLK总线时钟 时钟源 时钟为所有总线传输提供时基。所有信号时序都和HCLK的上升沿相关。
HRESETn复位 复位控制器 总线复位信号,低电平有效,用来复位系统和总线。这是唯一低电平有效的信号。
名称 来源 描述
HADDR[31:0]地址总线 主机 32位地址总线
HTRANS[1:0]传输类型 主机 表示当前传输的类型,可以是连续,不连续,空闲和忙
HWRITE传输方向 主机 该信号为高表示一个写传输,为低表示一个读传输
HSIZE[2:0]传输大小 主机 表示传输的大小,三位表示0…7,分别对应8bits(byte), 16bits(halfword),32bits(word),64bits, 128bits,256bits, 512bits,1024bits
HBRUST[2:0]突发类型 主机 表示传输是否组成了突发的一部分。支持4个,8个,16个节拍的突发传输,突发传输可以使增量或回环。
HPROT[3:0]保护控制 主机 提供总线访问的附加信息,主要是给那些希望执行某种保护级别的模块使用的。这个信号指示当前传输是否为预取指令或者数据传输,同时也表示传输是保护模式访问还是用户模式访问。对带存储器管理单元的总线主机而言这些信号也用来指示当前传输是高速缓存的(cache)还是缓冲的(buffer)。
HWDATA[31:0]写总线数据 主机 写数据总线用来在写操作期间从主机到总线从机传输数据。建议最小的数据总线宽度为 32 位。在要求高带宽运行时扩展(数据总线)还是很容易的。
HSELx从机选择 译码器 每个 AHB 从机都有自己独立的从机选择信号并且用该信号来表示当前传输是否是打算送给选中的从机。该信号是地址总线的简单组合译码。
HRDATA[31:0]读数据总线 从机 读数据总线用来在读操作期间从总线从机向总线主机传输数据。建议最小的数据总线宽度为 32 位。在要求高带宽运行时扩展(数据总线)还是很容易的。

| HREDAY传输完成| 从机| 当 HREADY 为高时表示总线上的传输已经完成。在扩展传输时该信号可能会被拉低。
注意:总线上的从机要求 HREADY 作为输入输出信号。 |
|HRESP[1:0]传输响应|从机|传输响应给传输状态提供了附加信息。提供四种不同的响应: OKEY、 ERROR、 RETRY 和 SPLIT。|

在本节协议架构中采用了一种称为AMBA AHB的高速总线协议体系架构。这种体系架构能够实现多个处理器之间的高效互操作性。其核心优势在于通过共享资源实现资源竞争下的互访控制机制。这种机制能够有效保障各个处理器在其各自的时钟周期内获得所需的资源服务机会从而保证系统的整体性能得到显著提升。

名称 来源 描述

以下是对原文的改写版本

4. AHB总线操作概括

在AMBA AHB传输启动前,总线主机必须获得对总线的访问权限。这一过程由以下步骤组成:首先,在收到仲裁器的确认请求后才允许主机制能参与数据传输。当主机会发送驱动地址和控制指令时即可开始数据通信。这些命令会包含有关目标地址、数据流向以及信道宽度等关键信息,并且也会包含指示这次通信是否属于一次性突发通信的信息。

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

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

用于传输数据的通道中,主机与从机之间的写总线负责将数据发送至从机;相应的读总线则负责将来自从机的数据传输回主机。每一次的数据传输过程涉及以下几个关键环节:包括信号的编码、路径的选择以及控制单元的协调工作等多方面的配合。

  • 一个地址和控制周期;

  • 一个或多个数据周期。

由于地址的有效期有限,在传输过程中所有主机(即客户端)应在指定时间段(即传输开始时)采集其IP地址信息。然而,在采用HREADY协议的情况下能够延长数据包的存活时间。具体而言,在H_READY信号处于高电平状态下会触发延时机制:当H_READY降至低电平时不仅会导致通信进入等待期从而确保数据完整性而且还能为客户端预留更多时间来进行处理或捕获新的数据包。
在传输过程中,在发送方(发送端)通过响应信号来反映其工作状态。

HRESP[1: 0]:OKAY OKAY 响应用来表示传输进展正常并且当 HREADY 变高时表示传输成功完成。
ERROR ERROR 响应表示发生了一个传输错误并且传输失败。
RETRY 和 SPLIT RETRY 和 SPLIT 两个传输响应都表示传输不能立刻完成,但是总线主机应该继续尝试传输。
在常规操作中主机被允许在仲裁器授予另一个主机访问总线之前完成一个特定突发的所有传输。然而,为了避免过多的仲裁延时可能允许仲裁器打断一个突发并且这种情况下主机必须(申请)重新仲裁总线以完成剩下的突发传输。

5. 基本传输

传输过程包含两个关键阶段:地址分配和数据传输。其中地址分配阶段占用了单一的时间段;而数据传输阶段持续若干个时间段(取决于HBURST信号),每个时间段内可能包含多个连续的有效数据帧。需要注意的是,在数据传输过程中可以通过HREADY指令可主动延长该时间段的时长。

5.1 没有等待状态的single transfer

在第一个时钟周期的上升沿期间,主机通过总线传输地址信息与控制指令;随后,在第二个时钟周期的上升沿后段位从机采集采样地址与控制信号,并使H_READY端口引脚变为高电平状态;对于写入操作而言,在第二个时钟周期结束后的上升沿时刻主机将待写入的数据发送出去;而对于读取操作,则在H_READY引脚被拉高之后完成数据的有效读取并将其输出至总线;第三个时钟周期的上升沿到来之际:如果执行的是写入操作,则主机会在接收到H_READY引脚处于高电平时确认从机已成功接收数据;若为读取操作,则当主机接收到H_READY引脚处于高电平时则表示所读取的数据有效并已成功接收下来;无论是哪种操作,在第三个时钟周期结束前必须确保H_READY信号处于高电平状态直至下一个上升沿到来之前以确保主机能够正确捕获所接收的数据。

20170930182928225

5.2 slave插入等待状态的single transfer

虽然从机通常能够迅速响应主机的请求指示,在多数情况下可以从机能够及时处理相关任务。但在某些特定场景下可能出现从机运行缓慢导致无法立即完成处理的情况。针对这种情况应该采取适当的措施来优化系统的响应效率。例如,在发生请求超时的情况下系统可以通过向主机发送相应的延迟指令来引导其进入等待状态,并根据系统设计要求执行相应的功能步骤如查看超时计数器或重新发送确认信号等。此外还需要特别注意以下几点:当处理的是一个写操作任务时系统必须确保在等待期间始终维持指定的写数据值不变直到本次传输任务完成;而对于读操作则应在HREADY信号被拉高之前不得输出任何数据只有当HREADY信号被拉高后才开始输出有效的读数据

20170930183051856

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个时,主机才能发起操作。

20170930183148331

5.4 AHB控制信息

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

该控制信号用于实现read和write操作,并等同于transfer方向的指示。高电平状态指示write操作发生;低电平状态指示read操作发生。

HSIZE - 这个信号是指明单次传输的数据宽度。

表示传输的大小,三位表示0…7,分别对应8bits(byte), 16bits(halfword),32bits(word),

64bits, 128bits,256bits, 512bits,1024bits

HPROT[3:0] 通常用于赋予transfer额外的访问权限保障,并不在此场景中使用。

HTRANS[1:0] - 在单次传输过程中使用的传输类型这一术语表示,在单次传输中所采用的具体数据通信方式或数据包格式等信息的一种标识符或描述符。该控制信号由主机根据其所需的传输类型自动生成,并且用于指示具体的传输参数或工作状态等信息。此类控制信号总共有四种不同的类型

| **HTRANS[1:0]
| 传输类型
**| Description |
|---|---|---|

| 00| IDLE| 主设备占用总线资源但未进行数据传输
两次突发数据传输之间主设备会进入IDLE状态
此时即使从机被启用也不会通过总线获取任何数据信号信息
若此时从机被选中则每个IDLE周期内从机都需要通过HRESP[1:0]返回一个OKAY响应 |
| 01| BUSY| 主设备占用总线资源但在突发数据传输期间尚未准备完成下一次发送
一次突发数据传输期间主设备会标记为BUSY状态
这时从机将停止接收数据信号并等待信号准备好进行下一次操作 同时也会通过HRESP[1:0]返回一个OKAY响应 |
| 10| NONSEQ| 表示单次数据或单次突发数据的完整传输操作
该操作与前一次的数据或传输无关 |
|11|SEQ| 在连续多次的数据或突发传送过程中 地址和控制信息均与前一操作保持一致 地址将设置为上一个传送地址加上传送大小(以字节为单位) 在循环传送的情况下 地址会在边界处循环 回环次数等于每次传送的数据量乘以循环次数(4、8或16中的某一个) |

该系统中的特定状态唯有在发生突变时才会显现出来。当从机接收到此特定状态时,则表示当前传输过程正处于突变过程中的某一个阶段。在此时刻点上,在总线上传输的控制参数应与之前保持一致;而地址则根据情况递增或循环返回。(这些参数由主机自主决定,在接收端无需考虑其具体数值)

T1,主机传入地址和控制信号,因为是新的突发传输开始,所以传输的类型是NONSEQ;
T2,由于主机不能在第二个周期里处理第二拍,所以主机使用BUSY传输来为自己延长一个周期的时间。注意,虽然是延长了一个周期,但是主机需要给出第二个传输的地址和控制信号;
T3,从机采集到了主机发来的BUSY,知道主机需要等待一拍,所以从机会忽略这个BUSY传输;
T3,主机发起了第二个传输,因为是同一个burst的第二个传输,所以传输的类型是SEQ;
T5,从机将HREADY信号拉低,告诉主机需要等待一个周期;
T8时刻完成最后一个传输。
需要注意的 虽然从机会忽略掉BUSY传输,但是主机也需要给出下一拍的地址和控制信号。

20170930183254118

5.5 突发操作

AMBA AHB 协议规范了不同拍数的突发类型, 包括四拍、八拍和十六拍, 同时还包括持续时长不定的突发以及信号传输过程。该协议不仅支持逐步增强的功能(增量操作), 还提供了循环机制(回环操作)。

增量突变访问连续地接续目标,并且每个传输目标仅比上一目标递增一个单位;
针对循环突变的情况,在数据包大小(即X拍)不与总字节数对齐时,在到达边界处会发生循环返回;例如,在16个字节的边界处会发生循环返回;因此,在起始位置为X的情况下,则该数据包将包含以下四个目标位置:X+1, X+2, X+7, 和X-7
突变信息通过使用HBURST[2:0]并定义了八种可能的类型得以实现。

HBURST[2:0] 类型 描述
000 SINGLE 单一传输
001 INCR 未指定长度的增量突发
010 WRAP4 4拍回环突发
011 INCR4 4拍增量突发
100 WRAP8 8拍回环突发
101 INCR8 8拍增量突发
110 WRAP16 16拍回环突发
111 INCR16 16拍增量突发

为了防止溢出风险,在内存保护机制中必须确保主机不发起跨越1KB地址边界的定长增量突发。对于单次传输操作,则应理解为长度为一的突发是合理的处理方式。

当一个无法完成的特定情况发生时对任一从机设计而言如果该情况未能提前结束那么利用收集的信息采取正确的操作就显得尤为重要。从机能够通过检测HTRANS信号来判断一个情况何时提前结束并且确保在该情况开始之后每一次传输都处于连续状态或被标记为忙碌状态。一旦出现非连续状态或空闲状态这则表明一个新的状况已经启动因此之前的状况必然已经结束。
若总线主机因未能获得对总线的使用权而导致无法完成某个状况那么它必须在下次获取使用权时正确地重构该状况。例如假设某个主机仅完成了四拍状况中的一拍则它必须使用未定长度的方式来进行剩余三拍的操作。

下图表示了一个四拍回环突发并且第一次传输伴随一个附加等待状态。

20170930183352667

在四拍字突发传输过程中,在16 字节边界上实现回环,在到达目标地址0x3C后下一个传输的地址将是0x30。图中对比展示了回环型突发与增量型突发的主要区别:即表示地址连续通过16 字节边界而不进行回环连接而是逐次递增。

20170930183605434

转载于:https://www.cnblogs.com/mikewolf2002/p/10335422.html

全部评论 (0)

还没有任何评论哟~