【LabVIEW FPGA入门】定时

        在本节学习使用循环计时器来设置FPGA循环速率,等待来添加事件之间的延迟,以及Tick Count来对FPGA代码进行基准测试。

 1.定时快捷VI函数

        在FPGA VI中放置的每个VI或函数都需要一定的时间来执行。您可以允许操作以数据流确定的速率发生,而无需额外编程。

        如果需要对执行时间进行控制或测量,可以使用定时VIs。您还可以使用定时VIs创建自定义的I/O应用,如计数器、触发器等。

循环定时器

        循环定时器循环定时器Express VI根据Count中指定的值在循环迭代之间等待。你可以在循环中调用这个函数来控制循环的执行速度。如果错过了执行实例,例如当循环中的逻辑执行时间长于指定的时间间隔时,loop Timer将立即返回并为后续调用建立一个新的引用时间戳。

        使用循环定时器Express VI来控制For循环或While循环,并设置循环的迭代速率。循环定时器Express VI的一个常见用途是控制模拟或数字I/O功能的采集或更新速率

等待

        Wait Express VI等待指定的时间,然后返回自由运行计数器的值。

        Wait Express VI在FPGA上的两个操作之间增加了显式延迟。使用Wait Express VI来控制数字输出的脉冲长度或在触发信号和由此产生的操作之间添加触发延迟。

时钟计数

        Tick Count Express VI在VI唤醒时返回空闲运行计数器的值。

        当计数器达到配置对话框中指定的“内部计数器大小”的最大值时,空闲运行的计数器将滚动。使用Tick Count Express VI对循环速率进行基准测试或创建您自己的自定义计时器。

        定时快速VI配置每个定时快速VI在将其添加到框图中或右键单击VI并选择“属性”时都有一个配置对话框。定时快速VIs的配置对话框包括以下选项:•计数器单位- VI用于计数器的时间单位。

        —tick -将计数器单位设置为单个时钟周期,其长度由编译VI时的时钟速率决定。

        -µsec -设置计数器单位为微秒。

        - msec -设置计数器单位为毫秒。

        -Size of Internal counter内部计数器的最大大小(8、16、32位)。当计数器达到可以使用所选位数表示的最大计数时,自由运行的计数器将滚动。为节省FPGA空间,建议FPGA VI使用尽可能小的内部计数器

2. 循环定时器详解

        应用程序通常需要以特定的频率执行循环。例如,控制回路中使用的算法通常要求以已知的速率对输入进行采样。使用While循环中的Loop Timer VI来控制循环的执行速率

        要使用循环计时器VI控制循环执行速率,请在While循环中放置一个顺序结构。将循环计时器VI放置在序列结构的第一帧中。在出现的“配置循环计时器”对话框中,指定计数器单位和内部计数器的大小。将用于I/O的LabVIEW代码放在序列结构的后续帧中。

        当Loop Timer第一次在循环中执行时,它记录当前时间。下一次循环计时器执行时,它将Count添加到初始时间中,并等待直到Count从初始记录的时间中消失。在FPGA VI中,循环计时器不会等待第一次调用它。如果将循环计时器放置在循环中,以便在循环开始时执行,则循环中与循环计时器并行的所有代码执行两次,在初始时间之后,在Count结束之前。为了防止代码在Count结束之前执行两次,请在第一帧中使用带有循环计时器的Flat Sequence结构或Stacked Sequence结构,并将其余代码放在后续帧中,以确保第一次和后续迭代的代码正确计时。

        当通过嵌套结构或连续运行模式重复调用时,循环计时器的计时不会每次都重置。循环计时器继续增加它在第一次调用时启动的时间记录。

 

3.While循环注意事项

        将False常数连接到While循环的Loop Condition终端,在许多FPGA应用中都是可以接受的。FPGA逻辑通常意味着在FPGA上无限期地运行。将控件和应用程序逻辑连接到Loop Condition终端也是可以接受的

        While循环的迭代终端计数不会翻转。相反,一旦达到该值,它将继续输出2,147,483,647。有了FPGA的速度,While循环迭代终端可能很快就会达到最大值。如果需要计数器在达到最大值时进行翻转,则应该以编程方式实现自己的计数器。

