首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ARM系列-AXI(一)

不管什么问题,都必然存在着答案。

-- 东野圭吾

有朋友后台留言,觉得ACE有点跳跃,希望讲一下AXI。

开始之前,先上图,看看AMBA的演进过程。目前最新版本是AXI5,5和4的差别不大,所以下文以3和4为主。

AXI的全称是Advanced eXtensible Interface。在spec里面是这么自夸的:

用于高带宽和低延迟设计。

提供高频操作,无需使用复杂电桥。

协议满足各种组件的接口要求。

适用于具有高初始访问延迟的内存控制器。

提供了实现互连架构的灵活性。

与AHB和APB接口向后兼容

AXI有五个独立的事务通道,分别是:

读地址(Read Address,简称AR)

读数据(Read Data,简称R)

写地址(Write Address,简称AW)

写数据(Write Data,简称W)

写响应(Write response,简称B)

AXI的五个通道是单方向的,这样做的好处是可以对每个通道单独优化,而且当经过复杂的片上网络时,能够优化时序减少延迟。AXI支持突发(burst)传输,乱序(out of order)传输,极大地提高了数据吞吐能力,在满足高性能要求的同时,又减少了功耗。

对于读操作,主机(master)通过AR通道发送读事务地址,从设备(slave)通过R通道返回给主机所需要的数据,如下图:

图1  AXI的读操作

对于写操作,主机通过AW通道发送写事务地址,并通过W通道把数据发送给从设备,而从设备接收到数据后,需要通过B通道返回一个响应给主机,整个过程结束。

图2  AXI的写操作

读和写的不同之处,一是数据方向不一样,还有就是读事务不需要从设备再发响应了,想想为啥涅。

读和写的数据宽度可以是8, 16, 32, 64, 128, 256, 512, 1024 bits中的一种。

这里不得不提一下AMBA中广泛采用的VALID/READY握手机制。正是因为有了这个机制,发送方(Source)和接收方(Destination)才都有能力控制传输。

发送方通过职位VALID信号,来告诉接收方,自己已经将数据等信息准备好;而接收方通过置位READY信号,来告诉发送方,自己准备好了接收数据。只要有任何一方没准备好,传输就不能进行。

这里不要混淆了,发送方不总是主机,比如读数据通道上,发送方就是从设备,主机是接收方。

发送方的VALID信号和接收方的READY信号并不需要同时置位,可以发送方先准备好,也可以接收方先准备好。也就是说VALID可以早于READY,也可以晚于READY,也可以同时置位。对应的就是下面三种情况。

但是,为了避免死锁等问题,对于VALID/READY信号还是有一定要求的。协议规定,发送方的VALID信号一旦置位就不能拉低,直到完成一次握手;而且,发送方不能根据接收方的READY信号来置位自己的VALID信号。简单说,就是发送方可以根据自己的需求随时发起传输,不能也不需要判断接收方是否空闲,同时发送方一旦发起传输,就不能随意中止。对于接收方,如果没有准备好接收就可以不置位READY,这样就可以反压发送方的传输了,而且接收方置位READY后,只要发送方没置位VALID,可以拉低READY。

时钟信号和复位信号作为全局信号,没啥好说的。AXI的五个通道的信号如下,先是写地址通道:

写数据通道:

写响应通道:

读地址通道:

读数据通道:

从上述的信号列表我们可以看出来,每个通道都有自己的VALID/READY信号。这种VALID/READY握手机制在整个AMBA体系里面广泛采用,不管是做设计还是做验证的同学,一点要熟记。

今天内容不多,都是基础,下周来看看具体的信号都是什么含义吧。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230210A001CG00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券