【LabVIEW FPGA入门】FPGA中的数据流

        LabVIEW 以数据流方式执行代码。 当节点的所有输入上都存在数据时,该节点就会执行。 当节点完成执行时,节点的输出将数据传递到下游的下一个节点。 LabVIEW FPGA 使用三个组件来维护这种数据流范例。

         节点具有与其功能相对应的逻辑

        同步,该组件记录函数的输出,以便将逻辑与时序不确定性隔离

        启用链,附加逻辑通过验证输入和输出来协调数据流

启用链

        启用链是LabVIEW添加至FPGA代码的附加逻辑,用于强制执行FPGA的数据流。启用链包含两个部分:

  • 与程序框图上的实际数据流并行运行的一组寄存器。启用链的此部分仅位于单周期定时循环的外部。
  • 强制执行单周期定时循环内部数据流的隐式启用信号该信号扇出包含状态保持元素的循环内部的全部节点。

数据流编程概述

        数据流编程模型与用 C 等语言实现的控制流模型形成对比。

        由于自上而下的顺序编程方法,用 C 编写的应用程序在映射到并行硬件时具有固有的局限性。相反,在数据流模型中,框图上的节点相互连接以表达逻辑执行流,并且可以使用它们轻松地表达并行性。当框图节点接收到所有必需的输入时,它会生成输出数据并将该数据传递到数据流路径中的下一个节点。数据通过节点的移动决定了框图上功能的执行顺序。

        LabVIEW数据流编程范例允许LabVIEW执行系统在不同线程中运行两个循环。在许多基于文本的编程语言中,您必须显式创建和处理线程。

L        abVIEW 还提供特殊结构,将代码映射到并行硬件资源以实现显式线程。例如,一种这样的结构是定时循环。当定时循环中包含的代码在双核或多核系统上运行时,将创建一个唯一的线程。下图演示了两个定时循环如何创建两个独特的线程,这两个线程可以在多核系统的两个独立核心之间进行平衡。

        对于 FPGA,不存在线程概念,因此循环结构在 FPGA 结构上保留空间并作为独特的处理器内核执行。

        总之,由于数据流编程语言本质上是并行的,因此开发人员可以创建隐式并行的应用程序。编程语言的这一特性意味着开发人员无需成为多核处理器和 FPGA 等并行硬件的低级复杂性方面的专家即可获得性能优势 - 语言本身有助于代码的并行化。

 

FPGA内的数据流

        LabVIEW以数据流的方式执行代码。当所有输入都有数据时,节点才会执行。当节点完成执行时,节点的输出将数据传递给下游的下一个节点。

 

单周期定时循环外的数据流

        LabVIEW以数据流的方式执行代码。当数据在节点运行所需的全部输入端就绪时,节点开始执行。节点执行结束后,节点输出传送数据至下一节点。下列示意图显示了一个要在单周期定时循环外部实现布尔函数的FPGA硬件的范例。

1378

        启用链确保FPGA逻辑按照其在LabVIEW程序框图中的顺序执行。示意图显示了函数位于单周期定时循环外部时,布尔函数转换为FPGA逻辑的过程。下列示意图的函数部分显示了程序框图上相对于“取负数”函数的布尔逻辑。启用链部分包含额外的同步寄存器,仅在时钟的上升沿输出数据。

        下列示意图给出了一个执行算法操作的FPGA硬件的范例。

1378

        根据启用链的系统开销,每个函数或VI至少占用一个时钟周期。某些函数(例如,模拟输入运算)将占用几百个时钟周期。具体取决于运算的复杂程度及硬件限制。

单周期定时循环内的数据流

        放置在单周期定时循环内部的节点不包含启用链的寄存器部分。如排除启用链的系统开销,FPGA的整体空间使用量将有所下降。因为不再需要用于启用链的触发器。同样由于不再存在启用链,单周期定时循环内的所有运算均可在一个时钟周期内完成。但某些节点(例如,存储器方法节点或FFT Express VI)需要大于一个时钟周期的执行时间,因此该节点的输出要等待至单周期定时循环的下一次迭代时才有效。获取有效数据所需的时钟周期数量为节点的延时。

