[接口-AMBA-AHB] AHB总线协议

10 篇文章 5 订阅

一、典型AMBA系统

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

AHB可以成为一个完成的SOC芯片的骨架

二、AHB总线简介

1、AHB总线组成

完成的AHB总线由四个部分构成:

  1. AHB主设备Master:发起一次读/写操作,某时刻只允许一个主设备使用总线

  1. AHB从设备Slave:响应一次读/写操作,通过地址映射来选择使用那个从设备

  1. AHB仲裁器Arbiter:允许某一个主设备控制总线

  1. AHB译码器Decoder:通过地址译码来决定选择哪一个从设备

2、AHB总线互连

总线可分为三组:

  • 写数据总线(HWDATA)

  • 读数据总线(HRDATA)

  • 地址控制总线(HADDR)

3、AHB操作概述

有需要占用总线的Master向Arbiter发出请求,Arbiter授权给指定的Master。任一时间周期只有一个Master可以接入总线,对其指定的Slave进行读写操作。

获得授权的总线开始AHB传输,首先发出地址和控制信号,提供地址信息、传输方向、带宽和burst类型。总线统一规划Slave的地址,译码器根据地址和控制信号确定那个Slave与Master进行数据通信。数据传输通过数据总线完成。为避免出现三态总线,AHB将读写总线分开写数据总线用于从Master到Slave的数据传输读数据总线用于从Slave到Master的数据传输。每笔传输包括一个地址和控制周期,一个或多个数据周期。地址和控制周期不能被拓展,因此Slave必须在一个周期内采样地址信号。数据周期可以通过HREADY信号拓展,但HREADY为低时给传输加入一个等待状态以使Slave获得额外的时间来提供或采集数据,另外Slave通过响应信号HRESP反映传输状态。

AHB支持批量式数据传输,可以自动递增地址。递增地址方式为:持续递增与回绕传送

一般情况下Master完成完整的burst传输,Arbiter才会授权给其他Master接入总线,然而为避免过大的判决延迟,Arbiter也可能打断burst传输。这种情况下Master必须再次接入总线以进行中断的brust剩余部分的传输。

4、AHB基本传输阶段

AHB的传送模式包含两个阶段。第一个阶段为地址传递,第二个阶段为数据传递

  1. 地址期间:一个周期

  1. 数据期间:一个周期(以HREADY信号控制周期数目)

三、AHB总线传输

1、AHB信号描述

说明:在实际的传输过程中,一般作为AHB总线的Slave设备都有2根hready信号,一个为input类型(hready_in),另一个为output类型(hready_out)。AHB总线协议中,如果Master设备发起读写操作的时候,Slave设备不能及时响应的话,由Slave设备把hready_out信号拉低来拖延Data Phase周期。

  但是在Pipeline操作的时候,本次操作data phase是下一次操作的address phase,所以作为Slave设备在响应Master设备的时候,必须先判断一下Master设备对上一次其它Slave设备的操作是否已经完成。如果完成,则响应主设备的操作;如果没有完成,则等待完成,然后才响应操作。hready_in就是Slave设备用来判断Master设备是否对其它Slave设备的操作已经完成的信号

AHB仲裁信号:

2、基本AHB传输

(1)零等待传输(no wait state transfer)

第一个周期的上升沿,master驱动地址和控制信号;

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

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

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

第三个周期的上升沿,

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

   如果是读操作,master获取HREADY高信号,表明此时的读数据有效并且接收下来,操作成功。

需要注意,HREADY信号在数据有效期间必须为高,并且延续到第三个周期的上升沿之后,确保master的正确采样。

  • 当 HCLK 正沿触发后, M 送出地址与控制信号 ,HCLK 由 CLOCK 驱动送至 AHB 接口。

  • S 在 HCLK下一个正沿触发时, S 收到地址与控制信号

  • 在 HCLK 的第三个正沿触发时, M 收到S 的响应信号
    AHB支持流水线的动作,在收上一笔数据的同时,可将下一笔数据的地址送出。

(2)等待传输(transfers with wait states)

