AHB总线协议

1 AHB总线组成

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

2  AHB从设备Slave ;响应一次读写操作,通过地址映射选择使用哪一个从设备

3 AHB仲裁器Arbiter ;允许某一个主设备控制总线

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

2 AHB总线互联图

 

总线分成三组 

1 写数据总线

2 读数据总线

3 地址控制总线

3 AHB操作流程简述

        有需要占用总线的Master向arbiter发出请求,arbiter授权给指定的master。任一时间周期只有一个master可以接入总线,对其指定的slave进行读写操作。
        获得总线授权的master开始AHB传输,首先发出地址和控制信号,提供地址信息、传输方向、带宽和burst类型。总线统一规划slave的地址,译码器根据地址和控制信号确定哪个slave与master进行数据通信。数据传输通过数据总线完成。为避免出现三态总线,AHB将读写总线分开写数据总线用于从master到slave的数据传输,读数据总线用于从slave到master的数据传输。每笔传输包括一个地址和控制周期一个或多个数据周期地址和控制周期不能被扩展,因此slave必须在一个周期内采样地址信号数据周期可以通过HREADY信号扩展,但HREADY为低时给传输加入一个等待状态以使slave获得额外的时间来提供或采样数据,另外slave通过响应信号HRESP反映传输状态
        AHB支持批量式数据传送,可以自动递增地址。递增地址方式分为:持续递增与回绕传送。
        一般情况下master完成完整的burst传输,arbiter才会授权给其他的master接入总线,然而为避免过大的判决延迟,arbiter也可能打断burst传输。在这种情况下master必须再次接入总线以进行中断的burst剩余部分的传输。

3.1AHB基本传输

AHB的传送模式包含二个阶段。第一阶段为地址的传递,另一阶段为数据的传递。
        1.地址传输阶段;( address phase):一个时钟周期
        ⒉数据传输阶段;(data phase) : 一个或多个时钟周期(以HREADY信号控制周期数目).

4AHB信号描述

4.1AHB信号描述

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

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

 

 4.2AHB仲裁信号

 5 AHB时序传输

5.1 零等待传输时序图

 第一个周期的上升沿,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支持流水线的动作,在收上一笔数据的同时,可将下一笔数据的地址送出。

5.2 等待传输

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

slave可以及时处理master请求,但也可能存在slave太慢不能立即处理的情况。这时需要让master稍微等一等,需要slave插入一些等待的状态。如图所示,HREADY信号在第二和第三周期拉低,意在告诉master,slave不能立即处理,需要master等待2个周期.
在这里需要注意2点:
        如果是写操作,master需要在等待期间保持写数据不变,直到本次传输完成(? );

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

5.3 多重传输

