diff --git a/README.md b/README.md index 3f27d08cf7f82dba26b2fdca3bbfb6a57626327a..c2ffcf636410a2ef1a872e016a746df7bdd4adb4 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ applications running on the board. Many laboratory instruments like oscilloscopes, logic analyzers, Bode plotters or a multi-channel pulse-height analyzer can be realized on this board by simply changing the FPGA image and the Linux application. - +{width=800px} The MCPHA application for the RedPitaya by Pavel Demin provides a multi-channel pulse-height analyzer and consists of an FPGA image and a server process running on the RedPitaya board. A client script controls @@ -24,16 +24,20 @@ the server and pulls the data to the client computer. ### Files: - - *README.md* this documentation - - *mchpa.py* the client program - - *mcpha.ui* qt5 graphical user interface for *mcpha* application - - *mcpha_gen.ui* qt5 tab for generator - - *mcpha_osc.ui* qt5 tab for oscilloscope - - *mcpha_hst.ui* qt5 tab for histogram display - - *mcpha_log.ui* qt5 tab for message display - - *rePosci.py* a simple oscilloscope and daq client using the mcpha server - - *rpControl.ui* qt5 tab for *redPosci* application - - *mcpha_daq.ui* qt5 tab for oscilloscope with daq mode + - *README.md* this documentation + - *mchpa.py* client program + - *rePosci.py* a simple oscilloscope and daq client using the mcpha server + - *rpControl.ui* qt5 tab for *redPosci* application + - *mcpha_daq.ui* qt5 tab for oscilloscope with daq mode + - *redP_mimocorb.py* runs *redPoscdaq* as a client of the buffer manager *mimoCoRB* + - *setup.yaml* coniguration script defining the *mimoCoRB* application + - *run_daq.py* script to strat the *mimoCoRB* application + - *modules/* and *config/* contain code and configuration files for the *redP_mimoCoRB* application + - *mcpha.ui* qt5 graphical user interface for *mcpha* application + - *mcpha_gen.ui* qt5 tab for generator + - *mcpha_osc.ui* qt5 tab for oscilloscope + - *mcpha_hst.ui* qt5 tab for histogram display + - *mcpha_log.ui* qt5 tab for message display - RP-image directory with all files necessary to boot a RedPitaya and start the server application based on the "small, simple and secure" linux distribution [alpine-3.18-armv7-20240204](https://github.com/pavel-demin/red-pitaya-notes/releases/tag/20240204) @@ -72,20 +76,20 @@ the performance. An oscilloscope with very basic functionality to set the trigger level and direction is also provided. The timing is controlled by the so-called decimation factor that can be adjusted using the control in the upper right corner of the graphical window. The RedPitaya samples data at a constant rate -of 125 MHz, and the decimation factor determines how many samples are averaged over and stored +of 125 MHz, and the decimation factor determines how many samples are averaged over and stored in the internal ring buffer. This reduces the effective sampling rate accordingly. Only decimation -factors corresponding to powers of two are allowed. An example of randomly occurring exponential -signal pulses at an average rate of 10 kHz with a fall time of 10 µs is shown below; there is significant +factors corresponding to powers of two are allowed. An example of randomly occurring exponential +signal pulses at an average rate of 10 kHz with a fall time of 10 µs is shown below; there is significant signal overlap in this case, making pulse-height detection more complex. - +{width=800px} A spectrum of such pulses is shown below for input pulses at multiples of 62.5 mV between 62.5 mV and 500 mV. The overlap of signal pulses leads to wrong pulse-height assignments below the actual voltage and to entries above 500 mV when pulses become indistinguishable and therefore add up to a single detected pulse. - +{width=800px} Note that spectra and waveforms are plotted with a very large number of channels, well exceeding the resolution of a computer display. It is therefore possible to use the looking-glass button @@ -95,13 +99,24 @@ of the *matplotlib*window to mark regions to zoom in for a detailed inspection o The script *redPosci.py* relies on the same server and FPGA image as the pulse-height analyzer. The *oscilloscope* and *generator* tabs provide the same functionality as in *mcpha.py*. -In addition, however, there is a button "*Start DAQ*" to run the data acquisition for the the -oscilloscope independently of the Qt timing loop, i. e. in continuous mode. As soon as data is -received by the client, the oscilloscope is restarted. A dummy routine -*processData()* ist provided as an illustration; right now, it shows a graphical display once -per second and calculates and displays the trigger and data rates. +In addition, however, there is a button "*Start DAQ*" to run the oscilloscope in data acquisition +mode, i.e. continuously. A subset of the data is shown in the oscilloscope display,together with +information on the trigger rate and the transferred data volume. A configurable user-defined function +may also be called to analyse and store the recorded waveforms. +It is possible to transfer data over a one-Gbit network from the RedPitaya with a rate of 50 MB/s +or about 500 waveforms/s. + +Two examples of call-back functions callable by redPoscdaq are provided with the package + + - redP_consumer() + calculates and displays statistics on trigger rate and data volume + + - redP_mimocorb() + provides an interface to the buffer manager *mimiCoRB* for more advanced data analysis tasks + requiring multiple processes running in parallel. A simple *mimoCoRB* setup is also provided + and can be started by *./run_daq setup.yaml*; modules and configuration files for a pulse-height + analysis of signals are contained in the subdirectories *modules/* and *config/*, respectively. -It is possible to transfer data over a 1Gbit network with a rate of 50 MB/s or about 500 waveforms/s. ## Installation