当前位置: 首页 > news >正文

xilinx xapp1171学习笔记

在xapp1171示例中,假设Host PC将PCIE:BAR0赋值为:0x00000000_def00000

PCIEBAR2AXIBAR_0=0x81000000,即Host PC读写0x00000000_def00000就是在读写AXI地址0x81000000(BRAM在AXI总线上的基地址)

在AXI总线上,
MIG基地址=0x00000000
AXI_PCIE_DM=AXI:BAR1=0x80000000,注意不是AXIBAR2PCIEBAR_1寄存器的地址,8 MB
AXI_PCIE_SG=AXI:BAR0=0x80800000,注意不是AXIBAR2PCIEBAR_0寄存器的地址,8 MB
BRAM基地址=0x81000000,32 KB
AXI_PCIE_CTL基地址=0x81008000,16 KB
AXI_CDMA_LITE基地址=0x8100C000,16 KB

1、Host PC向地址0x00000000_def0C000写入0x0A000100,即写AXI_CDMA_LITE基地址,
即写AXI CDMA的控制寄存器,以使能AXI CDMA的SG DMA模式;
这是一个Host PC发起的32位的PCIE内存写事务。

3、Host PC向地址0x00000000_def08208写入0x00000001_00000000,这是一个Host PC发起的64位的PCIE内存写事务。即向AXI地址0x81008208写64位数;AXI地址0x81008208就是AXIBAR2PCIEBAR_0寄存器在AXI总线上的地址;即Host PC向AXIBAR2PCIEBAR_0寄存器写入0x00000001_00000000;0x00000001_00000000是Host PC系统主存的一个地址,Host PC在系统主存中分配了一段内存用于存放传输描述符链表,这段内存的起始地址就是0x00000001_00000000,即Host PC将系统主存中的SG列表的起始地址写到了AXIBAR2PCIEBAR_0寄存器中;

4、a.Host PC在地址0x00000000_def00000处写入0x0000ccc0_c0000000,这是Host PC发起的64位的PCIE内存写事务。0x00000000_def00000对应AXI地址为0x81000000,即BRAM基地址,即Host PC向BRAM的首地址写入64位数0x0000ccc0_c0000000;0x0000ccc0_c0000000是Host PC系统主存中的一个地址,DMA引擎就是从0x0000ccc0_c0000000地址处进行DMA数据传输;
b.Host PC在地址0x00000000_def00008处写入0x0000ddd0_d0000000;
在本步骤中,Host PC向BRAM写入了2个Host PC系统主存地址,这两个地址为
Host PC系统主存中的两个内存段的起始地址,DMA引擎就是读写这些位于Host PC系统主存中的内存段进行DMA数据传输;

5、Host PC在地址0x00000000_def0c008处写入0x80800000,0x00000000_def0c008对应的AXI地址为0x8100C008,即AXI CDMA中的CURDESC_PNTR寄存器在AXI总线上的地址;即Host PC向AXI CDMA中的CURDESC_PNTR寄存器写入0x80800000,此值为AXI_PCIE_SG的基地址;
对于AXI CDMA,当前描述符的地址位于AXI地址0x80800000处,于是AXI CDMA发出AXI地址0x80800000以获取传输描述符。这个AXI地址位于AXI:BAR0所描述的AXI地址区间,而AXI:BAR0对应的AXIBAR2PCIEBAR_0寄存器中的值为Host PC系统主存中的SG列表的起始地址,所以当AXI CDMA从AXI地址0x80800000处读数据时,就是读Host PC系统主存中的SG列表中的第一个传输描述符;

6、和步骤5类似,Host PC在地址0x00000000_def0c010处写入0x808000c0,0x00000000_def0c010对应的AXI地址为0x8100c010,即AXI CDMA中的TAILDESC_PNTR寄存器在AXI总线上的地址;即Host PC向AXI CDMA的TAILDESC_PNTR寄存器写入0x808000c0,以告诉AXI CDMA最后一个描述符在AXI总线上的地址,因为AXI CDMA访问Host PC系统主存中的SG列表是通过AXI总线访问的。

当AILDESC_PNTR寄存器被写后,AXI CDMA就开始读取并处理描述符,即执行DMA操作了

7、AXI CDMA将持续进行SG DMA操作,直到尾描述符被处理后结束;


下面解释这4个位于Host PC系统主存的描述符(这4个描述符在系统主存中可以不连续):

描述符中含有SA和DA,AXI CDMA执行DMA时,将地址SA中的数据拷贝至地址DA中

