AXI总线学习连载(6)

鲁迅曾经说过:

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

我也曾经说过:

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

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

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

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

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

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

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

这一章节我们将要学习的是处理的结构(transacation structure)

由以下四个部分构成处理的结构

1.地址结构 structure

2.关于transfer的伪代码讲解

3.读数据和写数据的结构

4.读和写响应的结构

这里将会有一些关于概念的定义,我们首先来理解什么是TRANSACATION,英文里其实叫做处理,我们可以形象理解,在系统内部五个通道其实分为两组

完成了主从设备间的读和写的任务,所以我们可以理解为这就是处理。

好了继续进入第一个问题

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

1.地址结构 structure

这个好理解,其实就是研究,读处理还是写处理当中的地址问题,说白了就是,地址通道内,要传递的地址信息和控制信息。

我们要知道axi原型建立在burst机制上的。什么是burst机制这里做一个讲解。

burst:突发传输,就是说,每一个处理里面,包含了若干个这样的burst,每一次burst都是很多拍子(beat)的transfer。

这么说有点模糊,我举一个例子,首先假设这次处理是一个读处理,那么我们知道,读处理里我们先得有地址和控制信息,然后在数据通道内传递数据,

我们这么形容,在数据通道内部我们一拍一拍的传递数据,每一拍我们叫做一次transfer,然后若干transfer构成了一个burst,请注意这里是数据通道哈,

如果我们再加上对应的写地址通道内部的工作,合在一起,这就叫做transcation。

好了继续,这个就是burst机制,burst机制的产生,能够让我们的目标设备和源设备完成信息交换,但是是分别有通道的。举一个例子无论是读写处理,

我们都可以知道主设备能够在这个机制上,首先把地址和控制信息传过去,这个是在各自的地址通道内部进行的。但是每一次传递的是什么呢,其实地址通道

每一次传递给从设备的,都是这一次处理当中,数据通道内要传的数据的第一个字节的地址!!!,记住其实地址只传递一个,这个地址是数据的第一个字节,

然后再传递一些控制信息,从设备根据这些信息计算解析接下来的数据的地址。

这就是我们说的地址结构!!!!总结一下每一次处理行为,都是先有地址通道内工作,地址通道内会传递接下来数据第一个字节的地址,然后传一些控制信号

这些控制信号计算接下来数据的地址

至于这些控制信号是什么样的我们继续讲解

首先,我们必须要知道,多个brust构成一个完全的处理,为什么要这么做呢,我来讲解一下,其实在系统内部,或者说寄存器电路内部,一个从设备带有的寄存器

宽度就是4KB,这怎么理解,其实就是说只能放下4*1024个字节,所以,每一次burst一定不能超过这么多个字节数据量,假设数据通道内部总线有32位,那么每一次

burst就只能128拍(128次transfer),因为32*128等于4KB,有的人会问了,如果说从设备假设是一个RAM呢?这个RAM宽度32,深度1024,这不是超过了吗,所以

我们会发现在处理器和RAM从设备之间,我们都会放一些互联结构或者是控制器,这样我们可以通过重复多次burst来达到一次写处理,只是每一次的burst我们发的启示

地址不同了而已。

好了,这个问题不用多纠结,我们就记住,一次burst只能传递4KB的数据,根据数据总线宽度变化,决定有多少拍(transfer).记住这句话,后面的概念其实就是这句话。

接下来我们介绍一个新的概念

burst length  刚才我们说了一次burst最大包含4kB字节,但是这个数据量其实是根据总线宽度来决定的,假设我们有32位数据线,则每一拍其实传4个字节,这时候一共需要

128拍才会完全传4kB的量,所以我们把128叫做burst length 通俗点就是多少次transfer。这个burst length 是根据 总线宽度和这个上限4KB共同决定的,当然你也可以不传满。

你看这就是我们说的控制信息的一种,叫做burst length ,这个信息要得到表现,肯定需要一个信号线,接下来就介绍这两个

这里请注意,这两个信号线都是在写和读的地址通道内部喔,所以这也印证了这是一个地址控制信息,为什么要有这个信息,这个信息决定了我们要有多少拍(tansfer),至于我们讲的

每一拍传多少位(burst size)我们后面说。

好了详细解析下这个信号线的含义

ARLEN用于写地址

AWLEN用于读地址

由于是对称的,所以以后就用AXLEN代表

关于不同的axi总线,在使用AXLEN有不一样的要求

AXI3支持burst LENGTH为1到16

AXI4支持INCR 这类burst 为1到256 ,其他burst类型则还是1到16

(BURST type 同样是控制信息的一种,这个后续解释)

给一个官方公式

这个公式怎么用,解释一下,如果说,我们知道了burst type(后续说)也知道了burst size (用到了的总线位宽 后续说)我们就可以计算出burst length,假设burst length是16.那么对于axi3来讲

axlen[3:0]就应该是1111.同理AXI4一样,也就是burst length -1 就是我们要给这个信号线上赋予的值。由于axi4支持burst length更多,但是需要注意,burst length和总线宽度一起决定了当前

传多少字节,一定注意单次burst不超过4kB(什么叫单词burst,就是每一次我们不是会发送一个起始地址吗,基于这个起始地址不能超过4KB,一个地址代表一个字节哈,这是字节寻址,如果

想要超过4kB,那么请进入下一个BURST也就是说,起始地址需要变化)

后面有三个小注释

对于wrap类型burst,BURST长度控制在2,4,8,16 这个先不管,先放在这

第二个单次burst,一定不能超过4KB边界,也就是说数据总量不能超过,4*1024字节

最后一个就是不能提前终止一次burst!!!!

