当前位置: 首页 > news >正文

AMBA-AXI(一)burst 传输-INCR/WRAP/Fixed


💡Note:

本文是根据AXI协议IHI0022F_b_amba_axi_protocol_spec.pdf(issue F)整理的。

主要是分享AXI3.0和4.0部分。

如果内容有问题请大家在评论区中指出,有补充或者疑问也可以发在评论区,互相学习🙌


Burst 传输

跟burst相关的信号有AxSIZE, AxLEN, AxBURST,编码如下:

AXI对burst传输方式的要求:

  1. AXI3.0中incr burst的burst length最大为8,AxLEN为4bit信号;在AXI4.0中,incr burst的burst length为256,AxLEN为8bit信号。

  1. 对于其他类型的burst传输(fixed,wrap),burst length最大16.

  1. AXI4.0(H suite)中说,对于非INCR burst,支持1-16 burst length,但后面又说wrap传输只支持2、4、8、16 burst length。

  1. Burst length不能超过4KB边界。

  1. Burst 传输不能被提前终止,即使发生了传输错误。在写中,发生错误,也还要将写传输周期完成,master可以将wtrb拉低。在读的时候,传输周期也要完成,但是master可以discard data。

对于device设备,读操作发生错误,会怎么样呢?Device memory一般是read-sensitive的,读了之后,device中的设备就被移除了,如果我们把数据discard,这些数据就丢失了。所以spec中建议:a Manager must use a burst length that exactly matches the size of the required data transfer.

  1. 在AXI4.0中,对于一个non-modifible的INCR burst,并且她的长度大于16,也可以把它转换成多个小的burst。虽然是non-modifiable,也可以改变,但只能改变Axlen和响应的地址,其他的控制信号不能改变。

  1. 要注意,AxBURST, AxLEN, AxSIZE这些信号,在Axvalid, Axready同时为高的那一个周期内被采样一次,而不是每次transfer都采样。RDATA/RRESP是每个transfer都会返回,而BRESP是一个burst只返回一次。

  1. 对于exclusive access ,还有一些特殊的要求,见exclusive 部分。

Wrap 操作

  1. wrap的burst length为2、4、8、16,没有1.(如果是1的话,那么就是fixed address了)

  1. Wrap的地址要跟transfer size对齐,比如地址位宽是64bit,transfer size是32bit,那么地址要跟0x4对齐,不能是0x1,0x2,0x3这种。

  1. 要知道Wrap boundary address是什么?Wrap boundary是小于等于传输的起始地址,它跟burst的byte size(burst length*transfer size)对齐。比如AxSIZE为2,也就是4个byte的transfer size,burst length为4,所以这个burst的transfer size 为0x10,如果传输是从0x14开始的,那么每次transfer的起始地址是0x14->0x18->0x1c->0x10,会返回到0x10,这个0x10就是wrap boundary address。(始终要记住,地址是跟transfer size对齐,也就是跟0x4对齐)

  1. Wrap传输一般用在cache access中。

  1. AxBURST[1:0]==0b10表示wrap传输

  1. 在非对齐写访问中,比如transfer szie是4byte,数据位宽是8byte,那么地址也要跟transfer size对齐。

INCR读写example

上图是读操作,ARVALID和ARREADY同时有效的时候,采样相关的控制信号,下一个周期ARVALID和ARREAD拉低,在一次burst传输中,控制信号只采样一次。

上图读操作的burst length是4,4次transfer,从图中可以看出,每次transfer 都要回一个rresp,这跟写不同,写只回一次bresp;最后一次transfer的时候,RLAST拉高一个cycle。

写跟读的不同是写的bresp只回一次。在所有数据都传输结束之后会resp。

问题:如果slave那边在burst传输过程中,buffer满了,发生slave error,slave会提前发送resp告诉master吗?

猜测:应该不会,因为即使发生错误,也要把burst传输完成。但也有可能会提前返回resp,这样可以告诉master,后面的数据可以只发0就行了,把wstrb都拉低。

相关文章:

AMBA-AXI(一)burst 传输-INCR/WRAP/Fixed

💡Note:本文是根据AXI协议IHI0022F_b_amba_axi_protocol_spec.pdf(issue F)整理的。主要是分享AXI3.0和4.0部分。如果内容有问题请大家在评论区中指出,有补充或者疑问也可以发在评论区,互相学习&#x1f64…...

Java知识复习(八)Spring基础

1、什么是Spring框架? Spring :是一款开源的轻量级 Java 开发框架,旨在提高开发人员的开发效率以及系统的可维护性 2、Spring、SpringMVC和SpringBoot的区别 Spring主要指Spring Framework,就是指如上图所示的各项功能模块Spr…...

WuThreat身份安全云-TVD每日漏洞情报-2023-02-27

漏洞名称:OTFCC 缓冲区错误漏洞 漏洞级别:中危 漏洞编号:CVE-2022-35060,CNVD-2023-11996,CNNVD-202209-1527 相关涉及:OTFCC OTFCC 漏洞状态:EXP 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2022-23648 漏洞名称:MuYucms 存在任意代码执行漏洞 漏洞级别:高危…...

上海交大陈海波教授、夏虞斌教授领衔巨作上市:《操作系统:原理与实现》

❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。2022年度博客之星评选TOP 10🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作…...

dpi数据接入shell脚

