PCIE1—快速实现PCIE接口上下位机通信(一)

1.简介

        PCI Express(PCIE)是一种高速串行总线标准,广泛应用于计算机系统中,用于连接主板和外部设备。在FPGA领域中,PCIE也被广泛应用于实现高速数据传输和通信。FPGA是一种灵活可编程的集成电路,可以根据需要重新配置其功能和连接。PCIE与FPGA结合使用,可以实现高速数据传输和通信,适用于需要大量数据处理和传输的应用场景。在FPGA中使用PCIE可以实现以下功能:①高速数据传输:PCIE提供了高达16 GT/s的数据传输速度,可以满足对数据传输速度要求较高的应用需求。②多通道通信:PCIE支持多通道通信,可以同时传输多路数据,提高数据传输效率。③灵活性和可扩展性:FPGA可以根据需要重新配置PCIE接口,实现不同功能和连接需求,同时支持多种PCIE设备连接,具有较高的灵活性和可扩展性。总的来说,PCIE在FPGA领域中的应用可以实现高速数据传输和通信,提高系统性能和效率,适用于需要大量数据处理和传输的应用场景。随着PCIE技术的不断发展和完善,PCIE在FPGA领域中的应用前景将更加广阔。

        不同的FPGA芯片制造厂家提供了不同的解决方案,就xilinx一家提供了三种实现PCIE的方案用于不同的场景。此外,PCIE自身的发展也经历好几代的迭代,PCIE本身还涉及总线架构、带宽、通道、BAR寄存器等等知识,关于这些后面的文章整合了大量资料有详细说明,本章基于xilinx K7芯片,xdma ip,win10系统,vivado2020.2版本快速搭建PCIE基础应用。关于更复杂的应用后面循序渐进展开。

2.配置环境

①禁止驱动签名启动

打开windows设置,选择更新与安全,选择“恢复”,点击立即重新启动,随后选择疑难解答,选择启动选项,出现选择禁止后,按下数字“7”即可禁止驱动签名认证。当驱动发布给客户的时候,需要进行驱动签名认证。

②关闭快速启动

在windows设置中找到电源和睡眠选项,单机“选择电源按钮的功能”,取消勾选“启用快速启动”。

③打开测试模式

以管理员方式运行命令提示符,输入Bcdedit.exe -set TESTSIGNING ON命令打开测试模式,重启后生效,如果没有测试模式的水印出现,可以换个系统壁纸试一下,正常水印如下所示。

还可通过管理员打开命令提示符,通过Bcdedit.exe /enum {current}查看是否打开了测试模式。

④安装驱动

首先找到.cer后缀的文件,选择安装证书

然后插入PCIE设备,可以发现设备已连接 

更新驱动程序,选择开发板厂家提供好的驱动,安装过程中选择始终相信,安装结束可以看到如图所示,多了Xilinx DMA设备,表示安装成功。 

此处之前一直有黄色感叹号,提示“该设备无法启动。(代码10)在两项驱动程序间或一项I/O驱动程序内检测到协议错误”。网上分析罕见,正点原子认为这是驱动的Bug,Xilinx官网有人说是Xilinx的驱动只支持4通道,必须设置成4通道。由于这个涉及Windows和Xilinx的底层函数,单从现象很难判断原因为何,我在开发过程中也碰到这个情况,我用的是vivado2020.2,换成2018.2或者2021.1版本即可解决这个问题。因此我认为可能与vivado的版本有关。

⑤切换PCIE插槽

这个适个人机器情况调整,我的机器只有两个PCIE扩展槽,一个x16通道用于接显卡,另一个是x4通道,于是把显卡换到pcie x4通道上,把xilinx的x8切换到x16的通道上。

⑥添加头文件

Xilinx提供了驱动还提供了驱动接口文件xdma_public.h、pcie_fun.h、pcie_fun.c文件,将其添加到上位机工程中,即可使用这些函数进行pcie接口的操作。

3.IP核配置