描述符1:
Desc1在系统主存中的地址为0x00000001_00000000;
Desc1描述的DMA行为为:从BRAM首地址处拷贝64位数据到AXIBAR2PCIEBAR_1中;
BRAM首地址存放了步骤4中由Host PC写入的用作DMA数据传输的系统主存地址;
所以描述符1描述的DMA行为不涉及PCIE设备与Host PC系统主存的数据传输;

描述符2:
Desc2在系统主存中的地址为0x00000001_00000040;
Desc2描述的DMA行为为:从AXI地址0x8000_0000处拷贝64KB数据到AXI地址0x0010_0000;
AXI地址0x8000_0000位于AXI:BAR1所描述的AXI地址区间,而AXI:BAR1对应的AXI to PCIE寄存器为AXIBAR2PCIEBAR_1,AXIBAR2PCIEBAR_1寄存器中的内容刚由Desc1描述的行为被赋值,所以,描述符2描述的行为实际是DMA引擎从Host PC系统主存中拷贝64KB数据到FPGA PCIE卡中的DDR中,拷贝数据的源地址为Host PC系统主存地址0x0000ccc0_c0000000,目的地址为AXI地址0x0010_0000(对应FPGA PCIE卡上的DDR);

描述符3:
描述符3的描述的行为和描述符1类似;

描述符4:
描述符4的描述的行为与描述符2相反,即从FPGA PCIE卡上的DDR中拷贝数据到Host PC系统主存;

总结:上述过程中,Host PC在系统主存中分配了用于数据传输的内存,也分配了SG列表;Host PC需要将用于DMA数据传输的内存段起始地址告诉PCIE设备(本例是BRAM),Host PC还需要告诉DMA引擎第一个描述符在主存中的地址和最后一个描述符在主存中的地址。SG DMA引擎在得知描述符在主存中的地址后,将逐个读取描述符,执行描述符所描述符的数据拷贝行为,直到处理完所有的描述符;AXI CDMA不要求SG列表(即传输描述符链)在Host PC系统主存中连续;

相关文章:

xilinx xapp1171学习笔记

在xapp1171示例中,假设Host PC将PCIE:BAR0赋值为:0x00000000_def00000 PCIEBAR2AXIBAR_00x81000000,即Host PC读写0x00000000_def00000就是在读写AXI地址0x81000000(BRAM在AXI总线上的基地址) 在AXI总线上&#xff0…...

一次需升级系统的wxpython安装(macOS M1)

WARNING: The scripts libdoc, rebot and robot are installed in /Users/用户名/Library/Python/3.8/bin which is not on PATH. 背景:想在macos安装Robot Framework ,显示pip3不是最新,更新pip3后显示不在PATH上 参看博主文章末尾 MAC系统…...

el-table 数据去重后合并表尾合计行,金额千分位分割并保留两位小数,表尾合计行表格合并

问题背景 最近在做后台管理项目el-table 时候需要进行表尾合计,修改合计后文字的样式,合并单元格。 想实现的效果 合并表尾单元格前三列为1格;对某些指定的单元格进行表尾合计;合计后的文本样式加粗;涉及到金额需要千…...

Springboot整合mybatis-plus使用pageHelper进行分页

PageHelper 使用步骤全解析 在进行 Web 应用开发时,经常会涉及到数据库数据的分页展示。PageHelper 是一个非常实用的 MyBatis 分页插件,它能够方便地实现数据库查询结果的分页功能,极大地提高了开发效率。以下将简单介绍 PageHelper 的使用…...

【Xbim+C#】创建拉伸的墙

基础 基础回顾 效果图 简单的工具类 using System.Collections.Generic; using System.Linq; using Xbim.Common.Step21; using Xbim.Ifc; using Xbim.Ifc4.GeometricConstraintResource; using Xbim.Ifc4.GeometricModelResource; using Xbim.Ifc4.GeometryResource; using…...

【阅读记录-章节3】Build a Large Language Model (From Scratch)

目录 3 Coding attention mechanisms3.1 The problem with modeling long sequences背景:注意力机制的动机 3.2 Capturing data dependencies with attention mechanismsRNN的局限性与改进Transformer架构的革命 3.3 Attending to different parts of the input wit…...

three.js 对 模型使用 视频进行贴图修改材质

three.js 对 模型使用 视频进行贴图修改材质 https://threehub.cn/#/codeMirror?navigationThreeJS&classifyapplication&idvideoModel import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls.js import { GLTFLoad…...

MySQL - 数据库基础 | 数据库操作 | 表操作

