首页 > 其他分享 >AMBA AHB总结

AMBA AHB总结

时间:2022-08-26 21:11:33浏览次数:71  
标签:AHB 总结 主机 总线 从机 突发 传输 地址 AMBA

AMBA AHB(高级高性能总线)介绍

一、AHB简介

AHB是为提出高性能可综合设计的要求而产生的新一代AMBA总线。它是一种支持多总线主机和提供高带宽操作的高性能总线。

AMBA AHB实现了高性能,高时钟频率系统的以下特征要求:

突发传输、分块处理、单周期总线主机移交,单时钟沿操作、非三态执行、更宽的数据总线架构(64位或者128位)

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

AHB主机(master): 总线主机能够通过提供地址和控制信息发起读写操作。任何时候只允许一个总线主机处于有效状态并能使用总线。

AHB从机(slaver): 总线从机在给定的地址范围内响应读写操作。总线从机将成功、失败或者等待数据传输的信号返回给有效的主机。

AHB仲裁器 : 总线仲裁器确保每次只有一个总线主机被允许发起数据传输。即使仲裁协议已经固定,任何一种仲裁算法,比如最高优先级或者公平访问都能根据应用要求而得到执行。

AHB译码器: AHB译码器用起来对每次传输进行地址译码,并且在传输中包含一个从机选择信号。

二、AHB信号名称

所有AMBA信号的命名都用名称的第一个字母来指示信号和哪个总线相关联。信号名称中用一个小写的n表示该信号低电平有效。

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

三、AHB信号列表

名称 来源 描述

HCLK 

总线时钟

时钟源 时钟为所有总线传输提供时基。所有信号时序都和HCLK的上升沿相关

HRESETn

复位

复位控制器 总线复位信号低有效并用来复位系统和总线。这是唯一的低有效信号。

HADDR[31:0]

地址总线

主机 32位系统地址总线

HTRANS[1:0]

传输类型

主机 表示当前传输的类型,可以是不连续,连续,空闲和忙。

HWRITE

传输方向

主机 当该信号为高时表示一个写写传输,为低时表示一个读传输。

HASIZE[2:0]

传输大小

主机 表示传输的大小,典型情况时一个字节(8bits)、半个字(16bits)或者是字(32bits)。协议允许最大的传输大小可以达到1024bits。
HBURST[2:0] 主机 表示传输是否组成了突发的一部分。支持4个、8个或者16个节拍的突发传输并且突发传输可以是增量或者是回环。

HWDATA[31:0]

写数据总线

主机 写数据总线用来在写操作期间从主机到总线从机传输数据。建议最小的数据总线宽度为32位。然而,在要求高带宽运行时扩展(数据总线)还是很容易的。

HREADY

传输完成

从机 当HREADY为高时表示总线上的传输已经完成。在扩展传输时该信号可能会被拉低。注意,总线上的从机要求HREADY作为输入输出信号。

HRESP[1:0]

传输响应

从机 传输响应给传输状态提供了附加信息。提供四种不同的响应:OKEY、ERROR、RETRY和SPLIT。
  AMBA AHB也有许多信号请求支持多主机操作。许多这些仲裁信号用于点对点连接,其中后缀x用来表示信号来自模块x。例如HBUSREQx,比如 HBUSREQarm, HBUSREQdma  

HBUSREQx

总线请求

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

HLOCKx

锁定的传输

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

HGRANTx

总线授予

仲裁器

该信号用来表示总线主机x目前是优先级最高的主机。当HREADY为高时传输结束,地址/控制信号的所有权发生改变。

所以主机应在HREADY和HGRANTx都为高时获得对总线的访问。

HMASTER[3:0]

主机号

仲裁器

这些来自仲裁器的信号表示哪个总线主机正在执行传输和被支持分块传输的从机用来确定哪个主机正在尝试一次访问。

HMASTER 的时序和地址以及控制信号对齐。

HMASTLOCK

锁定顺序