第一页①处通常Basic,不用Advanced;②处选择通道数,具体与硬件板卡相关,这里选择x8;③选择线速度,与硬件板卡有关,这里是PCIE2.0,选择5.0GT/s,也与FPGA芯片有关,7K系列最多支持PCIE2.0。④这是PCIE的参考时钟,是由Root节点的插槽给到PCIE插卡的,固定为100MHz。⑤AXI总线的宽度和时钟频率由PCIE的线速度和线速率决定。⑥DMA用户接口选项,AXI Memory Mapped适合与内存交互数据,AXI Stream适合流数据,本次AXI_MM工程就选AXI Memory Mapped接口,AXI_ST工程选择stream接口。⑦AXI4-Lite Slave Interface:选择是否启用 AXI4-Lite Slave 接口以访问 DMA 状态寄存器,通常不用。

第二页保持默认配置,说明如下。

  1. Vendor ID(供应商 ID):用于识别器件或应用的制造商。有效标识由 PCI Special Interest Group 指定,以保证每个标识都唯一。默认值 10EEh 为赛灵思的供应商标识
  2. Device ID (器件 ID):对应于应用的唯一标识;默认值为 70<link speed><link width>h,该值取决于所选配置。该字段可采用任何值;请针对应用更改该值。默认器件 ID 参数取决于: 器件系列:9 表示 UltraScale+,8 表示 UltraScale,7 表示 7 系列器件  ;EP 或 RP 模式链路宽度:1 表示 x1,2 表示 x2,4 表示 x4,8 表示 x8,F 表示 x16;链路速度:1 表示 Gen1,2 表示 Gen2,3 表示 Gen3,4 表示 Gen4
  3. Revision ID (版本 ID):表示器件或应用的版本;作为器件 ID 的扩展。默认值为 00h;请针对应用输入相应的值;
  4. Subsystem Vendor ID (子系统供应商 ID):进一步限定器件或应用的制造商。请在此处输入子系统供应商 ID;默认值为 10EEh。通常,该值与供应商 ID 相同。将该值设为 0000h 可能导致合规性测试出现问题;
  5. Subsystem ID (子系统 ID):进一步限定器件或应用的制造商。该值通常与器件 ID 相同;默认值取决于所选通道宽度和链路速度。将该值设为 0000h 可能导致合规性测试出现问题;
  6. Enable PCIe-ID Interface:启用 PCIe-ID 接口。如果选中该参数,那么根据选中的 PFx 数量,在 IP 顶层会显示 PCIe ID 端口:cfg_vend_id、cfg_subsys_vend_id、cfg_dev_id_pf*、cfg_rev_id_pf* 和cfg_subsys_id_pf*,并可供用户逻辑驱动。如未选中该参数,则不会在顶层显示这些端口,并根据自定义时设置的值来驱动这些端口。
  7. Class Code Look-up Assistant (类代码查找助手):类代码查找助手可针对选定的器件常规功能提供对应的基本类、子类和接口值。

 第三页配置,①处PCIe to AXI Lite Master Interface:启用该接口,主机可以通过该接口控制用户侧逻辑,在PCIe_AXILite工程中就勾选此接口。PCIe to AXI Translation:PCIe到AXI的转换。通常情况下,主机侧PCIe BAR地址与用户逻辑侧AXI LIte的地址是不一样的,这个设置就是进行主机侧BAR地址到AXI地址的转换,比如主机一侧BAR地址为0,用户逻辑侧AXI LIte的地址为0x40000000,则主机访问AXI LIte用户逻辑时,XDMA将根据该设置将主机侧BAR地址0转换到AXI LIte总线地址0x40000000。对与该值的设置有两种方式,一种是手动指定,然后修改后面 AXI LIte 总线的偏移地址,另一种是先确定AXI LIte总线的偏移地址,然后根据偏移地址设置该值。在1.4.8节修改地址映射可以看到AXI LIte总线的偏移地址为0x40000000,所以设置此值为0x40000000。此外,PCIe to AXI Translation 同样也是AXI LIte总线的基地址,当 AXI LIte 总线连接多个AXI IP核时,会有多个偏移地址,上位机访问其他 IP 核时的偏移地址是以PCIe to AXI Translation的值为基址0进行参考的,比如,AXI LIte总线连接的另一个AXI IP的偏移地址为0x40010000,上位机访问该IP核的偏移地址就是该IP核的偏移地址0x40010000 - PCIe to AXI Translation的值0x40000000=0x10000。因此当AXI LIte总线连接多个AXI IP核时,需确保PCIe to AXI Translation的值小于等于这些AXI IP核偏移地址的最小值。②处可以选择是否预取,预取就是将数据提前放到线上,会让读数据变得更快。③PCIe to DMA BypassInterface:选择是否启用PCIe至DMA旁路接口。DMA Bypass就是普通的PCIe传输,不用DMA逻辑,而是直接通过PCIe进行通信,一般传输效率会高于Pcie to AXI Lite。

