高级FPGA开发之PCIe IP Core(三)

news2024/12/28 8:47:57

高级FPGA开发之PCIe IP Core(三)

一、PCIe IP核简介

通过阅读PCIe spec文档,可以看到UltraScale+器件Integrated Block For PCI Express解决方案IP核是具备高带宽、高可缩放性和高可靠串行互联的解决方案,适用于UltraScale+器件。赛灵思在 UltraScale+ 架构内提供了 2 个 PCIe 集成块:PCIE4 集
成块和 PCIE4C 集成块。

功能特性:

  • PCI Express端点、传统端点或根端口模式;

  • 针对PCIe 4和PCIe 4c块支持x1、x2、x4、x8或x16链路带宽以及Gen1、Gen2和Gen3链路速度;

  • 针对PCIe4C块支持x1、x2、x4和x8链路带宽以及Gen4的链路带宽;

  • AXI4-Stream接口,可连接到客户逻辑;

  • 高级错误报告(AER)和端到端CRC;

  • 用于传输事务缓冲的块RAM;

  • 1个PCI Express虚拟通道和8个流量类;

  • 最多支持4个PF和252个VF;

  • 完全可配置的3x64位或6x32位基地址寄存器(bar);

  • 支持所有中断类型:

    INTx

    32多矢量MSI功能

    含最多2048个矢量的MSI-X功能,具有可选内置MSI-X矢量表;

  • 内置发起方读取请求/完成标签管理器

    支持最多256项未完成的发起方读取请求传输事务

二、PCIe IP核端口描述 — CQ

在这里插入图片描述

2.1 Completer Request Interface

CQ端口将链路层收到的所有请求交付给user logic。

DW表示已经配置的数据总线宽度(64、128或者256)。

portIOWidthdescription
m_axis_cq_tdataODW从CQ接口输出的数据
m_axis_cq_tuserO88CQ用户数据(这组数据包含所传输事务层(tlp)的边带信息。)
m_axis_cq_tlastO1CQ数据的tlast指示
m_axis_cq_tkeepODW/32CQ数据的tkeep指示。
m_axis_cq_tvalidO1CQ数据有效。
m_axis_cq_treadyI1CQ数据就绪。
pcie_cq_np_reqI2输入可控制内部信用值,进行选择性反压(00-无更改,01-增加1,10/11-保留)
pcie_cq_np_req_countO6输出的信用值,当信用值为非0时,才能通过完成器请求接口交付非转发请求,该信用值饱和上限为32。

其中m_axis_cq_tuser中的边带信号描述:

索引名称Widthdescription
3:0first_be[3:0]4有效载荷的首个 Dword 的字节使能。
7:4last_be[3:0]4有效载荷的最后一个 Dword 的字节使能。
39:8tyte_en[31:0]32用户逻辑可以选择使用这些字节使能位来判定所传输的包的有效载荷中的有效字节。
40:40sop1包起始。
41:41discontinue1如果核在从其内部 FIFO 存储器读取 TLP 有效载荷时检测到不可纠正的错误,那么它会在 TLP 的最后一个节拍中断言此信号有效。当核发出此类错误信号时,用户应用必须丢弃整个 TLP。
42:42tph_present1此位表示在通过接口交付的请求 TLP 中存在“Transaction Processing Hint (TPH)”(传输事务处理提示)。
44:43tph_type[1:0]2当请求TLP中存在TPH时,这2个位可提供与提示关联的PH[1:0]字段的值
52:45tph_st_tag[7:0]8当请求TLP中存在tph时,输出可提供与提示关联的8位导向标签
84:53parity32位 i 可提供针对 m_axis_cq_tdata 的字节 i 计算所得奇校验。
87:85reserved3保留

注: 当axis_tready和axis_tvalid均处于高位时,节拍采用总线传输。

2.2 Completer Request Interface Formats

描述符长度始终为16字节,并在请求包的前16字节内发送。

当所传输的请求TLP为存储器读取/写入请求、IO读取/写入请求或者原子操作(atomic operation)请求时,格式如下:

在这里插入图片描述

供应商定义的报文完成器请求描述符:

在这里插入图片描述

对应于ATS报文的完成器请求描述符:

在这里插入图片描述

对应于所有其它报文的完成器请求描述符格式:

在这里插入图片描述

