AMBA-AHB总线协议

AHB协议简介1

  1. 简介

AHB总线规范是AMBA总线规范的一部分,AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB
(Advanced High-performance Bus)、ASB (Advanced System Bus)、APB (Advanced
Peripheral
Bus)。AHB用于高性能、高时钟频率的系统结构,典型的应用如ARM核与系统内部的高速RAM、NAND
FLASH、DMA、Bridge的连接。

  1. AHB总线架构

在这里插入图片描述

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

  1. AHB结构特点

Burst传输
Split事务处理
总线带宽:8/16/32/64/128bits
流水线操作
支持多个总线主设备
无三态(无Z态)
单一始终操作
单周期master移交

  1. AHB总线的基本组成

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8j3S1vFV-1591110389608)(media/3acfcbf1fe043bd9c409fe0328c4ba7f.png)]

AHB总线主要有四部分组成:

主设备Master:发起一个读/写操作。某一时刻只允许一个master控制总线。
从设备Slave:响应一次读/写操作。 通过地址映射来选择使用哪一个从设备。
仲裁器Arbiter; 允许某一个主设备控制总线。
译码器Decoder; 通过地址译码来决定选择哪一个从设备。

AHB总线可以分为三组:

HADDR(地址控制总线);
HWDATA(读数据总线);
HRDATA(写数据总线);

  1. 总线操作概述

当有Master向arbiter发出请求控制总线传输时,arbiter授权给指定的master。同一时间周期只允许一个master可以控制总线,对其指定的slave进行读/写操作。获得授权的总线开始进行数据传输,首先发出地址和控制信号(提供地址信息、读/写操作、带宽和burst类型)。译码器根据地址和控制信号确定哪个slave与master进行数据通信。数据传输通过数据总线完成。AHB将读写总线分开(实现两级流水),写数据总线用于从master到slave的数据传输,读数据总线用于从slave到master的数据传输。

数据传输分为两个阶段:地址周期和数据周期。地址周期传输地址和控制信号,只占用一个时钟周期并且不能被扩展。因此slave必须在一个周期内采样地址信号。数据周期可以通过HREADY信号扩展,当HREADY为低时数据传输延长一个周期,另外slave通过响应信号HRESP反映传输状态。

  1. AHB总线传输时序

3.1信号描述

AHB总线控制信号:

信号名含义描述
HCLK总线时钟clock source总线时钟,上升沿采样
HRESETn复位reset controller总线复位,低电平有效
HADDR[31:0]地址总线Master32位地址总线
HTRANS[1:0]传送类型Master当前传输类型NONSEQ, SEQ, IDLE, BUSY
HWRITE传送方向Master1为写,0为读
HSIZE[2:0]传送大小Master每一个transfer传输的数据大小,以字节为单位,最高支持1024位
HBURST[2:0]批量传送Masterburst类型,支持4、8、16 burst,incrementing/wrapping
HPROT[3:0]保护控制Master保护控制信号,需要slave带保护功能,一般不用
HWDATA[31:0]写数据总线Master写数据总线,Master到Slave
HRDATA[31:0]读数据总线Slave读数据总线,Slave到Master
HREADY传送完成Slave高:Slave指出传输结束
低:Slave需延长传输周期
HRESP[1:0]返回响应SlaveSlave发给Master的总线传输状态OKAY, ERROR, RETRY, SPLIT
HSELx选择从设备Decoderslave选择信号

AHB仲裁信号:

信号含义描述
HBUSREQxBus请求MasterM向A发出的总线使用请求信号
HLOCKx锁定传送Master如果一个master希望自己在传输期间不希望丢掉总线,则需要向仲裁器发送这个锁定信号
HGRANTxBus同意Arbitermaster 授权信号,当前master x的优先级最高。当HREADY和HGRANTx同时为高时,master获取系统总线的控制权利
HMASTER [3:0]某个主设备Arbiter具有split功能的slave 仲裁器为每一个master分配的ID,指出哪个主设备正在进行传输,提供进行split的信息
HMASTLOCK锁序具有split功能slave表示当前的master正在执行Locked操作。
HSPLITx[15:0]分段请求Slave从设备用这个信号告诉仲裁器哪个主设备运行重新尝试一次split传输,每一位对应一个主设备。

3.2基本传输