第四页,关于中断的设置,详细功能后续展示,保持如下设置即可。

最后一页设置DMA上下行通道均为2即可。

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

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

相关文章

微信小程序中使用Behavior混入

在微信小程序中&#xff0c;behavior是一种可以用于组件复用的特性。通过定义一个behavior&#xff0c;可以将一些公共的属性和方法提取出来&#xff0c;然后在多个组件中引用该behavior&#xff0c;实现代码的复用和维护。下面是一个详细的例子&#xff0c;说明如何在微信小程…

Missing artifact org.yaml:snakeyaml:jar:1.29

关于导入本地maven项目pom.xml出现missing artifact org....报错处理 环境变量配置maven&#xff0c;eclipse中配置maven&#xff0c;重启eclipse。

10 分钟了解 nextTick ,并实现简易版的 nextTick

前言 在 Vue.js 中&#xff0c;有一个特殊的方法 nextTick&#xff0c;它在 DOM 更新后执行一段代码&#xff0c;起到等待 DOM 绘制完成的作用。本文会详细介绍 nextTick 的原理和使用方法&#xff0c;并实现一个简易版的 nextTick&#xff0c;加深对它的理解。 一. 什么是 ne…

猫头虎分享已解决Bug || Web服务故障:WebServiceUnavailable, HTTPServerError

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

ubuntu常见配置

ubuntu各个版本的安装过程大差小不差&#xff0c;可以参考&#xff0c;ubuntu20.04 其它版本换一下镜像版本即可 安装之后需要配置基本的环境&#xff0c;我的话大概就以下内容&#xff0c;后续可能有所删改 sudo apt-get update sudo apt-get install gcc sudo apt-get inst…

exit()、_exit()和_Exit()终止程序运行

目录 1、exit() 函数 2、_exit() 函数 3、_Exit() 函数 在Linux系统下&#xff0c;你可以使用 exit()、_exit() 和 _Exit() 来终止程序运行&#xff0c;特别是在出现错误或执行失败的情况下。这样可以确保程序在发生严重错误时能够安全地退出。 1、exit() 函数 用法&#…

vulnhub靶场之Deathnote

一.环境搭建 1.靶场描述 Level - easy Description : dont waste too much time thinking outside the box . It is a Straight forward box . This works better with VirtualBox rather than VMware 2.靶场下载 https://www.vulnhub.com/entry/deathnote-1,739/ 3.启动环…

网络安全“降本增笑”的三大帮手

在网络安全这个快速变化和危机四伏的领域中&#xff0c;通过使用正确的工具和方法&#xff0c;我们可以在工作中取得更高的效率&#xff0c;并降低相关成本。 雷池社区版 雷池社区版—开源Web应用防火墙。这款产品凭借强大的规则引擎&#xff0c;它允许用户自定义安全策略&…

洛谷p1002过河卒

[NOIP2002 普及组] 过河卒 题目描述 棋盘上 A A A 点有一个过河卒&#xff0c;需要走到目标 B B B 点。卒行走的规则&#xff1a;可以向下、或者向右。同时在棋盘上 C C C 点有一个对方的马&#xff0c;该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为…

设计模式(行为型模式)解释器模式