2.3 CQ字段说明
位索引字段索引描述
1:0AT 地址类型仅适用于存储器传输事务和原子操作。00-地址未转换 01-传输事务为转换请求 10-请求的地址已转换的地址 11:保留
63:2“address” 地址该字段用于存储器、IO和原子请求,必须使用m_axis_cq_tuser的first_be位判定字节级别的地址
74:64“dword count”(dword计数)指示读取或者写入的块大小,对于报文有效范围0-256,对于IO访问,dword计数始终为1
78:75“request type”(请求类型)用于识别传输事务类型
95:80“request ID”(请求器ID)请求器ID,[95:88]-bus number,[87:83]-device, [82:80]-function number,如果是non-posted请求,那么用户必须存储该字段,并将完成数据一起重新发给集成块
103:96“tag”(标签)与请求关联的PCIe标签,如果是non-posted事务,用户必须存储该字段,然后一起重新返回block
111:104“target function”(目标功能)PF/VF映射
114:112“BAR ID”仅适用于存储器、IO和原子操作,可为请求中的地址提供匹配的bar编号
120:115“BAR aperture”仅适用于存储器、IO和原子操作,提供与请求匹配的bar的间隙设置
123:121“traffic class”请求关联的PCIe传输事务(TC),如果是non-posted,必须存储该字段,并将其与完成的数据一起返回集成块
15:0“snoop latency”(嗅探时延)该字段定义仅适用于 LTR 报文。它可提供报文的 TLP 报头中的 16 位“Snoop Latency”(嗅探时延)字段的值。
111:104“message code”(报文代码)该字段定义适用于所有报文。
114:112“message routing”(报文路由)该字段定义适用于所有报文。这些位可提供来自 TLP 报头的 3 位路由(Routing) 字段 r[2:0]。
15:0“destination ID”(目的ID)该字段仅适用于供应商定义的报文。
2.4 传输事务类型
request typedescription
0000内存读请求
0001内存写请求
0010IO读请求
0011IO写请求

三、PCIe IP核端口描述 — CC

用户应用生成的完成包通过完成器完成(CC)接口端口来相应发射的完成器请求。可以将所有non-posted传输事务作为独立拆分的传输事务来处理。

3.1 Completer Completion Interface

CC接口可持续接受请求器接口上的新请求,同时针对请求发送完成(completion)包。

completer completion interface(CC接口)上,将每个TLP均作为1个axi-stream数据包交付。

在这里插入图片描述

接口IO宽度描述
s_axis_cc_tdata输入DW完成器完成数据总线
s_axis_cc_tuser输入33完成器完成用户数据,TLP传输包含的边带信息
s_axis_cc_tlast输入1对应完成器完成数据的tlast信号
s_axis_cc_tkeep输入DW/32对应完成器完成数据的tkeep信号
s_axis_cc_tvalid输入1完成器完成数据有效。
s_axis_cc_tready输出1完成器完成数据就绪。

其中m_axis_cq_tuser中的边带信号描述:

位索引名称宽度描述
0discontinue1如果传输期间用户应用在所传输的数据中检测到错误,并且需要中止该数据包,即可断言此信号有效。
32:1parity32256位数据奇偶校验位
3.2 Completer Completion Interface Formats

user logic将完成器请求的完成数据作为axi4-stream包发送至集成块cc接口。

每个数据包均以1个描述符开头,在描述符后可包含有效载荷数据。描述符长度始终为12个字节,并且在完成包的前12字节内发送。

当用户应用将请求的完成数据拆分为多个完成包(split completion)包后,它必须将每个拆分完成包作为独立axi4-stream包随描述符一起发送。

在这里插入图片描述


