SMU FlexRIO DMA FIFO host read the FIFO overflows broadband bandwidth/DMA issues

I'm working on an application that uses 2 modules FlexRIO, and 2 LVDS digital I/O adapters.  I'm driving each of the SDC A/SDC B ports on LVDS 16-bit data at 50 MHz adapters.  The FlexRIOs are expected to receive the data and write down them on four targets-to-host DMA FIFO (one per connector SDC), or two by FlexRIO.  The host reads the FIFO and brings together a series of tables each FIFO output 2D.  Ultimately, the individual tables (we're each a quarter of single image) will be assembled in simple images, but I haven't gotten that far yet.

The duty cycle for the data is about 80% (in other words, I'm only transmit data to the FlexRIOs 80% of the time, the rest of the time the transmitters are disabled), so the flow is about 80 Mbytes/sec/port total invasion, or 320 MB/s on the four FIFOs DMA.  I find that the acquired data gaps sometimes inside that line up along the length of the material part of the DMA FIFO in FlexRIO modules.  In other words, if my memory FIFO DMA are set to 65535 length, I'll see a break in the data acquired at the word of data 65536th.  Data is a waveform of sight, which is essentially just a counter, so it's easy to see the break in the model.  For the words of first 65535, adjoins the data, then from Word 65536 model is discontinuous and starts counting again from there, contiguously.  At the beginning of the acquisition, the FIFO is erased: the beginning data read from the FIFO is always aligned correctly, so I know that the process starts at a good point.

The error is not always the case: sometimes I get continuous data through the point 65536.  In addition, the error occurs independently between the four FIFO: on a particular race, a FIFO could have data of interest and some bad.  Rarely, all four FIFOs have good data.

The fact that the gap of the configuration is to the point even the depth of the FIFO DMA tells me that fills the FlexRIO FIFO, the FPGA hardware without the system managing to move to read, which means that the data gets dropped during the period that the FIFO is full.  Then transfer to the host comes into action, there again is the space in the FIFO, and the data is once more contiguous in FIFO memory for a large amount of data (I have not yet tried to locate a second gap in the data of a single acquisition).  It seems therefore that the host doesn't have enough bandwidth between the FlexRIOs and the host of RAM to prevent the filling FIFO, or comes along some software process on the host that is temporarily stop the ability to instantly transfer.

Are at - it a specification for the SMU flow system that would indicate that we are trying to use too much bandwidth?  Or are there priority controls on DMA FIFO that would allow us to raise the priority of the FIFO transfers as they are guaranteed to go in preference to other system tasks?

System Specs:

SMU-1075 chassis

SMU-8135 CPU

2 SMU-7962R FlexRIO modules

2 digital i/o modules of NOR-6585

LabView 2012 32-bit SP1 version 12.0.1

A suggestion of an applications engineer of NOR and some experimentation has solved the problem. It turns out that I was calling the method FIFO of DMA stop just before the outbreak of the transmission of the data via a control for the FPGA FPGA VI. I did this in order to clear the FIFO before you begin data acquisition, but I didn't know that this method disables also transfer data between the memory FlexRIO and host. Following this call, I trigger the FPGA code to start filling its FIFO and then begin reading. Calling the Read of FIFO of DMA apparently light up the transfer back, but it seems that the host VI has been randomly slow down enough to move to the bed such as filling the side FlexRIO FIFO and dat would be lost. I changed the host VI to insert a FIFO method call start before the trigger for the FPGA signal, and the problem is now gone.

Tags: NI Software

Similar Questions

  • Restart host ESX of VIC is suspended, stop command fails, the remote host, read the console screen?

    Tried to reboot a host and he initiated from the VI client.  I remember the last time he hung at the stage of closing - I think it was something like 'stop vmware autostart' therefore it is without doubt that.  My questions are:

    Is there a way to read the screen remotely to check?

    Is it possible to restart remotely using 'killall' or something (already tried "shutdown - r now" – does not work because it is suspended)?

    You should be able to connect a serial console, if you want to be able to view the screen remotely in case of failure like this, but the rest would you require to have a sort of management lights out for the type of server you use.  Sun a LOM, HP's ILO, Dell DRAC, to name a few.  Otherwise, you can also get some type of a managed UPS device, which can help you power cycle remote as well.

    -KjB

  • Read the CPU hits 100% in the FIFO usage

    I have a PC in real-time with a card of RIO 7833R. I write the values that I read a microphone in a FIFO at a sampling rate of 4 kHz.The length of the FIFO is 2048. The PC in real-time, when I call 'FIFO read' function to read say 400 data samples, the use of CPU time real PC hits 100%. Why is it so? The function 'Read FIFO' is placed inside a while loop.

    Thank you

    Prashant

    Hi Prashant,

    Reading the FIFO is a method of querying, so if the number of elements specified to read are not available when the method is called, it queries the FPGA until they are.  This causes the CPU to 100% usage. You can find more information on this subject and a way around this here.

  • Is it possible to read the voltage/current SMU after the closure of the original session?

    What is the method, or is it still possible reading the voltage and current of an SMU SMU-4138 measurements after the original configuration session has been closed?  I have a (relatively) long Teststand sequence that sets up the EMS to provide power to the ESA, then conducts tests and along the way I have to take the readings of SMU.  I was always under the impression, it is advisable to open and close the EMS quickly set up, but the 3-State programming model does not allow a way to jump into the running state of Init with channels VI, except through committed and engaged States and thus any stop in the process. The power measurement VI only works if you are in the Running State. Seems like a no-brainer, so what Miss me?

    bholsinger wrote:

    I was always under the impression, that it is recommended to open and close the EMS quickly set up

    It's BAD advice.  You open at the beginning of your program, you do whatever it takes with it inside your test (configure, read, etc.) program and you don't log off not until you stop your program.

  • SoftMotion cRIO - how to read the position of a host from a sample of the expedition?

    When you open the examples provided with NI SoftMotion, generally there are two loops. The main loop and a loop that contains the following message:

    "The position of reading and tracing normally would be on the host by reading data from the target.  This is done in this example for simplicity. »

    Then, we advise on the Panel before you go to ni.com/info/f/ and enter the info code nismex for more information on the use of this example in a system of real movement.

    My question may seem obvious, but how "read the position on the host by reading data from the target?

    I tried to use the block function NOR SoftMotion read inside a VI on the host, of course, it does not, because the resource is on target.

    Should I leave the second loop inside the VI running system cRIO and just no conspiracy, but subscribe to a shared variable? I see that you can do a right click on the function block and select if you want output to be a shared variable. Or this second loop is supposed to be removed from the VI running on the target RT? How reads the position then?

    To see an example of what I mean, open this example: C:\Program NIUninstaller Instruments\LabVIEW 2009\examples\Motion\FunctionBlocks\Axis Straight Line Move\Axis right Line.lvproj

    Thank you

    Fabiola

    Concerning priority and when you call the motion function blocks:

    The NI SoftMotion engine for cRIO uses a background 'pilot' that runs in phase of analysis on the CompactRIO system engine.  This provides the required sync and sync for motion runs correctly.  This 'pilot' motion function blocks, simply send asynchronous commands.  You can consider them as an API to the engine of control of movement control.  You are not required to synchronize the function of movement of the scanning engine blocks or even to perform at a highest priority.  However, you will probably choose to run these a higher priority or in a loop timed for reasons of prioritization of execution.  For more details on the NI SoftMotion architecture and recommendations on how to build movement on CompactRIO systems discover the CompactRIO (http://www.ni.com/compactriodevguide/) Developer Guide.  It has been updated in December 2009 and Chapter 5 now has much on the order of movement on CompactRIO complete with examples of projects.

  • Event Viewer error "there was an error while trying to read the local hosts file." file "hosts" but good

    Hello

    In Event Viewer, I see a lot of mistakes like:

    Source: The customers DNS events

    There was an error trying to read the local hosts file.

    I read that threat indicating to rename the hosts for "hosts" file

    http://answers.Microsoft.com/en-us/Windows/Forum/Windows_7-networking/system-log-shows-repeating-error-code-3221225485/3700e855-ded4-4F12-960f-1577f6132c04

    HOWEVER, the name of the file in my computer appears as it should

    C:/Windows/System32/drivers/etc / "hosts".

    and the content of the file is as it is supposed to be according to: http://support.microsoft.com/kb/972034

    What should I do to fix this error?

    P.S. I suspect my computer is compromised. Last weekend, Security Essentials has reported a malicious file backdoor and it has been deleted, but I have a weird behavior of the computer

    Thank you

    Veronica

    Try to re-create the hosts file.

    Open Notepad as administrator (click right on the Notepad icon or shortcut and click Run as admin) and type the following information in it:

    127.0.0.1 localhost

    : 1 localhost

    The '1' in the '127.0.0.1' must be in the first column of the line and there must be at least one space between "127.0.0.1" and "localhost". In the second line, there must be at least one space between ": 1" and "localhost".

    Save the file with name "hosts" in the C:\windows\system32\drivers\etc folder.

    Source: http://www.sevenforums.com/system-security/130518-hosts-file-missing-should-i-worry.html

    You seem to have a hard drive problem. Please provide a copy of your system information file. Type the system information in the search box above the Start button and press the ENTER key (alternative is select Start, all programs, accessories, System Tools, system information). Select file, Export and give the file a name noting where it is located. Not to place the cursor in the body of the report before exporting the file. The system creates a new information file system each time system information is available. You must allow a minute or two before the file is completely filled before exporting a copy. Please download to your OneDrive (formerly Sky Drive), share with everyone and post a link here. Normal mode preferred report. Please say if the report was obtained in safe mode.

  • Possible for the host to read the files on virtual machines?

    Is it possible for a host read files on virtual machines?

    If you can get information using vmrun command, then I think that vmware-cmd command will help to define the variables that can think inside the vmx file. As vmx file is inside ESX server only so that you can shut down the VM and edit the vmx file, then you can register to the virtual machine using the vmware-cmd command.

    Thank you

  • How to read the host name or serial number cRIO locally

    I have not worked with cRIO and decided to ask for help.  (o).

    I don't know about the screws that allow to access this information from a connected Windows machine, however, I want to retrieve and display this information on remote panels.  But I cannot determine how to read the cRIO hostname or the serial number of the software running on the cRIO?

    Thanks for the help.

    James

    This could help.

  • How to read/write a SQL Server records hosted on the Web?

    If I have a MS SQL Server hosted on the internet, how can I use Labview to access? Popular examples.

    TIA,

    Them

    Well Yes, just provide the connection string and they, query and database tools take care of the rest.

  • How to read the digital I/o using PXI-7813R?

    Hi guys,.

    I'm reading a digital signal by using one of the ports in the PXI-7813R. The 7813R has 5 digital ports or 39 lines for playback of digital data. I have connected a SCB-68 as the physical hardware interface for 'plug-in' a 5V adapter, which will act as my signal at the moment.

    After you configure the PXI via MAX, I wrote two codes, one for my host pc and the other to control the FPGA through the host. But I think, I can have more complicated or completely gone in the wrong direction.

    Any help in the drafting of these codes would be well appreciaetd.

    Thank you, Anoop

    You need the FPGA to sample the signal how often you expect the device to send the data.

    If you write your data in the FPGA for the DMA, then on the side PC you just have to read the DMA.  I like to think of the DMA as a queue.  It makes it easier for me to understand how it works.

  • FIFO overflow

    Dear experts...

    My task is to demodulate a signal of 20 MHz, which came to the NI 5781 FPGA module. I am trying to sample the signal at the rate of 80 MHz by sending data FIFO RT and FPGA. RT I train for further treatment (screenshot of the FPGA and RT vi attached). Now about the RT when I start the program, a second I wanted to output, but as soon as I get the signal from noise alone (out of screenshot of expected and actual output is attached). What, according to me, is my FIFO is written much faster than playing. I tried to increase the size of the FIFO, but it remains always the same. For a while, I get good performance and then the noise. Is there a solution to overcome this problem. Can I have the timed loop to your clock can be exactly as the clock of the loop timed on FPGA (80 MHz in this case). I checked the loop timed on RT, but it gives only 1 Khz as implementation rate.

    Thank you... Kindly help...

    On the side of RT, read several items at a time from the FIFO.  You know what is the sampling frequency, then read a fixed number of samples with a timeout is large enough to accommodate the number of elements.  Another approach common, especially when the sample rate can vary, is to read the elements 0, that return the number of items remaining in the FIFO, then read this number of items with a shorter waiting period since you know that these items are already available.

  • How to read the status of User1 DIP-switch with a cRIO FPGA chassis?

    How to read the State of the DIP switches on a FPGA cRio chassis?

    I work with a cRIO 9022... My idea is to put the system in "service" mode with USER1 switch to IT and communicate with the FPGA via the FPGA - GUI (VI) on the host computer instead via the RT module that is used in normal conditions.

    Any ideas? Unfortunately, I don't have an unused channel on the left... .and (as I know) cannot use the interface RS232 of FPGA.

    Many thanks in advance,

    Luke

    Hi, this is the correct information. You cannot read the FPGA of DIP-switch status. The only thing you could do is to use the function of Reading Switch.vi located under the range of functions-> real-> utilities RT time

    It's how you probably know side host RT and not the FPGA.

    Cordially Virginia

  • Read the indicators continually the Subvi execution

    Greetings,

    Number of previous threads about this problem. However, it looks like all the need of huge changes to to the Subvi.

    Now, we have a bunch of Subvi programmed by different programmers, but at the end it is difficult if we combine all the indicators in each Subvi and display the values in the façade of a single main vi, without big changes for each Subvi.

    Control reference using will be a solution, with some changes in the sous-de VI, but it seems that the main vi and Subvi need to run at the same time. We cannot run only a Subvi himself then.

    Variable overall is another station, however, we have a huge amount of indicators, creating global variables for each indicator in each Subvi seems like redundant procedures.

    '

    I wonder if there is a way to create a main vi shell-like read these indicators permanently without needing to touch the inside of each individual Subvi. Or please let know us if you have better ideas.

    Thanks in advanced for any comment.

    -chen

    I was not involved in all this other discussions that you mention, so I can only go off of what you have described in your post. So the questions I ask are:

    -Don't the SubVIs run continuously (called) before the end of the application?

    -How to stop the sub live? You are reliant on the controls on the front panel (for example, a stop button)?

    If you'd rather not touch the sub live, you could put the sub sub-panels in the main vi screws. This would allow you to expose their facades, hosted in the main vi. Search for Sub panels using LabVIEW or online. It would also expost controls too, but you can customize the front of each to hide these off-screen, so to speak. There is also a VI properties that allow you to programmtically re - locate originally and resize the front panels in order to ensure the proper display.

    If this does not work for you then I think you should take a hard look at your architecture. Sometimes you can get so far from Shoemaker to things together. Look closer at all misconceptions of what a VI is actually and what calling a VI in an another VI means in fact (you're basically calling a function with some extras added as a front panel). There are ways to get what you want by programming, but they are hard work, not very easy to manage and can be more effort than other solutions.

    My strategy of choice? Use a messaging system any to communicate between your objects in your system. You have your items (hand UI, each Sub VI is a small entity of independent work of others) and you can use one of the buildings available to you through LabVIEW base (notifiers, queues, events user Global Variables (yuck), FGVs etc.) to allow these objects communicate with each other.

    But I guess you've heard all this before. All I can say is that "they are right". Sometimes there is no better solution for the bad design to re-design.

  • delay in reading the data when you are using multiple loops clocked on target RT

    Hello

    I have five loops clocked on a target of RT and I communicate to and from the host vi. All the loops of the value of the different priorities however when all running at the same time I found windows vi take up to 1 minute before reading the data. Four disabling loops to fix the problem. It is possible to start the app right after start windows vi?

    Kind regards

    Solved the problem by disabling variable autodeploy

    Thank you

  • Read the serial number of the PXI 8130

    Hello:

    Anyone know how to read the serial number of an SMU-8130 chassis controller programmatically? Read the serial number of a 1075 chassis will work also.

    Is it still possible?

    Thank you very much

    -Ilya.

    My apologies, as this thread is expanded to LabVIEW, I was assuming that the main language was LabVIEW. Currently, it is not a condition C library that reproduced the personality of the Configuration of the system. My understanding is that this feature is in the works, but not yet implemented.

    In the short term, you can choose to compile the necessary features of LabVIEW in a DLL called by your project. Otherwise, the MAC address can still be used as a unique identifier, if that's what you need.

    See you soon,.

Maybe you are looking for

  • Duplicate songs on iPod

    After syncing my iPod Touch with iTunes on my PC several times, I'm done with duplicate on my iPod songs.  How to remove songs double without having to manually deleye each piece individually?

  • HP TX2 finger calibration problems

    I am having trouble with the calibration of touch of the finger on my TX2 so I ran the calibration routine. He plays, without recognizing the keys in a particular corner. I can press somewhere near this corner, a few cm of distance, but it doesn't re

  • Test a web application that uses the emulator of the Blackberry, is - it possible?

    Hello everyone, I have a small java web application running on Apache Tomcat on a local computer. It works fine on my PC, but it is meant for Blackberry devices. Before I put in our web server, I want to test it on a Blackberry 8300 and 8900 emulator

  • Updates to Smartphones blackBerry 8700 4?

    Wow! First of all thanks to quick help! Secondly, I apologize for being stupid for this! I had an iPhone and got rid of him and now I have an older 8700. A little change! I was wondering if someone could help me determine if the software I currently

  • DVD super multi no lee los DVD of 8 Gb. Antes TR.

    Siempre he read los DVD DL (8 Gb), pero hace a year no puedo leerlos in los 2 Québec tengo in el PC disk drives. USO Windows 7 y tengo el Nero 10. Da the impresion that're a problema por alguna razon software is ha reworked algo en Windows y cuando m