仲裁器 表示当前主机正在执行一个锁定顺序的传输。该信号和HMASTER有相同的时序。
HSPLITx[15:0] 从机(支持分块) 从机用这16位的分块总线来指示仲裁器总线主机应该被允许重试一个分块传输。分块总线上的每一位对应一个总线主机。

四、AMBA AHB 操作概括

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

增量突发:在地址边界出不回环

回环突发,在特定的地址边界上回环。

写数据总线用来将数据从主机传输到从机上,而读数据总线用来将数据从从机传输到主机上。

每次传输包含:一个地址和控制周期;一个或多个数据周期。

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

在传输中从机通过使用响应信号来表示数据传输的状态,HRESP[ 1 : 0 ]:

  OKAY:OKAY响应用来表示传输进展正常并且当HREADY变高时表示传输成功完成。

  ERROR:ERROR响应表示发生了一个传输错误并且传输失败。

  RETRY 和 SPLIT:这两个传输响应都表示传输不能立刻完成,但总线主机应该继续尝试传输。

在常规操作中,主机被允许在仲裁器授予另一个主机访问总线之前完成一个特定突发的所有传输。然而,为了避免过多的仲裁延时,可能允许仲裁器打断一个突发,并且这种情况下主机必须(申请)重新仲裁总线以完成剩下的突发传输。

基本传输

AHB传输包含两个截然不同的部分:

  地址相位:只持续单个周期。

  数据相位:可能需要多个周期,这通过使用HREADY信号实现。

下图表示了最简单的传输,没有等待状态。

在这个没有等待状态的简单传输中:

1. 主机在HCLK的上升沿之后将地址和控制信号驱动到总线上;

2. 然后在时钟的下一个上升沿从机采样地址和控制信息;

3. 在从机采样了地址和控制信号后能够开始驱动适当的响应并且该响应被总线主机在第三个时钟的上升沿采样

这个简单的例子演示了在不同的时钟阶段传输的地址和数据相位是如何产生的。事实上,任何传输的地址相位在前一次传输的数据相位期间出现。这种地址和数据的交叠是总线传输通道的基本性质同时允许高性能的操作。同时仍然给从机提供足够的时间来产生传输响应。

从机也可能插入等待周期到任意传输中,如下图所示,这样扩展了传输完成允许的附加时间。

注意:对写操作而言总线主机必须保持数据在整个扩展周期中稳定。

   对读传输从机没必要提供有效数据直到传输将要结束时。

当传输以这种方式扩展时,随后的传输将会有地址相位扩展的副作用。如下图所示:

表示了三次传输到无关的地址A、B、C。

1. 到地址A和C的传输都是零等待状态。

2. 到地址B的传输是一个等待状态。

3. 传输到地址B的扩展数据相位对传输到地址C的扩展地址相位有影响。

 

传输类型

每个传输都可以被分类为四个不同的类型之一,如HTRANS[1:0] 信号所表示的状态,详见下表

HTRANS[1:0] 类型 描述
00

空闲

(IDLE)

表示没有数据传输的要求。空闲传输类型在总线主机被授予总线,但并不希望执行一个数据传输时使用。从机必须总是提供一个零等待状态OKAY来响应空闲传输并且该传输应该被从机忽略。
01

(BUSY)

忙传输类型允许总线主机在突发传输中间插入空闲周期。这种传输类型表示总线主机正在连续执行一个突发传输,但是下一次传输不能立即发生。当一个主机使用忙传输类型时,地址和控制信号必须反映突发中的下一次传输。

这种传输应该被从机忽略,从机必须总是提供一个零等待状态OKAY响应,和从机响应空闲传输一样的方式。

10

非连续

(NONSEQ)

表示一次突发的第一次传输或者一个单一传输。地址和控制信号和前一次传输无关。

总线上的单一传输是被视为一个数据量的突发,因此传输类型是非连续的

11

连续

(SEQ)

