-
2021-07-12 19:51:25
参考:AHB总线协议(一)
- 简介
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系统总线的结构示意图:1.2 AHB基本特性
分块处理
单周期总线主机移交
单时钟沿操作无需三态门的实现方式
更宽的数据总线架构(64位或者128位)
流水线操作
可支持多个总线主设备(最多16个)- AHB总线的组成
AHB总线由AHB总线主机(Master)、AHB总线从机(Slave)和Infrastructure构成。Infrastructure由仲裁器、数据多路选择器、地址控制多路选择器、译码器构成。
AMBA AHB 总线协议设计使用一个中央多路选择器互联方案。该方案中,所有总线主机设备输出地址和控制信号来指示它们想执行的传输,同时仲裁器决定哪一个主机能够将它
的地址和控制信号连通到所有的从机。当然也需要一个译码器来控制读数据和响应多路信号选择器,多路信号选择器选中来自传输中所包含从机的适当信号。下图实现包含三个主机和四个从机的AMBA AHB设计的结构要求。
典型的 AMBA AHB 系统设计包含以下的部分
AHB 主机: 总线主机能够通过提供地址和控制信息发起读写操作。任何时候只允许一个总线主机处于有效状态并能使用总线。
AHB 从机: 总线从机在给定的地址空间范围内响应读写操作。总线从机将成功、失败或者等待数据传输的信号返回给有效的主机。
AHB 仲裁器: 总线仲裁器确保每次只有一个总线主机被允许发起数据传输。即使仲裁协议已经固定,任何一种仲裁算法,比如最高优先级或者公平访问都能够根据应用要求而得到执行。AHB 必须只包含一个仲裁器,尽管在单总线主机系统中这显得并不重要。
AHB 译码器: AHB 译码器用来对每次传输进行地址译码并且在传输中包含一个从机选择信号。
所有 AHB 执行都必须仅要求有一个中央译码器。- 信号描述
所有 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,1024bitsHBRUST[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 两个传输响应都表示传输不能立刻完成,但是总线主机应该继续尝试传输。
在常规操作中主机被允许在仲裁器授予另一个主机访问总线之前完成一个特定突发的所有传输。然而,为了避免过多的仲裁延时可能允许仲裁器打断一个突发并且这种情况下主机必须(申请)重新仲裁总线以完成剩下的突发传输。- 基本传输
一笔传输由如下两部分组成:
地址阶段:一个周期
数据阶段:一个或多个周期,由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总线协议简单介绍
2020-05-28 18:01:59AHB总线协议介绍,AHB总线规范是AMBA总线规范的一部分,AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus)、ASB (Advanced System Bus)、APB (Advanced ... -
AHB总线协议中文笔记详解版.pdf
2021-04-04 14:32:12AHB总线协议中文笔记详解版 -
AHB总线协议
2019-11-06 10:52:44AHB(Advanced High Performance Bus)总线规范是AMBA(Advanced Microcontroller Bus Architecture) V2.0总线规范的一部分,AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-...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系统总线的结构示意图:1.2 AHB基本特性
分块处理
单周期总线主机移交
单时钟沿操作无需三态门的实现方式
更宽的数据总线架构(64位或者128位)
流水线操作
可支持多个总线主设备(最多16个)2. AHB总线的组成
AHB总线由AHB总线主机(Master)、AHB总线从机(Slave)和Infrastructure构成。Infrastructure由仲裁器、数据多路选择器、地址控制多路选择器、译码器构成。
AMBA AHB 总线协议设计使用一个中央多路选择器互联方案。该方案中,所有总线主机设备输出地址和控制信号来指示它们想执行的传输,同时仲裁器决定哪一个主机能够将它
的地址和控制信号连通到所有的从机。当然也需要一个译码器来控制读数据和响应多路信号选择器,多路信号选择器选中来自传输中所包含从机的适当信号。下图实现包含三个主机和四个从机的AMBA AHB设计的结构要求。
典型的 AMBA AHB 系统设计包含以下的部分
AHB 主机: 总线主机能够通过提供地址和控制信息发起读写操作。任何时候只允许一个总线主机处于有效状态并能使用总线。
AHB 从机: 总线从机在给定的地址空间范围内响应读写操作。总线从机将成功、失败或者等待数据传输的信号返回给有效的主机。
AHB 仲裁器: 总线仲裁器确保每次只有一个总线主机被允许发起数据传输。即使仲裁协议已经固定,任何一种仲裁算法,比如最高优先级或者公平访问都能够根据应用要求而得到执行。AHB 必须只包含一个仲裁器,尽管在单总线主机系统中这显得并不重要。
AHB 译码器: AHB 译码器用来对每次传输进行地址译码并且在传输中包含一个从机选择信号。
所有 AHB 执行都必须仅要求有一个中央译码器。3. 信号描述
所有 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 两个传输响应都表示传输不能立刻完成,但是总线主机应该继续尝试传输。
在常规操作中主机被允许在仲裁器授予另一个主机访问总线之前完成一个特定突发的所有传输。然而,为了避免过多的仲裁延时可能允许仲裁器打断一个突发并且这种情况下主机必须(申请)重新仲裁总线以完成剩下的突发传输。5. 基本传输
一笔传输由如下两部分组成:
地址阶段:一个周期
数据阶段:一个或多个周期,由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 字节边界,并不回环,而是递增。
理解slave中的hready和hreadyout:
在以前所做的项目中用到的AHB总线中,发现作为Slave设备有2个hready信号线。一直没搞清楚这2个信号线详细作用,最近在请教高人之后终于弄明白了2个hready信号线的作用。
一般作为AHB总线的Slave设备都有2根hready信号,一个为input类型(hready_in),另一个为output类型(hready_out)。在AHB总线协议中,如果Master设备发起读写操作的时候,Slave设备不能及时响应的话,由Slave设备把hready_out信号拉低来拖延DataPhaze周期。
但是在Pipeline操作的时候,本次操作data phaze是下一次操作的address phaze,所以作为Slave设备在响应Master设备的时候,必须先判断一下Master设备对上一次其它Slave设备的操作是否已经完成。如果完成,则响应主设备的操作;如果没有完成,则等待完成,然后才响应操作。hready_in就是Slave设备用来判断Master设备是否对其它Slave设备的操作已经完成的信号。
-
AMBA AHB总线协议详细说明(AHB5协议)
2022-02-14 13:53:07一、 AHB总线介绍 AHB总线用于性能要求较高的系统互连,比如内部memory、高带宽的外设、GMAC、eMMC/SD等,其仍然为分时独占式总线,也就是说一个时间点总线只会完成一个传输事件。下图是一个典型的AHB总线互连例子...一、 AHB总线介绍
AHB总线用于性能要求较高的系统互连,比如内部memory、高带宽的外设、GMAC、eMMC/SD等,其仍然为分时独占式总线,也就是说一个时间点总线只会完成一个传输事件。下图是一个典型的AHB总线互连例子,图中Manager为总线的Master设备,Subordinate为总线的Slave设备。AHB总线互连逻辑包括一个地址译码器和一个多路选择器。地址译码器用于将Master发送的地址转换成合适的sel选择信号;多路选择器将各个Slave的输出数据合理的选择给Master。图中只画出了一个Master设备,实际上AHB总线支持多个Master对多个Slave结构。
目前最新AHB总线版本为AHB5和AHB-Lite,对于只有一个Master的总线,结构可以简化很多,因此可单独使用AHB-Lite协议。
二、AHB总线信号
按照上述概念可将AHB总线信号分类,如下表所示:
信号
方向
位宽
信号说明
全局信号
HCLK
时钟→总线
1
时钟,上升沿数据有效。
HRESETn
复位→总线
1
复位,低有效,该信号可直接和系统总线复位连接。
Master端信号
HADDR
Master→总线
max=64
AHB总线地址,最大64bits。
HBURST
Master→总线
max=3
用于规定Burst传输次数和地址递增方式。
HMASTLOCK
Master→总线
1
锁定Master传输,锁定期间传输无法被打断。
HPROT
Master→总线
0/4/7
保护控制信号,用于指示本次传输类型。
HSIZE
Master→总线
3
用于指示每次传输的数据大小。
HNONSEC
Master→总线
1
指示当前传输是否安全。
HEXCL
Master→总线
1
用于指示该传输是否为独占传输(Exclusive Access)。
HMASTER
Master→总线
max=8
用于指示当前是哪个Master发起了传输,每个Master有一个唯一的HMASTER ID。
HTRANS
Master→总线
2
用于指示传输类型,有四种类型:IDLE、BUSY、NONSEQUENTIAL、SEQUENTIAL,分别是空闲、忙、非连续传输、连续传输。
HWDATA
Master→总线
max=1024
写数据,最大位宽支持1024bits,建议在32bits - 256bits之间。
HWSTRB
Master→总线
max=128
写数据字节使能,位宽为HWDATA的位宽除以8。
HWRITE
Master→总线
1
读写指示信号,“1”为写,“0”为读。
Slave端信号
HRDATA
Slave→总线
max=1024
读数据,最大位宽支持1024bits,建议在32bits - 256bits之间。
HREADYOUT
Slave→总线
1
Slave端设备准备就绪信号,用法和APB的PREADY类似。
HRESP
Slave→总线
1
Slave端设备的应答信号,表明当前传输是否成功,“1”错误。
HEXOKAY
Slave→总线
1
表示独占传输(Exclusive Transfer)是否成功。
译码器信号
HSELx
总线→Slave
1
Slave设备选择信号,用法和APB的PSEL类似。当Slave被选中且为非IDLE传输时,HSELx必须和地址、控制信号同一拍有效。
多路选择器信号
HREADY
总线→Slave
总线→Master
1
该信号由总线内部产生,用于通知Master和Slave上次传输已经结束,总线已经准备就绪开始下一次传输。
- HTRANS[1:0]
HTRANS[1:0] 类型 说明 00 IDLE IDLE表示没有数据传输,Master使用IDLE来表示非数据传输,一般用IDLE传输终止一次locked传输。Slave必须立即响应Master发送的IDLE传输,并将OKAY应答送到HRESP上,传输内容Slave必须忽略。 01 BUSY BUSY传输允许在Burst传输的中间插入空闲周期,以表示Master会继续burst但下一次传输不能立即发送。当Master使用BUSY传输时,下一次传输的地址和控制信号必须准备好。只有未定义长度的Burst可以在Burst结束的时候插入BUSY传输标志。Slave必须立即响应BUSY传输,并将传输内容忽略。 10 NONSEQ NONSEQ用于指示一次Single传输,或一次burst传输的开始。地址和控制信号和前一次传输不同,会产生变化。 11 SEQ Burst传输的剩余部分被标记为SEQ,表示连续传输,地址和控制信号和前一次保持一致。 - HSIZE[2:0]
HSIZE[2:0] 类型 说明 000 Byte 8bits,传输一个字节。 001 Halfword 16bits,传输一个半字。 010 Word 32bits,传输一个字。 011 DoubleWord 64bits,传输两个字。 100 4 Words 128bits,传输四个字。 101 8 Words 256bits,传输八个字。 110 16 Words 512bits,传输十六个字。 111 32 Words 1024bits,传输三十二个字。 HSIZE用于表示单次数据传输的大小,其数值小于等于数据宽度,比如数据宽度是32bits,那么HSIZE只能是000/001/010三个数值。在Burst传输过程中,该数值必须保持不变。
- HBURST[2:0]
HBURST[2:0] 类型 说明 000 SINGLE 单次传输 001 INCR 未定义长度的增量Burst传输 010 WRAP4 4拍回环Burst传输 011 INCR4 4拍增量Burst传输 100 WRAP8 8拍回环Burst传输 101 INCR8 8拍增量Burst传输 110 WRAP16 16拍回环Burst传输 111 INCR16 16拍增量Burst传输 由表中可以看出,传输可分成SINGLE、INCR和WRAP类型,每种又按照每次Burst节拍数分成不同情况。一拍为Burst传输的最小传输单位,具体理解在后续介绍。INCR burst的每次传输的地址是连续的,且每次传输的地址数值相较于上一次是递增的。WRAP burst在地址增加到地址边界时,地址会返回到最开始地址。地址边界根据拍数和传输大小计算,HBURST和HSIZE确定总传输数据量大小。例如,一个WRAP4传输4bytes数据,如果开始地址为0x34,那么4拍的数据地址为0x34、0x38、0x3C和0x30。
单次传输可以使用SINGLE标识,或使用未定义大小的INCR标识,一般使用SINGLE标识。
- HPROT[3:0](AHB5以下版本,用于数据保护)
HPORT[3:0] 说明 [0] 0: Opcode fetch
1: Data access
[1] 0: User access
1: Privileged access
[2] 0: Non-bufferable
1: Bufferable
[3] 0: Non-cacheable
1: Cacheable
- HPROT[6:0]( AHB5扩展内容,用于Memory,bit3不同于AHB5以下版本)
HPORT[6:0] 名称 说明 [0] Data/Inst 0: Opcode fetch
1: Data access
[1] Privileged 0: unprivileged access
1: Privileged access
[2] Bufferable 如果[4:3]均无效的话,那么该bit位生效
0: Non-bufferable,写响应必须由最终的目的地址提供,而不是中间的buffer。
1: Bufferable,写响应可由中间经过的节点提供,但需要及时传递写传输到目的端。
[3] Modifiable 0: 传输的数据不可纠正修改;
1: 传输的数据等可纠正修改;
[4] Lookup 0: 传输不需要查找cache,且必须传递到目的端;
1: 传输必须查找cache;
[5] Allocate 0: 传输不会分配到cache;
1: 传输分配到cache;
[6] Shareable 0: 传输不可共享,访问的memory区域不能被其他Master访问,访问的应答不会确保被其他Master可见。Device类型的memory,该bit为0;
1: 传输可共享,访问的memory区域可以被其他Master访问。
对于Memory类型,可通过HPROT[6:2]判断memory类型,具体如下表所示:
HPROT[6] HPROT[5] HPROT[4] HPROT[3] HPROT[2] Memory类型 0 0 0 0 0 Device-nE 0 0 0 0 1 Device-E 0 0 0 1 0 Normal Non-cacheable,non-shareable 0 0/1 1 1 0 Write-through, Non-shareable 0 0/1 1 1 1 Write-back, Non-shareable 1 0 0 1 0 Normal Non-cacheable, Sahreable 1 0/1 1 1 0 Write-through, Shareable 1 0/1 1 1 1 Write-back, Shareable - 用户信号
信号 方向 说明 HAUSER Master→总线 用户自定义,推荐宽度0-128bits HWUSER Master→总线 用户自定义,推荐宽度0-DATA_WIDTH/2 HRUSER Slave→总线 用户自定义,推荐宽度0-DATA_WIDTH/2 HBUSER Slave→总线 用户自定义,推荐宽度0-16bits 该组信号为用户自定义信号,具体传输内容和含义需要用户自己决定,一般不建议使用该组信号。AHB协议不定义这些信号的功能,因此,在多个拥有用户自定义信号的系统中,可能会带来信号不兼容的问题。
三、AHB总线传输
AHB传输分成两个阶段:地址阶段和数据阶段。地址阶段HWRITE、HADDR等控制信号同一拍有效,随后HREADY拉高表示当前地址已生效。数据阶段HWDATA、HRDATA等和数据相关的信号有效,表示数据读写的开始,数据阶段可能会跨多个HCLK时钟周期,根据传输数据量大小而定。
下图是AHB总线的单次读写传输,包括立即读写和等待读写传输,由于和APB总线类似,具体说明可参考APB总线。
注意地址阶段和数据阶段是可以pipeline的,如果有多次连续传输,但地址不同,可以采用如下图所示的时序完成。在A的数据阶段,可以启动下一次传输的B的地址阶段。
3.1 Burst传输
上图是Burst传输举例,各个时钟周期的动作如下:
T1时刻发起4拍读Burst传输,地址等控制信号送入总线;
- T2时刻Master未能主板好第2拍burst,插入BUSY标志delay burst传输;
- T3时刻Master发出第2拍burst,SEQ标志跟在BUSY后面,Slave忽略T3的数据;
- T4时刻Master发出第3拍burst,过程和T3相同;
- T5时刻Master发出最后一拍burst,过程和T3相同,Slave端HREADY拉低,T4时刻的读数据返回delay;
- T6时刻Slave端的HREADY拉高有效,HRDATA返回T4时刻请求;
- T7时刻Slave端的HREADY拉高有效,HRDATA返回T5时刻请求;
下图是WRAP4 Burst传输的一个例子,注意地址在0x3c后回环到0x30。
下图是INCR4 Burst传输的一个例子,地址一直增加到0x34。
下图是WRAP8 Burst传输的一个例子,注意在0x3C之后地址回环到0x20。
下图是INCR8 Burst传输,地址一直增加到0x42。
下图是INCR Burst传输,包含两次Burst传输,一次2拍,一次3拍。
3.2 Lock传输
Lock传输由Master通过HMASTLOCK信号发送给总线,用于表明当前的传输不可分割和打断,必须在此次传输完成后才能启动另一次传输。一个典型的Lock传输例子是用来维护处理器发出的SWP指令,保证读写操作之间有个完整的操作,如下图所示:
Lock传输完成后,建议Master发送一次IDLE传输,允许在Lock传输的开始、中间和结束时插入IDLE传输。目前大部分的Slave并不能处理HMASTER信号,如果Slave可以被多个Master访问,则必须要求Slave处理HMASTER信号。例如,一个多端口的memory控制器(MPMC),则必须正确识别Master发送来的HMASTER请求。
不推荐HMASTER和IDLE同时有效,但这样做也并不会产生错误。同样不推荐Master Lock一串IDLE传输,或在Lock传输结束后不插入IDLE,这会影响总线仲裁。
Lock传输中的每一拍,均要求保持相同的Slave地址,但AHB总线不会检查是否保持一致,需要添加额外的验证模块来确保上述要求。
3.3 Waited传输
Slave使用HREADYOUT信号插入wait状态,要求更多的准备时间来处理数据。在等待期间,Master必须严格控制传输状态的改变,包括传输类型和地址。
3.3.1 传输类型改变
当Slave在wait状态时,传输类型只有在以下几种情况下可以改变,其他情况必须保持不变,这几种情况为:IDLE、固定长度Burst时的BUSY、未定义长度Burst是的BUSY。
wait状态下的IDLE传输,Master允许IDLE传输到NONSEQ传输类型改变,当HTRANS改变成NONSEQ,Master必须保持NONSEQ不变,直到HREADY拉高。
上图是Master端的IDLE传输时序,各个时钟周期的动作如下:
- T1时刻,Master发起SINGLE Burst,访问地址A;
- T2时刻,Slave HREADY拉低表示尚未就绪,同时Master插入IDLE传输,地址为Y;
- T3时刻,Master继续插入IDLE传输,地址为Z;
- T4时刻,Master改变传输类型为NONSEQ,发起INCR4 burst传输,地址为B;
- T5时刻,HREADY仍为低,Master保持HTRANS不变;
- T6时刻,HREADY拉高,SINGLE Burst到地址A的传输结束,数据A返回Master,同时发送地址B的第一拍;
- T7时刻,INCR4的第二拍发送,第一拍数据B返回。
wait状态下的固定长度Burst传输,Master允许由BUSY到SEQ传输类型改变,当HTRANS传输类型改变为SEQ时,Master必须保持HTRANS不变,直到HREADY拉高。
上图是Master端的BUSY到SEQ切换传输时序,各个时钟周期的动作如下:
- T1时刻,Master发起下一拍INCR4 burst,访问地址0x24;
- T2、T3时刻,Slave HREADY拉低表示尚未就绪,Master插入一次BUSY传输;
- T4时刻,Master将传输类型切换为SEQ,并发起下一拍Burst,地址为0x28;
- T5时刻,由于HREADY依旧拉低,Master必须保持SEQ传输不变;
- T6时刻,HREADY拉高,0x24的请求数据返回;
- T7时刻,Master发送下一拍Burst,同时0x28的请求数据返回。
wait状态下的未定义长度Burst传输,Master允许在HREADY为低时,由BUSY状态到任一状态改变。如果BUSY后面切换到SEQ,则表示Burst继续,如果后面切换到IDLE或NONSEQ,则表示Burst终止。
上图是Master端的BUSY到NONSEQ传输时序,各个时钟周期的动作如下:
- T1时刻,Master发起下一拍INCR burst,访问地址0x64;
- T2、T3时刻,Slave HREADY拉低表示尚未就绪,Master插入BUSY传输;
- T4时刻,Master将传输类型切换为NONSEQ,并发起一次新的INCR4 Burst,地址为0x10;
- T5时刻,由于HREADY依旧拉低,Master必须保持NONSEQ传输不变;
- T6时刻,HREADY拉高,0x64的请求数据返回,INCR传输结束;
- T7时刻,0x10请求数据返回,INCR4第二拍请求发送。
3.3.2 地址改变
当Slave在wait状态时,Master只能在下面两种情况下改变地址,其他情况必须保持不变,这两种情况为:IDLE传输、错误应答。IDLE传输可参考传输类型改变时的例子,地址从A到Y到Z改变,参考下图。这里重点说下错误应答后的地址变化,如果Slave产出的ERROR应答,那么Master允许改变地址。
上图是一个wait状态下的错误应答时序,各个时钟周期的动作如下:
- T1时刻,Master发起下一拍INCR burst,访问地址0x24;
- T2、T3时刻,Slave HREADY拉低表示尚未就绪,但HRESP应答为OKAY,Master发起下一拍INCR4 burst,访问地址为0x28;
- T4时刻,Slave发送ERROR错误应答,表示0x24请求出现错误;
- T5时刻,Master接收ERROR应答,并将INCR4终止,切换到IDLE传输,Slave HEADY拉高有效,HRESP应答ERROR,表示0x28请求出现错误;
- T6时刻,Slave HRESP应答OKAY,表示IDLE传输OKAY。
四、EBT(Early Burst Termination)
Burst传输的中间可以插入BUSY传输,表示Master需要更多的时间准备下一次burst传输。对于INCR传输,Master可以在插入BUSY传输后,决定是否继续Burst传输,还是终止此次Burst传输。在这种情况下,可以接收Master发送一个NONSEQ或IDLE传输来有效的终止未定义长度的Burst传输。对于固定长度的Burst传输,不允许插入BUSY传输后立即终止Burst,必须是SEQ传输来终止Burst。
但是,在一些特殊情况下,Burst也会被终止,这些特殊情况为:Slave错误应答和多层AHB互连终止。这种非正常Burst终止,称为EBT。
4.1 Slave错误应答
如果Slave发出ERROR应答,那么Master可以取消剩下的burst传输。然而,协议未规定必须停止发送,Master也可以把剩下的数据发送完。如果Master取消了剩下的数据发送,那么Master必须在两个周期的ERROR应答中,将HTRANS改为IDLE状态。
如果Master没有完成剩下的数据发送,那么不要求Master下次访问Slave时必须重新发送之前的Burst数据。例如,如果Master只完成了8拍中的3拍数据,那么不需要下次访问同样slave时,再将之前的5拍数据重新发送。
4.2 多层AHB互连终止
Burst终止对于Master而言要求较为宽松,但是对于Slave而言,需要处理Burst终止带来的传输问题。当一个多层AHB互连的总线被用在拥有多个Master的系统中时,多层互连总线可以终止一次Burst,这样其他Master可以访问对应的Slave设备。Slave设备要求正确地处理上述情况。
五、AHB总线仲裁策略
AHB主要有三种仲裁策略:固定优先级/轮询、时间片、权值令牌。仲裁主要发生在有多个Master同时抢占总线时,选择合适的仲裁策略,可以将总线性能调优,有利于SoC总体性能的提升。
参考Synopsys的AHB文档,学习总线仲裁策略和方法。
-
AMBA总线—AHB总线协议详解
2021-07-01 21:52:52AHB总线的强大之处在于它可以将微控制器CPU、高带宽的片上RAM、高带宽的外部存储器接口、DMA总线master、各种拥有AHB接口的控制器等连接起来构成一个独立的完成SOC系统,不仅如此,还可以通过AHB-APB桥来连接APB总线...一、典型AMBA系统
AHB总线的强大之处在于它可以将微控制器CPU、高带宽的片上RAM、高带宽的外部存储器接口、DMA总线master、各种拥有AHB接口的控制器等连接起来构成一个独立的完成SOC系统,不仅如此,还可以通过AHB-APB桥来连接APB总线系统。
AHB可以成为一个完成的SOC芯片的骨架
二、AHB总线简介
1、AHB总线组成
完成的AHB总线由四个部分构成:
- AHB主设备Master:发起一次读/写操作,某时刻只允许一个主设备使用总线
- AHB从设备Slave:响应一次读/写操作,通过地址映射来选择使用那个从设备
- AHB仲裁器Arbiter:允许某一个主设备控制总线
- AHB译码器Decoder:通过地址译码来决定选择哪一个从设备
2、AHB总线互连
总线可分为三组:- 写数据总线(HWDATA)
- 读数据总线(HRDATA)
- 地址控制总线(HADDR)
3、AHB操作概述
有需要占用总线的Master向Arbiter发出请求,Arbiter授权给指定的Master。任一时间周期只有一个Master可以接入总线,对其指定的Slave进行读写操作。
获得授权的总线开始AHB传输,首先发出地址和控制信号,提供地址信息、传输方向、带宽和brust类型。总线统一规划Slave的地址,译码器根据地址和控制信号确定那个Slave与Master进行数据通信。数据传输通过数据总线完成。为避免出现三态总线,AHB将读写总线分开,写数据总线用于从Master到Slave的数据传输,读数据总线用于从Slave到Master的数据传输。每笔传输包括一个地址和控制周期,一个或多个数据周期。地址和控制周期不能被拓展,因此Slave必须在一个周期内采样地址信号。数据周期可以通过HREADY信号拓展,但HREADY为低时给传输加入一个等待状态以使Slave获得额外的时间来提供或采集数据,另外Slave通过响应信号HRESP反映传输状态。
AHB支持批量式数据传输,可以自动递增地址。递增地址方式为:持续递增与回绕传送
一般情况下Master完成完整的brust传输,Arbiter才会授权给其他Master接入总线,然而为避免过大的判决延迟,Arbiter也可能打断burst传输。这种情况下Master必须再次接入总线以进行中断的brust剩余部分的传输。4、AHB基本传输阶段
AHB的传送模式包含两个阶段。第一个阶段为地址传递,第二个阶段为数据传递
- 地址期间:一个周期
- 数据期间:一个周期(以HREADY信号控制周期数目)
三、AHB总线传输
1、AHB信号描述
信号名 含义 源 I O 描述 HCLK 总线时钟 clock source 各module 总线时钟,上升沿采样 HRESETn 复位 reset controller 各module 总线复位,低电平有效 HADDR[31:0] 地址总线 Master decoder;
mux to slave;
arbiter32位系统地址总线 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;
arbiterSlave发给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传输,每一位对应一个主设备 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]信号。一般来讲该信号很少用到。
四、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传输使用。五、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…译码器接口框图
-
基于AHB总线协议的DMA控制器设计_卞学愚.caj
2020-07-16 13:49:32基于AHB总线协议的DMA控制器设计_卞学愚.caj -
AHB 总线协议(1)
2020-12-21 16:03:08AHB Feature 时序传输Feature: 最简单的是一次无等待的简单传输。在第一个HCLK的时钟周期,Master释放了address(HADDR)和control信号,这里的control信号指的是读或者写。紧接着在第二个时钟边沿到来之前,Master... -
【SystemVerilog项目实践】2.AHB-SRAMC(AHB总线协议)
2022-07-18 22:00:49AHB总线协议简介 -
[AMBA]AHB总线协议简介
2021-05-11 19:48:28AHB 协议简介 一、简介 AHB 总线规范是AMBA总线规范的一部分,AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus)、ASB (Advanced System Bus)、APB ... -
AMBA基础知识4:AHB总线协议
2020-12-21 17:01:11AHB总线规范详解架构来自:中国科学院微电子研究所 韩健app1. 简介AHB总线规范是AMBA总线规范的一部分,AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus)、... -
AHB总线协议整理
2017-08-11 22:57:48这位博注总结的很好啊, http://blog.163.com/qixin_william/blog/static/240217035201491133626819/ ... 拿过来分析下 T1时刻之后,master将第一拍地址和控制信号打入总线,因为是一个 -
amba_5_ahb协议.docx
2020-03-01 16:23:16amba5 ahb ahb5.0协议。官方文档,包括的内容有AHB5和AHB5-LITE。介绍AMBA AHB协议特性,传输特性,信号,接口等内容。 -
AMBA总线协议(三)——一文看懂AHB总线所有协议总结(AHB2 & AHB-Lite & AHB5 )
2021-02-06 12:02:331. AHB 5 协议:AMBA AHB协议总线的接口适用于高性能的设计。主模块:Cortex-M内核,DMA存储器,DMA外设,以太网DMA USB等连接组件和从模块:内部Flash,内部SRAM,AHB2APB桥,APB外设之间的接口。123大多数挂在总线... -
AHB-Lite总线协议
2021-10-20 15:52:16AHB-Lite总线协议 AHB特性:Burst传输、单边操作、非三态、宽数据位。其是为高性能、高频率系统而设计,对于低带宽外围器件可以连接到APB总线。(通过桥接)。 对于多个Mster和Slave的AHB总线结构由四个部分组成... -
AHB总线介绍【1】
2022-06-11 16:47:08AHB总线介绍