AHB总线协议介绍
AMBA总线概述
AMBA(Advanced Microcontroller Bus Architecture)是由ARM公司推出的片上总线协议。主要包含下面四种高级总线:
- AHB(the Advanced High-performance Bus)
- ASB(the Advanced System Bus)
- APB(the Advanced Peripheral Bus)
- AXI(Advanced eXtensible Interface)
各版本协议下载可从arm官网
https://developer.arm.com/architectures/system-architectures/amba/specifications?_ga=2.62389100.1150642939.1623305587-762058317.1617272356
AHB总线特性
AHB主要用于高性能模块(如CPU、DMA和DSP等)之间的连接,作为SoC的片上系统总线,它包括以下一些特性:
- 数据突发传输( burst transfer )
- 数据分割传输( split transaction )
- 流水线方式
- 一个周期内完成总线主设备( master )对总线控制权的交接
- 单时钟沿操作
- 内部无三态实现
- 更宽的数据总线宽度(最低32位,最高可达1024位,但推荐不要超过256位)
- 可支持多个总线主设备(最多16个)
AHB总线架构
AHB总线的强大之处在于它可以将微控制器(CPU)、高带宽的片上RAM、高带宽的外部存储器接口、DMA总线master、各种拥有AHB接口的控制器等等连接起来构成一个独立的完整的SOC系统,不仅如此,还可以通过AHB-APB桥来连接APB总线系统。AHB可以成为一个完整独立的SOC芯片的骨架。
AHB总线互联
AHB 主机: 总线主机能够通过提供地址和控制信息发起读写操作。任何时候只允许一个总线主机处于有效状态并能使用总线。
AHB 从机: 总线从机在给定的地址空间范围内响应读写操作。总线从机将成功、失败或者等待数据传输的信号返回给有效的主机。
AHB 仲裁器: 总线仲裁器确保每次只有一个总线主机被允许发起数据传输。即使仲裁协议已经固定,任何一种仲裁算法,比如最高优先级或者公平访问都能够根据应用要求而得到执行。AHB 必须只包含一个仲裁器,尽管在单总线主机系统中这显得并不重要。
AHB 译码器: AHB 译码器用来对每次传输进行地址译码并且在传输中包含一个从机选择信号。
多主机和多从机互联图
Master选择slave连接
Slave反回响应或读数据连接
AHB总线接口
AHB总线传输数据宽度,传输transfer时设定的HSIZE大小需小于等于总线数据宽度。
AHB总线传输burst类型。
AHB总线传输trans类型。有IDLE、BUSY、NONSEQ和SEQ类型,其中BUSY只能被插入到有限长burst(WRAP4、INCR4、WRAP8、INCR8、WRAP16、INCR16)类型transfer中,burst传输的第一个transfer由NONSEQ开始,接下来的transfer由SEQ传输。
AHB总线传输协议
AHB传输中分为地址阶段和数据阶段,地址阶段只占用一个时钟周期,数据阶段可为一个或多个周期,协议建议一般不超过16个,由Slave的HREADY信号决定。
无等待读传输协议:
无等待写发送协议:
读等待传输读协议,以两个等待周期为例:
写等待传输读协议,以1个等待周期为例:
多传输任务协议:
- A和C无等待状态
- B存在一个等待周期
AHB总线burst传输协议
突发传输burst定义了一个或多个数据传输,由主线总机发起,在地址空间增加时,传输宽度保持不变。每次传输增加的地址,由传输大小决定(字节,半字,字)。
INCR4传输
T1,master传入地址和控制信号,因为是新的burst开始,transfer的类型是NONSEQ;
T2,master发起了第二个transfer,因为是同一个burst的第二个transfer,所以transfer的类型是SEQ;slave将HREADY信号拉低,告诉master需要等待一个周期
T3, slave将HREADY信号拉高,告诉master已经准备好,master保持发送的第二个transfer的所有控制,
T4,master发起了第三个transfer,
T5,master发起了第四个transfer,
T6,完成最后一个transfer
WRAP4传输
跟之前唯一的区别在于地址的不同,在0x3C地址之后,根据回环的地址边界,第三拍的地址变为0x30。一共四拍,4个地址,每个地址各不相同,这四个地址是一个回环范围。起始地址决定了回环操作的回环范围。
INCR8传输
和INCR4相比只是完成8个transfer结束此次的递增burst传输,这里的8不是指传输完成8个word而是8次transfer
WRAP8传输
和WRAP4相比是完成8个transfer的回环
INCR传输
INCR的传输是递增地址的burst传输,相邻两个transfer的地址不能跨越1KB范围。上图是完成了两次INCR的传输,第一次是半字的INCR传输,在T1时刻进行master传入地址和控制信号,因为是新的burst开始,transfer的类型是NONSEQ,T2时刻进行master传入地址和控制信号,传输类型为SEQ;第二次的INCR burst是进行的整字传输,在在T3时刻进行master传入地址和控制信号,因为是新的burst开始,transfer的类型是NONSEQ,T4时刻进行master传入地址和控制信号,传输类型为SEQ;
返回错误响应
AHB总线注意的关键点