新闻中心

AHB总线协议

作者: 时间:2018-07-25 来源:网络 收藏

1. 简介

本文引用地址://m.amcfsurvey.com/article/201807/383796.htm

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的一种替代方案。

1.1 AHB总线的架构

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

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

1.2 AHB基本特性

Burst传输

Split事务处理

单周期master移交

单一时钟沿操作

无三态

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

流水线操作

可支持多个总线主设备(最多16个)

2. AHB总线的组成

AHB总线由Master、Slave和Infrastructure构成。Infrastructure由arbiter、数据多路、地址多路、译码器构成。

主设备Master

发起一次读/写操作

某一时刻只允许一个主设备使用总线

从设备Slave

响应一次读/写操作

通过地址映射来选择使用哪一个从设备

仲裁器arbiter

允许某一个主设备控制总线

译码器decoder

通过地址译码决定选择哪一个从设备

总线可以分为三组

写数据总线(HWDATA)

读数据总线(HRDATA)

地址控制总线(HADDR)

3. 信号描述

Name Source To Description
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 当前传输类型NONSEQ, SEQ, IDLE, BUSY
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
高:Slave指出传输结束
低:Slave需延长传输周期
HRESP[1:0] Slave mux to master
arbiter
Slave发给Master的总线传输状态OKAY, ERROR, RETRY, SPLIT
HSELx Decoder slave slave选择信号

AHB仲裁信号

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

4. 总线操作

有需要占用总线的Master向arbiter发出请求,arbiter授权给指定的master。任一时间周期只有一个master可以接入总线,对其指定的slave进行读写操作。

获得授权的总线开始AHB传输,首先发出地址和控制信号,提供地址信息、传输方向、带宽和burst类型。总线统一规划slave的地址,译码器根据地址和控制信号确定哪个slave与master进行数据通信。数据传输通过数据总线完成。为避免出现三态总线,AHB将读写总线分开,写数据总线用于从master到slave的数据传输,读数据总线用于从slave到master的数据传输。每笔传输包括一个地址和控制周期,一个或多个数据周期。地址和控制周期不能被扩展,因此slave必须在一个周期内采样地址信号。数据周期可以通过HREADY信号扩展,但HREADY为低时给传输加入一个等待状态以使slave获得额外的时间来提供或采样数据,另外slave通过响应信号HRESP反映传输状态。

一般情况下master完成完整的burst传输,arbiter才会授权给其他的master接入总线,然而为避免过大的判决延迟,arbiter也可能打断burst传输。在这种情况下master必须再次接入总线以进行中断的burst剩余部分的传输。

5. 基本传输

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

地址阶段:一个周期

数据阶段:一个或多个周期,由HBURST信号决定需要几个有效周期,可以由HREADY发出请求延长一个周期。

5.1 没有等待状态的single transfer

第一个周期的上升沿,master驱动地址和控制信号;

第二个周期的上升沿,slave采样地址和控制信号,并将HREADY拉高;

如果是写操作,master会在第二个周期的上升沿传输要写入的数据;

如果是读操作,slave会在HREADY信号拉高后将读取的数据写入总线;

第三个周期的上升沿,

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

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

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

5.2 slave插入等待状态的single transfer

slave可以及时处理master请求,但也可能存在slave太慢不能立即处理的情况。这时需要让master稍微等一等,需要slave插入一些等待的状态。如下图所示,HREADY信号在第二和第三周期拉低,意在告诉master,slave不能立即处理,需要master等待2个周期。在这里需要注意2点:

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

如果是读操作,slave不需要一开始就给出数据,仅当HREADY拉高后才给出有效数据。

5.3 多个single transfer的pipeline操作


上一页 1 2 下一页

关键词:微控制器控制

评论


相关推荐

技术专区

关闭