Why is streaming data to disk necessary?

Does streaming data to disk actually take the burden off the buffer to allow the processing of data after its been acquired? I've seen an example or 2 but unclear to the purpose. Can anyone explain?

Hi,
There's another example called High Speed Data Logger.vi that comes shipped with LabVIEW. This is a more efficient datalogging example than simple data logger.vi. The major difference between the two is that Simple data logger continuously opens and closes the file reference in the while loop and writes in ASCII. High speed data logger.vi only opens the file reference once, and then continuously writes binary data to the file until you tell it to stop. After it stops, it then closes the reference. This is how to efficiently do it without incurring any excess overhead. Hope this helps!
PS - You can find the example in the NI Example Finder. Go to Help >> Find Examples, and then go to the Search Tab and enter "data
logging" as the keyword.
Jeremy L.
National Instruments
Jeremy L.
National Instruments

Similar Messages

  • Using TDM VI in Lv 7.1 to stream data to disk

    I found the TDM VI and the structure of the data is very interesting for my application.
    I try to use it to stream an array of waveform data but the TDM VI goes very slow.
    after that, I see in the documentation that TDM file can't support streaming to disk, but I think it's really a basic function.
    futhermore,the TDM VI write binary data, so normally it must work !.
    is there another possibily with TDM file to stream data to disk ?
    Thanks in advance for your help.
    GHELEYNS Nicolas
    Phénix Industries s.a.

    Hi,
    The LabVIEW Storage VIs do not yet support streaming data to disk. However, you can benefit from the storage VIs structured approach to saving data by:
    Streaming data to disk using standard binary write VIs
    Reading data back in and writing it back out to disk using the storage VIs after acquisition
    Deleting the original binary file
    Although there is the extra step of writing data to an intermediate binary file, you benefit because you can structure your data and save it with the descriptive properties that the storage VIs offer.
    Regards.
    JorisV

  • Need help streaming data to disk

    I have enclosed a simple vi where I'm streaming data to disk and then would like to read the data (analyze it). I'm not a avid user in LV but would like to understand this concept. I'm having problems reading the data. Is anyone experienced in this arena?
    Attachments:
    streaming to disk.vi ‏146 KB

    Hello,
    I have taken a look at the vi you attached and have discovered where some problems may be arising. First your For and While loops do not know when to finish. You must give them some sort of termination element whether it be a certain number of iterations or end of file. However, the main problem you are running into is that you are trying to write and read from a file at the same time. The read is actually trying to read from a file that does not yet exist or have data. You must have these be sequential. When the write finishes then you can begin the read. You can do this by using a Sequence Structure from the Structures Palette.
    I would also like to suggest using the examples in the Example Finder in the Help menu as a starting point. You can search for read and write to find examples you can incorporate. Also there is one example Read from Binary File that I believe you will find useful in your application.
    Thanks,
    Caroline
    National Instruments
    Thanks,
    Caroline Tipton
    Data Management Product Manager
    National Instruments

  • Streaming data to disk, need help reading data into Power Spectrum/O​ctave vi

    I'm streaming data to disk in one loop, however once this finishes I'd like to read the data into power spectrum vi/Octave analysis vi in another loop. The data from the read vi is a string and power spectrum vi needs 1d waveform. Does anyone have experience with this process?

    From your general description, I gather you are streaming to a text based file (comma or tab separated spreadsheet format) and would like to analyse this data with a power spectrum or octave analysis when you finish. Since you are streaming, I assume you have a lot of data. Do you have more than one channel?
    In any case, you have two simple options (and lots of complex ones). You can either read the data back from disk and convert it to a 1D array (try the Read From Spreadsheet File.vi - will get a 2D array, take the first column or the column of your choice if you have more than one channel) or you can use the Spreadsheet String to Array primitive to create an array from your text data before you save it to disk.
    If your data rate is slow enough, you can analyze as you acquire and store.
    Taking your data as text is very inefficient. What you really want to do is read the data as binary, use that for your analysis, and use something like the Write to Spreadsheet File.vi to save text data to disk.
    This account is no longer active. Contact ShadesOfGray for current posts and information.

  • Streaming data from disk to analog output (using the PCI-6713)

    I have a question about the PCI-6713. I want to stream data from the hard disk to all of the card's 8 outputs at its maximum update rate of 1 MS/s. Using single precision (32-bit) variables, this works out to a 32 MB/s transfer rate. That seems to be pushing the limits of most hard disks.
    However, the output card only has 12-bit resolution. Is there a way - using LabView or some other software - to store the data on the disk using only 12-bit numbers? This would drastically decrease the transfer rate required.
    Thanks for your help.

    You could use 8 or 16 bit integers in LabVIEW rather than using 32-bit single precision numbers. I'm sure integers don't have the precision you're wanting though. That is the only way to reduce the size of the numbers you are writing. I am fairly positive there is no way in LabVIEW to do what you are wanting.
    Regards,
    Todd D.

  • How can I optimally stream data to disk at 5 MS/s on 4 channels using a PCI-6110?

    I am using a PCI-6110 to acquire data streaming from a camera. Data arrives on all four analog input channels at 5 MHz. An A2D clock is attached to PFI8, also originating from the camera and operating at 5 MHz. Finally, there is a Valid-data signal from the camera that signals when the data stream coming in on the four analog channels is actual data (each Validate pulse is about 132 samples wide). This is attached to PFI0. Ideally, I would like to have a program that captures data at the full rate and is correctly synchronized with the Valid-data line. It should also be able to stream to disk for several seconds at least before pausing for the buffer.
    Though I'm something of an inexper
    ienced programmer, I have attempted programs both in LabView and C (using DAQmx) to resolve this, but I have experienced much slower behavior than I'd like. In LabView, this seems to be the result of slow streaming to disk, such that I have to pause and reset the task every frame (132x512 samples per channel). Using DAQmx in C, I have found it necessary to restart the task after every line (132 samples per channel) in order to correctly trigger from the Validata pulse. Both are far from optimal. I would appreciate any advice that those of you with more experience reading at very high rates from this card may have to offer.
    Thanks,
    Steven Israel
    Duke University

    I'm not sure if I fully understand your application, but maybe some of these hints will help.
    First your streaming to disk rate is going to vary widely depending on your system. Sometimes using a faster processor helps, but most of the time using a faster hard drive will give you the best performance increase.
    Second, writing less data will often have a dramatic impact in streaming to disk applications. If you're reading back scaled data, I would strongly recommend switching to unscaled or raw reads and storing off the scaling constants so you can scale the data off line. This could reduce the required streaming to disk bandwidth by a factor of 4 alone.
    Third, since the 6110 is a 12 bit device, you can try compressing two 12 bit samples into one 24 b
    it piece of data. This will allow you to store in three bytes what used to take four.
    Last, you might consider using your signal on PFI0 as a pause trigger. Depending on the frequency of the pulses on your Valid-data signal, this could significantly reduce the required bandwidth of both the PCI bus and your hard drive. However, since the 6110 uses pipelined ADCs, you need to be careful if the time between valid data pulses is greater than one millisecond. This would violate the minimum sampling frequency of the board and the points in the pipeline that are returned after unpausing (3 in this case) might not be digitized at the full accuracy specification for the device. Because of the pipelining, you also need to be careful how you correlate the data. The first time you unpause for the Valid-data pulse, the first three points will be garbage points. The second and subsequent times you unpause, the first three points are really the last three points from the previous Valid-dat
    a pulse. See the Device Considerations->Timing chapter in the NI-DAQmx Help file for more information on timing considerations with pipelined ADCs.
    I hope this information helps. Good luck!

  • Q: Re: Q: Acquiring data using two E series devices connected by RTSI and streaming data to disk

    << (My first posting)
    I use two E series PCI Cards, connected by RTSI. I'd like to stream the data
    from both cards to a binary file and to add a header to it.
    I also need to somehow read (plot) the stored data, this with another VI.
    The whole should be then integrated into an existing program, that used just
    one acquisition card.
    Till now I have tried to combine "Two E-series Shared ScanClk.vi" and "High
    Speed Data Logger.vi" into another VI, and I have tried to read the stored
    data with the "High Speed Data Reader.vi". The problem is that I fight with
    one error after another, what prevents me from going further.
    I use LabView 6.1, under Windows 2K.
    Has somebody by chance already done something similar and would agree to
    share with me their experience? TIA for any suggestion.
    Regards,
    Victor Manta
    >>
    "Ben" wrote in message
    news:[email protected]...
    > Hi Victor,
    >
    > I have done a lot of similar work.
    >
    > Exactly what did you try and what specific errors did you encounter?
    >
    > What you are trying is do-able provided the hardware you have suuports
    > it.
    >
    > Please post (both here and to the DAQ group)
    > the details of the hardware you are using,
    > versions of software being used,
    > Examples that you are using,
    > error codes that occured,
    > posibly post example code showing the problem.
    >
    > Ben
    Hi Ben,
    I use two PCI-MIO-16E-1 cards, connected by RTSI. I'd like to stream the
    data from both cards in real time to a binary file, after having added a
    header to it.
    For tests, on the channel 0 of each card is applied the same square wave,
    100 Hz.
    Yes, the hardware support RTSI. I use LabView 6.1.
    Till now I have:
    1. Combined the "Two E-series Shared ScanClk.vi" and the "High
    Speed Data Logger.vi" into a DAQ VI. To do this, I have "doubled" and
    adapted the "High Speed Data Logger.vi". For testing purposes the data are
    stored in two files, always the same ones (the old ones being overwritten
    after each acquisition).
    2. "Doubled" and adapted "High Speed Data Reader.vi" into another VI, for
    reading from both files, mentioned earlier.
    What already works:
    - The headers for both files are correctly stored (VI point 1.)
    - The acquired data from the first card (device 1) are correctly stored (VI
    point 1.)
    - The VI (point 2.) that reads both files and displays the results works
    What doesn't work:
    - The acquired data from the second card aren't stored at all (VI point 1.)
    - An error message says: "Error -10608 occurred at AI Buffer Read. Possible
    reason: NI-DAQ LV: No transfer is in progress for the specified resource."
    I think that I understand this message, but I don't know how to continue.
    The DAQ VI can be downloaded from (please click the link, then the link on
    that page; about 100K, zipped):
    http://www.swissheartnet.unibe.ch/labview.htm
    Thanks a lot in advance.
    Regards,
    Victor Manta
    PS. I don't know which DAQ group you mean.

    "Filipe A." wrote in message
    news:[email protected]...
    > Victor;
    >
    > You can definitely accomplish that task with the DAQ boards you have
    > and Labview.
    >
    > It would be good if you could be more specific as far as what type of
    > errors you are seeing and how you are integrating both VIs.
    >
    > Regards
    > Filipe A.
    > Applications Engineer
    > National Instruments
    Maybe Mr. Filipe A. could help me? Please see below, and TIA.
    Regards,
    Victor Manta
    "Victor Manta" wrote in message
    news:[email protected]...
    > << (My first posting)
    > I use two E series PCI Cards, connected by RTSI. I'd like to stream the
    data
    > from both cards to a binary file and to add a header to it.
    >
    > I also need to somehow read (plot) the stored data, this with another VI.
    >
    > The whole should be then integrated into an existing program, that used
    just
    > one acquisition card.
    >
    > Till now I have tried to combine "Two E-series Shared ScanClk.vi" and
    "High
    > Speed Data Logger.vi" into another VI, and I have tried to read the stored
    > data with the "High Speed Data Reader.vi". The problem is that I fight
    with
    > one error after another, what prevents me from going further.
    >
    > I use LabView 6.1, under Windows 2K.
    >
    > Has somebody by chance already done something similar and would agree to
    > share with me their experience? TIA for any suggestion.
    >
    > Regards,
    > Victor Manta
    > >>
    >
    > "Ben" wrote in message
    > news:[email protected]...
    > > Hi Victor,
    > >
    > > I have done a lot of similar work.
    > >
    > > Exactly what did you try and what specific errors did you encounter?
    > >
    > > What you are trying is do-able provided the hardware you have suuports
    > > it.
    > >
    > > Please post (both here and to the DAQ group)
    > > the details of the hardware you are using,
    > > versions of software being used,
    > > Examples that you are using,
    > > error codes that occured,
    > > posibly post example code showing the problem.
    > >
    > > Ben
    >
    > Hi Ben,
    >
    > I use two PCI-MIO-16E-1 cards, connected by RTSI. I'd like to stream the
    > data from both cards in real time to a binary file, after having added a
    > header to it.
    >
    > For tests, on the channel 0 of each card is applied the same square wave,
    > 100 Hz.
    >
    > Yes, the hardware support RTSI. I use LabView 6.1.
    >
    > Till now I have:
    >
    > 1. Combined the "Two E-series Shared ScanClk.vi" and the "High
    > Speed Data Logger.vi" into a DAQ VI. To do this, I have "doubled" and
    > adapted the "High Speed Data Logger.vi". For testing purposes the data are
    > stored in two files, always the same ones (the old ones being overwritten
    > after each acquisition).
    >
    > 2. "Doubled" and adapted "High Speed Data Reader.vi" into another VI, for
    > reading from both files, mentioned earlier.
    >
    > What already works:
    >
    > - The headers for both files are correctly stored (VI point 1.)
    > - The acquired data from the first card (device 1) are correctly stored
    (VI
    > point 1.)
    > - The VI (point 2.) that reads both files and displays the results works
    >
    > What doesn't work:
    >
    > - The acquired data from the second card aren't stored at all (VI point
    1.)
    > - An error message says: "Error -10608 occurred at AI Buffer Read.
    Possible
    > reason: NI-DAQ LV: No transfer is in progress for the specified resource."
    >
    > I think that I understand this message, but I don't know how to continue.
    >
    > The DAQ VI can be downloaded from (please click the link, then the link on
    > that page; about 100K, zipped):
    >
    > http://www.swissheartnet.unibe.ch/labview.htm
    >
    > Thanks a lot in advance.
    >
    > Regards,
    >
    > Victor Manta
    >
    > PS. I don't know which DAQ group you mean.

  • Q: Acquiring data using two E series devices connected by RTSI and streaming data to disk

    I use two E series PCI Cards, connected by RTSI. I'd like to stream the data
    from both cards to a binary file and to add a header to it.
    I also need to somehow read (plot) the stored data, this with another VI.
    The whole should be then integrated into an existing program, that used just
    one acquisition card.
    Till now I have tried to combine "Two E-series Shared ScanClk.vi" and "High
    Speed Data Logger.vi" into another VI, and I have tried to read the stored
    data with the "High Speed Data Reader.vi". The problem is that I fight with
    one error after another, what prevents me from going further.
    I use LabView 6.1, under Windows 2K.
    Has somebody by chance already done something simi
    lar and would agree to
    share with me their experience? TIA for any suggestion.
    Regards,
    Victor Manta

    << (My first posting)
    I use two E series PCI Cards, connected by RTSI. I'd like to stream the data
    from both cards to a binary file and to add a header to it.
    I also need to somehow read (plot) the stored data, this with another VI.
    The whole should be then integrated into an existing program, that used just
    one acquisition card.
    Till now I have tried to combine "Two E-series Shared ScanClk.vi" and "High
    Speed Data Logger.vi" into another VI, and I have tried to read the stored
    data with the "High Speed Data Reader.vi". The problem is that I fight with
    one error after another, what prevents me from going further.
    I use LabView 6.1, under Windows 2K.
    Has somebody by chance already done something similar and would agree to
    share with me their experience? TIA for any suggestion.
    Regards,
    Victor Manta
    >>
    "Ben" wrote in message
    news:[email protected]...
    > Hi Victor,
    >
    > I have done a lot of similar work.
    >
    > Exactly what did you try and what specific errors did you encounter?
    >
    > What you are trying is do-able provided the hardware you have suuports
    > it.
    >
    > Please post (both here and to the DAQ group)
    > the details of the hardware you are using,
    > versions of software being used,
    > Examples that you are using,
    > error codes that occured,
    > posibly post example code showing the problem.
    >
    > Ben
    Hi Ben,
    I use two PCI-MIO-16E-1 cards, connected by RTSI. I'd like to stream the
    data from both cards in real time to a binary file, after having added a
    header to it.
    For tests, on the channel 0 of each card is applied the same square wave,
    100 Hz.
    Yes, the hardware support RTSI. I use LabView 6.1.
    Till now I have:
    1. Combined the "Two E-series Shared ScanClk.vi" and the "High
    Speed Data Logger.vi" into a DAQ VI. To do this, I have "doubled" and
    adapted the "High Speed Data Logger.vi". For testing purposes the data are
    stored in two files, always the same ones (the old ones being overwritten
    after each acquisition).
    2. "Doubled" and adapted "High Speed Data Reader.vi" into another VI, for
    reading from both files, mentioned earlier.
    What already works:
    - The headers for both files are correctly stored (VI point 1.)
    - The acquired data from the first card (device 1) are correctly stored (VI
    point 1.)
    - The VI (point 2.) that reads both files and displays the results works
    What doesn't work:
    - The acquired data from the second card aren't stored at all (VI point 1.)
    - An error message says: "Error -10608 occurred at AI Buffer Read. Possible
    reason: NI-DAQ LV: No transfer is in progress for the specified resource."
    I think that I understand this message, but I don't know how to continue.
    The DAQ VI can be downloaded from (please click the link, then the link on
    that page; about 100K, zipped):
    http://www.swissheartnet.unibe.ch/labview.htm
    Thanks a lot in advance.
    Regards,
    Victor Manta
    PS. I don't know which DAQ group you mean.

  • How can I continuous​ly streaming data to disk with 1MHz sampling rate with PCI 6110?

    I can only save 3 seconds data with 1MHz sampling rate using PCI 6110. Is it possible to continuously save longer time data (say 1 minute)?
    Many thanks

    if the binary file is big the ASCII file is very very very big.
    1 measurement is coded in a I16 => 2Bytes ( 4bit is not used 611X is 12bit
    card)
    if you use +/-1V range the quantum is (2 * 1V) / 4096 = 0.0004883V or 0.4883
    mV you need to use 8 digits minimum.
    And If your binary file is 1 Mo your ASCII file is 4 Mo.
    You can use this VI for inpiration you need to add the translate I16 to DBl
    to make a real value before saving.
    For Help you can mail inthe newsGroup.
    I'am a french user and my english is not good Sorry..
    Fabien Palencia
    Ingenieur d'etude ICMCB CNRS
    "StephenZhou" a ?crit dans le message de news:
    506500000005000000A5AF0000-1031838699000@exchange.​ni.com...
    > Hi, Fabien Palencia
    >
    > The program is great.
    Do you happen to know how to convert the big
    > binary file to ascii file? Thanks
    [Attachment recup data I16.vi, see below]
    Attachments:
    recup_data_I16.vi ‏57 KB

  • Hi, dear Sirs! I'd like to suggest this: as I installed 4 Airport Extreme Units in my apartment connected to Powered loudspeakers, why don't give the choice to send streaming data to all the units so I can hear music trough each unit? Thank you, V M

    Hi, dear Sirs!
    I'd like to suggest this: as I installed in my apartment  N° 4 Airport Extreme Units each one connected to Powered loudspeakers, why don't give the choice to send streaming data to all the units so it is possible to hear music trough each unit?
    Thank you,
    Valerio Maioli

    Dear tzbikowski
    really many thanks for your prompt and right reply.
    I didn't know it, but I found in iTunes popup, not only you can adjust the volume of each unit too!
    But, I have another question, sorry:
    This facility is on Safari Mountain Lion SW, but is it on iOS 6.01 or 5.1.1 as in my iPad ?
    Valerio

  • Streaming data to LONG columns in Oracle 7.3.2.3.0

    I am trying to stream data to a LONG column. I'm using Oracle
    Server 7.3.2.3.0 on AIX and JDBC driver 8.0.4 on Windows NT 4
    SP5.
    I include sample tables/programs at the end, but here's the
    summary of what's happening:
    I'm creating a byte array of length 2500. If I use
    setAsciiStream I get the following exception when I execute the
    prepared statement:
    java.sql.SQLException: Data size bigger than max size for this
    type
    at oracle.jdbc.dbaccess.DBError.check_error(DBError.java)
    at oracle.jdbc.ttc7.TTCItem.setArrayData(TTCItem.java)
    at oracle.jdbc.driver.OraclePreparedStatement.setItem
    (OraclePreparedStat
    ement.java)
    at
    oracle.jdbc.driver.OraclePreparedStatement.setAsciiStream
    (OraclePrepa
    redStatement.java)
    at TestOracle.main(TestOracle.java:26)
    If I use setBinaryStream I get this exception:
    java.sql.SQLException: ORA-01461: can bind a LONG value only for
    insert into a LONG column
    at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java)
    at oracle.jdbc.ttc7.Oall7.receive(Oall7.java)
    at oracle.jdbc.ttc7.TTC7Protocol.doOall7
    (TTC7Protocol.java)
    at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch
    (TTC7Protocol.java)
    at oracle.jdbc.driver.OracleStatement.doExecuteOther
    (OracleStatement.jav
    a)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithBatch
    (OracleStatement
    .java)
    at oracle.jdbc.driver.OracleStatement.doExecute
    (OracleStatement.java)
    at
    oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout
    (OracleStateme
    nt.java)
    at
    oracle.jdbc.driver.OraclePreparedStatement.executeUpdate
    (OraclePrepar
    edStatement.java)
    at oracle.jdbc.driver.OraclePreparedStatement.execute
    (OraclePreparedStat
    ement.java)
    at TestOracle.main(TestOracle.java:27)
    My Oracle7 manual states that LONG columns can store 2GB of text.
    I tried the above with LONG RAW columns and it worked fine.
    Can anyone explain why I get this error? I've tried it with
    different sizes and when the data is <2000 bytes it works fine
    for LONG columns.
    My table is simple:
    create table TestLongs (key INTEGER PRIMARY KEY, data LONG);
    My Java code is also very simple:
    public class TestOracle
    public static void main(String[] args)
    Connection con = null;
    PreparedStatement pstmt = null;
    try
    Class.forName("oracle.jdbc.driver.OracleDriver");
    con = DriverManager.getConnection(
    "jdbc:oracle:thin:@itchy:1526:test",
    "System", "<OMITTED>");
    byte[] data = new byte[2500];
    for (int i=0; i< 2500; i++)
    data[i] = 53;
    String sql = "INSERT INTO TestLongs (key, data)
    VALUES(1, ?)";
    pstmt = con.prepareStatement(sql);
    ByteArrayInputStream bis = new ByteArrayInputStream
    (data);
    pstmt.setAsciiStream(1, bis, data.length);
    pstmt.execute();
    catch (SQLException e)
    System.err.println("An error occurred with the
    database: " + e);
    e.printStackTrace();
    catch (Exception e)
    System.err.println("Oracle JDBC driver not found." +
    e);
    e.printStackTrace();
    finally
    try
    if (pstmt != null)
    pstmt.close();
    if (con != null)
    con.close();
    catch (SQLException e)
    System.err.println("Unable to close
    statement/connection.");
    null

    Robert Greig (guest) wrote:
    : I am trying to stream data to a LONG column. I'm using Oracle
    : Server 7.3.2.3.0 on AIX and JDBC driver 8.0.4 on Windows NT 4
    : SP5.
    I tried it with the old 7.3.x JDBC driver and it works fine. I
    also noticed after further testing that it sometimes worked
    with the 8.0.4 driver. Looks like a bug in the 8.0.4 driver or
    some wacky incompatibility.
    null

  • What's the fastest C function for writing binary data to disk?

    I'm acquiring data at high speeds across multiple boards and I'm having a hard time writing the data to disk fast enough to keep up. I'm programming in C in Visual Studios and I'm currently using fwrite. I have a similar system set up in LabView and my C code can't perform as well. Is there a better or faster way to write to disk in C?

    Some speculated a few years ago that there would be
    no reason to use Fortran too. :)Are you saying there's a reason to use Fortran? Help me lord!
    Anyway, they were right! The industry may be stalling, but the vision is not. The economy and many other factors are to blame for why we haven't been able to break out of the computing paradigm we're stuck in. It's like the automobile, it hasn't changed in a century. Why? $$$
    Oh, people said we'd have flying cars by now, where are they? Well we do have them! But we're too busy spending that 400 billion a year on war instead of evolving as a species.
    Anyway, when we take the next step and have true distributed computing with multi-core processors everywhere, Java will run, Java will scale, and Java will outperform ANYTHING available.
    And speaking of game programming, the PS3 developers are having a hell of a time doing the 3 CPUs. Why? Because all they've ever done is single & double processor systems. It's time to think out of the box. When a game console hits the market with 512 CPU cores, do you REALLY think C/C++ will run on that? But, Java was designed for it.
    Java = the future
    C++ = the past

  • AXI Stream Data FIFO sends data automatically

    Hi all!
    I've been doing a few beginner experiments with AXI peripherals and following some tutorials online on how to create AXI peripherals and connect them to the PS on my Zynq board. So far, I've managed to sucessfully create AXI DMA to send data from PS to PL AXI Stream Data FIFO and vice versa. However, if I expand my PL with a custom IP with AXI Stream interface and connect it to the AXI Stream slave interface of my AXI Stream Data FIFO to send data to FIFO, my linux application gets stuck when trying to read the data of FIFO via DMA. After some simulations and debugs I figured out, that my FIFO is empty and cause the stuck of my application, because DMA waits for data.
    For this reason I seperated my custom IP and FIFO from the DMA to test and debug only the connection between custom IP and FIFO without the influence of DMA. Thus the master interface of the fifo is not connected. Accordingly every second my custom IP shall properly open a transfer and send 10 values of 32 bit to FIFO where it should be stored and not send.
    However, debugging this PL with ILA core ends with the result, that my FIFO stops to be ready-to-receive after receiving and storing 3 values of 32bit. Then it waits until it receives a high TLAST signal of custom IP. During this waiting period it does not store my remaining values. After TLAST gets high with the 10th 32-bit value, FIFO´s signal TVALID is set instantly to high and FIFO starts to submit the data. This is the point where I get confused. Why does FIFO starts to transmit when there is no receiver connected to FIFO´s AXI Stream master interface? From my level of knowledge FIFO needs the signal TREADY high from a slave peripheral to starts the transmission.
    I believe this behavoiur is the reason of not storing the values in FIFO.
    Hopefully somebody knows whats going wrong here or what I am doing wrong. I really appreciate any help because I have been trying 2 weeks to solve this problem without any success. It is really frustrating...
    Please see attachments for better understanding. If you need further information let me know.
    Best regards,
    timmaexd
     

    Thanks for replying and checking my diagrams! Fortunately, I could solve the problem.
    After you gave me the advice to check m_tready, I figured out that this signal was constantly set to high. This was caused by VCC, which was connected automatically with m_tready, after synthesis.
    Thus I connected DMA with FIFO to replace VCC with DMA and consequently data was stored correctly.
     

  • How do I get websites that have streaming data to work?

    I use Firefox 1.5.0.7 as my internet browser. There are two websites I want to recieve streaming data from. One is a radio station (www.fan960), the other is a naturecam site (www.orca-live.net/community/index.html). Both sites tell me I have to download vaious players (adobe player and flash player) yet I download them, follow the installation instructions, and they still do not work.
    I post this here because I wonder why my MacBook Pro does not already have a player that would work for these purposes. One reason I decided to buy a Mac computer was the selling point that they worked right out of the box. Any suggestions as to what I should do to enjoy these websites to their full extent?

    Personally, I use itunes to play radio. It works
    great.
    So, I am told, does Quicktime.
    How would you go about adding a station to ITunes as these are not listed as available stations?

  • Streaming data from cRIO

    Hi everybody,
    This is quite a general question and I am looking for some pointers\opinions\suggestions.
    I want to stream data from several channels at diffferent rates from my cRIO to the host PC. As far as I can see there are three options:
    1)  Use a network shared variable (NSV) for each channel and read them in a loop on the host PC.
    2)  Use one NSV which uses a cluster of an enum and variant. In this case the enum specifies which channel (and therefore data type) the packet contains and the variant contains the data.
    3)  Use STM to stream the data over the network using TCP/IP
    These are my questions/thoughts:
    1)  not very scaleable as each NSV has to be read individually also just seems messy!
    2)  Seems nice and clean and scaleable, multiplexes the data into one channel. I am aware NSVs are not quite as efficient as directly using STM TCP/IP  BUT... is there an additional (significant) overhead converting all the data to variant?
    3) According to the documentation on NSVs using TCP/IP is the fastest way to stream the data. This method seems to offer the same avantages as (2) - clean, multiplexes the data. BUT it does add complexity in developing the cod. Also the data is still flattened to string, is this much different than converting to a variant?
    THE QUESTION: is method (2) a reasonable compromise if the absolute highest data rates are not required?
    Many thanks,
    Steve.

    Hi Steve,
    I have been looking into this problem for you. It seems that each of the three options you highlighted could be used to achieve your goal though since you want to stream multiple channels method 1 would be highly inefficient and therefore should not be considered for this application. I would suggest that method 3 which uses TCP/IP to stream the data over the network is the optimal solution in this case though as you have alluded to, this does add a level of complexity. If you decide to pursue this option I have found a really useful link provides more details about this methodology and a LabVIEW example which should help you get started with the coding. I have also found this link to a forum which may be of interest to you (especially the final post by Kurt).
    I would also like to add that I completely agree with Brian K, in that I believe method 2 is a very acceptable compromise, especially if high data rates are not necessary. 
    I hope this helps.
    Best Regards,
    Christian Hartshorne
    Applications Engineering
    National Instruments

Maybe you are looking for

  • How to Highlight text in DW?

    I've been trying to find an easy way to highlight my text with yellow or some other colors. It looks like in DW you need to go through 1.5 Mil steps and maybe and hopefully this thing could get done. I appreciate if any of you know an easy way to hig

  • Variable power supply not working in virtual elvis

    When i make a virtual elvis 3d schematic i cannot get any output from the variable power source, i have played with it alot and still no output. please help.

  • Traveling with my Apple TV

    i am traveling and brought my Apple TV. I did not bring the remote, assuming I could use my remote App on either my iPhone or iPad. The Apple TV hooks up fine on the TV but my remote app won't see my Apple TV. Since the app won't see the Apple TV how

  • Grid control interface for non-DBA users...

    I was wondering if there is a way to provide non-DBAs an account to log into OEM (OMS Grid Control) for 11g. We have some SQL Server DBAs and developers/report writers who are quite curious about OEM, especially after I gave them all a presentation o

  • Apple Mail losing mail settings after closing the application

    Hi! I have been using apple mail for the last 18 months with 5 accounts using IMAP, however when upgraded to Leopard 10.5.7 every time I enter the account details of the accounts they work find etc... However when I close Mail and load it again all o