如何编写VeriStand custom device/custom FPGA Target以及基本原理

2023-05-16

在做HIL开发的时候用到了FPGA,对于Labview中可以很方便的使用FPGA,但是在用VeriStand 做模型仿真的时候,调用FPGA就没呢么方便了。感觉就是功能还没有完善。

如果想要在Labview中编译好的FPGA bit文件被VeriStand识别的话,就需要编写对应的配置文件。配置文件的作用就是告诉Veristand比特文件中有哪些输入输出,输入输出的数据类型是什么。和custom device是什么关系呢?刚开始接触的时候一直搞不懂custom device 到底是怎么一种原理,后来随着开发的深入,custom device 的自由度应该更高一些,也学要写定义文件,而淡出的custom FPGA则是在一套custom device 基础上去声明你的FPGA有什么输入输出端口。本质上还是custom device 只不过很多东西已经提前写好,可以理解为深度定制的custom device。实际上custom FPGA 要简单的多,NI提供了一套例子,help文档里也有比较详细的说明。仔细看一下基本就能编写了。

这里我提供一段非常简单的custom FPGA 配置文件代码,以及实现效果。这个比自带的模板还要简单。指示带四个接收PWM信号的功能,四个输入。

<?xml version='1.0' standalone='yes' ?>
<?xml-stylesheet type="text/xsl" href='NI VeriStand FPGA DMA.xsl'?>
<FPGADMAChannelData xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "NI VeriStand FPGA DMA.xsd">
      <Version>2.0</Version>
      <Bitfile>NIVeriStandFPGAI_PXI.lvbitx</Bitfile>

      <Categories>
          <Category>
              <Name>Input</Name>
              <Description>Description</Description>
              <Symbol>Default</Symbol>
              <Category>
                  <Name>PWMin</Name>
                  <Description>Category with Default Symbol contained in PWMin</Description>
                  <Symbol>Default</Symbol>
              </Category>
          </Category>
      </Categories>

      <DMA_Read>
          <Packets>2</Packets>
          <Packet/>
          <Packet>
              <U16>
                  <Name>PWM1</Name>
                  <Description>PWM1 channel</Description>
                  <Category>Input\PWMin</Category>
                  <InitialValue>0</InitialValue>
                  <Scale>65536</Scale>
                  <Offset>0</Offset>
                  <Symbol>Default</Symbol>
              </U16>

              <U16>
                  <Name>PWM2</Name>
                  <Description>PWM2 channel</Description>
                  <Category>Input\PWMin</Category>
                  <InitialValue>0</InitialValue>
                  <Scale>65536</Scale>
                  <Offset>0</Offset>
                  <Symbol>Default</Symbol>
              </U16>

              <U16>
                  <Name>PWM3</Name>
                  <Description>PWM3 channel</Description>
                  <Category>Input\PWMin</Category>
                  <InitialValue>0</InitialValue>
                  <Scale>65536</Scale>
                  <Offset>0</Offset>
                  <Symbol>Default</Symbol>
              </U16>

              <U16>
                  <Name>PWM4</Name>
                  <Description>PWM4 channel</Description>
                  <Category>Input\PWMin</Category>
                  <InitialValue>0</InitialValue>
                  <Scale>65536</Scale>
                  <Offset>0</Offset>
                  <Symbol>Default</Symbol>
              </U16>
          </Packet>
          
      </DMA_Read>

      <DMA_Write>
          <Packets>1</Packets>
          <Packet/>
      </DMA_Write>
</FPGADMAChannelData>

配置文件就是XML语言,我是零基础。但是这个很简单。

后面一点点分析

<?xml version='1.0' standalone='yes' ?>
<?xml-stylesheet type="text/xsl" href='NI VeriStand FPGA DMA.xsl'?>
<FPGADMAChannelData xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "NI VeriStand FPGA DMA.xsd">

上面的代码里,基本内容固定。里面提到的两个文件是NI提供的其中的xsd文件是用来检查我们自己写好的XML配置文件的语法结构问题。xsl文件应该就是custom device生成的文件,这里已经提供,相当于custom FPGA就是custom device的一个模板。

      <Version>2.0</Version>
      <Bitfile>NIVeriStandFPGAI_PXI.lvbitx</Bitfile>

上面代码提到的文件就是编译好bit文件,需要手动复制并和配置文件放在一起。

      <Categories>
          <Category>
              <Name>Input</Name>
              <Description>Description</Description>
              <Symbol>Default</Symbol>
              <Category>
                  <Name>PWMin</Name>
                  <Description>Category with Default Symbol contained in PWMin</Description>
                  <Symbol>Default</Symbol>
              </Category>
          </Category>
      </Categories>