3.2.1一次无需等待传输(写操作和读操作)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cTDAVCvA-1591110389610)(media/00365c332b7dea90ab57d4fd44a665ea.png)]

第一个周期(地址控制周期)的上升沿,master驱动(发送)地址和控制信号(同时发出);

第二个周期(数据周期)的上升沿,slave采样地址和控制信号,并将HREADY拉高;

如果是写操作,master会在第二个周期的上升沿传输要写入的数据;

如果是读操作,slave会在HREADY信号拉高后将读取的数据写入总线;

第三个周期的上升沿,

如果是写操作,master获取HREADY高信号,表明slave已成功接收数据,操作成功;

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

3.2.2插入等待的传输

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lBEX3X0g-1591110389614)(media/ec53f90b83c21305bfa1bc6529550e8a.png)]

slave可以及时处理master请求,但也可能存在slave太慢不能立即处理的情况。这时需要让master稍微等一等,需要slave插入一些等待的状态。如上图所示,HREADY信号在第二和第三周期拉低,需要master等待2个周期。在这里需要注意2点:

如果是写操作,master需要在等待期间保持写数据不变,直到本次传输完成;

如果是读操作,slave不需要一开始就给出数据,仅当HREADY拉高后才给出有效数据。

3.2.3多数据传输流水线

在这里插入图片描述

AHB总线数据传输支持两级流水线传输,当在第一个数据的数据周期阶段可进行传送下一个数据的地址和控制数据。上图所示,A和C为零等待传输,B加入了一个等待周期。(上升沿操作)
第一个周期,master发起一个操作A,并驱动地址和控制信号;
第二个周期,slave收到了来自总线的请求,将HREADY信号拉高;

第二个周期上升沿后,master发现有操作B需要执行(在第三个周期上升沿发送),并且检查到上一周期的HREADY为高,则发起第二个操作B;
第三个周期,master获取HREADY信号为高,表示操作A已经完成;

第三个周期上升沿后,master发现有操作C需要执行,并且检查到上一周期的HREADY为高,则发起第三个操作C;
第三个周期上升沿后,slave由于繁忙插入了一个等待状态,将HREADY拉低;

第四个周期,master获取HREADY信号为低,知道slave希望等待,于是master保持和上一拍一样的信号;
第四个周期,slave处理完了事务,将HREADY信号拉高,表示可以继续处理;
第五个周期,master获取HREADY信号为高,知道slave已经可以处理B操作;
第五个周期上升沿后,B操作完成;
第六个周期上升沿后,C操作完成。
需要注意几点:

HREADY在一定程度上表示了slave的pipeline能力,在AHB中是2个pipe,也就是总线上最多存在2个未处理完的transfer。只有当总线上未完成的transfer少于2个时,master才能发起操作(当发送第三个地址和控制信号时,即该时刻的HREADY为高)。

3.3控制信号

3.3.1传送状态HTRANS[1:0](前两种很少用到,后两种表示有效状态)

00IDLE空闲状态占用总线的master没有数据发送;两次burst传输中间主设备可发IDLE,此时就算slave被使能,也不会从总线上获取任何的数据信号。如果此时salve被选中,那么每一个IDLE周期slave都要通过HRESP[1:0]返回一个OKAY响应。
01BUSY忙状态主设备占用总线,但是在burst传输过程中还没有准备好进行下一次传输一次burst传输中间主设备可发BUSY,这时slave不会从总线上收取数据而是等待,并且通过HRESP[1:0]返回一个OKAY响应。需要注意的是,这个transfer需要给出下一拍的地址和控制信号,尽管slave不会去采样。
10NOSEQ非连续状态表明一次单个数据的传输或者一次burst传输的第一个数据 地址和控制信号与上一次传输无关
11SEQ连续状态burst传输接下来的数据 地址和上一次传输的地址是相关的,这时总线上的控制信号应当与之前的保持一致,地址视情况递增或者回环。

3.3.2读写信号HWRITE

状态含义
1写数据,M→S
0读数据,S→M

HWRITE:表示传送方向(依读或写的动作来决定传送信号的方向)

HWRITE 拉高时(写),M 必须对写入动作初始化,数据会由 M 放到 HWDATA[31:0]
总线上。

HWRITE 拉低时(读),M 会对读取动作初始化,被寻址到的S会将数据放到 HRDATA[31:0]
总线上

3.3.3数据大小HSIZE[2:0]

