基于AXI PCIE IP的FPGA PCIE卡示意图

创作不易,转载请注明出处:https://blog.csdn.net/csdn_gddf102384398/article/details/143926217

上图中,在FPGA PCIE卡示意图内,有2个AXI Master设备,即:PCIE到AXI4-Full-Master桥、AXI CDMA IP;有3个AXI Slave设备,即:AXIPCIE寄存器块、AXI4-Full-Slave到PCIE桥、CDMA寄存器块;每个AXI Master可以访问3个AXI Slave,所以3个AXI Slave设备构成了一个AXI总线地址空间。AXIPCIE寄存器块包含了PCI设备配置空间(其中包含PCIE:BARs寄存器)和PCIE扩展配置空间的所有寄存器,还包括了AXI:BARs寄存器。DMA是指外设直接读写Host PC的系统主存,而不经过CPU的干预。上图中,PCIE到AXI4-Full-Master桥用于Host PC主动访问FPGA PCIE设备,而AXI4-Full-Slave到PCIE桥用于FPGA PCIE设备主动访问Host PC的系统主存。从AXI的角度看,PCIE到AXI4-Full-Master桥可以访问AXI4-Full-Slave到PCIE桥,即AXI Master访问AXI Slave,但这在上图看来本质上相当于Host PC通过PCIE设备访问自身主存了,没有意义。AXI CDMA IP可以通过自己的AXI4-Full-Master接口和AXI互联IP来主动访问AXI4-Full-Slave到PCIE桥,即进行DMA。如果将3个AXI Slave构成的AXI总线地址空间用一个PCIE:BAR来映射,比如PCIE:BAR0,则Host PC可以通过PCIE:BAR0访问AXI总线上的所有AXI Slave设备(包括AXI4-Full-Slave到PCIE桥,但这相当于Host PC通过PCIE设备访问自身主存,没有意义)。Host PC可以在系统主存中分配一段物理内存,将这段内存的起始地址转换为PCIE总线地址,然后在PCIE配置空间中的PCIEBAR_n寄存器(0<=n<=2,因为AXI PCIE IP有3个PCIE:BARs)中的基地址内容的帮助下将这个PCIE总线地址写到AXIPCIE寄存器块中的AXIBAR2PCIEBAR_n寄存器中(0<=n<=5,因为AXI PCIE IP有6个这样的寄存器),PCIE地址到AXI地址的转换公式为:

AXI地址=PCIE地址-PCIEBAR_n+PCIEBAR2AXIBAR_n,其中0<=n<=2,PCIEBAR_n为AXIPCIE寄存器块中的寄存器,而PCIEBAR2AXIBAR_n为Verilog语言中的参数。

这样做后,当AXI CDMA IP向AXI4-Full-Slave到PCIE桥发了一个AXI地址后,AXI4-Full-Slave到PCIE桥会将这个AXI地址转换为PCIE总线地址,转换公式为:

PCIE地址=AXI地址-AXIBAR_n+AXIBAR2PCIEBAR_n,其中0<=n<=5,AXIBAR_n为Verilog语言中的参数。

由于AXI4-Full-Slave到PCIE桥和AXIPCIE寄存器块位于同一个IP中,所以AXI4-Full-Slave到PCIE桥可以很轻松访问AXIPCIE寄存器块中的寄存器而不用任何通信协议。

如果在上图中的AXI互联IP上再连接一个带AXI Slave接口的BRAM控制器,这个BRAM控制器连接一个BRAM,Host PC在系统主存中分配了一些不连续的内存,Host PC可以将这些内存段的起始地址(当然要先转为PCIE总线地址)写到AXI总线上的BRAM中,这样AXI CDMA读取BRAM,将读取到的PCIE总线基地址写到AXIPCIE寄存器块中的AXIBAR2PCIEBAR_n寄存器中,这样就实现了SG DMA。实际上AXI CDMA自带独立的M_AXI_SG接口,AXI CDMA就是通过该接口访问SG列表,从而实现SG DMA。

对于多通道DMA,Xilinx提供了AXI MCDMA IP。通过动态改变AXIBAR2PCIEBAR_n寄存器的值,可以实现多通道DMA。

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

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