上面代码表示的是如何在Veristand中显示FPGA IO口目录。具体来说这里是建立了Input目录,Input下面又建立了PWMin的目录,其他Tag标记的意义可以参考Veristand的帮助文档。

     <DMA_Read>
          <Packets>2</Packets>
          <Packet/>
          <Packet>
              <U16>
                  <Name>PWM1</Name>
                  <Description>PWM1 channel</Description>
                  <Category>Input\PWMin</Category>
                  <InitialValue>0</InitialValue>
                  <Scale>65536</Scale>
                  <Offset>0</Offset>
                  <Symbol>Default</Symbol>
              </U16>

上面就是具体对bit文件中的IO定义的部分了,<Packets>表示有几个打包的数据,每个包数据长度是64位,我这里设置的PWM接收的数据类型是U16,也就是这一个包就可以装下这四个PWM的输入。《U16》说的是数据类型,如果是其他数据类型请参考帮助文档,比如I32。这里设置了名字是PWM1,目录是刚才定义的Input-->PWMin下面,可以设置初始值,以及范围。后面的内容同理。需要说明的是<DMA_Read>标签,因为这种数据传输是通过DMA FIFO传输的,在生成的bit文件的VI中有相应的FIFO,VI中接受到的PWM数值实际上是通过通过局部变量传输到DMA FIFO中,转到VeriStand中由VeriStand进行读取,所以这里是DMA_Read并且每一个Packet对应一个子vi,或者理解为是U64 类型的DMA FIFO被拆分成了几个Packet进行定义。具体只要看到NI提供的vi模板想必就会很清楚,后面还有DMA_Write可以定义写通道,从主机将数据传到FPGA,原理和DMA_Read相同,方向相反而已。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何编写VeriStand custom device/custom FPGA Target以及基本原理 的相关文章

  • ROS编程入门(C++ 及 思路)

    使用Autolabor官方入门教程 xff0c 笔记内容为注意事项 首页 Autolabor开源ROS机器人底盘 官方网站 一 ROS通信机制的解释 例如在生活中 xff0c 我们在家里有一个放零食的箱子 xff0c 而操作服务器就是这个箱
  • HNU软件能力实训4-5. 小希的数表

    写在前面 你好 xff01 欢迎来到我的博客 xff0c 希望我的思路能够帮到你 xff01 问题描述 Gardon 昨天给小希布置了一道作业 xff0c 即根据一张由不超过 5000 的 N 3 lt 61 N lt 61 100 个正整
  • HNU软件能力实训4-12. 疫情期间

    写在前面 你好 xff01 欢迎来到我的博客 xff0c 希望我的思路能够帮到你 xff01 问题描述 正值新冠疫情期间 xff0c 阿迪没法返回学校学习 xff0c 他希望通过参加一些比赛来提高一下编程技能 xff0c 同时做做运动 他收
  • HNU软件能力实训4-14. 组个最小数

    写在前面 你好 xff01 欢迎来到我的博客 xff0c 希望我的思路能够帮到你 xff01 问题描述 给定数字0 9各若干个 你可以以任意顺序排列这些数字 xff0c 但必须全部使用 目标是使得最后得到的数尽可能小 xff08 注意0不能
  • CMakeLists.txt的编写

    首先是编写好的CMakeLists txt文件 span class token function cmake minimum required span span class token punctuation span VERSION
  • 第一课 神经网络与深度学习 第二周 神经网络基础(已完结(虽然有坑))

    视频地址 二分分类 怎么说 xff0c 第一段话就颠覆了我的想象 xff0c 遍历m个样本不需要用for循环 这里是介绍了图片的预处理 xff0c 将图片切分为rgb三个颜色空间 xff08 这个我熟 xff09 xff0c 然后将所有的分
  • leetcode 1200. 最小绝对差

    1200 最小绝对差 span class token keyword class span span class token class name Solution span span class token punctuation sp
  • 648. 单词替换

    648 单词替换 span class token keyword class span span class token class name Solution span span class token punctuation span
  • 1217. 玩筹码

    1217 玩筹码 span class token comment 由题目描述可知 xff0c 移动1步成本为1 移动2步没有成本 那么我们可以不耗费成本的将不同奇数位置的筹码移动到某一个奇数位置 此时的成本为0 同理 也可以将不同偶数位置
  • dronekit控制实体无人机起飞降落

    摘要 xff1a 本文基于dronekit在实体无人机上实现最基本的起飞和降落 xff0c 测试了这一过程中速度的变化以及起落位置的偏移 实体实验环境 树莓派4BUbuntu mate 20 04飞控Pixhawk 2 4 8飞控固件APM
  • Gazebo中针对Gazebo软件或生成模型出现process has died问题的参考方案

    在基于ROS机器人仿真时 xff0c 打开Gazebo经常出现一些问题 xff0c 比如Gazebo窗口打开了 xff0c 终端却显示gazebo进程已死 本文记录了一次遇到的类似问题 xff0c 并给出了在部分情况下能够适用的参考方案 问
  • ROS 入门 (launch文件)

    本章主要内容介绍在ROS中上述问题的解决策略 见本章目录 xff0c 预期达成学习目标也与上述问题对应 xff1a 掌握元功能包使用语法 xff1b 掌握launch文件的使用语法 xff1b 理解什么是ROS工作空间覆盖 xff0c 以及
  • 报错:Multiple annotations found at this line: - user cannot be resolved

    问题 xff1a Multiple annotations found at this line user cannot be resolved 第一步 xff1a 右键找到Build Path 点击Configure Build Path
  • Nuxt 生命周期

    目录 服务端生命周期1 nuxtServerInit nuxt中第一个运行的生命周期 2 RouteMiddleware 第二个 xff1a 中间键 xff0c 路由导航守卫 4 validate 是用来校验url参数符不符合5 async
  • 使用ESP-idf-4.23一次编译通过ESP32-Drone四旋翼无人机代码

    为了编译ESP32 Drone四旋翼无人机代码 xff0c 试用了几种编译环境 xff0c 折腾一个上午 xff0c 最后使用ESP idf 4 23一次性编译通过 记录一下过程 1 获取ESP32 Drone四旋翼无人机项目源代码 xff
  • 基于ESP32四旋翼无人机如何根据PID算法进行电机的PWM duty补偿

    1 计算模型 电机位置和补偿输出的关系 xff0c 需要求解的是C1 C2 C3 C4的电机输出补偿值 分别对应M1 M2 M3 M4四个电机 2 推导过程 xff08 可以跳过不看 xff0c 直接到第三步 xff09 3 四个电机的PI
  • 基于ESP32四旋翼无人机的MPU6050姿态数据采集和处理方式

    1 MPU6050姿态数据采集和处理 在DMP任务里面采集MPU6050的四元数的姿态数据 xff0c 然后解算出机体坐标系的三个角姿态角 dmp task任务通过消息队列将姿态角发送给姿态控制程序 dmp task gt dandelio
  • 基于ESP32四旋翼无人机同蓝牙遥控器通信处理方式

    1 蓝牙初始化 在app main调用函数初始化蓝牙 inf ble gatt init 2 判断蓝牙是否链接 在dandelion task中调用函数inf ble gatt connected 判断蓝牙是否链接 xff0c 进而调用da
  • 论文Handheld Multi-Frame Super-Resolution的相关学习笔记

    导语 这里汇总了阅读这篇论文可能会参考到的相关知识汇总 xff0c 这篇主要为了让自己查找方便 但是也希望阅读这篇博文的你能够通过我的笔记更快理解 上手这篇论文 文章题目 xff1a Hand held Multi frame super
  • ASP读EXCEL2000的文章!!!

    由于工作需要 要用ASP读取EXCEL的工资单 所以在网上找了些资料 写了以下程序 送给大家 xff1a xff09 lt 39 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 6