通常的 AHB 从设备是 32 位数据线,所以它支持 8 位,16 位和 32 位 3 种大小。

0008bits
00116
01032
01164
100128
101256
110512
1111024

3.3.4批量传送HBURST[2:0](项目中很少用到)

HBURST传输不能跨越1K边界,支持两种传输方式:

递增传送(incrementing burst),会依上一次的地址加1。

回绕传送(wrapping burst),以4beat为例,如果第一个地址=0x34,0x34、
0x38、0x3C、0x30。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jzIiTmPB-1591110389618)(media/e08218253f2a4c9edd0b074ff6df9179.png)]

3.3.5保护控制HPORT[3:0]

HPROT[3:0] 为总线协议保护信号用来定义存取的型态与特性,并非所有的 M 都会传送出
HPROT[3:0],所以除非 S 有需要否则不会使用到
HPROT[3:0]信号。一般来讲该信号很少用到。

3.4响应信号

master发起一笔传输后,slave可以决定这笔传输的进程,而master不能取消已经发出的传输。slave通过
HREADY信号反映传输是否完成,通过HRESP[1:0]反映传输的状态。

1)、slave可以如下方式完成一笔传输:

立即完成一笔传输。

延迟一个或几个周期完成传输。

传输失败返回error。

延迟传输,释放总线。

2)、传输完成标志HREADY:

HREADY为高时传输完成。

HREADY为低时传输需要延迟。

3)、传输响应标志HRESP[1:0]:

00: OKAY—传输完成。

01: ERROR—传输错误。

10:
RETRY—传输未完成,请求主设备重新开始一个传输,arbiter会继续使用通常的优先级。

11:
SPLIT—传输未完成,请求主设备分离一次传输,arbiter会调整优先级方案以便其他请求总线的主设备可以访问总线。

4)、地址译码

地址译码器用于为总线上每个slave提供选择信号HSELx,选择信号是通过组合逻辑对地址码译码产生的。只有当前的数据传输完成后(HREADY为高),slave才会采样下一个地址和控制信号以及HSELx。在一定条件下可能会出现这样的情况:产生HSELx信号而HREADY为低,在当前传输后slave会改变。

每个slave最小的地址空间为1KB,所有的master的burst传输上限也是1KB,如此设计保证了不会出现地址越界问题。当一个设计不会用到所有的地址空间时,可能出现访问到一个不存在的地址的情况,这就需要增加一个附加的默认slave(default
slave)来为上面的情况提供一个响应。当SEQ或NONSEQ传输访问到一个不存在的地址,默认slave应该提供ERROR响应;当IDLE或BUSY传输访问到一个不存在的地址,默认slave会响应OKAY。地址译码器会带有实现默认slave的功能。

5)、仲裁

仲裁机制保证了任意时刻只有一个master可以接入总线。arbiter决定哪个发出接入请求的master可以接入总线,这通过优先级算法实现。AHB规范并没有给出优先级算法,设计者需要根据具体的系统要求定义。一般情况下arbiter不会中断一个burst传输,将总线接入权让给其他master。当然未定义长度的burst传输是可以打断的,这要看优先级算法是如何规定的。如果一笔burst被打断,master再度获得接入权限时,会传递剩余的部分。如一笔长度为INCR8的传输在传递3
beat后被打断,master再次获得接入授权后,会继续传输剩余的5
beat,剩余部分可以由一个SINGLE和一个INCR4组成,或者一个INCR。

HBUSREQx:master向arbiter发出接入请求的信号。

HLOCKx:指示是否要进行不可中断的传输,这一信号与HBUSREQx同时由master向arbiter发出。

HGRANTx:arbiter产生指示master获得授权,当HGRANTx信号为高同时HREADY为高时,master可以向总线传输地址信号。

HMASTER[3:0]:arbiter产生指示哪个master获得授权,这一信号用于地址控制多路来选择哪个master接入总线。

HMASTERLOCK:arbiter产生指示当前传输是否为锁定序列传输。

Qx同时由master向arbiter发出。

HGRANTx:arbiter产生指示master获得授权,当HGRANTx信号为高同时HREADY为高时,master可以向总线传输地址信号。

HMASTER[3:0]:arbiter产生指示哪个master获得授权,这一信号用于地址控制多路来选择哪个master接入总线。

