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

    热门讨论 2013-04-24 11:26:19
    AHB总线协议,学习使用总结 AHB总线协议标准,AHB总线结构,信号描述,各部分结构及系统互联,总线时序等
  • 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总线协议中文笔记详解版
  • AMBA总线—AHB总线协议详解

    千次阅读 多人点赞 2020-03-20 17:30:32
  • 基于AHB总线协议的DMA控制器设计_卞学愚.caj
  • 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协议简介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传输使用。

    展开全文
  • [AMBA]AHB总线协议简介

    2021-05-11 19:48:28
    AHB 协议简介 一、简介 AHB 总线规范是AMBA总线规范的一部分,AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus)、ASB (Advanced System Bus)、APB ...

                                              AHB总线协议简介

    一、简介

           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的连接。APB用于连接外部设备,对性能要求不高,而考虑低功耗问题。ASB是AHB的一种替代方案。官方协议下载链接(Link)。

    二、AHB总线的架构

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

                

    三、AHB基本特性

    • Burst传输
    • Split事务处理
    • 单周期master移交
    • 单一时钟沿操作
    • 无三态
    • 更宽的数据总线配置(64/128)
    • 流水线操作
    • 可支持多个总线主设备(最多16个)

    四、AHB总线的组成

    • AHB总线由AHB总线主机(Master)、AHB总线从机(Slave)和Infrastructure构成。Infrastructure由仲裁器、数据多路选择器、地址控制多路选择器、译码器构成。
    • AMBA AHB 总线协议设计使用一个中央多路选择器互联方案。该方案中,所有总线主机设备输出地址和控制信号来指示它们想执行的传输,同时仲裁器决定哪一个主机能够将它的地址和控制信号连通到所有的从机。当然也需要一个译码器来控制读数据和响应多路信号选择器,多路信号选择器选中来自传输中所包含从机的适当信号。
    • 下图实现包含三个主机和四个从机的 AMBA AHB 设计的结构要求。

              

    • 典型的 AMBA AHB 系统设计包含以下的部分:
    1. AHB 主机:总线主机能够通过提供地址和控制信息发起读写操作。任何时候只允许一个总线主机处于有效状态并能使用总线。
    2. AHB 从机:总线从机在给定的地址空间范围内响应读写操作。总线从机将成功、失败或者等待数据传输的信号返回给有效的主机。
    3. AHB 仲裁器:总线仲裁器确保每次只有一个总线主机被允许发起数据传输。即使仲裁协议已经固定,任何一种仲裁算法,比如最高优先级或者公平访问都能够根据应用要求而得到执行。AHB 必须只包含一个仲裁器,尽管在单总线主机系统中这显得并不重要。
    4. AHB 译码器:AHB 译码器用来对每次传输进行地址译码并且在传输中包含一个从机选择信号。所有 AHB 执行都必须仅要求有一个中央译码器。

    五、信号描述

    • 所有 AMBA 信号的命名都用名称的第一个字母来指示信号和哪个总线相关联。信号名称中用一个小写的 n 表示该信号低电平有效,否则信号的名称总是用大写字母来表示。
    • 测试信号有一个前缀T而与总线类型无关。
    • AHB信号前缀:H 表示一个 AHB 信号。例如, HREADY 是用来指示 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也有许多信号请求支持多主机操作。这些仲裁信号用于点对点连接, 下表中后缀x用来表示信号来自模块x。例如,一个系统中会有许多的信号HBUSREQx,比如HBUSREQarm, HBUSREQdma和HBUSREQtic。
    名称来源描述

    HBUSREQx
    总线请求

    主机

    从总线主机 x 传向总线仲裁器用来表示该主机请求(控制 ) 总 线 的信 号 。 系 统中 每 个 总 线主 机 都 有 一个HBUSREQx 信号,最多 16 个总线主机。

    HLOCKx
    锁定的传输

    主机

    当该信号为高时表示主机请求锁定对总线的访问并且在该信号为低之前其他主机不应该被允许授予总线。

    HGRANTx
    总线授予

    仲裁器

    该信号用来表示总线主机 x 目前是优先级最高的主机。
    当 HREADY 为高时传输结束,地址/控制信号的所有权发生改变。所以主机应在 HREADY 和 HGRANTx都为高时获得对总线的访问。

    HMASTER[3:0]
    主机号

    仲裁器

    这些来自仲裁器的信号表示哪个总线主机正在执行传输和被支持分块传输的从机用来确定哪个主机正在尝试一次访问。HMASTER 的时序和地址以及控制信号对齐。

    HMASTLOCK
    锁定顺序

    仲裁器

    表示当前主机正在执行一个锁定顺序的传输。该信号和 HMASTER 有相同的时序。

    HSPLITx[15:0]
    分块完成请求

    从机(支持分块)

    从机用这 16 位的分块总线来指示仲裁器总线主机应该被允许重试一个分块传输。分块总线上的每一位对应一个总线主机。

    六、数据传输

    • 一笔传输由如下两部分组成:

    • 地址段,一个周期

    数据段,一个或多个周期,可以由 HREADY 发出请求延长一个周期

    下图显示了一笔没有等待状态的简单的传输:

    • HCLK 上升沿 master 驱动地址和控制信号
    • HCLK 下一周期上升沿 slave 采样地址和控制信息
    • 获得地址和控制信息后, slave 发出相应的放映信息, 在第三个时钟上升沿被 master采样,同时 slave 完成数据的读写操作。

              

                                                                           Read transfer

              

                                                                            Write transfer

    • ​这个简单的传输例子显示地址和数据传输发生在不同的周期。事实上,与这笔传输的地址段传输的同时发生的是上一笔传输的数据段传输。 这种地址与数据的交叠是总线流水线的特征,允许高速传输,并为 slave 响应一笔传输留出充裕的时间。
    • 下图显示了带有等待状态的传输。写数据操作 master 必须在扩展的周期内保持总线上的数据稳定,而读数据操作则只需 slave 在传输完成前的一个周期提供有效的数据。扩展数据周期的一个付效应是必须延长相应的下一笔传输的地址周期。

               

                                                                   Read transfer with wait states

               

                                                                     Write transfer with wait state

    • 扩展数据周期必须延长相应的下一笔传输的地址周期。下图显示了三笔不相关的传输。传输 A、 C 为零等待传输,传输 B 加入了一个等待周期,因此相应的传输 C 的地址周期要进行扩展。

               

                                                                              Multiple transfers

    展开全文
  • AHB总线协议(一)

    2021-07-12 19:51:25
    参考:AHB总线协议(一) 简介 AHB(Advanced High Performance Bus)总线规范是AMBA(Advanced Microcontroller Bus Architecture) V2.0总线规范的一部分,AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,...

    参考:AHB总线协议(一)

    1. 简介
      AHB(Advanced High Performance Bus)总线规范是AMBA(Advanced Microcontroller Bus Architecture) V2.0总线规范的一部分,AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus)、ASB (Advanced System Bus)、APB (Advanced Peripheral Bus)。AHB用于高性能、高时钟频率的系统结构,典型的应用如ARM核与系统内部的高速RAM、NAND FLASH、DMA、Bridge的连接。APB用于连接外部设备,对性能要求不高,而考虑低功耗问题。ASB是AHB的一种替代方案。

    1.1 AHB总线的架构
    下面先看几个贯穿全文的术语:

    总线周期(bus cycle): 总线周期是总线时间的基本单位,其实就是总线时钟的频率。对于 AMBA AHB 或者 APB 协议总线周期定义为从一个上升沿到临界的上升沿的变化区间。总线信号时序总是参考总线时钟周期。

    总线传输: AMBA AHB 或者 ASB 总线传输是对数据目标的读写操作,可能会持续一个或者多个总线周期。总线传输在收到从机地址的完成响应后终止。AMBA ASB 总线支持的传输大小包括字节(8 位)、半字(16 位)、字(32 位)。 AMBA AHB 又支持较宽的数据传输,包括 64 位和 128 位的数据传输。 AMBA APB 总线传输是对数据目标的读写操作,总是需要 2个总线周期

    突发(Burst)传输:突发传输定义了一个或多个数据传输,由主线总机发起,在地址空间增加时,传输宽度保持不变。每次传输增加的步长(地址),由传输大小决定(字节,半字,字),APB不支持突发传输。

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

    image

    1.2 AHB基本特性

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

    无需三态门的实现方式
    更宽的数据总线架构(64位或者128位)
    流水线操作
    可支持多个总线主设备(最多16个)

    1. AHB总线的组成
      AHB总线由AHB总线主机(Master)、AHB总线从机(Slave)和Infrastructure构成。Infrastructure由仲裁器、数据多路选择器、地址控制多路选择器、译码器构成。

    AMBA AHB 总线协议设计使用一个中央多路选择器互联方案。该方案中,所有总线主机设备输出地址和控制信号来指示它们想执行的传输,同时仲裁器决定哪一个主机能够将它
    的地址和控制信号连通到所有的从机。当然也需要一个译码器来控制读数据和响应多路信号选择器,多路信号选择器选中来自传输中所包含从机的适当信号。

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

    image

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

    AHB 主机: 总线主机能够通过提供地址和控制信息发起读写操作。任何时候只允许一个总线主机处于有效状态并能使用总线。
    AHB 从机: 总线从机在给定的地址空间范围内响应读写操作。总线从机将成功、失败或者等待数据传输的信号返回给有效的主机。
    AHB 仲裁器: 总线仲裁器确保每次只有一个总线主机被允许发起数据传输。即使仲裁协议已经固定,任何一种仲裁算法,比如最高优先级或者公平访问都能够根据应用要求而得到执行。AHB 必须只包含一个仲裁器,尽管在单总线主机系统中这显得并不重要。
    AHB 译码器: AHB 译码器用来对每次传输进行地址译码并且在传输中包含一个从机选择信号。
    所有 AHB 执行都必须仅要求有一个中央译码器。

    1. 信号描述
      所有 AMBA 信号的命名都用名称的第一个字母来指示信号和哪个总线相关联。信号名称中用一个小写的 n 表示该信号低电平有效,否则信号的名称总是用大写字母来表示。
      测试信号有一个前缀T而与总线类型无关。

    AHB信号前缀:H 表示一个 AHB 信号。例如, HREADY 是用来指示 AHB 部分数据传输完毕的信号。该信号高电平有效。

    本节是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也有许多信号请求支持多主机操作。这些仲裁信号用于点对点连接, 下表中后缀x用来表示信号来自模块x。例如,一个系统中会有许多的信号
    HBUSREQx,比如HBUSREQarm, HBUSREQdma和HBUSREQtic。

    HBUSREQx
    总线请求
    主机
    从总线主机 x 传向总线仲裁器用来表示该主机请求(控
    制 ) 总 线 的信 号 。 系 统中 每 个 总 线主 机 都 有 一个
    HBUSREQx 信号,最多 16 个总线主机。

    HLOCKx
    锁定的传输
    主机
    当该信号为高时表示主机请求锁定对总线的访问并且
    在该信号为低之前其他主机不应该被允许授予总线。

    HGRANTx
    总线授予
    仲裁器
    该信号用来表示总线主机 x 目前是优先级最高的主机。
    当 HREADY 为高时传输结束,地址/控制信号的所有
    权发生改变。所以主机应在 HREADY 和 HGRANTx
    都为高时获得对总线的访问。

    HMASTER[3: 0]
    主机号
    仲裁器
    这些来自仲裁器的信号表示哪个总线主机正在执行传输和被支持分块传输的从机用来确定哪个主机正在尝
    试一次访问。HMASTER 的时序和地址以及控制信号对齐。

    HMASTLOCK
    锁定顺序
    仲裁器
    表示当前主机正在执行一个锁定顺序的传输。该信号
    和 HMASTER 有相同的时序。

    HSPLITx[15: 0]
    分块完成请求
    从机(支持分块)
    从机用这 16 位的分块总线来指示仲裁器总线主机应该被允许重试一个分块传输。
    分块总线上的每一位对应一个总线主机。

    4、 AHB总线操作概括
    在一次 AMBA AHB 传输开始之前总线主机必须被授予访问总线。这个过程开始于总线主机向仲裁器断言一个请求信号。仲裁器指示主机何时能够被授予使用总线。被授权的总线主机通过驱动地址和控制信号来发起一次 AMBA AHB 传输。这些信号提供关于地址、方向和传输宽度的信息,以及表示传输类型是否为一次突发传输的部分。

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

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

    写数据总线用来将数据从主机传输到从机上,而读数据总线用来将数据从从机传输到主机上。
    每次传输包含:

    一个地址和控制周期;

    一个或多个数据周期。

    地址不长期有效所以所有从机必须在这个时段(传输地址时)采样地址。然而,通过HREADY 信号可以延长数据。当该信号为低时导致在传输中插入等待状态同时允许从机有额外的时间提供或者采样数据。
    在传输中从机通过使用响应信号来表示状态,

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

    1. 基本传输
      一笔传输由如下两部分组成:
      地址阶段:一个周期
      数据阶段:一个或多个周期,由HBURST信号决定需要几个有效周期,可以由HREADY发出请求延长一个周期。

    5.1 没有等待状态的single transfer

    第一个周期的上升沿,主机将地址信息和控制信息发送到总线上;
    第二个周期的上升沿,从机采样地址和控制信号,并将HREADY拉高;
    如果是写操作,主机会在第二个周期的上升沿过后传输要写入的数据;如果是读操作,从机会在HREADY信号拉高后将读取的数据写入总线;
    第三个周期的上升沿,
    如果是写操作,主机获取HREADY高信号,表明从机已成功接收数据,操作成功;
    如果是读操作,主机获取HREADY高信号,表明此时的读数据有效并且接收下来,操作成功。
    需要注意,HREADY信号在数据有效期间必须为高,并且延续到第三个周期的上升沿之后,确保主机的正确采样。
    在这里插入图片描述

    5.2 slave插入等待状态的single transfer

    从机可以及时处理主机请求,但也可能存在从机太慢不能立即处理的情况。这时需要让主机稍微等一等,需要从机插入一些等待的状态。如下图所示,HREADY信号在第二和第三周期拉低,意在告诉主机,从机不能立即处理,需要主机等待2个周期。在这里需要注意2点:
    如果是写操作,主机要在等待期间保持写数据不变,直到本次传输完成;
    如果是读操作,从机不需要一开始就给出数据,仅当HREADY拉高后才给出有效数据。

    在这里插入图片描述

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

    在这里插入图片描述

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

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

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

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

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

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

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

    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传输,但是主机也需要给出下一拍的地址和控制信号。
    在这里插入图片描述

    5.5 突发操作
    AMBA AHB 协议定义了四、八和十六拍突发,也有未定长度的突发和信号传输。协议支持增量和回环操作:

    增量突发访问连续地址并且突发中的每次传输地址仅是前一次地址的一个增量;
    对于回环突发,如果传输的起始地址并未和突发(x 拍)中字节总数对齐那么突发传输地址将在达到边界处回环。例如,一个四拍回环突发的字(4 字节)访问将在16 字节边界回环。因此,如果传输的起始地址是 0x34,那么它将包含四个到地址
    0x34、 0x38、 0x3C 和 0x30;
    突发信息通过使用 HBURST[2: 0]并且 8 种可能的类型在中定义如下:

    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 的地址边界。因此重要的是主机不要尝试发起一个将要超过这个边界的定长增量突发。将执行单个传输时使用未指定长度的增量突发理解为长度为一的突发比较合理。
    一个增量突发可以是任何长度,但是(长度)上限由地址不能超过 1KB 边界这个事实限定了。
    注:突发大小表示突发的节拍数量,并不是一次突发传输的实际字节数量。一次突发传输的数据总量可以用节拍数乘以每拍数据的字节数来计算,每拍字节数由 HSIZE[2: 0]指示。所有突发传输必须将地址边界和传输大小对齐。例如,字传输必须对齐到字地址边界(也就是 A[1: 0] = 00),半字传输必须对齐到半字地址边界(也就是 A[0] = 0)。

    当一个突发不允许完成的特定情况下对任一从机设计而言如果突发提前终止那么利用突发信息能够采取正确的动作显得很重要。从机能够通过监控 HTRANS 信号决定一个突发何时提前终止并且确保在突发开始之后每次传输有连续或者忙的标记。如果产生一个非连续或者空闲传输那么这表明一个新的突发已经开始因此前一次突发一定已经终止。
    如果总线主机因为失去对总线的占有而不能完成一次突发那么它必须在下一次获取访问总线时正确地重建突发。例如,如果一个主机仅完成了一个四拍突发的一拍那么它必须用一个未定长度突发来执行剩下的三拍突发。

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

    在这里插入图片描述

    作为一次四拍字突发传输,地址将会在 16 字节边界回环,因此传输到地址 0x3C之后接下来传输的地址是 0x30。 下图表示了(回环突发)和增量突发的唯一不同,既是地址连续通过了 16 字节边界,并不回环,而是递增。

    在这里插入图片描述

    展开全文
  • AHB总线协议整理

    万次阅读 2017-08-11 22:57:48
    这位博注总结的很好啊, http://blog.163.com/qixin_william/blog/static/240217035201491133626819/ ... 拿过来分析下 T1时刻之后,master将第一拍地址和控制信号打入总线,因为是一个
  • 1.1 AHB协议文档,RAM网址: https://developer.arm.com/documentation/ihi0011/a 1.2 硬件仿真,m0中挂AHB agent,读写crm寄存器产生复位和时钟。 软件仿真,c代码产生复位和时钟。 1.3 HBURST[2:0] 000为单一传输...
  • AHB 总线协议(1)

    2020-12-21 16:03:08
    AHB Feature 时序传输Feature: 最简单的是一次无等待的简单传输。在第一个HCLK的时钟周期,Master释放了address(HADDR)和control信号,这里的control信号指的是读或者写。紧接着在第二个时钟边沿到来之前,Master...
  • AHB 总线协议(2)

    2020-12-21 16:04:36
    对于burst传输,通常等待传输结束再转换Bus控制权 HMASTER决定了哪个Master的地址可以选通,可以去控制HADDR,地址选择器
  • AMBA基础知识4:AHB总线协议

    千次阅读 2019-03-02 12:43:37
    本文来自:https://blog.csdn.net/linton1/article/details/79649249 相关:AHB-Lite简介... AHB总线规范详解 来自:中国科学院微电子研究所 韩健 https://wenku.baidu.com/view/dc96a5b8561252d381e...
  • AHB总线协议(二)

    2019-05-23 09:10:00
    下图是8拍回环字突发传输:地址将在 32 字节边界处回环因此地址 0x3C 之后的地址是 0x20。下图是8增量半字突发传输,所以地址每次增加 2 个字节并且突发在递增因此地址...6 、地址译码对于每个总线上的从机来说使用...
  • AHB总线学习PPT

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

    2016-02-28 10:45:10
    AHB总线通讯的设计,包括:AHB总线协议,程序代码,具有参考价值!
  • AMBA AHB协议总线的接口适用于高性能的设计。 主模块:Cortex-M内核,DMA存储器,DMA外设,以太网DMA USB等 连接组件和从模块:内部Flash,内部SRAM,AHB2APB桥,APB外设之间的接口。 大多数挂在总线上的模块...
  • 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零...
  • AMBA总线协议(四)——Multi Layer AHB System (多层AHB总线架构) 1. 介绍: multi-layer AHB 是基于AHB互联架构: 可以开发更多可用总线带宽的多主机系统 可以构建灵活体系架构的复杂多主机系统;消除了在硬件设计...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,892
精华内容 756
关键字:

ahb总线协议