位索引名称描述
6:0“lower address”(低位地址)对于memory read complete包,该字段必须设置所传输的存储器的起始字节地址的7个最低有效位
9:8“address type”(地址类型)该字段定义仅适用于存储器传输事务和原子操作的完成包。user logic必须将AT位从对应的请求描述符复制到该字段中。
28:16“byte count”(字节计数)这13个位可包含范围在0 - 4096个字节内的值。如果存储器读取请求已通过使用单一完成包完成,那么byte count值将以字节为单位表示“payload length”。IO读取/写完成包,必须设置为4。对于每个“Memory Read Completion”(存储器读取完成),“Byte Count”字段必须表明完成请求所需的剩余字节数,包括随完成包返回的字节数。
29:29“locked read completion”(锁定读取完成)当“locked read”(锁定读取)请求的相应中包含完成包时,必须设置该位,其他为0
42:32”dword count“(dword计数)这11位表示当前包的有效载荷大小(以dword数为单位)
45:43“completion status”(完成状态)基于所完成包(completion)包的类型来设置。000-完成,001-请求不支持(UR)002-完成器异常(CA)
46:46“completion status”(完成状态)此位可用于对所发送的tlp进行毒化。针对所有完成包,必须设置为0
63:48“requester ID”(请求器ID)与请求关联的PCI请求器ID(从请求复制所得)
71:64“tag”(标签)与请求关联的PCIe标签(从请求复制所得)
79:72“target/device number”完成器功能的器件和/或功能编号
87:80“completer bus number”(完成器总线编号)与完成器功能关联的总线编号
88“completer ID enable”(完成器ID使能)端点模式设置为0
91:89“transaction class”TC(传输事务类)与请求关联的PCIe传输事务类(TC),user logic从关联的请求描述符TC复制
94:92属性与请求关联的PCIe属性(从请求复制所得),92-“no snoop”, 93-“relaxed oerdering”, 94-“ID-based ording”
95“force ECRC”(复制ECRC)强制执行ECRC插入

四、未完待续

下章将继续介绍PCIe Hard IP rc和rq接口。

欢迎关注知乎:北京不北,+vbeijing_bubei

欢迎关注douyin:near.X (北京不北)

欢迎+V:beijing_bubei

获得免费答疑,长期技术交流。

五、参考文献

https://docs.xilinx.com/r/en-US/pg213-pcie4-ultrascale-plus
https://docs.xilinx.com/r/zh-CN/pg213-pcie4-ultrascale-plus

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

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

相关文章

Android 相机启动流程笔记

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、Camera 框架介绍: Camera的框架分为Kernel部分和hal部分,其中kernel部分主要有两块: image sensor driver&…

并发锁机制之深入理解synchronized

并发锁机制之深入理解synchronized Synchronized基础知识 i的JVM字节码指令 getstatic i // 获取静态变量i的值 iconst_1 // 将int常量1压入操作数栈 iadd // 自增 i–的JVM字节码指令 getstatic i // 获取静态变量i的值 iconst_1 // 将int常量1压入操作数栈 isub // 自减…

性能优化——canvas 加载海量图

背景 公司的在线设计稿平台的画板列表页开发时由于数据量不足,未能测出关于画板列表页性能问题,在经过用户一段时间的使用后出现了关于初始化卡顿、缩放卡顿等问题,画板列表页采用了vue-konva 原因 关于画板列表为何卡顿有如下几点原因 1、…

2月24日(周六)比赛前瞻:曼联 VS 富勒姆、拜仁 VS 莱比锡

大家好,博主将持续更新胜负14场前瞻,此处每日赛事间歇更新,胃信号每日更新。 精选赛事:曼联 VS 富勒姆 曼联近期状态显著提升,上一轮联赛客场2-1战胜卢顿,连续7场正赛取得6胜1平的成绩,保持不败…

6.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-通过逆向分析确定游戏明文发送数据过程

内容参考于:易道云信息技术研究院VIP课 上一个内容:测试需求与需求拆解 在开始之前要了解一个小知识,在逆向开始之前要很清楚知道要找的东西是什么,大概长什么样子,只有这样才能看到它第一眼发现它,现在我…

Qt+VTK鼠标拾取点生成拉伸闭合三维体

程序示例精选 QtVTK鼠标拾取点生成拉伸闭合三维体 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《QtVTK鼠标拾取点生成拉伸闭合三维体》编写代码,代码整洁,规则&…

ES6内置对象 - Map