原文:dpi数据接入shell脚本_weixin_34416754的博客-CSDN博客 ##############从ftp服务器拿数据文件 #!/bin/bash #获取感知优良率DPI数据 #DCN服务器信息 uSichuan pS988188# ip137.192.5.53 #获取日期,根据日期抓取文件 Tdate -d "3 days ago&…...

Easyrecovery数据恢复软件工作原理及使用介绍教程

Easyrecovery是一款强大的数据恢复软件,它专门解决磁盘数据恢复问题。在计算机世界里,数据丢失经常是一件令人头疼的事情,但是有了Easyrecovery,您可以放心大胆地享受数据备份和恢复的乐趣。EasyRecovery使用Ontrack公司复杂的模式…...

【面试题】社招中级前端笔试面试题总结

大厂面试题分享 面试题库后端面试题库 (面试必备) 推荐:★★★★★地址:前端面试题库typeof null 的结果是什么,为什么?typeof null 的结果是Object。在 JavaScript 第一个版本中,所有值都存储在…...

设备运行状况不能远程手机查看。难道就妥协吗?为何不试试这个办法

一、背景 随着国家经济结构逐步调整,纺织行业自动化、智能化水平逐步提高,业内竞争程度也将加大;整个市场变化快,并呈现出智能化、通用化、网络化、复杂化的新发展趋势。客户订单小批量、个性化、快速交货的特点越来越明显&#…...

重新认识 Java 中的内存映射(mmap)

mmap 基础概念 mmap 是一种内存映射文件的方法,即将一个文件映射到进程的地址空间,实现文件磁盘地址和一段进程虚拟地址的映射。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页到对应的文…...

224. 基本计算器

224. 基本计算器给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。 示例 1:输入:s "1 1"输出:2示例 2&#…...

微信小程序通过 node 连接 mysql——方法,简要原理,及一些常见问题

前言 博主自己在22年夏天根据课程要求做了一个小程序连接阿里云服务器的案例,在最近又碰到了相应的需求。 原参考文章:微信小程序 Node连接本地MYSQL_微信小程序nodejs连接数据库_JJJenny0607的博客-CSDN博客 ,还请多多支持原作者! 第二次…...

uni-app项目搭建和代码托管

文章目录一、项目搭建步骤一、HBuilder X 创建uniapp项目步骤二、开启微信小程序服务端口步骤三、把项目运行到微信小程序步骤四、解决警告二、使用Git管理项目2-1、本地管理2-2、托管到码云一、项目搭建 步骤一、HBuilder X 创建uniapp项目 步骤二、开启微信小程序服务端口 步…...

win10+python3.6+cuda9+pytorch1.1.0安装

为了让torch可以使用显卡GPU加速,需要安装对应版本的cudatoolkit和pytorch。这里我的nvidia显卡驱动是9.1版本,只能安装cudatoolkit9。 一般支持gpu加速的显卡大部分都是英伟达nvidia系列,都自带了nvidia驱动,所以不需要安装nvidi…...

【2023】某python语言程序设计跟学第二周内容

本文说明: 案例内容为北理工python语言程序设计课程,如有不妥请联系! 目录蟒蛇绘制案例:执行结果:代码分析:举一反三:绘制一个五角星图案执行结果:turtle库根据案例简单说明&#xf…...

spring源码篇——BeanDefinition的注册

spring-framework 版本:v5.3.19 文章目录注解方式(AnnotationConfigApplicationContext)AnnotationConfigApplicationContext#registerAnnotatedBeanDefinitionReader#doRegisterBeanBeanDefinitionRegistry#registerBeanDefinitionAnnotatio…...

virtualbox7虚拟机中安装苹果macOS big sur系统详细教程

第1步,在 Windows 10/11 PC 上启用虚拟化。 现在的电脑一般都默认开启虚拟化技术了。 如果你遇到一些报错,比如收到错误消息“无法在虚拟机上打开会话”,可以查看 如果没有遇到问题,可以直接进入到第二步。 第2步,在…...

用spectralayers 简单去一下人声做个伴奏

最近有个同事说有个工作要一个歌的伴奏不会下载问我能不能给下一个。问题是我五音不全,也不咋关注伴奏这方面的事儿,然后巧了,当天晚上就有个网上的大哥在群里聊天的时候说有个去人声比较给力的软件,我马上给要来了。 软件叫啥sp…...

高峰对话|深度探讨「多云与边缘」

2022 年 12 月,分析师 Zeus Kerravala 与 VMware 通信运营商和边缘事业部高级副总裁兼总经理 Sanjay Uppal 进行非常有启发性的谈话,分享了科技行业领导者的见解。 二位主要围绕以下主题进行探讨: 📍 如何定义多云,以…...

开发手册——一、编程规约_2.常量定义

这篇文章主要梳理了在java的实际开发过程中的编程规范问题。本篇文章主要借鉴于《阿里巴巴java开发手册终极版》 下面我们一起来看一下吧。 1. 【强制】不允许任何魔法值(即未经定义的常量)直接出现在代码中。 反例:String key "Id#…...

Sandstorm 建设者亮点——2023 年 2 月

隆重推出 Sandstorm 建设者亮点——2023 年 2 月版,这是由最厉害的 Sandstorm 社区制作的独一无二的 NFT 系列。 从突破性的兔子机器人到神奇的蒸汽朋克海盗船,Sandstorm 建设者亮点 NFT 系列展示了一系列独一无二的创作。 19 项新资产将添加至 Sandstor…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

django filter 统计数量 按属性去重

在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中&#xff0…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态

前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...