深入理解AMBA总线(十)AHB Bus Matrix以及AHB的局限性

简介: 深入理解AMBA总线(十)AHB Bus Matrix以及AHB的局限性

本篇文章给大家讲解AHB Bus Matrix的设计,然后将AHB这一部分进行一个收尾。

1、AHB Bus Matrix

前面我们的内容,主要讲的都是Master和Slave。可是Master和Slave之间如何连接呢?通过点对点的方式当然可以实现连接,但是如果有多个Master多个Slave呢?普通的点对点或者slave mux的方式可能无法满足我们的要求,这个时候我们就需要新工具了。

AHB Bus Matrix,即总线矩阵,其实际上就是一个互连(Interconnect)。用于连接满足该总线协议的外设,包括Master和Slave。基于该模块,我们可以快速的完成“连连看”工作。将设计好的IP封装成AHB协议,然后挂载上去即可。这样就完成了简单的SoC集成工作。在集创赛ARM杯中,很多项目其实都是基于这种方式工作。将设计好的IP挂载成Slave,然后我们通过上位机给CPU编程,CPU随机会通过总线下发命令给相应的IP,完成工作以后产生中断,然后去拿运算完成的结果进行进一步的运算即可。很多低端的MCU都是这种工作方式,一般Master主要有两种,一个CPU Core,还有一个DMA用来搬数。

这个AHB Bus Matrix大家可以手写,但是这样的话工作量较大,并且AHB协议实际上写起来,还是很容易出错的,ARM官方实际上提供了一套工具,可以编写XML文件,通过脚本即可生成我们需要的矩阵。具体的我就不介绍了,大家可以看下面这个视频,讲的很好,并且足够详细了。我当时就是看这个视频,学会了如何生成我需要的总线矩阵,然后将我自己设计的IP挂载了上去,实现了一个简单的SoC。

https://link.zhihu.com/?target=https%3A//www.bilibili.com/video/BV127411P7W9%3Fp%3D2%26vd_source%3Daa30a4e19bdd942dc58f16b3be44358e

2、AHB的局限性

实际上现在的SoC设计,AHB已经很少使用了,除非是很低端的MCU,考虑到节省功耗和面积等因素,才会去使用AHB总线。目前AXI已经使用的越来越多了。

我们看一下下面这幅图,和之前讲过的典型AMBA系统的SoC基本是一模一样的,只不过把AHB换成了AXI,这样做有什么好处呢?下面就给大家进行一个简单的分析。

AHB协议本身是ARM公司在AMBA2这一代推出的协议,距今已经有20多年了,该协议本身存在着很多历史局限性,用今天的视角来看,AHB属于高不成低不就的一代协议。在低频低性能要求的情况下,论功耗面积等开销比不过APB协议。在高频高性能要求下,能跑到的主频和带宽又比不过AXI。所以AHB目前一般只用在IP本身比较旧,用的还是AHB协议的Wrapper,然后又不想改的情况下,才会考虑使用。不然一般会直接上AXI协议。

此外AHB协议本身限制要求较高,比如command和data必须是1Cycle的延迟,error response,HREADYOUT和HREADYIN等机制都很容易导致设计出错,这是从设计层面去考虑AHB存在的问题。

我们分析一下AHB的带宽,在理想情况下,AHB的最大带宽为 ��=����∗�� 。虽然AHB存在WDATA和RDATA,但是它的控制信号只有一路,并且COMMAND和DATA必须满足1T的延迟,所以WDATA和RDATA是无法同时工作的。等于数据信号的利用率最多只有50%。可以认为它近似于一个半双工的BUS。

上述还不是最坏的情况,因为我们考虑数据是一拍回复,那当数据不是一拍回复,并且当我们需要改变传输方向的时候呢?比如我们先读后写。在读数据回来之前我们是不准写的,这个前面讲AHB协议的时候有说到,因为HREADY会反压,一直到读数据回来的时候才准写。因此当回数据需要很多拍的时候,并且频繁地发生读写转换的时候,AHB的效率是非常低的

AXI相比AHB最重要的改变就是读写通道分离,相当于我们有两路可以传输了(全双工),此外AXI还支持Outstanding(现在简单理解为在路上即可)。同样考虑开始开车的例子,同样是读写频繁转换,传输延迟很大为100s,在理想的情况下可以是2car/1s!。因为AXI不需要等读回数据响应再发送下一次传输,它支持“在路上”。

除此之外,AXI引入了握手的机制,不需要data必须在command的1T以后,其实多少T以后都可以。因此我们可以跑到很高的频率,频率不满足要求加周期就行了。这也是AXI的一个优势所在,在普通频率或者很高的频率,都有它的用武之处。

接下来可能会用十篇文章左右,讲AXI的机制、设计技巧等给大家讲清楚,有任何问题欢迎留言和私信。

欢迎和我一起学习AMBA总线,完整的专栏在这里:

https://www.zhihu.com/column/c_1663245806869291008

目录
相关文章
|
存储 安全
深入理解AMBA总线(四)AHB-lite总线
深入理解AMBA总线(四)AHB-lite总线
1123 0
|
存储 网络性能优化 vr&ar
深入理解AMBA总线(十七)AXI是如何提高性能的
深入理解AMBA总线(十七)AXI是如何提高性能的
2040 1
|
芯片
深入理解AMBA总线(一)APB总线入门(上)
深入理解AMBA总线(一)APB总线入门
1086 0
|
安全 物联网 数据安全/隐私保护
深入理解AMBA总线协议(AXI总结篇)
深入理解AMBA总线协议(AXI总结篇)
1564 1
|
异构计算 SoC 内存技术
深入理解AMBA总线(九)AHB2SRAM设计
深入理解AMBA总线(九)AHB2SRAM设计
778 0
|
SoC 内存技术
深入理解AMBA总线(五)AHB-lite Transfer进阶
深入理解AMBA总线(五)AHB-lite Transfer进阶
690 0
|
缓存 SoC
深入理解AMBA总线(八)AHB2APB同步桥设计
深入理解AMBA总线(八)AHB2APB同步桥设计
750 0
深入理解AMBA总线(一)APB总线入门(下)
深入理解AMBA总线(一)APB总线入门(下)
919 0
|
vr&ar SoC 内存技术
深入理解AMBA总线(十二)AXI突发传输和AXI控制信号
深入理解AMBA总线(十二)AXI突发传输和AXI控制信号
1572 0
|
vr&ar 内存技术
深入理解AMBA总线(十八)一个简单的AXI2SRAM设计
深入理解AMBA总线(十八)一个简单的AXI2SRAM设计
612 0