AXI总线学习-------进阶过程STEP1----------连载(11)AXCACHE

AXI总线学习连载(11)

 

鲁迅曾经说过:

学硬件,不是学哪里查哪里,有一些东西是必须系统的学的,不管是嵌入式还是FPGA,硬件学习的积累一定要是系统的。

 

我也曾经说过:

英文手册非常重要,这是学习硬件标准的不二法门,没有捷径,我们这一行可以不说英语,英语也可以像我和我某些同事一样口语富有乡土气息,但是一定要能熟练看,内心看,做阅读理解一样看

跟着这篇博客,慢慢学习,对着官方文档,不仅可以学会这个协议,更能够学会硬件学习的方法,所谓举一反三。(我说的比鲁迅还多)

 

好了既然是axi,那么这么说,只要你使用arm架构的芯片,arm和fpga(pl 可编程逻辑)部分通信,或者外部设备通信,你都会用上这个协议。所以一起来学习,打工人!就该把自己的时间全部放在上面 

好了不废话了,一起来探索吧! 

 

不要厌烦枯燥,理论学习是在实践之前的必经过程,当学习完axi原型后,我也会专门贴出来一个axi协议使用开发的详细详细详细的n次方的接口解析。请学习过程中不要放弃,不要觉得枯燥!! (其实说给自己听的)

 

qq:2198187857  这里放出来一下,就是希望朋友们指导,有不足的地方批评教育一下,作为新手,还是很认真在学习

--------------------------------------------------------------分割线-----------------------------------------笨蛋看不见-----------------------------------------

前十个连载是学习AXI的基础,我们称其AXI原型的基础指南吧,包纳了所有AXI原型都有的特征。这一连载开始我们将会,对AXI开始进一步的学习,学习不同AXI的异同点。

这就是本章的学习目录。还是老样子,翻译加梳理。

AXI总线学习-------进阶过程STEP1----------连载(11)AXCACHE

这个章节主题是transcation attributes,我们知道transcation就是我们说的处理,读还是写的完整一套流程(全套),这相当于我们要开始对于不同类型AXI去完成这个过程,做一个全程总体的学习了

这个处理特性描述的是,在处理当中所有发信号的行为,支持的系统拓扑关系和系统层级的缓存(cache)。这里注意下,其实处理行为在图标上看是一堆信号的关系,但是在实际电路,用我们学过

的计算机组成原理理解一下,主设备一般是arm的硬核处理器,所以此时会发送信号过来,这时候,后面的设备是硬核之外的PL的ip核或者其他的,这时候缓存就是cpu当中寄存器和pl当中寄存器的一个

中转。不知道大家有没有研究过zynq系列或者是其他集成了ARM处理器的SOC芯片,这里我放一个图,就是笔者所使用的soc的系统图。

AXI总线学习-------进阶过程STEP1----------连载(11)AXCACHE

 

我们知道arm硬核完成的操作在底层上其实是发送指令,然后取值完成运算,cpu部分其实就是apu和cu(控制单元)结合,但是外部的工作速率低于cpu内部,所以加入了缓存(cache)

在图上发现了这里有个cache,但是cache的作用其实就是让cpu外的设备同内部速率更接近,之后cache又会进入其他单元,最后完成形成各类axi接口。

这个说的比较笼统,但是不妨碍我们理解,如果不太明白,就暂时保留问题,只需要记住,这里涉及的cache还有寄存器,这两个概念记得区分好。之后信号的操作是很繁琐的,并且容易头晕。

AXI总线学习-------进阶过程STEP1----------连载(11)AXCACHE

这里处理不仅满足系统拓扑和缓存机制,还会从以下九个点讲解,同样还是翻译一下。

1.处理的类型和特质概述

2.AXI3 MEMORY发信号的特性

3.AXI4基于AXI3 的MEMORY 发信号特性做的改动

4.MEMORY 的类型

5不匹配的memory特性

6.处理当中的缓冲特性

7,访问许可

8,一些遗留问题

9使用案例

--------------------------------------------------------------分割线-----------------------------------------笨蛋看不见-----------------------------------------

 

1.处理的类型和特质概述

AXI总线学习-------进阶过程STEP1----------连载(11)AXCACHE

注意我勾选的部分,请注意!!!这里是说从设备被分为以下两类,牛皮了!我们终于开始知道啥是从设备了,是不是很惊喜,很有冲动去学下去了!

这两类我还是先翻译!!!!

 1.存储从设备

        这个好理解,从设备直接是一个存储单元,但是要求能够正确的完成我们处理类型(transaction types)

 2.外围从设备

        一个外围从设备往往是自己有自己的布线接口定义来完成访问。比较典型的就是,如果我们要去用一个新的硬件,就会在这个设备出的数据手册上找到,只要

是针对axi这种类型的,都会告诉你如何去正确的完成这个处理类型,但是一旦进行了这样的访问,就不需要外围设备继续正确地操作。它只是被要求

继续以符合协议的方式完成进一步的事务。也就是说这种设备只需要符合协议,在这里就可以了。这个理解,,,还是具体用具体去理解,举一个最简单的例子就是,

