High speed digitizer - Acquire up to 200M Samples at 125MHz

Discussions about active development projects
Post Reply
alex123go
Posts: 15
Joined: Mon May 04, 2020 4:46 pm

High speed digitizer - Acquire up to 200M Samples at 125MHz

Post by alex123go » Tue Aug 11, 2020 6:57 pm

Hello everyone,

I've worked on an acquisition card with the Red Pitaya board. It can acquire up to 200M Samples at full speed (125 M Samples/s). https://github.com/alex123go/RedPitaya_Acquisition

How:
It consists of a DMA block directly connected to the ADCs. When an acquisition is started, the FPGA side can fill up to 384MB of the RAM (Linux's RAM is limited to 128MB, so the remaining 384MB are reserved for DMA). Therefore, in single channel mode, a little over 200 million samples can be saved without dead-time.

When the RAM is filled, data are transferred over TCP to the host computer and can be plotted or saved.

I've tried to make a GUI that kinda look-like an oscilloscope for easier use of the tool. There is also a script without GUI, useful for longer acquisition without freezing the computer.

Unfortunately, you need to write a new Linux Image to the SD card, so I think the board is no longer compatible with original Red Pitaya's apps (although I never used them so I am not 100% confident).
The new image is based on Pavel's version (https://github.com/pavel-demin/red-pitaya-notes), with the reserved memory modified, plus some software for red-pitaya discovery over UDP and communication over TCP.


Why:
Considering that the price of dual channel high-speed acquisition card is in the thousands, I think this acquisition firmware can be a good addition to any laboratory or to anyone's electronic workbench.


Future:
As future work, I plan to add decimation, to add an internal trigger and to the merge the different tools into a single bitfile (I've also worked on a waveform generator). I also plan to improve the maximum number of points to 224M.

Please remember it's still a work in progress. I'll be more than happy to help if you find bugs, have difficulty with the instrument or have ideas for improvements/upgrades.

I hope you'll enjoy the tool, and please let me know what you think about it.
Alex

werefkin
Posts: 7
Joined: Tue Jan 26, 2021 4:16 pm

Re: High speed digitizer - Acquire up to 200M Samples at 125MHz

Post by werefkin » Thu May 20, 2021 7:48 am

Very nice! Thanks a lot for the work!

mikings
Posts: 1
Joined: Fri Nov 05, 2021 10:11 pm

Re: High speed digitizer - Acquire up to 200M Samples at 125MHz

Post by mikings » Fri Nov 05, 2021 10:30 pm

Nice project.

Aligned with this is how fast can one write to
1) network,
2) USB,
3) MMC?
Has anyone reported benchmarks for these channels which have "unlimited" memory? Of course what is at the receiving end is also important. For example, there are grades of Memory card. Also, one is assuming the standard Linux device drivers.

Ethernet can be slow if a full TCP/IP is used, better with UDP.

pavel
Posts: 786
Joined: Sat May 23, 2015 5:22 pm

Re: High speed digitizer - Acquire up to 200M Samples at 125MHz

Post by pavel » Wed Nov 10, 2021 1:12 am

mikings wrote:
Fri Nov 05, 2021 10:30 pm
Has anyone reported benchmarks for these channels which have "unlimited" memory?
I have a couple of applications that continuously transfer data from Red Pitaya to PC using TCP/IP over Ethernet at approximately 80 MB/s.

Marco23
Posts: 4
Joined: Mon Feb 14, 2022 4:10 pm

Re: High speed digitizer - Acquire up to 200M Samples at 125MHz

Post by Marco23 » Sat Feb 19, 2022 11:59 am

alex123go wrote:
Tue Aug 11, 2020 6:57 pm
Future:
As future work, I plan to add decimation, to add an internal trigger and to the merge the different tools into a single bitfile (I've also worked on a waveform generator). I also plan to improve the maximum number of points to 224M.

Please remember it's still a work in progress. I'll be more than happy to help if you find bugs, have difficulty with the instrument or have ideas for improvements/upgrades.

I hope you'll enjoy the tool, and please let me know what you think about it.
Alex

Hi everyone

I found this thread because I need to acquire and save waveforms and to do it as fast as possible

I have a couple of questin

- There exists the possibility to SET THE TRIGGER CONDITION not on the external pin but above a certain THREASHOLD on ch2? For me this would be vital

- How can I SET PARAMETERS like decimation, input attenuation and so on..? You mention for the future, maybe you have implemented it

- While data acquiring and trasfering seems very fast, i noticed it takes some times (~10 to 100 ms) to save: do you have a solution to CONTINUOUSLY ACQUIRE AND SAVE DATA?

I really hope someone can help me

Cheers

alex123go
Posts: 15
Joined: Mon May 04, 2020 4:46 pm

Re: High speed digitizer - Acquire up to 200M Samples at 125MHz

Post by alex123go » Mon Feb 21, 2022 3:23 pm

Hi Marco,

For the trigger condition, it's currently not possible to use an event on the channel 2. However, it would not be difficult to implement if you want to do some VHDL code.
Otherwise, you could use a Schmitt trigger and connect its output to the external trigger pin.

There is no proper decimation, it's only downsampling (i.e. one point every n points is keep, there is no filtering). The downsampling is already implemented, as you can see on line 22 of the noGuiVersion.py file.

There is not software attenuation, you need to do that before your signal is acquired by the ADC.

For the saving latency, you could search to see if there is a function faster than opening a file with 'wb' arguments dans writing bytes to this file. I've never been limited by this latency so I've looked into it.
You could also keep the data in the RAM by looping the acquisition (94 to 112 in noGuiVersion.py and writing the data on a different column of an array every time) and saving the data only at the end of all the acquisitions.

Good luck with your project.

Alex

werefkin
Posts: 7
Joined: Tue Jan 26, 2021 4:16 pm

Re: High speed digitizer - Acquire up to 200M Samples at 125MHz

Post by werefkin » Wed Jun 08, 2022 7:58 am

alex123go wrote:
Mon Feb 21, 2022 3:23 pm

For the trigger condition, it's currently not possible to use an event on the channel 2. However, it would not be difficult to implement if you want to do some VHDL code.
Otherwise, you could use a Schmitt trigger and connect its output to the external trigger pin.

Hello Alex,

Could you please explain it a bit more in detail? Perhaps it sounds not so difficult to do for you, but I am not sure that without knowledge one can program it. the triggered acquisition is something important; I have been searching for a solution for quite some time already (your digitizer is fast, but an on-trigger mode is really needed very often).

Regards,

Post Reply
jadalnie klasyczne ekskluzywne meble wypoczynkowe do salonu ekskluzywne meble tapicerowane ekskluzywne meble do sypialni ekskluzywne meble włoskie

Who is online

Users browsing this forum: No registered users and 4 guests