AXI总线学习连载(9)

鲁迅曾经说过:

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

我也曾经说过:

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

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

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

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

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

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

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

这一次先学习字节不变性,字节存储顺序

话不多说,开始梳理!

首先官方手册告诉我们为什么要有这个概念,第一段翻译过来,为了能够完成访问支持混合字端顺序的单个数据存储空间,axi给了一个字节不变性机制:

遇到这种概念我们不懂的时候建议分解(实验室师兄的箴言,铭记铭记)第一个概念mixed-endian,这个其实就是计算机组成原理里面讲的,两种存储方式,大字端和小字端

如果没学过,一句话解释,就是数据的低八位放在低地址,这叫小字端,大字端就是低八位放在高地址。因为计算机其实本身是支持这种方式的,但是我们知道具有arm内核的专用cpu

是利用这个axi的协议的,在axi协议里面为了兼容这个概念,就提出了一个字节不变

那么继续去翻译学习,什么是字节不变(byte-invariant)

如果说在一个数据里面,有很多个字节,就是若干个八位

1.那么设备必须对于一段数据,使用连续的地址空间去存,不管是不是大字还是小字,这句话意思就是,比如一个32位数据,你不能把他们拆开了,只能够挨在一起,必须要连续。

2.这个字端的类型决定了,这些字节按照什么顺序存在这个内存里面,意味着也决定了,这个数据的第一个字节,是在存储空间(存储字)的LSB低八位还是高八位,这个和大字和小字概念一样。

3.如果给了一个地址去放置传送中的一个字节,那么接下来,传这个字节的八位数据总线,  就按照这个字节的字端顺序来,也就是说32位的宽度,有8位可以是大字段,有8位可以是小字端

这个由这个设备决定,相当于mixed 混合的字节不变性。

这个说起来有点绕,画个图就解决问题了。

这个图是宽度32,然后每次都是传32位,前两个字节小字端,后面两个大字端。然后后续的transfer也必须按照这个规矩来

官方图也很好理解,如图所示。

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

最后一个就是不对齐传输了 ,其实不对齐蛮好理解的,就是传送的不工整,每一次传输的起始地址并不是2,4,8的倍数举一个例子,还是画图

这个就是典型不对齐,地址分别在每次传输的时候是,0,3,6,8,9

画一个对齐的

三次传输每次的地址,0,4,8这就是4的倍数,而且边界对齐。

这里翻译梳理。

AXI原型支持不对齐的传输,即对于任何一种burst传输,如果对于任意一个transfer如果每次transfer超过了一个字节,每一次传输的第一个字节,地址都不是遵守这个自然的地址边界,

也就是像上图一样不是0.4.8这种或者0246这种。这句话就是官方给我们的不对齐传输定义。

这里很温馨的也给了我们举了例子,假设有一个32位宽的数据,开始的时候首个地址,是从1002这个地方出发,也就是说,这个不是对齐的。画一个图

这时候就是例子,第一次传输是0002这个位置开始的,所以有16bit错开了。

这里有两个小注意,其实可以看看。

这个表示的是低地址上的信息如果想要是有效的,则必须要求对应的数据通路是符合的,这个有点绕口,其实就是说,假设是小字端排序,存储空间只要低地址的两个字节是有效数据,则此时地址通路应该是0011

第二个注释,其实按我的理解就是,如果说主设备发过来的数据呢是对齐的!注意(这次讨论的仍然是写数据,因为读数据没有必要去研究,读数据只需要我们,自己写地址,数据自然就来了)那么从设备不需要去

对此再做什么特殊动作,意思就是主设备发过来只要对齐就行了。也就是每一次地址传,就按着倍数增长就行了2.4.8这种。当然设备也可以不对齐传输,只要读写地址安排好就可以了,不强求对齐,但是建议对齐。

同样光说不练也不行,这里官方也给了一些案例

前四个案例的条件如上图,都是增长incr burst 然后有对齐的不对齐的,每一次都是传32位的数据,数据总线宽32.也就是说burst size 是4 。字节通路为1111.

第一幅图对齐的。不用多看

第二幅图没有对齐,因为四次传输的地址分别是1.5.9.D.所以没有对齐。

第三幅图也是没有对齐,五次传输分别地址是1,5,9,D,0X11.只是最后一次transfer没有画完

第四幅图也是没有对齐 五次传输分别地址是7,B,F,13,17 最后一次传输也没有画完。

这里是第二个例子,表示的是64的data bus,burst size 是4.这个就不做解析了和前面一样分析即可。

记得这个wrap模式。到了边界地址之后,又回到原来的地址上去。其他的法则一样,只是地址需要回来,也就是前半过程和后半过程都是类似incr的

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

好了 关于写数据通道我们就完全解决了!!!接下来就最后一个连载,就是关于读写响应的!!!!!!!经过一周的解析,完全明白了AXI原型的内容,

等明天结束就可以结束AXI原型,进入具体的AXI了,也就是在此基础上补充一些内容即可。

今天很悲催,笔者忘记带钥匙了,被关在家门外一个多小时,耽误了时间,要不然是想着把响应写了的 !

无奈游戏事业也是需要时间啊!!!!

