笔记——传说中的AMBA总线是什么?AHB、AXI、APB的区别与联系

目录

一、传说中的AMBA总线是什么?

二、为什么要使用AMBA总线

 三、AXI主要特点

四、几中AMBA总线AHB、AXI、APB相关性能的区别与联系

总结





一、传说中的AMBA总线是什么?

笔记——传说中的AMBA总线是什么?AHB、AXI、APB的区别与联系_第1张图片

笔记——传说中的AMBA总线是什么?AHB、AXI、APB的区别与联系_第2张图片

IoT(物联网)Internet of Things

笔记——传说中的AMBA总线是什么?AHB、AXI、APB的区别与联系_第3张图片

笔记——传说中的AMBA总线是什么?AHB、AXI、APB的区别与联系_第4张图片

下图是一个典型的AMBA系统。

笔记——传说中的AMBA总线是什么?AHB、AXI、APB的区别与联系_第5张图片

典型AMBA系统

大多数挂在总线上的模块(包括处理器)只是单一属性的功能模块:主模块或者从模块。主模块是向从模块发出读写操作的模块,如CPU,DSP等;从模块是接受命令并做出反应的模块,如片上的RAM,AHB/APB 桥等。

另外,还有一些模块同时具有两种属性,例如直接存储器存取(DMA)在被编程时是从模块,但在系统读传输数据时必须是主模块。如果总线上存在多个主模块,就需要仲裁器来决定如何控制各种主模块对总线的访问。

虽然仲裁规范是AMBA总线规范中的一部分,但具体使用的算法由RTL设计工程师决定,其中两个最常用的算法是固定优先级算法和循环制算法。AHB总线上最多可以有16个主模块和任意多个从模块,如果主模块数目大于16,则需再加一层结构(具体参阅ARM公司推出的Multi-layer AHB规范)。APB 桥既是APB总线上唯一的主模块,也是AHB系统总线上的从模块。其主要功能是锁存来自AHB系统总线的地址、数据和控制信号,并提供二级译码以产生APB外围设备的选择信号,从而实现AHB协议到APB协议的转换。

AMBA AHB循环级建模标准是完全公开和免费的。

二、为什么要使用AMBA总线

笔记——传说中的AMBA总线是什么?AHB、AXI、APB的区别与联系_第6张图片

 

 

 

 

 三、AXI主要特点

笔记——传说中的AMBA总线是什么?AHB、AXI、APB的区别与联系_第7张图片

1.分离的读写通道

2.支持outstanding交易

 

3.地址与数据操作之间没有严格的时序关系

4.支持未对齐传输

5.支持乱序交易

四、几中AMBA总线AHB、AXI、APB相关性能的区别与联系

AHB增量burst地址每一拍都会给,实际快速传输响应的比如一拍传输只关心是不是NONSEQ和SEQ。

AXI增量burst传输只需要给首地址就能继续后续传输。

HADDR没有分读和写的ADDR?

AHB不是全双工的,读写是不可以同时进行的。所以性能上比AXI一般来讲是要弱的。

AHB:主要是针对高效率、高频宽及快速系统模块所设计的总线,它可以连接如微处理器、芯片上或芯片外的内存模块和DMA等高效率模块。

APB:主要用在低速且低功率的外围,可针对外围设备作功率消耗及复杂接口的最佳化。APB在AHB和低带宽的外围设备之间提供了通信的桥梁,所以APB是AHB或ASB的二级拓展总线。

AXI:高速度、高带宽,管道化互联,单向通道,只需要首地址,读写并行,支持乱序,支持非对齐操作,有效支持初始延迟较高的外设,连线非常多。

总线

AXI

AHB

APB

总线宽度

8, 16, 32, 64, 128, 256, 512, 1024

32, 64, 128, 256

8, 16, 32

地址宽度

32

32

32

通道特性

读写地址通道、读写数据通道均独立

读写地址通道共用读写数据通道

读写地址通道共用读写数据通道
不支持读写并行操作

体系结构

多主/从设备
仲裁机制

多主/从设备
仲裁机制

单主设备(桥)/多从设备
无仲裁

数据协议

支持流水/分裂传输
支持猝发传输
支持乱序访问
字节/半字/字
大小端对齐
非对齐操作

支持流水/分裂传输
支持猝发传输
支持乱序访问
字节/半字/字
大小端对齐
不支持非对齐操作

一次读/写传输占两个时钟周期
不支持突发传输

传输方式

支持读写并行操作

不支持读写并行操作

不支持读写并行操作

时序

同步

同步

同步

互联

多路

多路

无定义




总结

AXI突发式读写的地址必须以4KB对齐。1024Byte(字节)=1KB

 AXI协议中之所以规定一个burst不能跨越4K边界是为了避免一笔burst交易访问两个slave(每个slave的地址空间是4K/1K对齐的)。假如一个burst交易访问了两个slave A 和B(A在前B在后),那么只有A收到了地址和控制信息,而B不会收到地址和控制信息,因此只有A响应B并无响应,这就会导致此笔burst交易无法完成(B无法返回最后一笔transfer)。因此如果你必须确定系统中所有slave中地址空间最小的那一个,假设是1M,这样你的burst边界可以大于4K至1M。

所谓的4K边界是指低12bit为0的地址,例如32'h00001000, 32'h00002000... 这些特殊的地址我们称之为4k边界;同理1k边界是指低10bit为0的地址,例如32'h00000400,32'h00000800...

4K对齐最大原因是系统中定义一个page大小是4K。所以,为了更好的设定每个slave的访问attribue,就给一个slave划分4K空间。 4K对齐,以32位地址为例,[31:12]相等的地址都是同一个page,没有跨4K边界。 即[11:0] 可以为0~0xFFF. 例如0x1000和0x2000就是在不同的page,跨了4K边界。0x1000和0x1FFF则是在同一个page,没有跨4K边界。同理,0x1FFF和0x2000则跨了4K边界,虽然他们是相邻的byte。 再说到一次burst没有4K大小,但是如果起始地址是0x1FFC, INCR模式,会跨边界吧? 1K对齐,就是说 [31:10]相等的地址都是在一个1K对齐的空间内。 至于真的跨越了,就拆分。例如处理器load多个数据,就是跨页访问,到了接口控制模块,也会把这一个访问拆分成两个访问。在interfere上的都是符合协议的transaction。例如,core要访问0x1FF0-0x200C共32byte的数据(每次beat 4B)。系统会自动给拆分成0x1FF0-0x1FFC和0x2000-0x200C两个transaction。

ARM对AHB burst这样设计的目的是在于,SLAVE的地址访问空间基本都是以1KB为单位的,当AHB以burst方式传输时,为了避免错误的访问到其他的Slave空间而造成系统致命错误,因此在burst传输时限制1KB,若需要跨1KB边界时,需要重新initial一个新的传输。

在AHB划分系统时,最小的地址空间为1KB,即slave至少地址空间是1k,或者2K,或者1M等。这样,当AHB访问地址空间时,因为地址空间对其的原因,就不会恶意的访问到其他的地址空间。

cpu发出这样的请求时,AHB会自动的将其转换为1KB,1KB的传输格式,可以根据其地址区间是否跨越对齐的000来判断。

AHB突发式读写的Master,BURST传输不能跨越1K边界,比如到3xC 不能跨越到400地址,用NONSEQ重新开始一个新的传输,slave最小是1k,或者是1k的倍数。

你可能感兴趣的:(AMBA协议,硬件工程,arm开发,硬件架构)