相关文章

【漏洞复现】|智互联SRM智联云采系统quickReceiptDetail SQL注入漏洞

漏洞描述 智互联(深圳)科技有限公司SRM智联云采系统针对企业供应链管理难题&#xff0c;及智能化转型升级需求&#xff0c;智联云采依托人工智能、物联网、大数据、云等技术&#xff0c;通过软硬件系统化方案&#xff0c;帮助企业实现供应商关系管理和采购线上化、移动化、智能…

el-table-column自动生成序号在序号前插入图标

实现效果&#xff1a; 代码如下&#xff1a; 在el-table里加入这个就可以了&#xff0c;需要拿到值可以用scope.$index ​​​​​​​<el-table-column type"index" label"序号" show-overflow-tooltip"true" min-width"40">…

如何利用 Puppeteer 的 Evaluate 函数操作网页数据

介绍 在现代的爬虫技术中&#xff0c;Puppeteer 因其强大的功能和灵活性而备受青睐。Puppeteer 是一个用于控制 Chromium 或 Chrome 浏览器的 Node.js 库&#xff0c;提供了丰富的 API 接口&#xff0c;能够帮助开发者高效地处理动态网页数据。本文将重点讲解 Puppeteer 的 ev…

“小浣熊家族AI办公助手”产品体验 — “人人都是数据分析师”

一、引言&#xff1a; 大家平时应该在工作中常常使用到Excel来做数据统计&#xff0c;比如临近过年时&#xff0c;公司一般会开各种复盘、年终、检讨、明年规划大会&#xff0c;势必需要准备一大堆的量化数据报表&#xff0c;用于会议上的数据汇报、分析工作&#xff0c;试想一…

Unity-添加世界坐标系辅助线

如果你想在场景中更直观地显示世界坐标系&#xff0c;可以通过编写一个简单的脚本来实现。下面是一个基本的示例脚本&#xff0c;它会在场景中绘制出世界坐标系的三个轴&#xff1a; using UnityEngine;public class WorldAxesIndicator : MonoBehaviour {public float length…

Makefile基础应用

1 使用场景 在Linux环境下&#xff0c;我们通常需要通过命令行来编译代码。例如&#xff0c;在使用gcc编译C语言代码时&#xff0c;需要使用以下命令。 gcc -o main main.c 使用这种方式编译代码非常吃力&#xff0c;每次调试代码都需要重新在命令行下重新编译&#xff0c;重复…

【tensorflow的安装步骤】

创建一个虚拟环境 conda create -n tensorflow python3.6激活虚拟环境 conda activate tensorflow使用镜像源下载 pip install tensorflow1.15.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/特别特别重要的点&#xff01;&#xff01;&#xff01; 别用WiFi或者校园网下…

【Python · PyTorch】循环神经网络 RNN(基础概念)

【Python PyTorch】循环神经网络 RNN&#xff08;基础概念&#xff09; 0. 生物学相似性1. 概念2. 延时神经网络&#xff08;TDNN&#xff09;3. 简单循环神经网络&#xff08;Simple RNN&#xff09;3.1 BiRNN 双向循环神经网络3.2 特点记忆性参数共享图灵完备 3.3 网络结构3…

使用EFK收集k8s日志

首先我们使用EFK收集Kubernetes集群中的日志&#xff0c;本次实验讲解的是在Kubernetes集群中启动一个Elasticsearch集群&#xff0c;如果企业内已经有了Elasticsearch集群&#xff0c;可以直接将日志输出至已有的Elasticsearch集群。 文章目录 部署elasticsearch创建Kibana创建…

Qt入门1——认识Qt的几个常用头文件和常用函数

1.头文件 ① #include <QPushButton>——“按钮”头文件&#xff1b; ② #include <QLabel>——“标签”头文件&#xff1b; ③ #include <QFont>——“字体”头文件&#xff1b; ④#include <QDebug>——输出相关信息&#xff1b; 2. 常用函数/类的基…

【Linux驱动开发】irq中断配置API及中断应用 阻塞休眠和非阻塞的驱动操作