传送完成时间因等待而延迟,这是由于寻址到较慢的 S 单元所造成。当 HREADY 被 S 拉低时,会发生等待状态。需要延迟传送的周期时,就会在数据期间将 HREADY 拉低,此时地址与数据都必须延伸。有等待状态的 AHB 传递,下图中可看到在数据模式时,时序必须多花二个周期的延迟等待时间(HREADY 为 0),S 才能正常的接收到 M 写的数据或准备好 M 欲读取的数据

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

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

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

(3)多重传送(multiple transfer)-Pipeline

一次完整的数据传送会有多个传送周期,如下图下一笔地址可与上一笔数据同时在总线上,时序图的说明如下:

下图是对上图的补充:

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

  第一个周期,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才能发起操作。

3、AHB控制信号

(1)传送状态 HTRANS[1:0]

在 AHB 总线上,M 的传送状态可由 HTRANS[1:0]来表示,这两位所代表的意义如下:

(2)批量传送 HBURST[2:0]

批量传送是以群组为单位的传送方式,主要依地址的给法来区分:

  • 递增传送(incrementing burst),会依上一笔的地址来递增。

  • 回绕传送(wrapping burst),如:回绕长度 = 4;每 4 个字节要对齐在 16 字节的范围内。如果第一个地址=0x64,则传送的顺序为 0x68、0x6C、0x60。

每次传送数据的大小由 HBURST[2:0]定义:

详细的种批量式传送的时序在此不做详细解释。

(3)传送方向HWRITE

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

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

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

(4)传送大小 HSIZE[2:0]

传送数据大小由 HSIZE[2:0] 信号控制,表示每次传送的字节数目。

HSIZE[2:0]与 HBURST[2:0]两个信号可合起来定义回绕地址的范围。

例如: HSIZE[2:0]= 32 位,HBURST[2:0]长度为 4 字节,则回绕地址须对齐在 16 字节。

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

(5)保护控制 HPROT[3:0]

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

4、AHB响应信号

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产生指示当前传输是否为锁定序列传输。

  HSPLIT:供支持SPLIT传输使用。

5、AHB模块接口

1…从接口框图(很重要、会画):

  仲裁器在决定出哪一个 M 拥有总线使用权之后,会将这个 M 数据地址、控制信号及欲写入 S 的数据选出,并且送至每一个 S,而所选出的数据地址会再经由 AHB 译码器产生唯一的 HSELx 使能信号来启动一 S 的数据传送。M 启动一个数据传送之后,被使能的 S(即 HSELx 为 1 的 S) 会发出 HREADY 信号来决定是否要延长当前数据的传送,若 S 响应 HREADY 为 0,表示此笔数据的传递必须被延迟,若 S 送出的HREADY 为 1,则表示 S 能够完成此笔数据的传递。

  由图中可发现,S 除了用 HREADY 信号来告知此笔数据是否需要额外的延迟时间之外,还会透过HRESP[1:0]信号响应当前数据传送的情形,以下将说明四种 S 的响应型态:

  第一种响应为 OKAY,当一笔数据可完成传送时,S 会响应以 HREADY 为 1,且 HRESP[1:0]为 OKAY;另外 S 也会在必须差入额外延迟时(HREADY 为 0),但未决定出何种响应方式时,作出 OKAY 的响应;

  另一种的响应方式为 ERROR,这种响应会在 M 所要求传送的数据发生错误时发生,而这种错误常常出现在 M 试图去存取一有读或写的保护机制模块,如 M 试图在只读存储器来写入数据。

  第三种响应方式为 RETRY,此种响应会在 S 无法立即完成此笔数据传送,希望 M 重新传送此笔数据(了解)

  最后一种 S 响应模式为 SPLIT,这种方式的响应跟 RETRY 相似,都是发生在数据未能完成传递时。最大的不同是仲裁器在这两种信号响应之后,选择 M 时所使用的权位算法不一样。如为 SPLIT 响应,仲裁器只允许其它 M 来对 S 作存取的动作,即使要求数据传送的 M 比当前 M 的优先权位来的低,也就是说仲裁器不会选择当前的 M 来进行数据传送;如果 S 响应的是 RETRY,那么仲裁器会用一般的权位算法去找出当前发出数据传递要求权位最高的 M 来进行数据传递。(了解)

