LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

FPGA Process Timeout Crash - Shared Variable, DMA FIFO, Windows 7, PXI

Sketchy details to start -- I cannot post the source code to the forum.
Dell PC, Windows 7-64, LabVIEW 2012, LV FPGA 2012, PCIe Bus to PXI Chassis with
NI PXI-7951A with NI 6581 Adapter Module


FPGA uses DMA FIFO for fast data transfer from Windows to FPGA in PXI Chassis.

 

A data array is created by a Windows process, then written to a Shared Variable (SV).
Next the SV contents are written to the DMA FIFO, again by a Windows LV module.
The FPGA process reads the DMA FIFO one element at a time, then interacts
with hardware on digital I/O lines, using the data.

 

The setup works fine for about 60 seconds, then crashes without any reported error.
In 60 seconds, I can run the process over 20 twenty times, or 8 times, or once, or not even once.
Either way, after 60 seconds passes, it acts like the FIFO just stops working. It can
be in the middle of a run, when the FIFO is still partially full, or it can be
between runs, but when 60s is up, the FPGA process seems to hang up.

 

The only thing I see that looks like a clue is the Tools\Options\Shared Variable Engine\Sleep Time field,
which defaults to 60 seconds. I've tried to change this number, but I cannot change the behavior.

 

If, in a Windows loop, before 60s elapses after I open a reference to the FPGA, I close the FPGA Reference,
then re-open it, everything works fine.

 

Grateful for any ideas or links to NI manuals that could shed light on:
> Shared Vars
> DMA FIFO
> Reference Engine

 

Many thanks. I realize it's very difficult to help without the source code.

 

BTW, I've used this hardware configuration successfully in other projects. This project lead me to use
the SV and DMA technologies for the first time.

 

Funk

0 Kudos
Message 1 of 3
(2,651 Views)

I don't see any device names "PXI-7951A" is it the right one?

 

What is the clock rate of your FPGA and how fast are you running your code? Also in FIFO how many elements you have configured?

 

Are you sure that the FPGA code is running inline with the Host code?

-----

The best solution is the one you find it by yourself
0 Kudos
Message 2 of 3
(2,619 Views)

Try to seperate the shared variables from the FPGA since either may fail for very different reasons. You can do this by setting up a test bench that replaces the SV with a subVI producing junk data, and conversely by replacing the FPGA with a subVI that just clears the data fed to it by the SV.

 

It may take a while to setup a test bench that isolates one side of your application, but without the source code there are too many variables to provide meaningful troubleshooting tips. Also the process of isolating components often reveals what the problem is so you may just solve it in the process.

 

Once you have an idea which component stops responding it will be easier for myself or other support personnel to recommend some next steps.

0 Kudos
Message 3 of 3
(2,597 Views)