【Linux驱动开发】irq中断配置API及中断应用 阻塞休眠和非阻塞的驱动操作 文章目录 中断操作注册和释放中断中断服务函数使能和禁止上半部和下半部软中断tasklet工作队列 设备节点中的中断中断号API函数获取中断号获取中断信息 中断应用读取设备树节点获取中断号获取中断触发方…

Linux设置以及软件的安装(hadoop集群安装02)

一、Linux的常见设置 1、设置静态IP vi /etc/sysconfig/network-scripts/ifcfg-ens33 如何查看自己的虚拟机的网关&#xff1a; 完整的配置&#xff08;不要拷贝我的&#xff09;&#xff1a; TYPE"Ethernet" PROXY_METHOD"none" BROWSER_ONLY"no&…

excel版数独游戏(已完成)

前段时间一个朋友帮那小孩解数独游戏&#xff0c;让我帮解&#xff0c;我看他用电子表格做&#xff0c;只能显示&#xff0c;不能显示重复&#xff0c;也没有协助解题功能&#xff0c;于是我说帮你做个电子表格版的“解题助手”吧&#xff0c;不能直接解题&#xff0c;但该有的…

网络安全,文明上网(5)注重隐私加密

前言 为了维护个人数据和通信的安全&#xff0c;防止非法获取或泄露&#xff0c;可以采用多种隐私保护技术。 技术要点 1. 个人数据去标识化和匿名化方法&#xff1a; K匿名性(K-Anonymity)&#xff1a;由Sweeney提出&#xff0c;通过对个人数据进行匿名化处理&#xff…

【Unity】 GamePlay开发:通用的检查点/成就/条件触发系统

特别适用于各种解谜关卡, 成就系统&#xff0c;任务系统&#xff0c;的 通用事件处理 CheckPointHandler.cs随便挂在场景中的某个物体上 (单例模式&#xff0c;场景中只要有一个&#xff09; 1) How To Use CheckPoint Events是一个列表&#xff0c;每个元素是一个组合事件&…

P1 练习卷(C++4道题)

1.纷繁世界 内存限制&#xff1a;256MB 时间限制&#xff1a;1s 问题描述 这是一个纷繁复杂的世界。 某一天清晨你起床很迟&#xff0c;没有吃上早饭。于是你骑着自行车去超市&#xff0c;但是你又发现商店的工作人员已经重新贴上了价格标签&#xff0c;零食价格都涨了50%。你…

私有化部署视频平台EasyCVR宇视设备视频平台如何构建视频联网平台及升级视频转码业务?

在当今数字化、网络化的时代背景下&#xff0c;视频监控技术已广泛应用于各行各业&#xff0c;成为保障安全、提升效率的重要工具。然而&#xff0c;面对复杂多变的监控需求和跨区域、网络化的管理挑战&#xff0c;传统的视频监控解决方案往往显得力不从心。 EasyCVR视频融合云…

物体网格弹性变形---Unity中实现

在游戏引擎场景中的3D物体是由一定数量的点、面组成的&#xff0c;如下图&#xff1a; 要使这些物体变形就是改变3D物体每个顶点状态。 1.首先在Unity场景中增加一个球体&#xff0c;如下图 3D组件默认拥有MeshFilter、meshRenderer、Collider组件&#xff0c;分别用来获取Mes…

Java爬虫:获取商品详情的实践之旅

在当今这个信息爆炸的时代&#xff0c;数据的价值日益凸显。对于电商行业来说&#xff0c;商品详情的获取尤为重要&#xff0c;它不仅关系到产品的销售&#xff0c;还直接影响到用户体验。传统的人工获取方式耗时耗力&#xff0c;而自动化的爬虫技术则提供了一种高效解决方案。…

【LLM】一文学会SPPO

博客昵称&#xff1a;沈小农学编程 作者简介&#xff1a;一名在读硕士&#xff0c;定期更新相关算法面试题&#xff0c;欢迎关注小弟&#xff01; PS&#xff1a;哈喽&#xff01;各位CSDN的uu们&#xff0c;我是你的小弟沈小农&#xff0c;希望我的文章能帮助到你。欢迎大家在…