AXI Memory Mapped to PCI Express学习笔记(一)——PCIe事务

news2024/12/28 18:29:54

1 PCIe事务

AXI事务对于PCIe来说,主要涉及到在AXI总线和PCIe总线之间进行数据交换和通信的过程。在PCIe系统中,AXI总线作为一个连接不同组件的桥梁,可以实现高效的数据传输和事务处理。

AXI事务通常包括读事务和写事务。在读事务中,AXI主设备向AXI从设备发起读请求,从设备在接收到请求后返回相应的数据给主设备。而在写事务中,AXI主设备将数据发送到AXI从设备,从设备在接收到数据后进行存储或处理。

另外,s_axi_wstrb在AXI总线中确实用于表示数据写入时的字节选择信号。它是一个8位的信号,每一位对应着数据总线(DATABUS)中的一个字节。当写入数据时,s_axi_wstrb的每一位都被设置为1或0,以表示哪些字节需要被写入。s_axi_wstrb标识的有效数据顺序是从第一个字节使能到最后一个字节使能因为AXI总线是基于突发传输的,所以在一次突发传输中,有效数据必须是连续的,以确保数据的完整性和一致性。

2 PCIe事务排序

AXI Memory Mapped to PCI Express core遵循严格的PCIe事务排序规则。完整的规则集请参考PCIe v2.1规范。为了在桥接器的高度并行的AXI总线上强制执行PCIe事务排序规则,AXI Memory Mapped to PCI Express core实现了以下行为。这些规则的执行不考虑TLP头部中的Relaxed Ordering属性位。

1、对于写入远程PCIe设备的操作,远程(请求方)AXI4主设备的bresp(响应)不会在MemWr TLP(事务层包)传输被保证在PCIe链路上发送,且任何后续TX-transfers(传输)之前发出。

2、远程AXI主设备对远程PCIe设备的读取操作不允许超过任何先前或同时发生的对远程PCIe设备的AXI主设备写入操作。时序基于AXI arvalid信号时序相对于AXI awvalid的时序。任何在awvalid被断言之前或同时与从PCIe读取的arvalid被断言的AXI写入事务,都会导致MemRd TLP(事务层包)被保持,直到流水线或同时发生的MemWr TLP(事务层包)被发送。

3、远程AXI从设备的远程PCIe设备读取操作不允许超过任何先前由AXI Memory Mapped to PCI Express核心接收到的对远程AXI从设备的远程PCIe设备写入操作。AXI读取地址阶段会被保持,直到先前的AXI写入事务完成,并且AXI写入事务的bresp(响应)已被接收。

4、从远程PCIe设备接收到的读取完成数据不允许超过AXI Memory Mapped to PCI Express core在读取完成数据之前接收到的任何对远程AXI从设备的远程PCIe设备写入操作。AXI写入的bresp必须在完成数据出现在AXI读取数据通道上之前被接收。

5、从远程AXI从设备读取的数据不允许超过在AXI总线上发起且先于或同时于读取数据返回的任何对远程PCIe设备的远程AXI主设备写入操作。时序基于AXI awvalid信号时序相对于AXI rvalid断言的时序。任何在awvalid被断言之前或同时与rvalid被断言直到最后一个数据节拍(包括该数据节拍)的AXI写入事务,都会导致Completion TLP(事务层包)被保持,直到流水线或同时发生的MemWr TLP(事务层包)被发送。

总之,这些规则确保了数据一致性和操作的顺序性。在AXI总线上的读取和写入操作需要按照特定的顺序进行,以确保数据的完整性和系统的稳定性。特别是在处理来自远程PCIe设备的读取完成数据和向远程AXI从设备或远程PCIe设备的写入操作时,这些规则尤为重要。它们防止了可能的数据冲突或时序问题,从而确保了系统的正确运行。

注意:PCIe的事务排序规则可能会在高双向流量情况下对数据吞吐量产生影响

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1549581.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux(CentOS)/Windows-C++ 云备份项目(服务器网络通信模块,业务处理模块设计,断点续传设计)

此模块将网络通信模块和业务处理模块进行了合并 网络通信通过httplib库搭建完成业务处理: 文件上传请求:备份客户端上传的文件,响应上传成功客户端列表请求:客户端请求备份文件的请求页面,服务器响应文件下载请求&…

Div4 898 G,H

Here G. ABBC or BACB 解题思路 一个可以向左或向右吃掉一段连续的将连续的合成一个则字符串变为每个之间被隔开统计变化后和的数量为若,则若,则只会大1,即有一段没被吃掉,则让长度最小的剩下,省略号间的的个数不影响…

Partisia Blockchain:真正做到兼顾隐私、高性能和可拓展的公链

目前,包括 Secret Network、Oasis Protocol 等在内的绝大多数以隐私为特性的可编程公链,在兼顾隐私的同时,在可拓展以及性能上或多或少的有所牺牲,即难以对诸多实际应用场景进行支撑。这归咎于链的设计以及共识机制的不合理&#…

C++ explicit隐式类型转换

单参数构造函数支持隐式类型的转换 什么意思? 简单来理解就是: 一个类对象的构造函数的参数只有一个,就可以直接进行赋值传参 例如构造函数的参数为int,且只有一个int 就可以直接将int类型的整型数据转换成类对象 也就是说从int类…

JavaScript、ES6与微信小程序:工具箱、升级与新房子

JavaScript、ES6和微信小程序三者之间有什么联系?我想,作为初学者还是有点蒙。下面作一个简单的分析,供大家参考。 首先,我们可以把JavaScript想象成一个非常强大的工具箱,里面装满了各种各样的工具。这些工具可以帮助我们完成各种任务,比如…

