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开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。

相关文章
|
4月前
|
数据采集 传感器 监控
如何在LabVIEW中使用FPGA模块
如何在LabVIEW中使用FPGA模块
122 1
|
4月前
|
存储 算法 数据处理
LabVIEW FPGA开发NI sbRIO-9607高精度数字滤波器
LabVIEW FPGA开发NI sbRIO-9607高精度数字滤波器
47 5
|
6月前
|
前端开发 编译器 测试技术
LabVIEW FPGA利用响应式数字电子板快速开发空间应用程序
LabVIEW FPGA利用响应式数字电子板快速开发空间应用程序
54 1
|
6月前
|
传感器 数据采集 人工智能
LabVIEW FPGA开发实时滑动摩擦系统
LabVIEW FPGA开发实时滑动摩擦系统
45 0
|
6月前
|
算法 数据可视化 API
LabVIEWCompactRIO 开发指南33 测试和调试LabVIEW FPGA代码
LabVIEWCompactRIO 开发指南33 测试和调试LabVIEW FPGA代码
56 0
|
6月前
|
异构计算
LabVIEWCompactRIO 开发指南25 实施LabVIEW FPGA代码的方法
LabVIEWCompactRIO 开发指南25 实施LabVIEW FPGA代码的方法
48 0
|
6月前
|
编译器 芯片 异构计算
LabVIEWCompactRIO 开发指南24 第5章通过LabVIEW FPGA定制硬件
LabVIEWCompactRIO 开发指南24 第5章通过LabVIEW FPGA定制硬件
46 0
|
9天前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的1024QAM基带通信系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了基于FPGA的1024QAM调制解调系统的仿真与实现。通过Vivado 2019.2进行仿真,分别在SNR=40dB和35dB下验证了算法效果,并将数据导入Matlab生成星座图。1024QAM调制将10比特映射到复数平面上的1024个星座点之一,适用于高数据传输速率的应用。系统包含数据接口、串并转换、星座映射、调制器、解调器等模块。Verilog核心程序实现了调制、加噪声信道和解调过程,并统计误码率。
29 1
|
30天前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的64QAM基带通信系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了基于FPGA的64QAM调制解调通信系统的设计与实现,包括信号生成、调制、解调和误码率测试。系统在Vivado 2019.2中进行了仿真,通过设置不同SNR值(15、20、25)验证了系统的性能,并展示了相应的星座图。核心程序使用Verilog语言编写,加入了信道噪声模块和误码率统计功能,提升了仿真效率。
44 4
|
30天前
|
监控 算法 数据安全/隐私保护
基于三帧差算法的运动目标检测系统FPGA实现,包含testbench和MATLAB辅助验证程序
本项目展示了基于FPGA与MATLAB实现的三帧差算法运动目标检测。使用Vivado 2019.2和MATLAB 2022a开发环境,通过对比连续三帧图像的像素值变化,有效识别运动区域。项目包括完整无水印的运行效果预览、详细中文注释的代码及操作步骤视频,适合学习和研究。

热门文章

最新文章