日常记录(55)AMBA总线的AHB接口

文档来源于AMBA2.0中文翻译。

 

AHB总线介绍

AHB:高性能,高时钟频率的系统总线。

主要特点是:突发传输、分块处理等,APB桥和内部存储器是常见的AHB的从机。

 

AHB系统中有四个部分:主机、从机、仲裁器、译码器。

多个主机同时申请访问一个从机,使用仲裁器。译码器对主机发出的地址译码,确定选择的从机。

在下面的四个部分中,仲裁器和译码器的具体连线较为抽象。其中的译码器,实际仍然要连接地址总线。

如下的地址译码器提供选择信号,HSELx。

 

AMBA总线信号列表

 H开头表示AHB的信号。

系统信号线:

时钟、复位(低有效)、

主机控制信号线:

地址(32位)、传输类型(空闲、忙、不连续、连续)、传输方向(写、读)、传输大小(8、16..1024[8位线宽])

突发类型(4、8、16节拍,增量、回环模式)、保护控制(预取址、保护模式用户模式,高数缓存、普通缓冲)、写数据线(32位)、总线请求(给仲裁器)、锁定(给仲裁器)

从机控制信号线:

读数据线(32位)、传输就绪线(给主机)、传输响应线(返回ok、err、retry、split)、分块完成请求(部分从机的功能)

译码器:

从机选择线(根据地址进行译码选择从机)

仲裁器:

总线授予、主机号()、锁定顺序、

 

基本传输

只有主机和从机参与的情况,主机先发送地址和控制信息,然后在下一个周期检测从机是否就绪,就绪的时候获取到数据。

下图是读和写两种基本传输的合集。如果是写,那数据是要一直保持的(在HREADY有效或者无效时),读的话,在HREADY有效的时候读就可以了。

连续控制读写的过程中,B发出的读或写的请求没有被从机直接响应,主机需要延后一个周期检测读写的数据结果。

 

 

 

传输类型和突发操作

00:空闲,没有数据传输要求,但是主机是需要传输过程,因此存在该类型。

01:忙:在突发过程中插入空闲周期。

10:非连续,突发模式的第一个状态,或者就是单一传输。

11:连续,突发模式的后续状态。有增量和回环两种突发类型。

以下是一个INCR(未指定长度的增量突发)的传输,传输类型始终保持,然后先传一个非连续,后面传了忙,从机就等待,而上次的读写操作是有效的(HREADY为1),这个时刻的地址和控制信号从机不要。

然后是三个连续。T8处传递一个空闲就行。

 

增量与回环

回环操作

是要和16字节的数据边界对其的。下图的4拍、字大小、回环操作,地址从38后续到3c,然后超出了16字节,回头从30开始。

同样的8拍,字操作,到了16字节边界,往后回退到开始位置20.

 

 

 

增量操作

突破了16字节边界限制,相同的字操作,4拍,就是往后一种走。

 

 

不定长突发

 

下图是两个未定义长度的突发。中间还切换了一下。

注意这里的还有上面有些的SIZE是Word,字(4个字节),32位,其实最大可以是1024位,就是128字节了。同时,回环的最大是8拍,也就是最大地址是1kb。而增量传输最大也是1kb。

这是由于从机的最小地址空间规定为1kb。主机若大于1kb的突发寻址,则有地址译码过程中越界的可能。

 

译码器对地址总线的简单译码过程。

 

 

 

 

从机传输响应

RETRY

从机给主机发出retry的信息,而不是ok或者err,那就需要重新传送。

下图从机认为A地址的控制信息需要重新传入,而同时A+4地址的控制信息也传入了,那A+4的传输取消,主机发送了空闲,取消A+4,然后重新发A。

RETRY是要求从机持续发出两个RETRY的,实现一个取消。

ERROR

error同样是两个周期,但是后续数据仍然可以继续传输。第一个OKEY的HREADY是失效的状态。

 

 

SPLIT

和总线仲裁,多个主机对单个从机的操作有关。同样需要两个周期的SPLIT响应,暂停当前的A+4控制过程,需要主机发送空闲状态,并在T5时刻进入新主机驱动的过程。

 

 

 

仲裁机制

基本通信

主机T2时刻发送请求,在T4时刻得到授权,但是从机没有准备好,然后在T5时刻等到从机准备好(T5时刻仲裁器是没有发送主机标号的),在T6时刻发送控制信号,此时仲裁器给了当前正在使用的主机标号到总线上。

后续正常通信

 

 

所有权移交过程

仲裁器授权过程是仲裁器执行的操作,获得两个请求后,在T6时刻变更了授权,又对应了HREADY无效,需要等到T7,然后A+12的控制信号仍然被发出去了,并又在T9时刻读写了A+12,T9时刻的控制和地址应该是第二个主机的。

 

 

posted @ 2022-02-13 22:17  大浪淘沙、  阅读(704)  评论(0)    收藏  举报