4.cRIO定时模块

        一些CompactRIO模块可以配置为以用户指定的数据速率传输数据。有关具体信息,请参阅具有此特性的CompactRIO模块的产品文档。

        例如,NI 9234具有四个模拟输入通道,以用户指定的数据速率同时采样。NI 9234有两个额外的数字通道,启动和停止,控制采集模式。要开始采集,将start通道从Project Explorer拖到框图中。将设置为TRUE的布尔常量连接到Start输入,以向模块发送同步脉冲,并开始以用户指定的数据速率获取数据。

        使用FPGA I/O Property Node以编程方式配置数据速率。在开始节点之前或在停止节点之后执行属性节点。当NI 9234处于采集模式时,不能更改属性。

        要配置属性节点,请右键单击Property部分并选择Data Rate,然后右键单击Data Rate输入并选择Create»Control。

        数据速率控件,如图所示,是一个严格类型定义自定义环控件,限制用户选择NI 9234允许的速率。从主机VI写入控件,以便可以在运行时更改数据速率

        采集开始后,使用FPGA I/O Node读取数据。将FPGA I/O Node的AI输出连接到FPGA Memory功能或FPGA FIFO功能。如果从模块上的多个通道读取数据,请将这些通道放在同一个FPGA I/O Node中,以确保VI同步读取数据。

        由于NI 9234内部以指定的速率获取数据,因此FPGA I/O Node在模块获取新数据之前不会返回数据。如果NI 9234没有开始采集数据或在FPGA I/O Node等待来自模块的数据时停止采集数据,FPGA I/O Node将返回一个超时错误。

        通过NI 9234的Stop通道配置FPGA I/O Node退出采集模式。在Stop输入中写入一个True常量。在改变属性和方法之前,FPGA必须退出采集模式。

        您可以使用FPGA I/O方法节点从模块读取数据。NI 9234模块处于采集模式时,不能进行其他操作,如访问属性、TEDS (Transducer Electronic Data Sheet)信息等。

        NI 9234是内部定时。不要在从NI 9234获取数据的FPGA I/O节点的环路中使用环路定时器或等待功能。当创建从NI 9234读取数据的循环时,请确保循环的执行速度不低于NI 9234的数据速率

        此处提醒的是,如果在FPGA中使用C系列模块卡,最好是先看一下范例是怎么用的,避免陷入误区。

 5.等待详解

        使用Wait Express VI在FPGA VI中创建事件之间的延迟。例如,您可能希望在触发器和后续输出之间创建延迟。您可以将触发器的LabVIEW代码放在序列结构的第一帧中。然后,将Wait Express VI放置在下一帧中。最后,将输出的LabVIEW代码放在序列结构的最后一帧中。也可以使用多个Wait VIs按顺序创建一系列延迟

        wait的定时配置和循环定时器一致,不再赘述。

等待与循环定时器之间的区别

        使用 Loop Timer Express VI 或 Wait Express VI 对 FPGA 代码进行计时。 Loop Timer 和 Wait Express VI 的不同之处在于它们影响代码执行的方式。
        如果您使用循环定时器 Express VI,则在第一次迭代期间代码会立即执行。 如果使用Wait Express VI,在第一次迭代期间,代码将等待指定等待语句的持续时间。
        对于这两种情况,都可以选择计时单位和计数器大小。顺序 结构控制数据流并确保在数字输出上的值发生变化之前发生等待。

6.时钟计数器详解

测量事件之间的执行时间

        使用Tick Count Express VI来测量数字信号上的边缘等事件之间的时间。当需要确定输入信号的周期、脉冲宽度或频率时,或者想要确定一段LabVIEW代码的执行时间时,可以使用Tick Count Express VI。这个和上位机函数的用法是一致的。

 

        在序列结构的第一帧中放置一个Tick Count Express VI。然后,将您想要测量的LabVIEW代码放在序列结构的第二帧中。最后,将另一个Tick Count Express VI放在序列结构的最后一帧中。然后可以计算两个Tick Count Express vi结果之间的差异,以确定执行时间。从计算结果中减去1,以补偿Tick Count Express VI的执行时间。

        Tick Count Express VI使用内部计数器跟踪时间。同一框图上每个Tick Count Express VI的内部计数器共享相同的开始时间。因此,每个Tick Count Express VI使用相同的值为计数器单位和内部计数器选项的大小跟踪相同的时间。例如,如果同时调用两个使用相同配置Tick Count选项的Tick Count Express vi,它们将返回相同的Tick Count值

        Tick Count Express VI以计数器单位返回整数值。Tick Count值不能表示为uSec或mSec配置Counter Units时发生的任何小数时间段。为uSec或mSec配置计数器单位可能导致计时测量的精度为±1计数器单位值。例如,您可以配置Tick Count Express VIs以毫秒为单位测量时间。如果第一个Tick Count Express VI在47.9毫秒执行,则Tick Count返回值47。如果第二个Tick Count Express VI在53.2毫秒执行,则Tick Count返回值53。

