开发基于NI 7975R FPGA的系统涉及一系列流程,包括驱动安装、LabVIEW项目设置、开发调试、编译和与Windows系统的通信。重点在于FIFO的正确配置,避免数据丢失是关键环节之一,尤其是在使用高速数据流传输时。以下…
开发与调试:FPGA开发通常通过LabVIEW图形编程环境进行。编写FPGA代码时,需要使用同步控制、时钟配置和FIFO缓存来管理数据流。在开发过程中,LabVIEW提供了模拟调试工具,可以在不编译FPGA代码的情况下进行调试。 编译与部署:一旦代码编写完成,FPGA VI需要通过编译生成比特流文件并部署到硬件。FPGA编译时间较长,但LabVIEW会在后...
这个问题在FPGA程序由主机启动时一般不会表现出来,但是如果FPGA程序先于主机启动,那么就很容易造成上位机接收到的数据不对齐而错位的问题。 其主要原因就是因为FIFO的深度被用完,后面的元素无法再进入FIFO队列,而FIFO中的元素量又不是数据通道数的整数倍,所以FIFO队列最后端的元素就是不完整的。当上位机开始读取时,先...
FIFO的传输机制是:主控计算机首先把一个数组的数据存入作为FIFO缓存的内存中;DMA控制器会自动查询FPGA上的FIFO剩余空间,当满足缓存剩余空间大于数据块容量的条件时,控制器通过PXIe总线把整个数据块一并送入FPGA上的FIFO中;FPGA FIFO再将数据顺序送出。若在主控计算机向FIFO两次写入数据的间隔期间,FIFO中的数据保持不被...
为了解决基于LabVIEWFPGA模块的DMAFIFO深度设定不当带来的数据不连续问题,结合LabVIEWFPGA的编程特点和DMA FIFO的工作原理,提出了一种设定FIFO深度的方法。对FIFO不同深度的实验表明,采用该方法设定的FIFO深度能够比较好地满足系统对数据连续传输的要求。研究结果对深入
先编写一个PL端FPGA VI,将FPGA函数选板里面所有数据类型的FIFO通道VI函数拖拽到FPGA VI里面,再在前面板上创建一维输入和显示数组控件,借助LabVIEW FPGA在线前面板交互式运行功能,动态修改数组元素并观察PS端的数组元素是否一致。 然后编写一个PS端Linux RT程序,调用PS端FIFO函数选板里面的读写VI,读取PL端FPGA发送...
要为流数据创建DMA缓冲区,请右键单击FPGA目标并选择New...»FIFO。为FIFO结构指定一个描述性名称,并选择“target to host”作为类型。这意味着数据应该通过这个DMA FIFO从FPGA目标流向实时主机。还可以设置数据类型和FPGAFIFO深度。单击确定将这个新的FIFO放入项目中,可以将其拖放到FPGA框图中。
另一方面,实际上LabVIEW为了能使FPGA高效运行,对Block Memory方式FIFO的大小作了规定,其大小只能为2M-1(数据由FPGA传向主控计算机)或2M+5(数据由主控计算机传向FPGA),M为数据的地址宽度;当设定值不是这些标准值时,LabVIEW会自动的放大到距其最近的一个标准值。这样就确定了FPGAFIFO的深度,但是还不能保证数据能够连...
在FPGA与上位机进行数据通信时,通常使用FIFO作为数据传输的主要方式,尤其对于连续数据采集。然而,面对多通道数据传输,数据对齐问题时常浮现。此问题在FPGA程序由主机启动时通常不显眼,但在FPGA程序先于主机启动时,数据错位问题愈发凸显。根本原因在于FIFO深度有限,数据通道数非整数倍时,FIFO尾部数据无法...
若在主控计算机向FIFO两次写入数据的间隔期间,FIFO中的数据保持不被读空,就能保证输出FPGA的数据是连续的。而合适的FIFO深度是FIFO不被读空的基础,所以确定FIFO深度的设定方法是数据在不同时钟域之间实现连续传输的关键。 3 FIFO深度的设定方法 3.1 FPGA FIFO深度的设定 ...