目录 一、简介二、解释器模式2.1、抽象表达式接口2.2、表达式2.3、使用 三、优点和缺点 一、简介 解释器模式&#xff08;Interpreter Pattern&#xff09;是一种行为设计模式&#xff0c;用于解释特定语言或处理特定问题领域的语法或表达式。它定义了一种语言的语法表示&#…

三防平板丨三防工业平板电脑丨三防平板电脑有哪些优势?

三防平板电脑通常使用特殊材料和制造工艺来达到防水、防尘、防摔的目的&#xff0c;这样可以在极端条件下使用&#xff0c;并保证设备的稳定性和可靠性。因此&#xff0c;三防平板电脑适用于各种恶劣环境&#xff0c;如户外野营、物流、工业制造等应用场景。那么相比于普通消费…

Pregnostic®–PE IIp ELISA,用于测量人源ESM-1水平

Pregnostic PE Pregnostic是由IQ Products公司开发的重点关注女性健康的产品线。其中的Pregnostic -PE项目&#xff0c;旨在开发有助于筛查孕期先兆子痫风险的产品&#xff0c;可用于区分早发性和晚发性先兆子痫。 ESM-1 内皮细胞特异性分子&#xff08;ESM-1&#xff09;&am…

BabylonJS 6.0文档 Deep Dive 动画(一):动画介绍

1. 动画介绍 无论动画如何实现&#xff0c;它都必须考虑所需的动作、时间、产生所需流动性所需的帧数以及序列中的关键点。这个介绍应该有助于理解Babylon.js是如何进行动画的&#xff0c;以及它们是如何实现的。 动画由一系列图像、帧生成&#xff0c;这些图像、帧一个接一个地…

【Spring底层原理高级进阶】基于Spring Boot和Spring WebFlux的实时推荐系统的核心:响应式编程与 WebFlux 的颠覆性变革

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《Spring 狂野之旅&#xff1a;底层原理高级进阶》 &#x1f680…

QT_day2

1.思维导图 2.使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff…

幻兽帕鲁1.4.1单机畅玩教程

文章目录 游戏简介游戏背景游戏玩法资源安装和配置教程游戏包的下载和安装Steam客户端下载和配置 毕业存档使用教程第一步&#xff1a;个人存档备份第二步&#xff1a;毕业存档导入 游戏简介 Palworld&#xff1a;一款由日本独立游戏工作室Pocketpair制作发行的动作角色扮演游…

LaunchPad 市场的复苏,Penpad 成新兴生力军

以 Fair Launch 为主要启动方式的铭文市场的爆发&#xff0c;推动了 LaunchPad 市场的复苏&#xff0c;绝多数所铭文项目都能通过 Fairr Launch 的方式筹集资金实现启动&#xff0c;该赛道的爆发不仅推动了数百亿美元的热钱开始在链上不断涌动&#xff0c;同时也进一步形成了新…

【xss跨站漏洞】xss漏洞利用工具beef的安装

安装环境 阿里云服务器&#xff0c;centos8.2系统&#xff0c;docker docker安装 前提用root用户 安装docker yum install docker 重启docker systemctl restart docker beef安装 安装beef docker pull janes/beef 绑定到3000端口 docker run --rm -p 3000:3000 janes/beef …

JS实现根据数组对象的某一属性排序

JS实现根据数组对象的某一属性排序 一、冒泡排序&#xff08;先了解冒泡排序机制&#xff09;二、根据数组对象的某一属性排序&#xff08;引用sort方法排序&#xff09; 一、冒泡排序&#xff08;先了解冒泡排序机制&#xff09; 以从小到大排序为例&#xff0c;冒泡排序的原…

【EI会议征稿通知】第十届能源材料与环境工程国际学术会议(ICEMEE 2024)

第十届能源材料与环境工程国际学术会议&#xff08;ICEMEE 2024&#xff09; 2024 10th International Conference on Energy Materials and Environment Engineering 随着前9年的成功&#xff0c;ICEMEE在2024年迎来了第10届。很荣幸地宣布&#xff0c;第十届能源材料与环境…