测量While循环执行周期

        使用滴答计数是计算循环周期的最佳方法,其中一个滴答等于时基的一个时钟周期(大多数FPGA目标上默认为40 MHz)。要测量一次迭代和下一次迭代之间的滴答数,只需使用带有移位寄存器的滴答计数VI。

        将Tick Count VI放入所需的循环中,并将输出连接到移位寄存器。然后,通过减去两者之间的差值来比较之前的迭代计数和当前迭代计数。在subtract函数的输出上,连接一个指示器以查看迭代之间经过的时间。

 

        

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

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

相关文章

Apache-Doris基础概念

OLAP数据库Doris 一、Doris架构二、基本概念1. Row & Column2. Partition & Tablet3. 建表示例(1)列的定义(2)分区分桶(3)多列分区(4)PROPERTIES(5)E…

多进程数据库不适合作为hive的元数据库

简介 “今天发现一个比较奇怪的现象,因为博主不熟悉mysql,所以在安装hive的使用了postgresql作为hive的元数据库,在测试几个连接工具对hive进行链接,后面再测试的时候发现链接不上了,并且报错日志如下:” …

多标签分类新建模方法

常见的多标签分类方法是同时生成多个标签的logits,然后接一个sigmoid激活函数做二分类。该方法简单直接,但忽略了标签之间的相关性。虽然业界针对该问题提出了很多解决思路,但大多是任务特定,通用性不强,也不够优雅。 …

Spring Cloud Alibaba微服务从入门到进阶(七)(服务容错-Sentinel)

雪崩效应 我们把基础服务故障,导致上层服务故障,并且这个故障不断放大的过程,成为雪崩效应。 雪崩效应,往往是因为服务没有做好容错造成的。 微服务常见容错方案 仓壁模式 比如让controller有自己独立的线程池,线程池满…

julia语言中的决策树

决策树(Decision Tree)是一种基本的分类与回归方法,它呈现出一种树形结构,可以直观地展示决策的过程和结果。在决策树中,每个内部节点表示一个属性上的判断条件,每个分支代表一个可能的属性值,每…

Mybatis-xml映射文件与动态SQL

