AMBA之AHB协议

  1. AHB介绍

AHB总线一开始面向系统级高性能,低功耗的系统互连。随着系统的发展,AXI总线作为高速总线的优势更加明显。AHB更多用于简单的数据传输,后来对AHB协议进行简化,定义了AHB-Lite,简化后的AHB主要用于单master数据访问。目前AHB多用于片上memory或低带宽需求的外设接口。

AHB总线接口的定义如下表所示:

Signal

Width

Destination

description

hclk

1

salve

总线时钟,上升沿有效

hrstn

1

slave

总线复位信号,低有效

hsel

1

slave

由Decoder产生,高电平表示当前slave被master选中

hwrite

1

slave

表示传输方向,high(写),low(读)

haddr

32

slave

总线地址

hwdata

32

slave

总线数据

htrans

2

slave

传输类型,0(IDLE),1(BUSY),2(NONSEQ),3(SEQ)

hsize

3

slave

传输大小,size=(2**hsize)*8bits,最大支持1024bits

hburst

3

slave

突发类型

hprot

4

slave

保护控制信号,需slave带保护功能,一般不用

hmastlock

1

slave

当前master正在执行locked操作,与hmaster时序相同。

hmaster

4

slave

master识别符,由具有多个独占线程的主机产生

hready

1

slave

由multiplexor产生,用于slave判断master是否对其它设备完成操作

hreadyout

1

multiplexor

由slave产生,当master发起读写操作时,如果slave不能及时响应,把此信号拉低,用于延长传输。

hrdata

32

multiplexor

从slave读取的数据,数据位宽可以扩展,推荐32bits

hresp

2

multiplexor

slave发出的传输状态,0(OKAY),1(ERROR),2(RETRY),3(SPLIT)

在一个系统中,主机提供地址和控制信号来发起读写操作,主机的接口如下图所示:

从机通过hsel信号来确定是否要响应主机发起的操作请求,从机的接口如下图所示:

  1. 基本传输

一次传输包含两个阶段:

地址传输阶段:除非前一个传输需要延展,否则只需一个hclk周期;

数据传输阶段:根据hready信号控制完成传输的时钟周期。

  1. 无等待传输

下图是一个无等待读操作的时序关系图

下图是一个无等待写操作的时序关系图:

步骤分析:

Step1:Master在hclk上升沿驱动地址和控制信号到AHB总线上;

Step2:在下一个hclk上升沿,从机采集地址和控制信号;

Step3:Slave采集到地址和控制信号后,驱动hready进行响应,在第三个hclk上升沿Master采集hready信号。

  1. 有等待传输

下图是等待2个时钟周期读操作时序关系图:

步骤分析:

Step1:Master在hclk上升沿驱动地址和控制信号到AHB总线上;

Step2:在下一个hclk上升沿,从机采集地址和控制信号,但hready在两个时钟周期内没响应,Master保持当前地址和控制信号;

Step3:第4个hclk上升沿后,Slave驱动hready拉高,进行响应,完成读操作。在第5个hclk上升沿Master采集hready信号。

下图是等待1个时钟周期写操作时序关系图:

步骤分析:

Step1:Master在hclk上升沿驱动地址和控制信号到AHB总线上;

Step2:在下一个hclk上升沿,从机采集地址和控制信号,但hready在接下来1个时钟周期内没响应,Master保持当前地址和控制信号;

Step3:第3个hclk上升沿后,Slave驱动hready拉高,进行响应,完成写操作。在第4个hclk上升沿Master采集hready信号。

下图是等待1个时钟周期读写交替操作的时序关系图:

步骤分析:

Step1:Master在第1个hclk上升沿驱动A写地址和控制信号到AHB总线上;

Step2:第2个hclk上升沿,Slave采集A写地址和控制信号,hready为高,完成A的写操作。同时,Master发起B读地址和控制信号到总线上;

Step3:第3个hclk上升沿,Slave采集B读地址和控制信号,由于Slave不能及时响应hready为低,总线进入等待状态;

Step4:第4个hclk上升沿后,Slave进行响应,hready拉高,完成读操作;

Step5:第5个hclk上升沿,Slave采集Master请求的C写地址和控制信号;

Step6:信号hready为高,完成C写数据操作。

  1. 传输类型

总线AHB通过htrans[1:0]信号来控制总线的传输类型,类型如下表所示:

下图展现的是传输类型的时序图:

步骤分析:

T0-T1:突发长度为4beats,以NONSEQ起始的读操作;

T1-T2:hready为高,Slave发送读数据到总线。Master插入BUSY传输类型,推迟Burst的第2beats的传输;

T2-T3:Master继续Burst传输,发送SEQ传输类型到总线;

T3-T4:Master继续Burst第3beat读请求;

T4-T5:Master继续Burst第4beat读请求,hready为低,进入等待状态;

T5-T6: hready拉高,Slave提供第3beat读数据;

T6-T7: Slave提供第4beat读数据;

  1. 锁定传输

通常,锁定传输是为了维护信号量的完整性,从机在读或写完成之前不进行其他操作。

  1. 突发操作

突发操作支持incrementing和wrapping突发。

主机不要发送超过1KB地址范围的递增突发。

  1. 传输一个busy后突发终止

