精华内容
下载资源
问答
  • AHB总线

    千次阅读 2020-12-17 22:12:24
    AHB总线一、 简介1.1 AHB总线的架构二、AHB总线(宏观构造)2.1.AHB总线组成2.2.AHB总线组成互连2.3.AHB操作概述2.4.AHB基本传输阶段三、AHB总线传输(时序)3.1.AHB信号描述(重要)3.2.基本AHB传输(重要)3.2.1零...

    一、 简介

    本文主要介绍AMBA2.0 (Advanced Microcontroller Bus Architecture,先进微控制总线结构),主要定义了三种总线:

    • AHB:Advanced High-performance Bus(先进高性能总线) 高速高性能总线;支持2级流水操作(优势)
    • APB:Advanced Peripheral Bus(先进外围总线) 低速总线、低功耗;接口简单
    • ASB:Advanced System Bus(先进系统总线)

    1.1 AHB总线的架构

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

    img

    二、AHB总线(宏观构造)

    2.1.AHB总线组成

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

    2.2.AHB总线组成互连

    在这里插入图片描述
    总线可以分为三组

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

    2.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必须再次接入总线以进行中断的burst剩余部分的传输。

    2.4.AHB基本传输阶段

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

    1. 地址期间; ( address phase): 一个周期
    2. 数据期间;(data phase): 一个周期 (以 HREADY 信号控制周期数目).

    三、AHB总线传输(时序)

    3.1.AHB信号描述(重要)

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

    说明:在实际的传输过程中,一般作为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设备的操作已经完成的信号

    AHB仲裁信号:

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

    3.2.基本AHB传输(重要)

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

    3.2.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.2.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.3.AHB控制信号

    3.3.1.传送状态 HTRANS[1:0]

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

    在这里插入图片描述

    3.3.2.批量传送 HBURST[2:0]

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

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

    每次传送数据的大小由 HBURST[2:0]定义:
    在这里插入图片描述
    超过了1K发送一个NSEQ:

    在这里插入图片描述

    3.3.3.传送方向 HWRITE

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

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

    3.3.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 种大小。

    3.3.5.保护控制 HPROT[3:0]

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

    3.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的功能。

    Retry响应:

    在这里插入图片描述

    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传输使用。

    有等待状态的grant:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VNIbICFg-1608213996257)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201217215637607.png)]

    四、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/ivy_reny/article/details/78144785?locationNum=3&fps=1
    https://blog.csdn.net/weixin_46022434/article/details/104987905

    展开全文
  • AHB总线学习PPT

    2018-04-30 13:57:26
    简要描述了AHB总线协议,对AHB总线的初学者有很大的帮助
  • AHB总线协议

    热门讨论 2013-04-24 11:26:19
    AHB总线协议,学习使用总结 AHB总线协议标准,AHB总线结构,信号描述,各部分结构及系统互联,总线时序等
  • AHB总线设计

    2016-02-28 10:45:10
    AHB总线通讯的设计,包括:AHB总线协议,程序代码,具有参考价值!
  • 文档AHB总线

    2017-09-07 10:53:45
    AMBA 版本 2.0(AHB和 APB),包括:AHB 基本信号时序,AHB 总线主控,AHB 仲裁,HREADY 输入/输出,默认从控,例子
  • AMBA总线—AHB总线协议详解

    千次阅读 2020-03-20 17:30:32
    典型的AMBA系统二、AHB总线(宏观构造)2.1.AHB总线组成2.2.AHB总线组成互连2.3.AHB操作概述2.4.AHB基本传输阶段三、AHB总线传输(时序)3.1.AHB信号描述(重要)3.2.基本AHB传输(重要)3.2.1零等待传输(no wait ...

    一、AMBA总线介绍

    1.1.AMBA发展史

    AMAB1.0
    AMBA2.0
    AMBA3.0
    AMBA4.0

    AMBA1.0: ASB协议和APB协议;
    AMBA2.0: AHB协议、ASB协议和APB协议;
    AMBA3.0: 增加了AXI协议(了解);
    AMBA4.0: ACE协议(了解)

    本文主要介绍AMBA2.0 (Advanced Microcontroller Bus Architecture,先进微控制总线结构),主要定义了三种总线:

    • AHB:Advanced High-performance Bus(先进高性能总线) 高速高性能总线;支持2级流水操作(优势)
    • APB:Advanced Peripheral Bus(先进外围总线) 低速总线、低功耗;接口简单
    • ASB:Advanced System Bus(先进系统总线)

    1.2.典型的AMBA系统

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

    二、AHB总线(宏观构造)

    2.1.AHB总线组成

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

    2.2.AHB总线组成互连

    在这里插入图片描述
    总线可以分为三组

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

    2.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剩余部分的传输。

    2.4.AHB基本传输阶段

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

    1. 地址传输阶段; ( address phase): 一个时钟周期
    2. 数据传输阶段;(data phase): 一个或多个时钟周期 (以 HREADY 信号控制周期数目).

    三、AHB总线传输(时序)

    3.1.AHB信号描述(重要)

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

    说明:在实际的传输过程中,一般作为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设备的操作已经完成的信号

    AHB仲裁信号:

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

    3.2.基本AHB传输(重要)

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

    3.2.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.2.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.3.AHB控制信号

    3.3.1.传送状态 HTRANS[1:0]

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

    3.3.2.批量传送 HBURST[2:0]

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

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

    每次传送数据的大小由 HBURST[2:0]定义:
    在这里插入图片描述
    详细的种批量式传送的时序在此不做详细解释。

    3.3.3.传送方向 HWRITE

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

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

    3.3.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 种大小。

    3.3.5.保护控制 HPROT[3:0]

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

    3.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,如此设计保证了不会出现地址越界问题。当一个设计不会用到所有的地址空间时,可能出现访问到一个不存在的地址的情况,这就需要增加一个附加的默认slavedefault 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传输使用。

    四、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://www.cnblogs.com/HolmeXin/p/9530711.html

    展开全文
  • AHB总线学习汇总

    2021-03-26 11:26:35
    一、AHB的基本介绍 AHB是ARM退出的AMBA总线系列中的其中一种,...AHB总线的强大之处在于它可以将微控制器(CPU)、高带宽的片上RAM、高带宽的外部存储器接口、DMA总线master、各种拥有AHB接口的控制器等等连接起来...

    一、AHB的基本介绍

    AHB是ARM退出的AMBA总线系列中的其中一种,它是一种高性能的pipe系统总线。

    1. AHB总线有一下特性:

    n  Burst 传输

    n  Split 事务处理

    n  单周期master移交

    n  单一时钟沿操作

    n  无三态

    n  更宽的数据总线配置(64/128)

     

    2. AHB总线系统的架构 

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

    下图是一个典型的AHB系统总线的结构示意图

    AHB总线学习 - 01 - 基础篇 - qixin_william - qixin_william的博客

    3.  AHB总线的组成

    下图清楚的显示了AHB总线的各个组成部分:

    AHB总线学习 - 01 - 基础篇 - qixin_william - qixin_william的博客

    总线中,有多个master和slave,一个仲裁器(arbiter)和一个译码器(decoder)组成。

    如果再将AHB总线细分,可以分为三组总线:写数据总线(HWDATA),读数据总线(HRDATA)和地址控制总线(HADDR)。从上面的结构图中可以看出,这三组总线相互分离互不干扰。对于每一组总线来说,同时只能由一个master或者slave来独占,这时需要仲裁器来决定将总线的控制权交与哪个设备,并控制多路选择器来选择已经获得控制权的那个设备来传输数据和地址信息。译码器根据地址来选择让哪个slave的数据通过选择器。

    一般来讲,我们称主动发起操作的设备为master,被动响应master的为slave。 

     

    二、AHB总线的信号

    AHB总线的信号都是以H开头,以区别其他的AMBA总线信号

     信号名  信号源  信号功能
     HCLK
    Bus clock
     clock source  总线时钟信号,都是上升沿有效
     HRESETn
    Reset
     reset controller  系统reset信号,低有效
     HADDR[31:0]
    address bus
    master  32位系统地址总线 
     HTRANS[1:0]
    transfer type
    master  transfer类型,一共有四种类型:NONSEQUENTIAL, SEQUENTAL, IDLE 或者BUSY 
     HSIZE[2:0]
    transfer size
    master  每一个transfer传输的数据大小。以字节为单位。最高支持1024位 
     HBURST[2:0]
    burst type
    master   transaction类型,一共有8种 
     HPROT[3:0]
    protection control
    master  保护控制信号,一般不用 
     HWDATA[31:0]
    write data bus
    master  这是写数据信号
     HSELx
    slave select
    decoder  slave选择信号 
     HRDATA[31:0]
    read data bus
    slave  这是读数据信号 
     HREADY
    transfer done
    slave  当这个信号为高时,表示当前transfer完成。slave也可以通过拉低这个信号来延长一个transfer。注意:slave需要2个HREADY信号,一个作为输出,一个作为输入 
     HRESP[1:0]
    transfer response
    slave    slave给master的响应信号,一共有四种:OKAY,ERROR,RETRY和SPLIT
         下面是仲裁器的信号
     HBUSREQx
    bus request
    master  这时master给仲裁器的请求获得总线使用权的请求信号,最多支持16个master 
     HLOCKx
    locked transfers
    master  如果一个master希望自己在传输期间不希望丢掉总线,则需要向仲裁器发送这个锁定信号 
     HGRANTx
    bus grant
    arbiter  授权信号,会传送给每一个master。当HREADY和HGRANTx同时为高时,master获取系统总线的权利 
     HMASTER[3:0]
    master number
    arbiter  这个是仲裁器为每一个master分配的ID,用来给多路选择器提供选择信号和为SPLIT操作提供控制信号。 
     HMASTLOCK
    locked sequence
    arbiter  表示当前的master正在执行Locked操作。这个信号和HMASTER有这相同的时序 
     HSPLITx[15:0]
    split completion request
    slave(SPLIT-capable)  这个信号是具有SPLIT操作的slave提供, 作为仲裁器仲裁的一项控制信号
         

       

     

    三、AHB的传输过程

     1. AHB的传输类型

    AHB一共有8种类型的传输模式,由HBURST[2:0]来决定

     HBURST[2:0]  类型 说明 
     000 SINGLE  单一传输,一次只有一个地址和控制信号,一组数据 
     001 INCR  次数不限的递增burst传输。地址根据每拍数据的大小递增,可以传输任意次数。唯一的限制是地址不能超过1K边界 
     010 WRAP4  4拍的回环burst传输。一共传4拍,地址会在地址边界回环。地址边界根据burst传输的次数和每次传输的数据大小来计算 
     011 INCR4  4拍的递增burst传输。一共传4拍,地址根据每一拍的数据大小递增 
     100 WRAP8  8拍的回环burst传输 
     101 INCR8  8拍的递增burst传输 
     110 WRAP16  16拍的回环burst传输 
     111 INCR16  16拍的递增burst传输 

    注释:1. AHB的所有操作,都要求给出的地址是对齐的。

               2. 对于同一个burst来说,每次数据的宽度都是一样的。

    下面重点来解释几个术语

    a). 对齐地址(aligned address)。所谓的对齐地址,其实是对存储空间的一种划分,在读取或者存储数据时,要以这种划分为前提来进行。并且对于不同的情况,对齐地址是不一样的。下面来说明怎么来确定对齐地址。

    对齐地址是由每拍传输的数据的宽度来决定的,如下表

    传输数据的宽度 对齐地址(存储空间的划分) 
     1-byte (  8-bit) 0x00  0x01  0x02  0x03 ....  
     2-byte (16-bit) 0x00  0x02  0x04  0x06 .... 
     4-byte (32-bit) 0x00  0x04  0x08  0x0c ... 
     8-byte (64-bit) 0x00  0x08  0x10  0x18 ...
     ...  ...

    从表中可以看出,对齐地址都是所传输数据宽度(以byte为单位)的整数倍  。在AHB总线上,master所给出的地址,必须是对齐地址。

    b). 地址边界(address boundary)。只有对于回环操作才有地址边界这一说法。地址边界跟对齐地址和拍数有关。下面举一个例子来说明边界怎么算。

    AHB只支持3种类型的回环,4拍,8拍,和16拍。其实地址边界可以使用2张表来进行计算

    第一张表就是对齐地址的那张表

    第二张表更简单

     拍数  地址边界
     4拍  从0x00开始,每第4个对齐地址为一个边界
     8拍  从0x00开始,每第8个对齐地址为一个边界
     16拍  从0x00开始,每第16个对齐地址为一个边界

     那么怎么来用这两张表呢?

    举一个例子,比如是一个WRAP4 的burst,每一拍4-byte数据宽度。那么边界地址是

    这个例子是一个4拍的回环操作,所以每第4个对齐地址为一个边界,因为每一拍是4-byte的数据宽度,所以它的对齐地址的序列为

            0x00    0x04   0x08   0x0c      

            0x10    0x14   0x18   0x1c

            0x20    0x24   0x28   0x2c

            0x30    0x34   0x38   0x3c

            0x40    0x44   0x48   0c4c

            .........................................

    根据我上面说的,每第4个对齐地址为一个边界,所以边界地址为0x0c  0x1c  0x2c  0x3c  0x4c .....

    c). 地址回环。 上面知道了什么是地址边界,下面来介绍什么是地址回环。

    在回环操作中,每当地址超过了地址边界,地址就会回环到较小的地址上继续进行。这里的较小地址是回环范围中的较小的地址。还以b)中的那个例子为例,

            0x00    0x04   0x08   0x0c      

            0x10    0x14   0x18   0x1c

            0x20    0x24   0x28   0x2c

            0x30    0x34   0x38   0x3c

            0x40    0x44   0x48   0c4c

            .........................................

    上面的每一行都是一个回环的范围,在一次回环操作中,地址只会在一行里发生变化,不会越行变化,并且每个地址都会用到并且只用到一次。比如,第一拍给出的地址是0x14, 那么接下来3拍的地址依次为 0x18 -> -x1c ->0x10。由于第三拍地址到达了边界,所以第四拍要返回到此次回环范围的最小的一个地址上。

    通俗的讲,地址是这么来按照次序给出的

                                        AHB总线学习 - 01 - 基础篇 - qixin_william - qixin_william的博客

    不管第一个地址怎么给出,地址总是按照这个次序依次发往总线。

     

    d). 递增(incrementing)- 顾名思义,就是依次增加的意思。拿INCR4来说明地址如何递增。INCR4 表示一个4拍的burst地址递增操作。一共4拍,表示会有4个地址,且地址依次的加上一个常数,这个常数的大小是每一拍传输的字节数。比如给出的第一个地址是0x40,每一拍传输数据的字节数是2bytes,则后面3个地址依次为0x42、0x44和0x46。

    2. AHB最基本的传输 

    a) 没有等待状态的Signal transfer

    Signal transfer是AHB总线最最基本的传输类型,下面以时序图参考来解析它的传输过程

    AHB总线学习 - 01 - 基础篇 - qixin_william - qixin_william的博客

     这个图中只给出了一部分的信号,但可以清楚的说明signal transfer的传输过程

    1.       在第一个周期的上升沿过后,master将地址和控制信号打入总线。

    2.       在第二个周期的上升沿处,slave将总线上的地址和控制信号接收下来,并且将HREADY信号拉高。

    3.       在接下来的第二个周期里,分两种情况:

    A). 如果是写操作,master会在第二个周期的上升沿过后将要写的数据打入总线。

    B). 如果是读操作,slave会在HREADY信号拉高过后将读取的数据打入总线

    4.       在第三个周期的上升沿处,分两种情况:

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

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

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

    b). slave插入等待状态的single transfer

    上面的情况是slave可以及时处理master请求的情况。但也可能存在这种情况:slave太慢不能立即处理。这时需要让master稍微等一等。这时需要slave来插入一些等待的状态。

    AHB总线学习 - 01 - 基础篇 - qixin_william - qixin_william的博客

     如上图,HREADY信号在第二第三个周期拉低,意在告诉master说slave不能立即处理,需要master等待2个周期。在这里需要注意2点:

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

    2.  如果是读操作,slave不需要一开始就给出数据(如果一开始可以给出的话,就不需要等待了),仅当HREADY拉高之后才给出有效数据。

    c). 多个single transfer的piplline操作

    前面2个都是只发单独的一个transfer,那么多个transfer连续发送会怎么样呢:

    AHB总线学习 - 01 - 基础篇 - qixin_william - qixin_william的博客

     1.  第一个周期的上升沿之后,master发起一个操作A,并将地址和控制信号打入总线。

    2.  在第二个周期的上升沿处,slave收到了来自总线的请求,master获取HREADY信号为高。

    3.  在第二个周期的上升沿过后,slave由于空闲将HREADY信号拉高,表示可以处理数据。

    4.  在第二个周期的上升沿过后,发现有操作B需要执行,并且检查到上一周期的HREADY为高,则发起第二个操作B。

    5.  在第三个周期的上升沿处,master获取HREADY信号为高,表示操作A已经完成。

    6.  在第三个周期的上升沿之后,master发现有操作C需要执行,并且检查到上一周期的HREADY为高,则发起第三个操作C。

    7.  在第三个周期的上升沿之后,slave由于繁忙而插入了一个等待状态,将HREADY拉低。

    8.  在第四个周期的上升沿处,master获取HREADY的信号为低,知道了slave希望他这一拍等待一下,此时,master在第四个周期内需要保持和上一拍一样的信号。

    9.  在第三个周期期间,slave处理完了事务,所以在第四个周期的上升沿之后,slave将HREADY信号拉高,表示已经可以继续处理数据。

    10.  在第五个周期的上升沿处,master获取HREADY信号为高,知道了slave已经可以处理B操作。

    11.在第五个周期的上升沿之后,B操作完成。

    12.在第六个周期的上升沿之后,C操作完成。

    对于上面的过程需要注意几点:

    1.       HREADY在一定程度上表示了slave的pipeline能力,在AHB中,是2个pipe。也就是总线上最多存在2个未处理完的transfer。

    2.       只有当总线上未完成的transfer少于2个时,master才能发起操作。

    下面开始学习AHB的特色传输 - burst transfer

     

    在介绍burst transfer之前,还是把AHB的控制信号补全。

     

    HWRITE - 这个信号是读写控制信号,也即transfer的方向控制信号。 高电平表示写操作,低电平表示读操作。

     

    HSIZE - 这个信号是指明单次transfer的数据宽度。具体如下图所示

    AHB总线学习 - 02 - 基础篇 - qixin_william - qixin_william的博客

     

    HPROT[3:0] - 为transfer提供额外的访问保护和控制权限信号。一般不用,在此不做介绍

     

    HTRANS[1:0] - 进行一次传输时的传输类型,这个信号由master根据自己要进行的传输类型生成的控制信号。一共4种类型

    00     – IDLE:

    告知slave当前总线处于空闲状态,没有有效的transaction在进行,那么此时就算slave被使能,也不会从总线上获取任何的数据信号。如果此时salve被选中,那么每一个IDLE周期slave都要通过HRESP[1:0]返回一个OKAY响应(见HRESP)

          01 – BUSY:

    如果slave收到了这个信号,表面当前的master正在进行一个burst传输但是在当前周期不能立刻给出下一次要传输的数据,这时slave不会从总线上收取数据而是等待,并且通过HRESP[1:0]返回一个OKAY响应。需要注意的是,这个transfer需要给出下一拍的地址和控制信号,尽管slave不会去采样。

          10 – NONSEQ:

    Salve收到这个信号时,表示当前是一个single transfer(就是只传输一次)或者是burst 传输的第一个transfer。此时总线上的地址信号和控制信号与之前的毫不相干。可以理解为一个新的transaction的开始。

           11 – SEQ:

    这个信号只有在burst传输中出现。当slave收到这个信号时,表明当前的transfer是一个burst transaction中的某一拍。这时,总线上的控制信号应当与之前的保持一致,地址视情况递增或者回环。(这些信号其实是由master决定的,slave不用考虑,只需要单方面接收即可)

    那么下面就继续学习burst transfer的流程。

    d) 递增burst

    AHB总线学习 - 02 - 基础篇 - qixin_william - qixin_william的博客

     1. T1时刻之后,master将第一拍地址和控制信号打入总线,因为是一个新的burst的开始,所以transfer的类型是NONSEQ的。

    2.  由于master不能在第二个周期里处理第二拍,所以master使用BUSY transfer来为自己延长一个周期的时间。注意,虽然是延长了一个周期,但是master需要给出第二个transfer的地址和控制信号。

    3.  slave在T3时刻采集到了master发来的BUSY transfer,知道master需要等待一拍,所以,slave会忽略这个BUSY transfer。

    4. 在等待了一个周期之后,master在第三个周期发起了第二个transfer,因为是同一个burst的第二个transfer,所以transfer的类型是SEQ。

    5. 在第五个周期里,slave将HREADY信号拉低,告诉master需要等待一个周期。

    6. 最后在T8时刻完成最后个transfer。

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

     

    e). wrapping 4-beat burst

    AHB总线学习 - 02 - 基础篇 - qixin_william - qixin_william的博客

     上图为一个4拍的回环burst传输。

    跟之前唯一的区别在于地址的不同,在0x3C地址之后,根据回环的地址边界,第三拍的地址变为0x30。

    一共四拍,一共4个地址,每个地址各不相同,这四个地址是一个回环范围。起始地址决定了回环操作的回环范围。至于如何确定回环地址和范围,在之前的帖子里说的非常清楚,在此不再赘述。

    f). 4拍的递增burst 

    AHB总线学习 - 02 - 基础篇 - qixin_william - qixin_william的博客

     这个是地址递增的4拍burst。

    和上面的基本一直,只不过地址在0x30并不回环,而是递增。

    g). 其他还有4种burst

         wrapping 8

         increasing 8

         wrapping 16

         increasing 16

    基本和上面类似,这里就不再一一说了。

    展开全文
  • AHB总线协议简单介绍

    2020-05-28 18:01:59
    AHB总线协议介绍,AHB总线规范是AMBA总线规范的一部分,AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus)、ASB (Advanced System Bus)、APB (Advanced ...
  • AHB总线下DMA硬件设计

    2019-04-29 21:50:40
    高效实现了AHB总线下DMA控制器设计,对于SoC系统开发和学习使用具有较大帮助
  • AHB总线协议中文笔记详解版
  • AHB总线简单介绍

    千次阅读 2019-09-28 00:26:53
    一、AHB的基本介绍 AHB是ARM退出的AMBA总线系列中的其中一种,它是一种高性能的pipe系统总线。 1. AHB总线有一下特性: nBurst传输 ...2. AHB总线系统的架构 ...AHB总线的强大之处在于它可以将...

    一、AHB的基本介绍

    AHB是ARM退出的AMBA总线系列中的其中一种,它是一种高性能的pipe系统总线。

    1. AHB总线有一下特性:

    n  Burst 传输

    n  Split 事务处理

    n  单周期master移交

    n  单一时钟沿操作

    n  无三态

    n  更宽的数据总线配置(64/128)

     

    2. AHB总线系统的架构 

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

    下图是一个典型的AHB系统总线的结构示意图

    AHB总线学习 - 01 - 基础篇 - qixin_william - qixin_william的博客

    3.  AHB总线的组成

    下图清楚的显示了AHB总线的各个组成部分:

    AHB总线学习 - 01 - 基础篇 - qixin_william - qixin_william的博客

    总线中,有多个master和slave,一个仲裁器(arbiter)和一个译码器(decoder)组成。

    如果再将AHB总线细分,可以分为三组总线:写数据总线(HWDATA),读数据总线(HRDATA)和地址控制总线(HADDR)。从上面的结构图中可以看出,这三组总线相互分离互不干扰。对于每一组总线来说,同时只能由一个master或者slave来独占,这时需要仲裁器来决定将总线的控制权交与哪个设备,并控制多路选择器来选择已经获得控制权的那个设备来传输数据和地址信息。译码器根据地址来选择让哪个slave的数据通过选择器。

    一般来讲,我们称主动发起操作的设备为master,被动响应master的为slave。 

     

    二、AHB总线的信号

    AHB总线的信号都是以H开头,以区别其他的AMBA总线信号

     信号名  信号源  信号功能
     HCLK
    Bus clock
     clock source  总线时钟信号,都是上升沿有效
     HRESETn
    Reset
     reset controller  系统reset信号,低有效
     HADDR[31:0]
    address bus
    master  32位系统地址总线 
     HTRANS[1:0]
    transfer type
    master  transfer类型,一共有四种类型:NONSEQUENTIAL, SEQUENTAL, IDLE 或者BUSY 
     HSIZE[2:0]
    transfer size
    master  每一个transfer传输的数据大小。以字节为单位。最高支持1024位 
     HBURST[2:0]
    burst type
    master   transaction类型,一共有8种 
     HPROT[3:0]
    protection control
    master  保护控制信号,一般不用 
     HWDATA[31:0]
    write data bus
    master  这是写数据信号
     HSELx
    slave select
    decoder  slave选择信号 
     HRDATA[31:0]
    read data bus
    slave  这是读数据信号 
     HREADY
    transfer done
    slave  当这个信号为高时,表示当前transfer完成。slave也可以通过拉低这个信号来延长一个transfer。注意:slave需要2个HREADY信号,一个作为输出,一个作为输入 
     HRESP[1:0]
    transfer response
    slave    slave给master的响应信号,一共有四种:OKAY,ERROR,RETRY和SPLIT
         下面是仲裁器的信号
     HBUSREQx
    bus request
    master  这时master给仲裁器的请求获得总线使用权的请求信号,最多支持16个master 
     HLOCKx
    locked transfers
    master  如果一个master希望自己在传输期间不希望丢掉总线,则需要向仲裁器发送这个锁定信号 
     HGRANTx
    bus grant
    arbiter  授权信号,会传送给每一个master。当HREADY和HGRANTx同时为高时,master获取系统总线的权利 
     HMASTER[3:0]
    master number
    arbiter  这个是仲裁器为每一个master分配的ID,用来给多路选择器提供选择信号和为SPLIT操作提供控制信号。 
     HMASTLOCK
    locked sequence
    arbiter  表示当前的master正在执行Locked操作。这个信号和HMASTER有这相同的时序 
     HSPLITx[15:0]
    split completion request
    slave(SPLIT-capable)  这个信号是具有SPLIT操作的slave提供, 作为仲裁器仲裁的一项控制信号
         

       

     

    三、AHB的传输过程

     1. AHB的传输类型

    AHB一共有8种类型的传输模式,由HBURST[2:0]来决定

     HBURST[2:0]  类型 说明 
     000 SINGLE  单一传输,一次只有一个地址和控制信号,一组数据 
     001 INCR  次数不限的递增burst传输。地址根据每拍数据的大小递增,可以传输任意次数。唯一的限制是地址不能超过1K边界 
     010 WRAP4  4拍的回环burst传输。一共传4拍,地址会在地址边界回环。地址边界根据burst传输的次数和每次传输的数据大小来计算 
     011 INCR4  4拍的递增burst传输。一共传4拍,地址根据每一拍的数据大小递增 
     100 WRAP8  8拍的回环burst传输 
     101 INCR8  8拍的递增burst传输 
     110 WRAP16  16拍的回环burst传输 
     111 INCR16  16拍的递增burst传输 

    注释:1. AHB的所有操作,都要求给出的地址是对齐的。

               2. 对于同一个burst来说,每次数据的宽度都是一样的。

    下面重点来解释几个术语

    a). 对齐地址(aligned address)。所谓的对齐地址,其实是对存储空间的一种划分,在读取或者存储数据时,要以这种划分为前提来进行。并且对于不同的情况,对齐地址是不一样的。下面来说明怎么来确定对齐地址。

    对齐地址是由每拍传输的数据的宽度来决定的,如下表

    传输数据的宽度 对齐地址(存储空间的划分) 
     1-byte (  8-bit) 0x00  0x01  0x02  0x03 ....  
     2-byte (16-bit) 0x00  0x02  0x04  0x06 .... 
     4-byte (32-bit) 0x00  0x04  0x08  0x0c ... 
     8-byte (64-bit) 0x00  0x08  0x10  0x18 ...
     ...  ...

    从表中可以看出,对齐地址都是所传输数据宽度(以byte为单位)的整数倍  。在AHB总线上,master所给出的地址,必须是对齐地址。

    b). 地址边界(address boundary)。只有对于回环操作才有地址边界这一说法。地址边界跟对齐地址和拍数有关。下面举一个例子来说明边界怎么算。

    AHB只支持3种类型的回环,4拍,8拍,和16拍。其实地址边界可以使用2张表来进行计算

    第一张表就是对齐地址的那张表

    第二张表更简单

     拍数  地址边界
     4拍  从0x00开始,每第4个对齐地址为一个边界
     8拍  从0x00开始,每第8个对齐地址为一个边界
     16拍  从0x00开始,每第16个对齐地址为一个边界

     那么怎么来用这两张表呢?

    举一个例子,比如是一个WRAP4 的burst,每一拍4-byte数据宽度。那么边界地址是

    这个例子是一个4拍的回环操作,所以每第4个对齐地址为一个边界,因为每一拍是4-byte的数据宽度,所以它的对齐地址的序列为

            0x00    0x04   0x08   0x0c      

            0x10    0x14   0x18   0x1c

            0x20    0x24   0x28   0x2c

            0x30    0x34   0x38   0x3c

            0x40    0x44   0x48   0c4c

            .........................................

    根据我上面说的,每第4个对齐地址为一个边界,所以边界地址为0x0c  0x1c  0x2c  0x3c  0x4c .....

    c). 地址回环。 上面知道了什么是地址边界,下面来介绍什么是地址回环。

    在回环操作中,每当地址超过了地址边界,地址就会回环到较小的地址上继续进行。这里的较小地址是回环范围中的较小的地址。还以b)中的那个例子为例,

            0x00    0x04   0x08   0x0c      

            0x10    0x14   0x18   0x1c

            0x20    0x24   0x28   0x2c

            0x30    0x34   0x38   0x3c

            0x40    0x44   0x48   0c4c

            .........................................

    上面的每一行都是一个回环的范围,在一次回环操作中,地址只会在一行里发生变化,不会越行变化,并且每个地址都会用到并且只用到一次。比如,第一拍给出的地址是0x14, 那么接下来3拍的地址依次为 0x18 -> -x1c ->0x10。由于第三拍地址到达了边界,所以第四拍要返回到此次回环范围的最小的一个地址上。

    通俗的讲,地址是这么来按照次序给出的

                                        AHB总线学习 - 01 - 基础篇 - qixin_william - qixin_william的博客

    不管第一个地址怎么给出,地址总是按照这个次序依次发往总线。

     

    d). 递增(incrementing)- 顾名思义,就是依次增加的意思。拿INCR4来说明地址如何递增。INCR4 表示一个4拍的burst地址递增操作。一共4拍,表示会有4个地址,且地址依次的加上一个常数,这个常数的大小是每一拍传输的字节数。比如给出的第一个地址是0x40,每一拍传输数据的字节数是2bytes,则后面3个地址依次为0x42、0x44和0x46。

    2. AHB最基本的传输 

    a) 没有等待状态的Signal transfer

    Signal transfer是AHB总线最最基本的传输类型,下面以时序图参考来解析它的传输过程

    AHB总线学习 - 01 - 基础篇 - qixin_william - qixin_william的博客

     这个图中只给出了一部分的信号,但可以清楚的说明signal transfer的传输过程

    1.       在第一个周期的上升沿过后,master将地址和控制信号打入总线。

    2.       在第二个周期的上升沿处,slave将总线上的地址和控制信号接收下来,并且将HREADY信号拉高。

    3.       在接下来的第二个周期里,分两种情况:

    A). 如果是写操作,master会在第二个周期的上升沿过后将要写的数据打入总线。

    B). 如果是读操作,slave会在HREADY信号拉高过后将读取的数据打入总线

    4.       在第三个周期的上升沿处,分两种情况:

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

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

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

    b). slave插入等待状态的single transfer

    上面的情况是slave可以及时处理master请求的情况。但也可能存在这种情况:slave太慢不能立即处理。这时需要让master稍微等一等。这时需要slave来插入一些等待的状态。

    AHB总线学习 - 01 - 基础篇 - qixin_william - qixin_william的博客

     如上图,HREADY信号在第二第三个周期拉低,意在告诉master说slave不能立即处理,需要master等待2个周期。在这里需要注意2点:

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

    2.  如果是读操作,slave不需要一开始就给出数据(如果一开始可以给出的话,就不需要等待了),仅当HREADY拉高之后才给出有效数据。

    c). 多个single transfer的piplline操作

    前面2个都是只发单独的一个transfer,那么多个transfer连续发送会怎么样呢:

    AHB总线学习 - 01 - 基础篇 - qixin_william - qixin_william的博客

     1.  第一个周期的上升沿之后,master发起一个操作A,并将地址和控制信号打入总线。

    2.  在第二个周期的上升沿处,slave收到了来自总线的请求,master获取HREADY信号为高。

    3.  在第二个周期的上升沿过后,slave由于空闲将HREADY信号拉高,表示可以处理数据。

    4.  在第二个周期的上升沿过后,发现有操作B需要执行,并且检查到上一周期的HREADY为高,则发起第二个操作B。

    5.  在第三个周期的上升沿处,master获取HREADY信号为高,表示操作A已经完成。

    6.  在第三个周期的上升沿之后,master发现有操作C需要执行,并且检查到上一周期的HREADY为高,则发起第三个操作C。

    7.  在第三个周期的上升沿之后,slave由于繁忙而插入了一个等待状态,将HREADY拉低。

    8.  在第四个周期的上升沿处,master获取HREADY的信号为低,知道了slave希望他这一拍等待一下,此时,master在第四个周期内需要保持和上一拍一样的信号。

    9.  在第三个周期期间,slave处理完了事务,所以在第四个周期的上升沿之后,slave将HREADY信号拉高,表示已经可以继续处理数据。

    10.  在第五个周期的上升沿处,master获取HREADY信号为高,知道了slave已经可以处理B操作。

    11.在第五个周期的上升沿之后,B操作完成。

    12.在第六个周期的上升沿之后,C操作完成。

    对于上面的过程需要注意几点:

    1.       HREADY在一定程度上表示了slave的pipeline能力,在AHB中,是2个pipe。也就是总线上最多存在2个未处理完的transfer。

    2.       只有当总线上未完成的transfer少于2个时,master才能发起操作。

    T1时刻之后,master将第一拍地址和控制信号打入总线,因为是一个新的burst的开始,所以transfer的类型是NONSEQ的。 T2上升沿,slave采集到master发出的控制信号。
    控制信号包括(haddr,htans,hburst)。 slave就是基于这一控制信号,考虑是否在下个周期(T2时刻后的周期,把自己的data放上供给master读取)
    NONSEQ是single模式和burst模式第一拍的必要条件。
    这里的hburst发出为INCR模式,即为次数不限的递增burst传输。地址根据每拍数据的大小递增,可以传输任意次数。唯一的限制是地址不能超过1K边界.
    由于master不能在第二个周期里处理第二拍,T2时刻后,所以master使用BUSY transfer来为自己延长一个周期的时间。注意,虽然是延长了一个周期,但是master需要给出第二个transfer的地址和控制信号。在T3时刻Slave的控制信号htrans busy被slave抓到。
    在T3的上升沿,实际上第一个tranfer(读或者写)完成。
    这里实际上完成了一次握手,master说我下个周期会很busy,发不出来数据,slave你就不要采了
    对于无效的周期,实际上和busy一同发出的busy信号也没什么意义了(反正下个周期也不会在完成tranfer了)。
    slave在T3时刻采集到了master发来的BUSY transfer,知道master需要等待一拍,所以,slave会忽略这个BUSY transfer。
    也就是说,T4时候,总线上 的数据信号是无效的。T4这个时刻只是为了获取下一周期的控制信号
    虽然master在busy的周期数据是无效的,但是控制还必须有效,这样的话实际上控制信号只是在准备通知slave下一周期,我是否还是无效的,如果有效,我的地址是啥。
    在等待了一个周期之后,T5时刻完成第二个transfer。一切正常
    在第五个周期里,slave很忙,将HREADY信号拉低,告诉master需要等待一个周期。然后再T6时刻,master 感受到slave的不ready,就会保持字的状态。
    。。。。。。。
    列表内容最后在T8时刻完成最后个transfer。
    需要注意的 虽然slave会忽略掉BUSY transfer,但是master也需要给出下一拍的地址可控制信号。
    这里没反应出来的是hresp信号,这一信号包含ok,error,retry, split,正常情况下,都会是ok状态

    转载于:https://www.cnblogs.com/gujiangtaoFuture/articles/10136914.html

    展开全文
  • AHB总线控制master

    2013-08-21 10:14:26
    AHB总线控制master部分,是一种先进的总线标准,应用广泛
  • 处理器内部的AHB总线上,$698P处理器是AHB总线的主设备。CAN控制器 和$698P处理器组成了一个片上系统SoC。 本设计实现了一个CAN总线AHB总线之间的桥,实现了CAN总线上的数 据与AHB总线上的数据的转换。将CAN...
  • 为了克服RTL级AHB总线模型的局限性,提出了采用标准C 扩充的软硬件统一建模语言SystemC构建事务级的AHB总线模型的方法。该方法利用端口来连接模块和通道,利用通道来实现接口中定义的方法。经仿真验证,时序完全符合...
  • AHB总线是系统总线,APB 是外设总线,例如许多片内外设ADC time等等。 参考:stm32的总线AMBA、AHB、APB
  • AHB总线规范读书笔记

    2012-03-04 22:25:58
    AHB总线规范读书笔记
  • #基于AHB总线SRAM控制器 的设计及优化
  • AMBA总线(二) AHB总线

    千次阅读 2019-12-21 21:05:31
    (一)AHB 总线的架构 总线周期:就是总线时钟的频率,对于AMBA AHB 或者APB 协议总线周期定义为从一个上升沿到临界的上升沿的变化区间。 总线传输:AHB 总线传输是数据目标的读写操作,可能会持续一个或者多个总线...
  • AMBA-AHB总线协议

    2020-06-02 23:15:06
    AHB总线规范是AMBA总线规范的一部分,AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus)、ASB (Advanced System Bus)、APB (Advanced Peripheral Bus)。AHB...
  • AHB总线规范笔记
  • AHB总线的基础理论

    2019-11-13 10:56:54
    AHB总线结构如图所示: 信号列表: 仲裁信号 在一次 AMBA AHB 传输开始之前总线主机必须被授予访问总线。这个过程开始于总线主机向仲裁器断言一个请求信号。仲裁器指示主机何时能够被授予使用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,545
精华内容 2,618
关键字:

ahb总线