xml映射文件 动态SQL <where><if test"name!null">name like concat(%,#{name},%)</if><if test"username!null">and username#{username}</if></where> <!-- collection&#xff1a;遍历的集合--> <!-- …

AI基础知识(2)--决策树,神经网络

1.什么是决策树&#xff1f; 决策树是一类常见的机器学习方法&#xff0c;决策树是基于树的结构来进行决策。决策过程中提出的每一个问题都是对于属性的“测试”&#xff0c;决策的最终结论对应了我们希望的判定结果。一个决策树包含一个根节点&#xff0c;若干个内部节点和若…

Jenkins通知目标服务器拉取Harbor镜像部署

1.告诉目标服务器拉取哪个镜像 2.判断当前有没有正在运行此容器&#xff0c;有就删除 3.接着查看拉取的镜像目标服务器上是否已存在&#xff0c;有就删除 4.拉取Harbor镜像 5.运行容器 目标服务器编写脚本 创建个部署脚本 vim deploy.sh告诉目标服务器Harbor地址、仓库、镜像…

小白DB补全计划Day1-LeetCode:SQL基本操作select

前言&#xff1a;找工作&#xff08;主人&#xff09;的任务罢了 链接&#xff1a;1757. 可回收且低脂的产品 - 力扣&#xff08;LeetCode&#xff09; 584. 寻找用户推荐人 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 对DB篇的SQL章不太知道怎么写…

智能合约设计模式:讲解代理模式及其安全漏洞

苏泽 大家好 这里是苏泽 一个钟爱区块链技术的后端开发者 本篇专栏 ←持续记录本人自学两年走过无数弯路的智能合约学习笔记和经验总结 如果喜欢拜托三连支持~ 我们首先来看看什么是设计模式 和我们软件工程里面的设计模式有什么异同&#xff1f; 智能合约设计模式是一种在区…

使用 GitHub Actions 通过 CI/CD 简化 Flutter 应用程序开发

在快节奏的移动应用程序开发世界中&#xff0c;速度、可靠性和效率是决定项目成功或失败的关键因素。持续集成和持续部署 (CI/CD) 实践已成为确保满足这些方面的强大工具。当与流行的跨平台框架 Flutter 和 GitHub Actions 的自动化功能相结合时&#xff0c;开发人员可以创建无…

实战!wsl 与主机网络通信,在 wsl 中搭建服务器。学了计算机网络,但只能刷刷面试题?那也太无聊了!这篇文章可以让你检测你的计网知识!

前言&#xff08;碎碎念&#xff09;&#xff1a;每次发布文章时&#xff0c;我都是一个纠结的过程。因为我给自己写笔记时&#xff0c;只需要记录自己不清晰或者易忘的知识点就可以了&#xff0c;但一旦想要作为文章发布&#xff0c;那么我就得考虑到很多人是纯新手&#xff0…

智慧公厕是什么?让公共厕所的“生命体征”有了“监测大脑”

智慧公厕是指将公共厕所进行信息化、数字化、智慧化的升级改造&#xff0c;针对公共厕所使用、运行、管理、养护等全方位业务流程进行优化。它不仅仅是传统公共厕所的升级版&#xff0c;更是公共厕所管理的一种全新方式。智慧公厕的独特之处在于&#xff0c;把公共厕所作为一个…

RequestResponse案例

文章目录 一、用户登录1、环境准备数据库准备导入MyBatis坐标&#xff0c;MySQL驱动坐标mybatis-config.xml准备UserMapper.xml 2、流程说明UserMapper接口login.htmlLoginServlet 二、用户注册register.htmlRegisterServlet 一、用户登录 1、环境准备 数据库准备 create data…

深度学习-面经(part2、CNN)

2 CNN 对图像&#xff08;不同的数据窗口数据&#xff09;和滤波矩阵做内积&#xff08;逐个元素相乘再求和&#xff09;的操作就是所谓的『卷积』操作。 卷积神经网络由输入层、卷积层、激励层、池化层、全连接层组成。 ① 最左边: 数据输入层&#xff0c;对数据做一些处理…

2024年腾讯云免费服务器在哪领取?

腾讯云免费服务器申请入口 https://curl.qcloud.com/FJhqoVDP 免费服务器可选轻量应用服务器和云服务器CVM&#xff0c;轻量配置可选2核2G3M、2核8G7M和4核8G12M&#xff0c;CVM云服务器可选2核2G3M和2核4G3M配置&#xff0c;腾讯云服务器网txyfwq.com分享2024年最新腾讯云免费…

wordpress子比主题7.6美化插件及新手零基础搭建教程源码下载

版权申请&#xff1a;本文A5资源网原创&#xff0c;经原创作者允许转载许可声明。下载地址http://a5.org.cn/a5_ziyuan/39172.html 本源码由网友在某宝二十几元购买&#xff0c;现分享给大家。下图为源码文件及演示图&#xff0c;安装教程比较详细新手零基础就可搭建 子比主…

操作系统IO模型

IO模型 如何进行网络通信 Socket通信是进程通讯的一种方式&#xff0c;通过调用这个网络库的一些API函数可以实现分布在不同主机的相关进程之间的数据交换 网络编程的基本流程是什么&#xff1f; 服务端先创建socket套接字&#xff0c;然后用这个套接字去绑定并监听某个端口&a…

YOLOv9改进策略:注意力机制 | 用于微小目标检测的上下文增强和特征细化网络ContextAggregation,助力小目标检测,暴力涨点

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文改进内容&#xff1a;用于微小目标检测的上下文增强和特征细化网络ContextAggregation&#xff0c;助力小目标检测 yolov9-c-ContextAggregation summary: 971 layers, 51002153 parameters, 51002121 gradients, 238.9 GFLOPs 改…

Redis数据结构对象之列表对象

列表对象 概述 ziplist编码的列表对象使用压缩列表作为底层实现&#xff0c;每个压缩列表节点(entry)保存了一个列表元素。 例子如下。如果numbers键的值对象使用的是ziplist编码&#xff0c;这个这个值对对象将会是如图所示的样子。 另一方面&#xff0c;linkedlist编码的列…