好了明天见

AXI总线学习-------从零开始详细学-------------连载(9)读数据通中字节不变性相关推荐

  1. AXI总线学习-------从零开始详细学-------------连载(8)读数据通中字节通路,narrow transfer

    AXI总线学习连载(8) 鲁迅曾经说过: 学硬件,不是学哪里查哪里,有一些东西是必须系统的学的,不管是嵌入式还是FPGA,硬件学习的积累一定要是系统的. 我也曾经说过: 英文手册非常重要,这是学习硬件 ...

  2. AXI总线学习(AXI34)

    AXI总线学习 AXI协议的主要特征 主要结构 通道定义 读写地址通道 读数据通道 写数据通道 写操作回应信号 接口和互联 寄存器片 基本传输 Read burst Overlapping read ...

  3. AXI 总线学习记录

    AMBAaxi的特点: ​ 适合高带宽和低延迟的设计: ​ 能够在不适用复杂桥的情况下确保高频操作: ​ 满足广泛组件的接口需求: ​ 适合于带有高初始化延迟的内存控制器: ​ 为互联架构的实现提供灵 ...

  4. AXI 总线协议学习笔记(2)

    引言 从本文开始,正式系统性学学习AXI总线. 如何获取官方协议标准? 第一步:登陆官网:armDeveloper 第二步:登录,无账号需要注册 第三步:点击文档 第四步: 第五步:浏览页面建议下载下 ...

  5. 《Python深度学习从零开始学》简介

    #好书推荐##好书奇遇季#深度学习入门书<Python深度学习从零开始学>,京东当当天猫都有发售.从模型和实验入手,快速掌握深度学习技术. 业内大咖强力推荐!!!武汉大学信息管理学院教授 ...

  6. AXI 总线协议学习笔记(4)

    引言 前面两篇博文从简单介绍的角度说明了 AXI协议规范. AXI 总线协议学习笔记(2) AXI 总线协议学习笔记(3) 从本篇开始,详细翻译并学习AXI协议的官方发布规范. 文档中的时序图说明: ...

  7. AXI 总线协议学习笔记(3)

    引言 上篇文章主要介绍了 AMBA以及AXI协议的基本内容,本文接续前文,继续介绍AXI协议的 原子访问.传输行为和事务顺序等. AXI 总线协议学习笔记(2)https://blog.csdn.ne ...

  8. Xilinx-ZYNQ7000系列-学习笔记(10):AXI总线

    Xilinx-ZYNQ7000系列-学习笔记(10):AXI总线 1.AXI总线概述 在ZYNQ中有支持三种AXI总线,拥有三种AXI接口,当然用的都是AXI协议.其中三种AXI总线分别为: AXI4 ...

  9. 从零开始单排学设计模式「UML类图」定级赛

    阅读本文大概需要 3.5 分钟. 本篇是设计模式系列的开篇,虽然之前也写过相应的文章,但是因为种种原因后来断掉了,而且发现之前写的内容也很渣,不够系统. 所以现在打算重写,加上距离现在也有一段时间了, ...

最新文章

  1. 2015第22周一Web性能测试工具及IE扩展区别
  2. 面试时,当你有权提问时,别客气,这是个逆转的好机会(内容摘自Java Web轻量级开发面试教程)...
  3. Vue + Spring Boot——axios使用GET以参数的方式传递对象到SpringMVC解决方案
  4. 计算已经生活了多少天的小题目
  5. 手机也能当电脑用?--谈谈未来智能手机操作系统的走向
  6. ram自己写?用IP?
  7. matlab 请验证三角等式,[转载]matlab
  8. 洛谷1363——幻想迷宫(搜索)
  9. 机器学习 周志华-西瓜书 全文内容分享
  10. 电脑ping不通的原因
  11. 杭电ACMSteps中Chapter One——Section 3中所有ac代码及解析
  12. shap 模型_使用shap loss值调试监控模型
  13. Java移除出界敌机,java实现飞机大战案例详解
  14. 让机器学会断句:基于词典的Bigram分词算法
  15. 插值与拟合 (二) : 曲线拟合的线性最小二乘法
  16. Linux自动化运维部署+运维
  17. DCS是分布式控制系统的英文缩写(Distributed Control System)
  18. python设计一个函数定义计算并返回n价调和函数_python函数的调和平均值?
  19. 一图看完北京互联网公司分布!中关村、后厂村、望京互联网公司扎堆圣地。
  20. 每个人的心里都有两头狼

热门文章

  1. Linux 查找最大文件
  2. 基于datepicker的只选择年月的日期选择器
  3. 评委拍案叫绝、项目惊喜不断,这是一届怎样的 Hackathon ?丨TiDB Hackathon 2021 回顾
  4. SQL Server 远程备份还原数据库
  5. POJ1020-Anniversary Cake
  6. 阿里云服务器5m带宽建网站支持多少人同时在线?并发数计算
  7. android studio 错误:类重复 解决办法
  8. ipdb调试dataloader
  9. MySQL中between和大于小于的比较
  10. 基于halcon的木板缺陷检测算法代码-基于halcon的区域增长、大津分割算法、直方图均衡化