2…主接口框图(很重要、会画):

  每一次的数据传送可分成四种型态,M 用 HTRANS[1:0] 信号来决定此次传送数据的型态,这四种传送型态分别是 IDLE、BUSY、NONSEQ 和 SEQ。

  当 M 传送的数据型态为 IDLE 时,表示 M 这时候想要拥有总线的使用权,但并不需要作数据的传送,此时的 S 必须立即作出 OKAY 的响应;

  第二种数据传送型态为 BUSY,当 M 进行一连续笔数据传递期间,若有些数据无法实时在下一个周期作传送,此时 M 会发出 BUSY 信号来延迟此笔数据的传送,S 这时候也会响应一个和 IDLE 传送型态一样的 OKAY 信号,同时忽略这笔数据的传递;

  另一种传送型态为 NONSEQ,NONSEQ 的传送型态表示此次的传送为单笔数据传送或一连续笔数据传送中的第一笔,因此这种的传送型态,数据的地址和控制信号跟前一笔数据不具有关联性;

  最后一种数据传送型态为 SEQ,在一连续笔数据的传递中,除了第一笔数据之外,其它的数据传递型态为 SEQ (第一笔为 NONSEQ),这种数据传递的控制信号和前一笔相同,而数据的地址则为前一笔数据地址加上由 HBURST[2:0]和 HSIZE[2:0] 信号所决定出的地址累加值。

3…仲裁器接口框图

4…译码器接口框图

以上内容转载自:

https://blog.csdn.net/little_ox/article/details/118399117


Multi Layer AHB System (多层AHB总线架构)

1. 介绍:

multi-layer AHB 是基于AHB互联架构:

可以开发更多可用总线带宽的多主机系统
可以构建灵活体系架构的复杂多主机系统;消除了在硬件设计阶段,就修改有关将系统资源分配给特定主机的设计决策要求
可以使用标准的AHB主从模块而不需要修改
每个AHB layer可以非常简单,因为只有一个主机,所以不需要仲裁,只需要MUX;
可以使用AHB-Lite协议,即不需要请求和授予,不需要RETRY/SPLIT事务;
仲裁器可以高效的为每一个外设进行点仲裁,并且仅当多个主机希望同时访问同一从机时,才有必要;
AHB 基础架构是多路选择器块,完成多主机到外设的连接
由于多层架构是基于AHB协议,可以复用之前设计的主机和从机,而不需要修改
2. 应用:
a. 多层互连拓朴结构

每一个主机都有自己的AHB layer,通过 interconnnect matrix 连接;

说明:
i. 每个layer有一个译码器,决定那个slave需要传输;
ii. MUX决定了传输从适当的传输到所需要的slave;
3. Advance Options
a. 第一种:私有从机
i. 让slave私有,如slave4/5只属于Master2,这将可以使用AHB-Lite来互连,减少了互连矩阵的复杂性;
ii. 当从机只被一个主机使用时,可以使用此互连结构;
b. 第二种:一个从端口上多从机
i. 让多个从设备单个挂载在互连矩阵上,这对于组合多个低带宽的从机很有用;
ii. 可以用在一系列从设备被一个主设备访问(如DMA),而互联矩阵仅用在特殊情况下可以访问,如debug系统时。
c. 第三种:一个layer层中多主机
i. 多主机共享一个Layer,适用于结合众多低带宽的多主机,如测试接口控制器TIC
d. 第四种:分离的AHB子系统
i. 每个layer可以成为完整的AHB子系统;
ii. 单从设备。通常片上存储器,用作两个子系统的缓存区
e. 第五种:多端口的从设备
i. 多层AHB系统中,如SRAM控制器,可以并行被不同layer高效传输;
ii. 通过设计从机有多个AHB从设备端口
4. 例子:
a. CPU1有处于AHB layer 1;
b. CPU2与DMA engine 共享AHB layer2;
c. SRAM 仅连接至layer,仅可以被CPU1访问;
d. LCD控制器,仅连至layer2,可以被DMA和CPU2访问;
e. 互连矩阵,有两个从设备端口,两个都可以被两个layer层访问
一个可以是AHB2APB桥,如下方多从机,能够挂载多低带宽的外设
f. 外部SRAM接口有两个layer层的接口

以上内容转载自:

https://blog.csdn.net/vivid117/article/details/110673909


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值