突发中剩下的传输是连续传输并且地址是和前一次传输有关的。控制信息和前一次传输一样。地址等于前一次传输的地址加上传输大小(字节)。在回环突发的情况下传输地址在地址边界处回环,回环值等于传输大小乘以传输的次数(4、8或者16其中之一)。(译者注:这里回环指从传输的结束地址边界跳回到传输的起始地址边界。

 

下图表示一组用到了不同传输类型:

1. 第一个传输是一次突发的开始,所以传输类型为非连续。

2. 主机不能立刻执行突发的第二次传输,所以主机使用了忙传输来延时下一次传输的开始。在这个例子中,主机在它准备还突发的下一次传输之前仅请求了一个忙周期,下一次传输的完成没有等状态。

3. 主机立刻执行突发的第三次传输,但是这时,从机不能完成传输,并用HREADY来插入一个等待状态。

4. 突发的最后一个传输以无等待状态完成。

 

突发操作(HBURST)

AMBA  AHB协议定义了四,八,和 十六 拍突发,也有未定义的突发和信号传输。协议对增量和回环都支持。

  增量突发访问连续地址,并且突发中的每次传输地址仅是前一次地址的一个增量。

  对于回环突发,如果传输的起始地址并未和突发(x拍)中字节总数对齐,那么突发传输地址将在达到边界处回环。例如,一个四拍回环突发的字(4字节)访问将在16字节边界回环。因此,如果传输的起始地址是0x34,那么它将包含四个到地址0x34、0x38、0x3C、0x40。

突发信号编码表:

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拍增量突发

 

标签:AHB,总结,主机,总线,从机,突发,传输,地址,AMBA
From: https://www.cnblogs.com/fuqiangblog/p/16627870.html

相关文章

  • 【pytest】Hook钩子函数完整API总结
    pytest的钩子函数有很多,通过钩子函数的学习可以了解到pytest在执行用例的每个阶段做什么事情,也方便后续对pytest二次开发学习。详细文档可以查看pytest官方文档https://d......
  • 2022百度世界大会精华总结(AI应用向)
    完整内容见微信公众号文章:https://mp.weixin.qq.com/s/0d4y9VzSVIcqemqp5O7nzA 官方主页:https://baiduworld.baidu.com/m/world/2022“感受科技,感知未来!7月21日,央视新......
  • 2022/8/26 总结
    A.括号序列一看,我趣,字符串,直接抱灵吧,让我死得体面一点……再一看数据范围,我趣,\(\mathtt{O(n)}\),这怎么写得出来啊?Solution虽然是\(\mathtt{O(7n)}\),但卡卡常......
  • ScheduledThreadPoolExecutor详解与总结
    ScheduledThreadPoolExecutor详解简介继承自ThreadPooExecutor,为任务提供延迟或周期执行.使用专门的ScheduledFutureTask来执行周期任务,也可以接收不需要时间调度的任......
  • 链式编程的总结以及在生产环境的应用
    链式编程是将多个操作通过点号"."链接在一起成为一个整体,从而更加的简洁方便。链式编程的原理就是每个操作完成后都会返回一个this对象,也就是返回对象本身!在生产实际环境的......
  • 模板事务的几种写法和总结
    模板事务的好处就不多说了,这里总结几种模板事务的几种写法,直接上代码。transactionTemplate.execute(status->{//2System.out.println("......
  • 《八股文》MySQL核心问题总结(一)
      作为SQLBoy,基础部分不会有人不会吧?面试也不怎么问,基础掌握不错的小伙伴可以跳过这一部分。当然,可能会现场写一些SQL语句,SQ语句可以通过牛客、LeetCode、LintCode之......
  • 语法总结
    语法总结1.头文件#include<bits/stdc++.h>//万能头#include<cstdio>//标准输入输出库#include<cmath>//数学库#include<iostream>//输入输出流#include<algorithm>//......
  • CDQ分治总结
    分治是什么分治(DivideandConquer),是一种把大规模数据分为更小规模数据单独处理然后合并的思想。如果连分治都不会的话建议看看LuoguP1177:快速排序,然后尝试用快排......
  • java中的字符流知识点总结
    java中字符流字符流:对文本的读取,速度比字节流快常见的字符流:Reader和WriterReader是InputStreamReader的父类,InputStreamReader是FileReader的父类FileReader的相......