一次完整的数据传输就会有多个传输周期,如下图下一笔地址可与上一笔数据同时在总线上(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才能发起操作。

5.4递增burst传输

         T1,master传入地址和控制信号,因为是新的burst开始,transfer的类型是NONSEQ;
        T2,由于master不能在第二个周期里处理第二拍,所以master使用BUSY transfer来为自己延长一个周期的时间。注意,虽然是延长了一个周期,但是master需要给出第二个transfer的地址和控制信号;
        T3, slave采集到了master发来的BUSY,知道master需要等待一拍,所以slave会忽略这个BUSY transfer

        T4,master发起了第二个transfer,因为是同一个burst的第二个transfer,所以transfer的类型是SEQ;

        T5,slave将HREADY信号拉低,告诉master需要等待一个周期;
        T8时刻完成最后一个transfer。
需要注意的

虽然slave会忽略掉BUSY transfer,但是master也需要给出下一拍的地址和控制信号。

5.5回环4-beat burst

 跟之前唯一的区别在于地址的不同,在Ox3C地址之后,根据回环的地址边界,第三拍的地址变为Ox30。一共四拍,4个地址,每个地址各不相同,这四个地址是一个回环范围。起始地址决定了回环操作的回环范围。

5.6 递增4拍burst传输

 此处不理解看burst传输类型

6 AHB控制信号

6.1 传输状态HTRANS[1:0]

在AHB总线上,M的传送状态可以HTRANS[1:0]控制,含义如下

 6.2 批量传送HBURST[2:0]


批量传送是以群组为单位的传送方式,主要依地址的给法来区分:
        递增传送(incrementing burst),会依上一笔的地址来递增。
        回绕传送(wrapping burst),如:回绕长度=4;每4个字节要对齐在16字节的范围内。如果第一个地址=Ox64,则传送的顺序为ox68、Ox6C、Ox60。
每次传送数据的大小由HBURST[2:0]定义:

6.3 传送大小HSIZE[2:0]

HSIZE[2:0]与HBURST[2:0]两个信号可合起来定义回绕地址的范围。
例如:HSIZE[2:0]= 32位,HBURST[2:0]长度为4字节,则回绕地址须对齐在16字节。通常的AHB从设备是32位数据线,所以它支持8位,16位和32位3种大小。


6.4 传送方向HWRITE

HWRITE:表示传送方向(依读或写的动作来决定传送信号的方向)
        HWRITE拉高时(写),M必须对写入动作初始化,数据会由M放到HWDATA[31:0]总线上。
        HWRITE拉低时((读),M会对读取动作初始化,被寻址到的S会将数据放到HRDATA[31:0]总线上。

 6.5 保护控制 HPROT[3:0]

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

7 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会调整优先级方案以便其他请求总线的主设备可以访问总线

地址译码


        地址译码器用于为总线上每个slave提供选择信号HSELx,选择信号是通过组合逻辑对地址码译码产生的。只有当前的数据传输完成后(HREADY为高),slave才会采样地址和控制信号以及HSELx。在一定条件下可能会出现这样的情况:产生HSELx信号而HREADY为低,在当前传输后slave会改变。
        每个slave最小的地址空间为1KB,所有的master的burst传输上限也是1KB,如此设计保证了不会出现地址越界问题。当一个设计不会用到所有的地址空间时,可能出现访问到一个不存在的地址的情况,这就需要增加一个附加的默认slave来为上面的情况提供一个响应。当SEQ或NONSEQ传输访问到一个不存在的地址,默认slave应该提供ERROR响应;当IDLE或BUSY传输访问到一个不存在的地址,默认slave会响应OKAY。地址译码器会带有实现默认slave的功能。


仲裁


        仲裁机制保证了任意时刻只有一个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传输使用。

8 AHB模块接口

8.1 Slave 接口

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


        由图中可发现,S除了用HREADY信号来告知此笔数据是否需要额外的延迟时间之外,还会透过HRESPI1: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来进行数据传递。(了解)

8.2 Master 接口

         每一次的数据传送可分成四种型态,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]信号所决定出的地址累加值。

 8.3 Arbiter 接口

 8.4 译码器接口

 

参考 AMBA总线—AHB总线协议详解_ahb信号_SD.ZHAI的博客-CSDN博客

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AHB总线协议(Advanced High-performance Bus,高级高性能总线协议)是一种快速、高效的系统总线协议,被广泛应用于嵌入式系统中。 AHB总线协议基于主从结构,包括一个主处理器(Master)和多个从设备(Slave)。主处理器可以同时访问多个从设备,而从设备则按照请求和响应的方式进行数据传输。 AHB总线协议的特点有以下几个方面: 1. 高效性:AHB总线协议采用分时复用的方式进行数据传输,可以同时支持多个主处理器和从设备的访问,提高系统的并发性和效率。 2. 灵活性:AHB总线协议支持多种不同类型的传输,如读、写、读-改写等,适应不同设备的需求。 3. 低功耗:AHB总线协议通过优化数据传输的方式和控制信号,实现低功耗的系统设计。 4. 可靠性:AHB总线协议采用高效的错误检测和纠正机制,在数据传输过程中能够保证数据的可靠性。 5. 可扩展性:AHB总线协议支持多级总线的连接,可以方便地扩展系统的功能和性能。 在嵌入式系统中,AHB总线协议被广泛应用于各种不同类型的设备之间的通信。它可以连接处理器、内存、外设等,实现它们之间的数据传输和控制。同时,AHB总线协议也为系统开发人员提供了一种标准的接口和规范,简化了系统设计和开发的工作。总之,AHB总线协议在嵌入式系统中具有重要的地位和作用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值