LabVIEWCompactRIO 开发指南31 在LabVIEW FPGA中使用DMA FIFO

简介: LabVIEWCompactRIO 开发指南31 在LabVIEW FPGA中使用DMA FIFO

LabVIEWCompactRIO 开发指南31


在LabVIEW FPGA中使用DMA FIFO


要为流数据创建DMA缓冲区,请右键单击FPGA目标并选择New...»FIFO。为FIFO结构指定一个描述性名称,并选择“target to host”作为类型。这意味着数据应该通过这个DMA FIFO从FPGA目标流向实时主机。还可以设置数据类型和FPGAFIFO深度。单击确定将这个新的FIFO放入项目中,可以将其拖放到FPGA框图中。


20ac7c23a5922ec8275ab0429c3d4f27.png


图5.21.一个通道上的简单DMA传输


提示:在LabVIEW2012FPGA及更高版本中,可以将定点数据转换为单精度浮点数据。将这种转换卸载到FPGA可以节省大量处理器资源。对于早期的LabVIEW版本,可以通过可下载的示例或NI开发人员专区文档LabVIEWFixed-Point (FXP) to Single (SGL) Conversion on LabVIEW FPGA.转换来获得类似的转换功能。


可以使用同一DMA通道传输多个数据流,例如从I/O通道收集的数据流。大多数CompactRIO系统具有三个DMA通道。在混合模式下,CompactRIO系统只有一个DMA通道。要将多个数据流或I/O通道打包到一个DMA FIFO中,请使用图5.22所示的交错技术,并在主机上使用抽取进行解包。


5abdbd12b27594738a1541e712b0b6c7.png


图5.22.在For循环上使用构建数组和索引来实现交错的多通道数据流


将多个模拟输入通道传递到一个DMA FIFO时,通道的存储方式与表5.1所示类似。此表假设四个模拟输入通道交错到一个DMA FIFO中。主机VI上的解包算法期望元素按此特定顺序到达。如果FIFO溢出和元件丢失,则主机VI上的解包算法无法将数据点分配给其不正确的模拟输入通道。因此,从多个模拟输入通道读取数据时,确保无损数据传输非常重要。


表5.1.将多个通道写入一个DMA FIFO时,主机VI期望element按特定顺序到达



ce43155d287280210e98f6910c058b68.png


在主机上使用DMA FIFO


通常,在主机VI上专用于一个单独的循环,以使用主机接口节点从DMA缓冲区检索数据。在CompactRIO系统上从DMA FIFO读取数据时,请执行以下三步步骤,以实现最佳性能:


1.将DMA读取超时设置为零。


2.读取固定大小的元素数(数据通道数的倍数)。


3.等到缓冲区已满后再读取元素。


图5.23提供了高效使用DMA FIFO读取函数获取连续I/O数据流的示例。第一个DMAFIFO读取函数计算缓冲区中剩余的元素数,并根据3000个元素的固定大小对其进行检查。如果要传递数据数组,则输入的元素数应始终是数组大小的整数倍。例如,如果要传递一个包含八个元素的数组(如来自八个I/O通道的值),则“Numberof Elements”应为8的整数倍(如80,为每个I/O通道提供10个样本)。


一旦缓冲区达到3000个元素,第二个DMA FIFO读取函数就会读取数据或在False大小写中休眠,并在下一次迭代时再次检查。每个DMA事务都有开销,因此读取较大的数据块通常更好。


最后,使用抽取一维数组函数按通道组织数据。

0a17843144b0ebc63a7e5abfc22a087f.png



图5.23.从DMA FIFO读取数据


无论何时从DMA FIFO读取数据,都必须能够检测缓冲区溢出或超时情况并从中恢复,以保持数据正确性。下一节将提供推荐的体系结构,以确保在使用DMA FIFO时进行无损数据传输。


需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。

相关文章
|
3天前
|
数据采集 传感器 监控
如何在LabVIEW中使用FPGA模块
如何在LabVIEW中使用FPGA模块
10 1
|
5天前
|
存储 算法 数据处理
LabVIEW FPGA开发NI sbRIO-9607高精度数字滤波器
LabVIEW FPGA开发NI sbRIO-9607高精度数字滤波器
13 5
|
2月前
|
前端开发 编译器 测试技术
LabVIEW FPGA利用响应式数字电子板快速开发空间应用程序
LabVIEW FPGA利用响应式数字电子板快速开发空间应用程序
29 1
|
2月前
|
传感器 数据采集 人工智能
LabVIEW FPGA开发实时滑动摩擦系统
LabVIEW FPGA开发实时滑动摩擦系统
18 0
|
2月前
|
算法 数据可视化 API
LabVIEWCompactRIO 开发指南33 测试和调试LabVIEW FPGA代码
LabVIEWCompactRIO 开发指南33 测试和调试LabVIEW FPGA代码
24 0
|
2月前
|
异构计算
LabVIEWCompactRIO 开发指南25 实施LabVIEW FPGA代码的方法
LabVIEWCompactRIO 开发指南25 实施LabVIEW FPGA代码的方法
24 0
|
2月前
|
编译器 芯片 异构计算
LabVIEWCompactRIO 开发指南24 第5章通过LabVIEW FPGA定制硬件
LabVIEWCompactRIO 开发指南24 第5章通过LabVIEW FPGA定制硬件
21 0
|
2月前
|
机器学习/深度学习 算法 异构计算
m基于FPGA的多通道FIR滤波器verilog实现,包含testbench测试文件
本文介绍了使用VIVADO 2019.2仿真的多通道FIR滤波器设计。展示了系统RTL结构图,并简述了FIR滤波器的基本理论,包括单通道和多通道的概念、常见结构及设计方法,如窗函数法、频率采样法、优化算法和机器学习方法。此外,还提供了Verilog核心程序代码,用于实现4通道滤波器模块,包含时钟、复位信号及输入输出接口的定义。
81 7
|
2月前
|
算法 异构计算
m基于FPGA的电子钟verilog实现,可设置闹钟,包含testbench测试文件
该文介绍了基于FPGA的电子钟设计,利用Vivado2019.2平台进行开发并展示测试结果。电子钟设计采用Verilog硬件描述语言,核心包括振荡器、分频器和计数器。时间显示为2个十进制格式,闹钟功能通过存储器和比较器实现,当当前时间等于设定时间时触发。文中给出了Verilog核心程序示例,展示了时钟信号、设置信号及输出的交互。
129 2
|
2月前
|
编解码 算法 异构计算
基于FPGA的NC图像质量评估verilog实现,包含testbench和MATLAB辅助验证程序
在Vivado 2019.2和Matlab 2022a中测试的图像质量评估算法展示了效果。该算法基于NC指标,衡量图像与原始图像的相似度,关注分辨率、色彩深度和失真。提供的Verilog代码段用于读取并比较两个BMP文件,计算NC值。

热门文章

最新文章