文章目录 1、数据库基础1.1为什么要有数据库1.2主流的数据库1.3连接MySQL1.4服务器、数据库、表的关系1.5 MySQL框架1.6 SQL分类1.7储存引擎 2.数据库操作2.1创建数据库2.2字符集和校验规则2.3删除数据库2.4修改数据库2.5备份与恢复2.6查看连接情况 3.表的操作3.1创建表3.2查看…...

maven父子项目

目录 一、创建Maven父子项目 二、父子项目的关联 三、父子项目的继承关系 四、构建父子项目 五、Maven父子项目的优势 Maven父子项目是一种项目结构,它允许一个父项目(也称为根项目)管理多个子项目(也称为模块)。…...

NLP论文速读(多伦多大学)|利用人类偏好校准来调整机器翻译的元指标

论文速读|MetaMetrics-MT: Tuning Meta-Metrics for Machine Translation via Human Preference Calibration 论文信息: 简介: 本文的背景是机器翻译(MT)任务的评估。在机器翻译领域,由于不同场景和语言对的需求差异&a…...

MyBatis——#{} 和 ${} 的区别和动态 SQL

1. #{} 和 ${} 的区别 为了方便,接下来使用注解方式来演示: #{} 的 SQL 语句中的参数是用过 ? 来起到类似于占位符的作用,而 ${} 是直接进行参数替换,这种直接替换的即时 SQL 就可能会出现一个问题 当传入一个字符串时&#xff…...

解决sql字符串

根据你描述的情况以及调试截图中的内容,我可以确认你的 sql 字符串在 Python 中由于转义字符的问题,可能导致在 Oracle 中运行时出错。 以下是一些排查和修改建议: 问题分析 转义字符问题: 在调试界面中可以看到,DEC…...

深度解析:Android APP集成与拉起微信小程序开发全攻略

目录 一、背景以及功能介绍 二、Android开发示例 2.1 下载 SDK 2.2 调用接口 2.3 获取小程序原始Id 2.4 报错提示:bad_param 2.4.1 错误日志 2.4.2 解决方案 相关推荐 一、背景以及功能介绍 需求:产品经理需要APP跳转到公司的小程序(最好指定页…...

Leetcode 被围绕的区域

算法思想(解题思路): 这道题的核心是 将所有被边界包围的 O 保留下来,而将其他被围绕的 O 转换为 X。为了实现这一目标,我们可以分三步完成: 第一步:标记边界及其相连的 O 为特殊标记&#xff…...

ssm框架-spring-spring声明式事务

声明式事务概念 声明式事务是指使用注解或 XML 配置的方式来控制事务的提交和回滚。 开发者只需要添加配置即可, 具体事务的实现由第三方框架实现,避免我们直接进行事务操作! 使用声明式事务可以将事务的控制和业务逻辑分离开来,提…...

React第五节 组件三大属性之 props 用法详解

特性 a、props最好是仅限于父子上下级之间的数据传递,如果是祖孙多级之间传递属性,可以考虑使用props是否合适,或者使用替代方案 useContext() 或者使用 redux状态管理; b、props 中的属性是只读属性,如果想修改其中的…...

测评部署和管理 WordPress 最方便的面板

新版宝塔面板快速搭建WordPress新手教程 - 倚栏听风-Morii - 博客园 初学者使用1Panel面板快速搭建WordPress网站 - 倚栏听风-Morii - 博客园 可以看到,无论是宝塔还是1Panel,部署和管理WordPress都有些繁琐,而且还需要额外去配置Nginx和M…...

【系统分析师】-2024年11月论文-论DevOps开发

1、题目要求 论Devops及其应用。Devops是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障部门之间的沟通,协作与整合。它是一种重视软体开发人员和工厂运维技术人员之间沟通合作的模式。透过自动化“软件交付”和“架构变更”的流程&…...

算法【子数组最大累加和问题与扩展】

子数组最大累加和问题是一个非常经典的问题,也比较简单。但是扩展出的问题很多,在笔试、面试中特别常见,扩展出的问题很多非常有趣,解法也比较巧妙。 下面通过一些题目来加深理解。 题目一 测试链接:https://leetcode…...

小程序23-页面的跳转:navigation 组件详解

小程序中,如果需要进行跳转,需要使用 navigation 组件,常用属性: 1.url :当前小程序内的跳转链接 2.open-type:跳转方式 navigate:保留当前页面,跳转应用内的某个页面&#xff0c…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

ESP32读取DHT11温湿度数据

芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...