讨论到这里我们可以总结一下

其实所有的设备都不能够提前去终止一次burst,但是我们可以去修改这个burst length的值,但是必须按规矩来,由于burst lenth是AXLEN这个线,也就是主设备发出来的,所以主设备其实可以

关闭接下来未发生的burst,这也印证了一个控制的含义,当然还可以利用字节使能来关闭,这个后续再说什么意思,现在我们要清楚的知道,主设备必须要完成已经开始的burst。

关于burst length 我们就先学习到这里

总结下来就是,burst length 代表一次burst 有多少拍,上限地址为4KB,需要根据总线宽度(burst size)决定

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

接下来就是burst size ,其实这个都好理解了,burst size 就是指数据通道内部,总线宽度,就是每一拍同时传多少位,burst size*burst length 就是说每一次burst 会传送多少字节,

这是官方定义,也就是说是由AXSIZE这个线路作为赋值,所以我们可以清楚看见,不同值对应每一次transfer(每一拍)传递多少个字节,

当然你可以乘以8表示每一次是多少位

做一个小练习,假设AXSIZE是111,这就代表每一次必须传128个字节,也就是说为了不超过4KB限制,BURST length 最大只能为32也就是说,只能持续32拍,就必须进入

下一次burst,下一次burst就必须要重新开始赋值一次这些量,包括起始的地址。这时候AXLEN的值应该是31,因为按照定义,AXLEN+1等于burst length。31的二进制数

是多少呢,这个你用计算器也好还是自己手动算,结果都放出来,也就是说,此时AXLEN赋值应该用一个语句;

AXLEN[......]<=8'd31; 当然这是axi4的时候哈。仅仅是举一个例子 看懂就行

以上这句话如果你明白了,你就懂得了,如果你说不是说,256是axi4最大支持的burst length吗,兄弟,一定要注意,一切都不能超过4kB,256只是可选项而已。

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

好了这一连载就结束了,我们总结一下,其实就是学习了这个地址通道内传递的控制信息,第一个是AXLEN代表的是BURST LENTH只不过至于 AXLEN=BURST LENTH-1;

代表着一共可以穿多少拍。第二个就是BURST SIZE他的单位是代表总线一共是多少字节,也就是说burst SIZE 乘以8就是数据总线位宽。这两个乘起来,代表的是单次burst

可以传多少个字节,但是一定记住,系统是字节编址,字节编址代表在从设备上的寄存器,每一个字节有一个地址,这个容量不超过4KB,也就是说,假设起始第一个第一地址为0x0,

最后一个不能不能为0x4000.因为十六进制4000代表一共可以有4*1024+1个字节,也就是印证了刚才说的边界地址不超过4KB含义。

如果说有一次写或者读行为超过这么多次,那么则进行下一个burst 下一个burst可以重新配置,重新设起始地址,burst length burst size等

下一个连载我们会讲解burst type 和burst address  。

好了天色不早了已经一点钟了,我也需要睡觉了。好好感受这次的内容,这是地址通道内的信号,表示控制信息,这些控制信息,控制着数据通道内的表现,从而帮助

我们完成读写处理。好了明天再见。写了两讲也花了几个小时,蛮辛苦,就当作找工作前复习吧。

AXI总线学习-------从零开始详细学-------------连载(6)读写处理架构,burst介绍,burst细节定义(burst size burst length)相关推荐

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

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

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

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

  3. AXI总线学习(AXI34)

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

  4. 基于 PYNQ 的 AXI 总线主从控制编写(ddr3的读写)

    菜鸟一枚,最近也学习了关于 AXI 总线的相关知识.基于 PYNQ 编写了一个简单的 AXI 主从控制(牵涉到 DDR3 的读写). 设计目的 设计出以下一个通过 AXI 总线连接的简单片上系统.包含 ...

  5. AXI 总线学习记录

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. c语言第1章以下说法错误的是,计算机等级考试c语言程序设计习题
  2. cookie的作用域
  3. VTK:几何对象之Dodecahedron
  4. SAP UI5 walkthrough第一第二部分解析:data-sap-ui-libs=“sap.ui.commons,sap.ui.table“
  5. 1.1 一个简单的脚本
  6. 揪出MySQL磁盘消耗迅猛的真凶
  7. devexpress 创建窗口句柄时出错_MATLAB函数句柄
  8. azure云数据库_Azure Data Studio中的服务器和数据库仪表板
  9. html5/haXe开发偶感
  10. XX复盘记录(模板)
  11. 继电器(Relay)
  12. 光辉岁月-Beyond_习惯累积沉淀_新浪博客
  13. 身高体重排序-华为OD
  14. CCD视觉应用上有哪些优势
  15. java的 violate 和 synchronize
  16. 【C++】野指针及其危害
  17. 解决TeamViewer远程连接受阻的方法
  18. 直播与知识变现平台的现状分析和主流产品调研
  19. LTE前台路测切换问题处理
  20. 【比特鹏哥C语言_3.函数】

热门文章

  1. android视频加速播放
  2. QPS 与 TPS是什么
  3. 编程题a ~ y的25个字母,从1位到4位的编码,输出这个编码对应的Index
  4. XILINX FPGA最小逻辑单元CLBs, Slices和LUT区别
  5. 用命令如何返回上级目录
  6. 为何要学习游戏引擎底层技术
  7. Node.js开发入门—使用http访问外部世界
  8. checking for libzip... configure: error: system libzip must be upgraded to version = 0.11问题解决
  9. SpringBoot RESTful API 架构风格实践
  10. 【深度学习】眼底图像之视盘和黄斑分割的探索