Map(Map对象保存键值对,键值均不限制类型) 特点: 有序(Set集合是无序的);键值对(键可以是任意类型);键名不能重复(如果重复,则覆盖&…

从ViT到MAE,transformer架构改造Autoencoder

Vision Transformer (ViT) 论文出处[2010.11929] An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (arxiv.org) 传统的卷积神经网络(CNN)在图像分类、目标检测等任务上表现出色,但其局限性也逐渐显露&#xf…

【大数据】Flink 内存管理(二):JobManager 内存分配(含实际计算案例)

Flink 内存管理(二):JobManager 内存分配 1.分配 Total Process Size2.分配 Total Flink Size3.单独分配 Heap Size4.分配 Total Process Size 和 Heap Size5.分配 Total Flink Size 和 Heap Size JobManager 是 Flink 集群的控制元素。它由三…

virtualenv env_name 使用 virtualenv 创建 python 虚拟环境

为什么要用这个 win7 32 环境下 pycharm 只能用低版本的,比如 2016,2018 此时pycharm 图形界面创建的 虚拟环境版本很低,有些包不兼容,因此用 virtualenv 模块,可以创建 20 版本以上的虚拟环境 virtualenv env_name官方文档 http…

全面解析企业财务报表系列之四:财务报表的真实性和可靠性

全面解析企业财务报表系列之四:财务报表的真实性和可靠性 一、什么是会计方法二、选择会计方法三、会计方法的重要性四、会计报表常用的造假手段五、财务报表经常被遗漏的重要事件六、财务报告造假的资信敏感性七、财务报告审计的重要性八、审计报告 一、什么是会计…

nginx重新编译添加模块或去除不需要的模块

在使用nginx中,我们可能需要对已经安装的nginx进行添加或者删除模块 1、先查看nginx安装了哪一些模块 nginx -V2、来到nginx源码目录,根据如下规则,自行根据需求更改命令 如果要去掉nginx自带的模块,就是用–without做为前缀进…

Stable Diffusion 绘画入门教程(webui)-ControlNet(IP2P)

上篇文章介绍了深度Depth,这篇文章介绍下IP2P(InstructP2P), 通俗理解就是图生图,给原有图加一些效果,比如下图,左边为原图,右边为增加了效果的图: 文章目录 一、选大模型二、写提示词三、基础参…

Siamfc论文中文翻译(详细!)

Fully-Convolutional Siamese Networks for Object Tracking 用于对象跟踪的Siamese网络 说明 建议对照siamfc(2021版)原文阅读,翻译软件翻译出来的效果不好,整体阅读体验不佳,所以我对译文重新进行了整理&#xff0…

5分钟JavaScript快速入门

目录 一.JavaScript基础语法 二.JavaScript的引入方式 三.JavaScript中的数组 四.BOM对象集合 五.DOM对象集合 六.事件监听 使用addEventListener()方法添加事件监听器 使用onX属性直接指定事件处理函数 使用removeEventListener()方法移除事件监听器 一.JavaScript基础…

悄悄话花费的时间(C语言)【二叉树各结点统计求和】

题目描述 给定一个二叉树,每个节点上站着一个人,节点数字表示父节点到该节点传递悄悄话需要花费的时间。 初始时,根节点所在位置的人有一个悄悄话想要传递给其他人,求二叉树所有节点上的人都接收到悄悄话花费的时间。 输入描述 …

element导航菜单el-menu添加搜索功能

element导航菜单-侧栏&#xff0c;自带的功能没有搜索或者模糊查询。 找了找资料 找到一个比较可行的&#xff0c;记录一下&#xff1a; //index.vue的代码 <div style"overflow:auto"><el-menu :default-active"$route.path":default-openeds&…

如何在 Tomcat 中为 Web 应用程序启用和配置缓存?

在Tomcat中为Web应用程序启用和配置缓存通常涉及到对Tomcat的连接器&#xff08;Connector&#xff09;进行配置&#xff0c;以及可能的话&#xff0c;配置Web应用程序本身以支持缓存。 1. 配置Tomcat连接器以启用缓存 Tomcat的连接器可以通过其配置来启用各种…

开源免费的NTFS for mac工具mounty

开源免费的NTFS for mac工具mounty 安装依赖 brew install gromgit/fuse/ntfs-3g-macbrew install --cask macfuse安装mounty 如果已经安装macFUSE和ntfs-3g-mac&#xff0c;可以直接点击下载的dmg安装包&#xff0c;安装升级。第一次启动mounty&#xff0c;你需要接受一系列…

Oracle迁移到mysql-导出mysql所有索引和主键

导出建库表索引等&#xff1a; [rootlnpg ~]# mysqldump -ugistar -pxxx -h192.168.207.143 --no-data -d lndb > lndb20230223-1.sql 只导出索引&#xff1a;参考&#xff1a;MYSQL导出现有库中的索引脚本_mysql 导出数据库所有表的主键和索引-CSDN博客 -- MYSQL导出现有…