隐式启用信号对定时性能的影响

        单周期定时循环内的隐式启用信号扇出程序框图内的全部触发器。LabVIEW将门控与单周期定时循环相关的时钟,直至隐式启用信号被移除。该扇出的额外连线系统开销将限制大型设计的定时性能。如设计包含独立于程序框图上其他节点运行的单周期定时循环,请考虑从上述循环中移除隐式启用信号以改善定时性能。

        注:移除隐式启用信号的支持随终端变化。关于移除隐式启用信号支持的详细信息,见终端硬件文档。

下文描述了一个包含单周期定时循环代码的程序框图。

1378

下列示意图为上述程序框图代码的VHDL表示。

1378

注意,默认情况下,隐式启用信号扇出包含状态保持元素(例如,触发器或存储器块)的单周期定时循环的每个节点。该连线的系统开销限制了某些应用的定时性能。

下列示意图为移除了隐式启用信号的同一VHDL表达。

1378

        

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

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

相关文章

Python数学建模-2.5Pandas库介绍

2.5.1Pandas基本操作 Pandas是一个强大的Python数据分析库,它提供了快速、灵活且富有表现力的数据结构,设计初衷是为了处理关系型或标记型数据。Pandas的基本操作涵盖了数据的读取、处理、筛选、排序、分组、合并以及可视化等多个方面。 以下是一些Pan…

【SpringBoot】解决数据库时间和返回时间格式不一致的问题

先看问题: 类中的属性中有Date类型的属性 数据库表中的数据: 可以看到也没问题 但是在返回实体类对象时,数据类型是这样的: 虽然数据是成功返回了,但这显然不是我们想要的结果.也不符合我们的日常使用习惯. 这个问题虽然前端,后端都能处理,但最好还是后端来进行处理.前端主…

22款Visual Studio Code实用插件推荐

前言 Visual Studio Code是一个轻量级但功能强大的源代码编辑器,轻量级指的是下载下来的Visual Studio Code其实就是一个简单的编辑器,强大指的是支持多种语言的环境插件拓展,也正是因为这种支持插件式安装环境开发让Visual Studio Code成为…

【数据结构】深入理解AVL树:实现和应用

AVL树是一种自平衡的二叉搜索树,它能够保持良好的平衡性质,使得在最坏情况下的时间复杂度也能保持在对数级别。本文将深入介绍AVL树的原理、实现和应用,并通过示例代码演示其基本操作。 文章目录 什么是AVL树?AVL树的实现在AVL树…

Vue工程化基础

一Ajax 1.1Ajax概述: 异步与同步 繁琐被淘汰了。 二Axios2 前后端混合开发: 前后端分离开发: YAPI 三前端开发工程化 四Vue脚手架 项目的认识 改变端口号 五Vue开发流程: 六Element组件 6.1快速入门 下载> npm install e…

阿里云数据库优惠价格99元1年起MySQL/SQL Server/PostgreSQL/Redis/MongoDB/MairaDB/ClickHouse

2024年阿里云数据库价格查询,云数据库优惠活动MySQL版2核2GB 50GB配置99元一年,续费不涨价,续费也是99元1年,云数据库MySQL基础系列经济版 2核4GB 100GB配置227元1年,RDS SQL Server云数据库2核4G配置299元1年&#xf…

自学rabbitmq入门到精通

交换机的fault (发布与订阅模式) 因为消息是由生产者发送给excahnge,exchange发送给队列, 然后由队列发送给消费者的。 展示使用图形化界面使用fanout模式。 创建交换机 然后创建三个队列,绑定对应的交换机&#xff…

深度学习pytorch——Broadcast自动扩展

介绍 在 PyTorch 中,Broadcast 是指自动扩展(broadcasting)运算的功能。它允许用户在不同形状的张量之间执行运算,而无需手动将它们的形状改变为相同的大小。当进行运算时,PyTorch 会自动调整张量的形状,使…