SpringBoot集成 itextpdf 根据模板动态生成PDF

目录 需求说明前期准备Spring Boot 集成添加依赖构建工具类构建MultipartFile编辑PDF模板Java代码设置对应form的key-value 需求说明 根据合同模板,将动态的合同标签,合同方以及合同签约时间等动态的生成PDF,供用户下载打印。 前期准备 安…

C语言看完我这篇编译与链接就够啦!!!

1. 前言 Hello!大家好我是小陈,今天来给大家介绍最详细的C语言编译与链接。 2. 编译和链接 我们通常用的编译器,比如Visual Sudio,这样的IDE(集成开发环境)一般将编译和链接的过程一步完成,通常将这这种编译和链接合…

腾讯云4核8G服务器性能测评_CPU内存性能_带宽流量_系统盘

腾讯云4核8G服务器价格:轻量4核8G12M优惠价格646元15个月、CVM S5服务器4核8G配置1437元买1年送3个月。腾讯云4核8G服务器支持多少人同时在线?支持30个并发数,可容纳日均1万IP人数访问。腾讯云百科txybk.com整理4核8G服务器支持多少人同时在线…

MySQL数据库 - 单表查询(三)

一个不知名大学生,江湖人称菜狗 original author: Jacky Li Email : 3435673055qq.com Time of completion:2024.03.24 Last edited: 2024.03.24 目录 第1关:对查询结果进行排序 任务描述 相关知识 对查询结果排序 指定排序方向 编程要…

设计模式之建造者模式精讲

也叫生成器模式。将一个复杂的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 在建造者模式中,有如下4个角色: 抽象建造者(Builder):用于规范产品的各个组成部分,并进行抽象&…

U盘未格式化,数据恢复攻略大揭秘

U盘遭遇未格式化困境,数据安全岌岌可危 在日常的工作和生活中,U盘以其便携、容量大的特性成为了我们不可或缺的存储工具。然而,有时我们会遇到这样一个棘手的问题:当我们将U盘插入电脑时,却收到了“未格式化”的提示。…

Vue3新手教程

Vue3新手教程 一. Vue3简介1. 性能的提升2.源码的升级3. 拥抱TypeScript4. 新的特性 二. 创建Vue3工程1. 基于 vue-cli 创建2. 基于 vite 创建(推荐)3. 一个简单的效果 三. Vue3核心语法1. OptionsAPI 与 CompositionAPI2. 拉开序幕的 setup2.1 setup 概述2.2 setup 的返回值2.…

【LVGL-键盘部件,实体按键控制】

LVGL-二维码库 ■ LVGL-键盘部件■ 示例一:键盘弹窗提示■ 示例二:设置键盘模式■ 综合示例: ■ LVGL-实体按键控制■ 简介 ■ LVGL-键盘部件 ■ 示例一:键盘弹窗提示 lv_keyboard_set_popovers(kb,true);■ 示例二:设…

拿到今日现货白银价格 如何开始分析?

很多投资者看到近期现货白银的强劲涨势,并且开户入场。但入场之后,他们发现对如何找到机会还不甚了解。比方说我们拿到今日现货白银价格要如何开始分析呢,很多新入场的投资者根本没有头绪,下面我们就来讨论一下相关的方法。 我们可…

PyTorch 教程-快速上手指南

文章目录 PyTorch Quickstart1.处理数据2.创建模型3.优化模型参数4.保存模型5.加载模型 PyTorch 基础入门1.Tensors1.1初始化张量1.2张量的属性1.3张量运算1.3.1张量的索引和切片1.3.2张量的连接1.3.3算术运算1.3.4单元素张量转变为Python数值 1.4Tensor与NumPy的桥接1.4.1Tens…

HCIP-Datacom(H12-821)题库补充(3/26)

最新 HCIP-Datacom(H12-821)完整题库请扫描上方二维码访问,持续更新中。 在运行STP的网络中,网络拓扑改变时会发送多种拓扑改变信息,在RSTP的网络中定义了几种拓扑改变信息? A:一种 B:二种 …

【前端学习——js篇】6.事件模型

具体见:https://github.com/febobo/web-interview 6.事件模型 ①事件与事件流 事件(Events) 事件是指页面中发生的交互行为,比如用户点击按钮、键盘输入、鼠标移动等。在js中,可以通过事件来触发相应的操作,例如执行函数、改变…

Rust编程(三)生命周期与异常处理

生命周期 生命周期,简而言之就是引用的有效作用域。在大多数时候,我们无需手动的声明生命周期,因为编译器可以自动进行推导。生命周期的主要作用是避免悬垂引用,它会导致程序引用了本不该引用的数据: {let r;{let x …

Autosar-CanNm、Nm配置详解(免费)-1

3.1由DBC创建Nm、CanNM ETAS工具可根据DBC文件,自动配置生成Nm、CanNm模块。但是关键的一点是要生成NM、CanNM模块DBC文件中必须有NM类型的报文。 还有一点,即使DBC文件中有Nm的报文,但是因为报文的类型在导入时没有设置成Nm,那也…

Springboot整合Redis报错:Unable to connection Redis

今天在做Springboot整合Redis中碰到下列错误: 基于以上的错误首先在Xshell或者其他远程操控虚拟机的软件上看能不能连接到Redis: [zzllocalhost ~]$ redis-cli -h 192.168.136.132 -p 6379 -a ****** Warning: Using a password with -a or -u option on the comma…