【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函数的输出上,连接一个指示器以查看迭代之间经过的时间。

 

        

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FFmpeg分析视频信息输出到指定格式(csv/flat/ini/json/xml)文件中

1.查看ffprobe帮助 输出格式参数说明: 本例将演示输出csv,flat,ini,json,xml格式 输出所使用的参数如下: 1.输出csv格式: ffprobe -i 4K.mp4 -select_streams v -show_frames -of csv -o 4K.csv 输出: 2.输出flat格式: ffprobe -i 4K.mp4 -select_streams v -show_frames …

深度学习pytorch——Tensor维度变换(持续更新)

view()打平函数 需要注意的是打平之后的tensor是需要有物理意义的,根据需要进行打平,并且打平后总体的大小是不发生改变的。 并且一定要谨记打平会导致维度的丢失,造成数据污染,如果想要恢复到原来的数据形式,是需要…

在github下载的神经网络项目,如何运行?

github网页上可获取的信息 在github上面,有一个requirements.txt文件,该文件说明了项目要求的python解释器的模块。 - 此外,还有一个README.md文件,用来说明项目的运行环境以及其他的信息。例如python解释器的版本是3.7、PyTorc…

理财第一课:炒股词典

文章目录 基础代码规则委比委差量比换手率市盈率市净率 散户亏钱的原因庄家分析炒股战法波浪理论其它 钱者,人生之大事,死生存亡之地,不可不察也。耕田之利,十倍;珠玉之赢,百倍;闹革命&#xff…

STM32使用TIM2+DMA产生PWM波形异常分析

1、问题描述 使用 STM32F4 的 TIM2 结合 DMA,产生的 PWM 波形不符合预期,但是相同的配置使用在 IM3 上,得到的 PWM 波形就是符合预期的。其代码和配置都是从 F1 移植过来的,在 F1 上使用 TIM2 是没有问题的,对于 F4 的…

蓝桥杯并查集|路径压缩|合并优化|按秩合并|合根植物(C++)

并查集 并查集是大量的树(单个节点也算是树)经过合并生成一系列家族森林的过程。 可以合并可以查询的集合的一种算法 可以查询哪个元素属于哪个集合 每个集合也就是每棵树都是由根节点确定,也可以理解为每个家族的族长就是根节点。 元素集合…

21 OpenCV 直方图均衡化

文章目录 直方图概念均衡的目的equalizeHist 均衡化算子示例 直方图概念 图像直方图,是指对整个图像像在灰度范围内的像素值(0~255)统计出现频率次数,据此生成的直方图,称为图像直方图-直方图。直方图反映了图像灰度的分布情况。 均衡的目的…

【Java】十大排序

目录 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 计数排序 桶排序 基数排序 冒泡排序 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的序列,依次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历…

【LeetCode每日一题】310. 最小高度树

文章目录 [310. 最小高度树](https://leetcode.cn/problems/minimum-height-trees/)思路:拓扑排序代码: 310. 最小高度树 思路:拓扑排序 首先判断节点数量n,如果只有一个节点,则直接返回该节点作为最小高度树的根节点…

GPT-4.5 Turbo详细信息被搜索引擎泄露:有重大改进

3月14日消息,据外电报道,OpenAI 最新人工智能模型 GPT-4.5 Turbo 的详细信息已通过 Bing 和 DuckDuckGo 的搜索引擎索引过早泄露。 GPT-4.5 Turbo 的产品页面在正式发布之前就出现在搜索结果中,引发了人们对 OpenAI 最新型号的特性和功能的猜…

【教学类-44-07】20240318 0-9数字描字帖 A4横版整页(宋体、黑体、文鼎虚线体、print dashed 德彪行书行楷)

背景需求: 前文制作了三种字体的A4横版数字描字帖 【教学类-44-06】20240318 0-9数字描字帖 A4横版整页(宋体、黑体、文鼎虚线体)-CSDN博客【教学类-44-06】20240318 0-9数字描字帖 A4横版整页(宋体、黑体、文鼎虚线体)https://…

练习8 Web [GYCTF2020]Blacklist

这道题其实不是堆叠注入,但是我在联合查询无效后,试了一下堆叠,最后一步发现被过滤的sql语句太多了,完全没法 查阅其他wp的过程[GYCTF2020]Blacklist 1(详细做题过程) 是用的handler语句,只能用…

C语言快速入门之内存函数的使用和模拟实现

1.memcpy 它可以理解为memory copy的组合,memory有记忆的意思,这里指的是内存,copy是拷贝,这个函数是针对内存块进行拷贝的 函数原型 void* memcpy(void* destination,const void* source, size_t num); 从source位置开始&am…

基于springboot+vue的疗养院管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

Python深度学习之路:TensorFlow与PyTorch对比【第140篇—Python实现】

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 Python深度学习之路:TensorFlow与PyTorch对比 在深度学习领域,Tens…

MATLAB环境下基于决策树和随机森林的心力衰竭患者生存情况预测

近年来,随着医学数据的不断积累和计算机技术的快速发展,许多机器学习技术已经被用在医学领域,并取得了不错的效果。与传统的基于医学知识经验的心衰预后评估模型相比,机器学习方法可以快速、高效地从繁杂的、海量的心衰病人数据中…

软件杯 深度学习 python opencv 实现人脸年龄性别识别

文章目录 0 前言1 项目课题介绍2 关键技术2.1 卷积神经网络2.2 卷积层2.3 池化层2.4 激活函数:2.5 全连接层 3 使用tensorflow中keras模块实现卷积神经网络4 Keras介绍4.1 Keras深度学习模型4.2 Keras中重要的预定义对象4.3 Keras的网络层构造 5 数据集处理训练5.1 …

HTML详细教程

文章目录 前言一、快速开发网站最简模板二、HTML标签1.编码2.title3.标题4.div和span5.超链接6.图片7.列表8.表格9.input系列10.下拉框11.多行文本 三、GET方式和POST方式1.GET请求2.POST请求 前言 HTML的全称为超文本标记语言,是一种标记语言,是网站开发…

HCIP —— 交换 (VLAN)

VLAN --- 虚拟局域网 在 HCIA 中 ,已经学过交换机的一些基础配置,下面进行回顾一些简单的内容。 1.创建VLAN VLAN ID --- 区别和标识不同的VLAN 使用范围:0-4095 , 由12位二进制构成。 0 和 4095 作为 保留的VLAN。 …

Python零基础---爬虫技术相关

python 爬虫技术,关于数据相关的拆解: 1.对页面结构的拆解 2.数据包的分析(是否加密了参数)(Md5 aes)难易程度,价格 3.对接客户(433,334) # 数据库 CSV 4.结单(发一部分数据&a…