C# danbooru Stable Diffusion 提示词反推 Onnx Demo

目录 说明 效果 模型信息 项目 代码 下载 C# danbooru Stable Diffusion 提示词反推 Onnx Demo 说明 模型下载地址:https://huggingface.co/deepghs/ml-danbooru-onnx 效果 模型信息 Model Properties ------------------------- ----------------------…

深度学习 精选笔记(12)卷积神经网络-理论基础2

学习参考: 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增),以达到集多方教程的精华于一文的目的。 ③非常推荐上面(学习参考&#x…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Counter)

计数器组件,提供相应的增加或者减少的计数操作。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 可以包含子组件。 接口 Counter() 从API version 9开始,该接口…

SQL的数据定义语言(DDL)语句

文章目录 数据库操作创建新的数据库修改数据库删除数据库 表操作创建数据库表修改数据表删除数据表 索引操作创建索引修改索引 视图操作修改视图 序列操作创建序列修改序列删除序列 分区操作(在支持分区的数据库中)同义词操作(在Oracle等数据…

使用map和set实现简单的词频统计

一、运行效果图 二、代码示例 #include <iostream> #include <fstream> #include <sstream> #include <string> #include <map> #include <set> #include <vector> #include <algorithm> using namespace std;class TextQuer…

LarkXR上新了 | Apollo多终端与XR体验的优化创新

作为领先的数字平行世界产品技术提供方&#xff0c;「Paraverse平行云」一直致力于为企业和开发者提供企业级实时云渲染解决方案。其多终端接入产品LarkXR Apollo&#xff0c;基于底层Runtime技术&#xff0c;实现了在Windows、Linux、MacOS、Android、iOS等多种操作系统下&…

游戏服务端配置“热更”及“秒启动”终极方案(golang/ygluu/卢益贵)

游戏服务端配置“热更”及“秒启动”终极方案 ygluu 卢益贵 关键词&#xff1a;游戏微服务架构、游戏服务端热更、模块化解耦、golang 目录 一、前言 二、异步线程加载/重载方案 三、配置表碎片化方案 四、指针间接引用 五、重载通知 六、示例代码 七、相关连接 一、…

Samtec科普 | 一文了解患者护理应用连接器

【摘要/前言】 通过医疗专业人士为患者提供护理的种种需求&#xff0c;已经不限于手术室与医院的各种安全状况。当今许多患者的护理都是在其他环境进行&#xff0c;例如医生办公室、健康中心&#xff0c;还有越来越普遍的住家。尤其是需要长期看护的患者&#xff0c;所需的科技…

202006A卷青少年软件编程(Scratch)等级考试试卷(三级)

第1题:【 单选题】 执行以下脚本后舞台上的角色将 ?( ) A:先克隆自身,克隆体出现后被删除 B:先克隆自身,克隆体出现后删除本体 C:克隆出自身后本体与克隆体同时被删除 D:克隆出自身后本体与克隆体被不会被删除 【正确答案】: A 【试题解析】 : 第2题:【 单选题】…

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

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

SSH 批量免密登录服务器

思路&#xff1a;创建密钥&#xff0c;并通过分发公钥文件到其他服务器&#xff0c;从而实现批量免密无交互登录服务器 拓扑结构&#xff1a;主服务器 |----》从服务器1 |----》从服务器2 |----》..... 参考链接&#xff1a;SSH命令批量操作服务器_ssh批量登录远程执行脚本…

【Liunx-后端开发软件安装】Liunx安装nginx

【Liunx-后端开发软件安装】Liunx安装nginx 使用安装包安装 一、简介 nginx&#xff0c;这个家伙可不是你厨房里的那位大厨&#xff0c;它可是互联网世界的“煎饼果子摊主”。想象一下&#xff0c;在熙熙攘攘的网络大街上&#xff0c;nginx挥舞着它的锅铲——哦不&#xff0c;是…