接口匹配只是主从设备的关系,从设备自己还有很多要求,这里arm规定的是要符合axi总线而已.

 3,注意点

     所有兼容的操作都必须要去防止系统锁死。如果锁死,哪怕继续正确操作都是不允许的

   因为一个外围从设备,只有采用正确的访问方法才能够正常工作,实际工作情况下,可以减少一些不必要的信号接口!

 

 

 

 

好了介绍了从设备的分类之后,我们就要学两个新的信号啦! 同样在连载1里面可以看见的这里我还是为了方便,放出来

AXI总线学习-------进阶过程STEP1----------连载(11)AXCACHE

 

AXI总线学习-------进阶过程STEP1----------连载(11)AXCACHE

先来看这两个信号。两个源设备都是主设备,都表示memory type。

AWCACHE 这个信号描述写处理是怎么在系统里进行的。

ARCACHE 这个信号表示读处理是怎么在系统里进行的。

请注意一下这里。这两个分别表示写处理和读处理,都在写和读通道内部。

好了继续翻译

AXI总线学习-------进阶过程STEP1----------连载(11)AXCACHE

AXI原型定义了一些处理特性支持的从设备,这两个信号正好就表明了处理的特性信息。他们能够控制:

      一个处理进程如何在系统能工作

     系统级缓存是怎么样应对这个处理的。

接下来我们就会系统学习这两个信号了。

总结一下 AXCACHE其实就是整个总线内,去描述处理特性的信号,那么说,处理的性质就是通过编码这几根线就可以知道了,接下来我们首先就是要学

这几个信号线上的编码是什么意思。

--------------------------------------------------------------分割线-----------------------------------------笨蛋看不见-----------------------------------------

 

现在我们先从AXI3开始学习,学习这两个信号线在AXI3协议里的含义

 

AXI总线学习-------进阶过程STEP1----------连载(11)AXCACHE

这是编码表,分别代表每一位的0.1的含义,现在我们就按照整个表格开始梳理。

 

--------------------------------------------------------------分割线-----------------------------------------笨蛋看不见-----------------------------------------

 

AXI总线学习-------进阶过程STEP1----------连载(11)AXCACHE

AXCACHE[0]是这个信号线的第一位,表示的是缓冲使能。

                如果整个位是1则表示,在这个transcation上的途径的所有互联单元和设备,都可以各自延迟支持的延迟数。整个很好理解

就是延迟一点点叠加嘛。

               后面又补充了,整个位其实还是和写处理相关,这个先放在这里,后续会用。

 

AXI总线学习-------进阶过程STEP1----------连载(11)AXCACHE

 

第二位表示缓存使能

      当这个位置是低电平,处理的工作被禁止。

     当这个位置是高电平:

                              1.处理的分配工作是被允许的,这表明写地址和读地址通道会给出一些其他提醒信息(先不管)

                              2. 处理事务的终点不需要去和处理事务的起点去匹配。(先不管)

                              3.对于写而言,这表明可以有一些不同的写行为同时在一起。对于读而言,意味着一个位置上的内容可以先预先加载,其实就是先存在cache里嘛,

                                 这样从这次获取的值可以用来复用给多个设备传。

 这个真的写地绕,,,,总结一下,其实就是缓存使能。。。。。cache的作用大家都懂嘛,就是缓存从apu出来的东西或者是进去的,为了匹配速率而已。

AXI总线学习-------进阶过程STEP1----------连载(11)AXCACHE

第三位是读分配,当这个信号是高电平,这个读分配可以开始。注意如果C bit 是低电平,也就是没有开启缓存,那么一定不能够开启读分配。

注意下B , C, RA, WAbit 是这几位的简写哈。

这个好理解,如果没有缓存(C bit为0)自然就不能分配读写,完成复用

AXI总线学习-------进阶过程STEP1----------连载(11)AXCACHE

第四位,如果写分配开启,那么写分配对于这个传输来说是可以开启的。同样如果没有缓存使能(c),写分配不能开启!!!!!

 

--------------------------------------------------------------分割线-----------------------------------------笨蛋看不见-----------------------------------------

 

总结一下,前面十连载,我们描述的都是一个m和一个s设备完成交互,这样的处理都是点对点,所以transcation只有一类。现在扩大,做到多设备复用传输了。

也就是说我们不仅仅是去分辨burst的指标,现在还要开始分辨transcation的指标了。

这一章我们学习了AXCACHE这两个信号:

 知道了他们分别由4位,这个信号可以表述TRANSCATION的特点

  第一位 缓冲使能,处理过程是否各部分都开启缓冲

  第二位 缓存使能 ,处理过程是否接受缓存。缓存的作用是预先存一下,方便多对多传输。

 第三位   读分配     表示读处理从多个设备其中某个读,但并不知道从哪个设备,仅仅是标识一下。

 第四位  写分配      表示写处理往多个设备其中某个地方写 ,但并不知道从哪个设备,仅仅是标识一下。

读分配和写分配必须建立在缓存使能之上,否则不能使用!!!!!

举个例子 AWCACHE   1111 代表写分配开启,读分配也开启,缓存开启,缓冲开启