日常记录(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时刻的控制和地址应该是第二个主机的。
Le vent se lève! . . . il faut tenter de vivre!
Le vent se lève! . . . il faut tenter de vivre!