随机推荐

  • Linux下软件安装方法

    对于Linux初学者来说 xff0c 安装一个很小的软件恐怕都是一件很让人头疼的事 xff0c 因为在Linux下安装软件不像在 Windows中那样简单 在Linux中大多数软件提供的是源代码 xff0c 而不是现成的可执行文件 xff0
  • linux指令大全(二)

    cat cd chmod chown cp cut 名称 xff1a cat 使用权限 xff1a 所有使用者 使用方式 xff1a cat AbeEnstTuv help version fileName 说明 xff1a 把档案串连接后
  • 详解C++STL容器系列(一)—— vector的详细用法和底层原理

    目录 一 介绍二 vector的创建和方法创建vector方法 三 vector的具体用法3 1 遍历vector3 1 1 迭代器访问3 1 2 下标访问3 1 3 范围for循环 3 2 vector 容量和大小3 3 vector 常
  • FTP的命令行格式

    From LinuxSir org 非常感谢javalee大哥 FTP的命令行格式为 xff1a ftp v d i n g 主机名 xff0c 其中 v 显示远程服务器的所有响应信息 xff1b n 限制ftp的自动登录 xff0c 即不
  • 一句话问答(网络无关篇+网络相关篇)

    一句话问答 网络无关篇 43 网络相关篇 网络无关篇 0001 修改主机名 vi etc sysconfig network xff0c 修改HOSTNAME一行为HOSTNAME 61 主机名 xff0c 重启后也能生效 0002 Ret
  • linux下各种分区的自动挂载和卸载.

    目前实现分区自动挂载 卸载的方法 我知道的 有两种 一种是supermount 一种是automount supermount要重新编译内核 而且不稳定 这里就不介绍了 我介绍一下automount的使用方法 首先确认你的linux已经安装
  • Linux 挂载文件系统

    1 挂载点必须是一个目录 2 一个分区挂载在一个已存在的目录上 xff0c 这个目录可以不为空 xff0c 但挂载后这个目录下以前的内容将不可用 对于其他操作系统建立的文件系统的挂载也是这样 但是需要理解的是 xff1a 光盘 软盘 其他操
  • 新浪网人力资源总监段冬聊企业对人才的需求

    http edu sina com cn l 2004 12 02 ba93631 shtml 新浪网人力资源总监段冬聊企业对人才的需求 http www sina com cn 2004 12 02 21 03 新浪教育 图为新浪网人力资
  • RESIN FAQ

    RESIN FAQ 环境变量设置 CLASSPATH C j2sdk lib dt jar C j2sdk lib tools jar JAVA HOME C j2sdk PATH C j2sdk bin 61 61 61 61 61 61
  • 研究基于PX4平台的Ardupilot代码工程的makefile结构

    最近有空 xff0c 于是想花时间好好研究下ardupilot的软件架构 xff0c 经过对ardupilot一段时间的熟悉和使用后 xff0c 对其软件架构已经有了一定的理解 xff0c 但还称不上特别完备 xff0c 所以想把每一部分的
  • Px4固件升级流程。

    PX4飞控的固件升级可以简单的分为6步 xff0c 具体如下 xff1a 1 重启飞控 重启飞控 xff0c APP发送指令mavlink飞控重启指令 等待0 5s后进入下一步 xff1b 2 识别bootloader APP发送 0x21
  • pixhawk入门知识

    Pixhawk是一种先进的自动驾驶仪 xff0c 由PX4开放硬件项目设计和3D机器人制造 它具有来自ST公司先进的处理器和传感器技术 xff0c 以及NuttX实时操作系统 xff0c 能够实现惊人的性能 xff0c 灵活性和可靠性控制任
  • MDK 注册机下载路径

    MDK下载路径 https editor csdn net md articleId 61 115338061
  • MathJax 3.0 配置方法,上手配置

    说明 网上很多MathJax 的配置方法适用于旧版本 新版的MathJax做了一些改进 配置方式也做了调整 最简单的方案 方便起见 最简单的方案如下 span class token tag span class token tag spa
  • VsCode+LaTexWorkshop外置PDF预览配置(2021.3.3)

    随着插件版本的升级有些配置命令发生了改变 xff0c 这里只是做个简单记录 xff0c 写的比较粗糙 后面有闲工夫再来做做美工 VsCode一侧配置 34 latex workshop view pdf viewer 34 34 exter
  • MATLAB批量为png透明(抠图)图片替换添加背景

    MATLAB批量为png透明 抠图 图片替换添加背景 说明 最近有个小需求 需要抠图后将抠图的背景替换为指定图片 如果一张一张做 图片多了实在是不好用 前提 准备好背景图片 一张准备好目标图片 很多张可以利用powertoys将目标图片统一
  • PilotPi:树莓派运行PX4配置方法

    直接看最后 即可 前言 PX4开源飞控固件支持很多款硬件 包括pixhawk cuav 和 cube等 在1 12版本中px4官方开始实验性的支持树莓派直接运行 这样我们就可以在树莓派上直接运行飞控程序 考虑到树莓派处理器的性能 那么就算可
  • PX4 1.12版本后启用lpe导致飞控启动失败的问题的解决办法

    时间 20220531 问题 在PX4 升级到1 12后使用local position estimator也就是LPE后会导致飞控启动失败 从SD卡的log中可以看到是硬件错误 解决办法 将文件 PX4Firmware根目录中的文件 pl
  • 多旋翼/四旋翼半物理(硬件在环HIL)仿真

    半物理仿真平台基本框架如图所示 多旋翼HIL平台结构图 其中 xff0c 最重要的也就是中间的部分 xff0c 一个是多旋翼模型 xff0c 另一个是传感器部分实现 硬件平台目前使用的是NI的myRIO xff08 临时的 xff09 xf
  • 如何编写VeriStand custom device/custom FPGA Target以及基本原理

    在做HIL开发的时候用到了FPGA xff0c 对于Labview中可以很方便的使用FPGA xff0c 但是在用VeriStand 做模型仿真的时候 xff0c 调用FPGA就没呢么方便了 感觉就是功能还没有完善 如果想要在Labview