2. PCIE TLP解包封包

第二十一讲、PCIE的TLP包的封包解包原理.pdf
00 Packet Coding.docx

掌握如何发送接收 Mrd(memory read TLP)、Mwr(Memory write TLP)、Cpl(Completion TLP)和Cpld(Completion with data TLP) 命令包

1、 TLP 包是由 PCIE 的 Endpoint 或者 Root Complex 组建发送。
2、 TLP 包只包含两种包头长度 3DW 和 4DW(double word is 32bit),数据内可以选择包含和不包含 ECRC 1DW(循环校验字 32bit)
截图_20230919094031.png

绿色:传输层协议
浅蓝色:数据链路层协议
蓝色:物理层协议
紧挨着链路层的绿色部分由红色圈圈出的是用户的 TLP 包, 也就是接下来我们要重点讲解的部分。(此部分如果选择使用框架那么由框架创建例如 Riffa 和 XDMA,如果完全自定义那么就是需要自己的写这些 TLP

传输层细节讲解

截图_20230919094723.png

Memory write TLP 包结构

截图_20230919101551.png

名称字段作用
FmtDW0[31:29]决定了包头是3DW长度还是4DW长度的
TypeDW0[28:24]决定了包的类型,类型有Mrd(读地址内数据)、Mwr(向地址写数据)、Cfg(配置PCIe)、Msg(消息)、Cpl(读地址数据请求后返回的数据包)
Traffic ClassDW0[22:20]包交换优先级,数字越大优先级越高
AttrDW0[18]、DW0[13:12]包的属性。Attr[13]是解析包是顺序还是乱序,一般设置为顺序。Attr[12]是Cache一致性,数据量小的时候可以打开以提高数据传输效率,数据量大则关闭
THDW0[16]PCIe2.1提出,xilinx7不支持此设置
TD(TLP Digest)DW0[15]为1是必须添加ECRC,为0时不添加
EP(Error package)DW0[14]错误包标志。为1时代表此包为错误包,将被忽略
AT(Addr Type)DW0[11:10]地址类型。一共有三种类型:内存地址(00)、虚拟地址(10)、转换完成的内存地址(11)。当表示虚拟地址是需将地址转换成内存地址
LengthDW0[9:0]用来表示数据包的长度,用于Mwr、Cpl、Msg包。注意单位是DW,也就是32字节的,注意单位转换。一个数据包的数据长度最多为4096byte
Requester IDDW1[31:16]这个ID是PCIe的endpoint设备在root comlex初始化时对设备分配的,分为bus number[]、Device Number[]、Func[]
TagDW1[15:8]扩展标识,由请求方产生,与Requeseter ID构成唯一标识,用来识别应答信息
First/Last byte Enables第一字节和最后一个字节有效标志DW1[7:0]
AddressDW2或者DW2 + DW3地址位。Fmt决定了这个位数是32位还是64位

Completion/completion with Data TLPs 完成相应包

截图_20230919103403.png

信号名称信号作用
Completer ID由谁反馈的数据
Requester ID由谁请求的数据
Completion status000 是成功相应, 001 是不支持此请求, 010 配置请求请重试, 100 请求被忽略
Byte Count剩余未反馈数据的字节数量
routing Tag从请求包中复制此字段
Lower Address第一个有效字节地址的低 7bit 位 特别注意: Lower address和 Length 不能跨越 Root Complex 的 RCB(Read Completion Boundary)读完成包的边界但可以是 RCB 的整数倍, RCB 是在 Root Complex 设置的,我们的 IPcore可以通过 link control 控制器知道此值, RCB 一般是 64 字节也可设置为 128 字节, 默认没设置情况是 64 字节。
MPS(Max Payload Size)每一个 EP 和 RC 都可以设置此值,那么系统的 MPS 会取所有 MPS 的最小值, 比如 X86 系统中有多个

截图_20230919103509.png
系统中最小的 MPS 是 128byte 那么系统的 MPS 是 128, 此值会通过 IP 核接口呈现出来。

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

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

相关文章

两数之和-(哈希)

牛客网: BM50 题目: 数组中两数之和为给定值,返回下标 思路: 遍历数组获取idx与value,value为key, idx为val存入map中,每次遍历时判断target-value是否已在map中有值,值即为先前存入的下标,取出与当前坐标组合为数组…

多输入多输出 | MATLAB实现PSO-LSSVM粒子群优化最小二乘支持向量机多输入多输出

多输入多输出 | MATLAB实现PSO-LSSVM粒子群优化最小二乘支持向量机多输入多输出 目录 多输入多输出 | MATLAB实现PSO-LSSVM粒子群优化最小二乘支持向量机多输入多输出预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 MATLAB实现PSO-LSSVM粒子群优化最小二乘支持向…

60从零开始学Java之与数字相关的类有哪些?

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 我们在解决实际问题时,会经常对数字、日期和系统设置进行处理,比如在我们的代…

二分搜索算法

二分搜索算法 二分搜索 对于一组有顺序的数据,不采用常见的遍历方式找到需要的数据,而是利用其规律,比中间数据小的一定在中间数据左边,比中间数据大的一定在中间数据右边,每次排除一般的数据,从而提高搜…

【算法基础】数学知识

质数 质数的判定 866. 试除法判定质数 - AcWing题库 时间复杂度是logN #include<bits/stdc.h> using namespace std; int n; bool isprime(int x) {if(x<2) return false;for(int i2;i<x/i;i){if(x%i0) return false;}return true; } signed main() {cin>&g…

SpringBoot+MyBatisPlus+MySQL不能储存(保存)emoji表情问题解决

1.之前在学习过程中不知道utf8和utf8mb4的区别&#xff0c;也没过多去了解&#xff0c;直到最近设置的数据库编码全是utf8后发现问题所在了&#xff0c;居然不能储存表情包&#xff01;&#xff01;&#xff01;整个人直接傻了&#xff0c;后面知道了utf8是3字节不能储存表情&a…

【MTK】【WFD】手机投屏到投影仪不显示画面

问题分析: 在投屏过程中,有时候会出现WFD sink端回复的video 格式表不正确,sink表示是支持VESA(3fffffff),但是当手机根据协商结果得到最优分辨率并发送给sink端时,sink端看上去没有正常播放,其实实际上应该是不支持的。 比如我们这个问题就是CES表中的0001ffff,最大…

SadTalker 让图片说话

参考&#xff1a;https://github.com/OpenTalker/SadTalker 其他类似参考&#xff1a;https://www.d-id.com/ 输入图片加音频产生2d视频 安装使用 1、拉取github&#xff0c;下载对应安装库 2、下载对应模型baidu网盘 新建checkpoints&#xff0c;把下载sadtalker里模型拷贝进…

层次查询和分析函数(LAG、LEAD)在号段选取中的应用

1. 问题的提出 在实际工作中&#xff0c;我们常常会碰到号段选取的问题&#xff0c;例如&#xff1a; 一组连续的数&#xff0c;去掉中间一些数&#xff0c;要求出剩下的数的区间&#xff08;即号段&#xff09;例如&#xff1a;一串数字为1,2,3,4,7,9,10&#xff0c;则号段为…

如何在Gazebo中实现多机器人编队仿真

文章目录 前言一、仿真前的配置二、实现步骤1.检查PC和台式机是否通讯成功2.编队中对单个机器人进行独立的控制3、对机器人进行编队控制 前言 实现在gazebo仿真环境中添加多个机器人后&#xff0c;接下来进行编队控制&#xff0c;对具体的实现过程进行记录。 一、仿真前的配置…

JAVAEE初阶相关内容第十二弹--多线程(进阶)

目录 一、JUC的常见类 1、Callable接口 1.1callable与runnable 1.2代码实例 &#xff08;1&#xff09;不使用Callable实现 &#xff08;2&#xff09;使用Callable实现 1.3理解Callable 1.4理解FutureTask 2、ReentrantLock 2.1ReentrantLock的用法 2.2ReentrantLoc…

【面试题】Js数组去重都有哪些方法?

前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 表妹一键制作自己的五星红旗国庆头像&#xff0c;超好看 1. indexOf 定义&#xff1a; indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置…

springboot整合sentinel完成限流

1、直入正题&#xff0c;下载sentinel的jar包 1.1 直接到Sentinel官网里的releases下即可下载最新版本&#xff0c;Sentinel官方下载地址&#xff0c;直接下载jar包即可。不过慢&#xff0c;可能下载不下来 1.2 可以去gitee去下载jar包 1.3 下载完成后&#xff0c;进行打包…

【办公小神器】:快速批量转换Word、Excel、PPT为PDF脚本!

文章目录 ✨哔哩吧啦✨脚本使用教程✨温馨小提示设置&#x1f4da;资源领取 专栏Python零基础入门篇&#x1f525;Python网络蜘蛛&#x1f525;Python数据分析Django基础入门宝典&#x1f525;小玩意儿&#x1f525;Web前端学习tkinter学习笔记Excel自动化处理 ✨哔哩吧啦 前…

[pai-diffusion]pai的easynlp的clip模型训练

EasyNLP带你玩转CLIP图文检索 - 知乎作者&#xff1a;熊兮、章捷、岑鸣、临在导读随着自媒体的不断发展&#xff0c;多种模态数据例如图像、文本、语音、视频等不断增长&#xff0c;创造了互联网上丰富多彩的世界。为了准确建模用户的多模态内容&#xff0c;跨模态检索是跨模态…

Ctfshow web入门 代码审计篇 web301-web310 详细题解 全

CTFshow 代码审计 web301 下载的附件的目录结构如下&#xff1a; 开题后界面&#xff0c;看见输入框&#xff0c;感觉是sql。 大概浏览一遍源码&#xff0c;我们可以发现在checklogin.php文件中有无过滤的SQL语句&#xff0c;SQL注入没得跑了。 这题SQL注入有三种做法。 方法一…

Linux:GlusterFS 集群

GlusterFS介绍 1&#xff09;Glusterfs是一个开源的分布式文件系统,是Scale存储的核心,能够处理千数量级的客户端.在传统的解决 方案中Glusterfs能够灵活的结合物理的,虚拟的和云资源去体现高可用和企业级的性能存储. 2&#xff09;Glusterfs通过TCP/IP或InfiniBand RDMA网络链…

Everything + Cpolar,打造在线搜索的终极神器

文章目录 前言1. 下载安装注册cpolar2. Everything安装和设置2.1 进入Everything官网进行下载2.2 对Everything文件进行设定 3. 创建cpolar内网穿透隧道4. 公网访问测试Everything5. 固定连接公网地址 前言 你还在用Windows资源管理器自带的搜索工具来搜索文件吗&#xff1f;这…

企业为什么要进行敏捷?敏捷有哪些好处以及敏捷工具

敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。 那企业为什么要进行变革&#xff0c;实施敏捷开发呢&#xff1f; 企业进行敏捷开发的原因主要有以下几点&#xff1a; 1、拥抱变化 敏捷开发的一个重要特点是能够快速响应和适应市场环境的变化。在竞争激烈的市场环境中…

轮换对称性

二重积分 普通对称性–D关于 y x yx yx对称&#xff1a; ∬ D f ( x , y ) d σ { 2 ∬ D 1 f ( x , y ) d σ f ( x , y ) f ( y , x ) 0 f ( x , y ) − f ( y , x ) \iint_{D}f(x,y)d\sigma\begin{cases} 2\iint_{D_1}f(x,y)d\sigma\ \ \ \ \ \ f(x,y)f(y,x) \\ 0 \ \…