HMASTERLOCK:arbiter产生指示当前传输是否为锁定序列传输。

HSPLIT:供支持SPLIT传输使用。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ARM3 AHB-Lite总线协议是一种面向片内的总线协议,主要用于连接处理器和各种外设的高性能总线。以下是关于ARM3 AHB-Lite总线协议的一些详细说明: 1. 总线结构:AHB-Lite总线由多个总线工作主体组成,其中包括主处理器、外设、存储器等。这些主体通过总线连接,并可以进行读取和写入操作。 2. 总线访问:ARM3 AHB-Lite总线采用了基于请求-应答的访问机制。外设和处理器可以发出读写请求,总线控制器处理这些请求并向请求方提供相应的读写信息。 3. 宽度和速度:AHB-Lite总线具有可配置的数据总线宽度,可以从8位到1024位。总线速度可以根据系统需求进行调整,以满足不同的应用场景。 4. 总线优先级:AHB-Lite总线支持不同主体之间的总线优先级。当多个主体同时请求总线时,总线控制器将根据优先级设置来确定哪个请求会被优先服务。 5. 总线提供的功能:AHB-Lite总线协议提供了多种功能,如单次和重复传输、突发传输、保留和释放等。这些功能可以高效地执行数据的读取和写入操作。 6. 错误处理:AHB-Lite总线具有丰富的错误处理机制,可以检测和处理访问时可能出现的错误,如地址错误、传输错误等,保障数据的可靠性。 总的来说,ARM3 AHB-Lite总线协议是一种高性能、灵活可配置的总线协议,适用于各种应用场景。它可以有效地连接处理器和外设,实现数据的读取和写入操作,并提供了丰富的功能和错误处理机制,以满足不同应用需求。 ### 回答2: AHB-Lite总线协议是一种用于系统级集成电路(SoC)设计中的总线协议AHB-Lite在ARM公司的AMBA(高级Microcontroller总线架构)规范中定义,作为AMBA总线系列的一部分,为SoC中的模块之间提供快速、高效的通信机制。 AHB-Lite总线协议具有以下特点: 1. 简化的总线结构:AHB-Lite采用万能主/从模式,即同一个模块可以既作为主设备又作为从设备,简化了总线结构的复杂性。 2. 高效的数据传输:AHB-Lite支持高带宽和低延迟的数据传输,在SoC中提供了高性能的通信机制。 3. 分级优先级:AHB-Lite采用基于优先级的访问控制,可以分配不同的优先级给不同的模块,以确保关键任务的优先执行。 4. 突发传输:AHB-Lite支持突发传输,能够在连续的总线周期内传输一系列数据,提高了数据传输效率。 5. 低功耗操作:AHB-Lite可以通过流水线操作和低功耗模式来减少能量消耗,提高系统的功耗效率。 总之,AHB-Lite总线协议是一种灵活、高效、可靠的总线协议,广泛应用于ARM架构的SoC设计中,为多个模块提供了可靠的通信机制,有助于提高系统的性能和可靠性。 ### 回答3: ARM3 AHB-Lite是一种用于高性能系统-on-chip (SoC)设计的总线协议。该协议由ARM公司开发,用于连接处理器、内存和外设等各种功能单元,并提供高效的数据传输和控制。 AHB-Lite协议采用了面向事务的设计方法,以提供灵活性、可伸缩性和可扩展性。它支持多个主设备和多个从设备,并且能够在这些设备之间进行高效的数据和控制信号传输。 此外,ARM3 AHB-Lite协议还具有以下特点: 1. 性能优化:AHB-Lite协议支持负责解码的硬件逻辑,以最小化主设备的延迟并提高总线效率。此外,该协议还支持存储器和缓存一致性机制,以提供更高的数据传输速度。 2. 灵活性和可伸缩性:AHB-Lite协议允许设计师根据系统的需求添加或移除总线主从设备。它还支持总线宽度的动态调整,以适应不同的设备和数据传输需求。 3. 低功耗设计:AHB-Lite协议通过提供低功耗模式和空闲状态管理来优化能源消耗。它可以根据需要主动控制总线请求和访问,以减少功耗。 总之,ARM3 AHB-Lite总线协议是一种在SoC设计中广泛应用的高性能、灵活和可伸缩的总线协议。它为多个主从设备之间的数据传输和控制提供了一种有效的解决方案,并具有优化性能和功耗的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值