在未定义突发长度的incrementing突发传输中,主机可以插入busy确定没有数据需要被传输。但协议不允许主机通过在固定突发长度的情况下插入busy来终止突发传输。固定长度的如法必须以SEQ传输类型终止。

不允许主机在single突发后立即执行busy传输。single突发后必须跟随IDLE或NONSEQ传输。

  1. 提前终止突发

1、从机发送error response

如果从机发出error响应,主机可以取消突发中的剩余传输,或,继续突发中剩余传输。如果主机取消了突发中的剩余传输,主机必须在两个周期error响应期间将HTRANS变为IDEL状态。

2、多层互连终止

在一个多主机系统的多层互连设备的情况下,可以终止一个突发,使另一个主机获取从机的存取权限。从机必须终止原主机的突发,并且给新主机适当的响应。

  1. 突发举例

下图,突发长度为4的wrapping(WRAP4)写突发传输。

下图,突发长度为4的incrementing(INCR4)读突发传输。

下图,突发长度为8的wrapping(WRAP8)读突发传输。

下图,突发长度为8的incrementing(INCR8)写突发传输。

未定义突发长度的递增突发(INCR)传输。

  1. 传输等待

从机可以用hreadyout信号插入等待状态。等待期间,主机被限制改变传输类型和地址。

  1. 等待期间传输类型的改变

在从机请求等待状态时,除了下面三种情况,主机不能改变传输类型:

  1. IDLE传输;

  1. 固定突发长度的BUSY传输;

  1. 不定义突发长度的BUSY传输。

下图,在等待状态下,IDLE状态,传输类型可以发生改变。

下图,固定突发长度,在等待状态下,BUSY状态,传输类型可以发生改变。

下图,不固定突发长度的递增突发,在等待状态下,BUSY状态,传输类型可以发生改变。

  1. 等待期间地址的改变

在从机请求等待状态时,除了下面两种情况,主机只能改变地址一次:

  1. IDLE传输期间;

  1. 一个ERROR响应后。

下图,在IDLE期间,地址发生改变。

下图,从机发送ERROR响应后,地址发生改变。

  1. 总线互连

互连组件是提供主机和从机之间的连接。单个主机系统只需要解码器(Decoder)和多路复用器(Multiplexor)。多主机系统需要提供仲裁器(Arbiter)和路由器(Router)。

  1. 地址解码

地址解码器提供一个选择信号HSELx,是根据高位地址产生。

分配给单个从机的最小地址空间是1KB。所有主机在不执行超过1KB的递增传输,确保突发传输不超过地址解码的边界。

如果一个系统不包含一个完整填充的地址映射,则需要实现一个额外的默认从机,以在访问任何不存在的地址空间时提供一个响应。

  1. 读数据和响应多路复用器

  1. 从机响应信号

主机发起一个传输后不能取消,从机必须提供一个响应,以指示传输访问的状态。

从机发送ERROR响应需要两个周期,在hreadyout信号为低电平时驱动hresp为高表示ERROR,在下一个周期驱动hreadyout为高以结束传输,同时保持hresp为高电平表示ERROR。由于总线的流水线性质,所以需要两个周期响应。当从机开始发送ERROR响应时,下一个地址已经发送到总线上。两个周期可以提供充足的时间让主机取消下一个访问,在开始下一个传输前,启动htrans进入IDLE状态。

  1. 独占传输

AHB5定义了独占传输属性。独占访问序列是单个主机独占传输的序列。操作步骤如下:

  1. 从一个地址执行独占读传输;

  1. 根据独占读数据,计算一个新数据写入到该地址;

  1. 独占读和独占写之间可以有其它非独占传输;

  1. 对同一个地址执行独占写传输,新数据的值为;

如果独占读之后没有其它主机写入该位置,独占写传输成功,并更新memory;

如果独占读之后有其它主机写入该位置,独占写传输失败,并memory位置不被更新。

5、独占写传输响应表明传输是成功还是失败。

独占传输相关联的信号:

HEXCL:独占传输,指示传输是独占访问序列的一部分,该信号是一个地址相位信号,与HADDR有相同的有效性约束;

HMASTER:主机识别符,一个主机拥有多个独占能力的线程必须产生该信号来区分线程。地址相位信号,与HADDR有相同的有效性约束;

HEXOKAY:独占成功,指示独占传输成功或失败的响应信号。

  1. 原子性

  1. 单拷贝原子大小

单拷贝原子大小定义了一次传输自动更新的字节数。

为一组相互通信的组件定义单拷贝原子大小,例如:

  1. CPU、DSP和DRAM控制器在一个64bits单拷贝原子组中;

  1. 一个更大的组,包含CPU、DSP、DMA、DRAM、SRAM和外设在一个32bits单拷贝原子组中;

当一个写传输更新memory位置时,必须保证观测者看到其中一种情况:

  1. memory位置未更新;

  1. 更新了至少一个单拷贝原子大小数量的数据。

字节选通信号(strobe)相关的传输不影响单拷贝原子大小。

  1. 多拷贝原子

如果一个系统有如下特征,则被定位为多拷贝原子性:

  1. 所有agent以同样的顺序能观察到相同位置的写入;

  1. 对一个agent(不是发行人)可以观察到的位置的写入,所有agent都可以观察到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值