Feature #13706

Support for Alexei's 80MHz Circular Buffer firmware

Added by John Diamond over 4 years ago. Updated over 4 years ago.

Start date:
Due date:
% Done:


Estimated time:
24.00 h
Spent time:


Make modifications to CMTFInterlocksADC to support Alexei's circular buffer firmware.


#1 Updated by John Diamond over 4 years ago

  • % Done changed from 0 to 70

Removed support for the "Number of Triggers" register - this register was deprecated in the new firmware.

Removed support for the "Samples Count" register - this register was also deprecated in the new firmware. The new firmware does not tell you how many samples it digitized during the last trigger - it is safe to assume that it is the same number of samples that you requested.

The previous firmware supported a half-dozen operating modes. The new firmware only supports two -
  • PULSE - pulse mode digitizes n number of samples and then stops until the user re-arms by calling run()
  • CYCLE - cycle mode continuously digitizes n samples. While running a single point for each channel is available and is updated at 720Hz. When a fault signal is present (either externally or via a register) n number of samples are available for read-out.

Updated Z:CIAMOD to enumerate the new operating modes.

Created the following devices for plotting the circular buffer data with FTP:
  • Z:CIACH0 (digitizer 0, channel 0)
  • Z:CIACH1 (digitizer 0, channel 1)
  • Z:CIBCH0 (digitizer 1, channel 0)
  • Z:CIBCH1 (digitizer 1, channel 1)
    Note: while in pulse mode these devices will return an error

Added a command to Z:CIACTL that can be used to freeze (fault) the circular buffer.

Updated Doxygen pages.

Right now the firmware interrupts you every time n samples are digitized while in Cycle mode. Alexei is working on making this interrupt occur in a different vector than the interrupt which occurs after digitizing in Pulse mode.

There is support in the new firmware for reducing the sampling rate from 80MHz. I will be implementing ACNET support for this next...

#2 Updated by John Diamond over 4 years ago

  • % Done changed from 70 to 80

Implemented support for controlling the sample rate register. Set CMTFInterlocksADC::sampleRateGet() and ..Set(..) (updated Doxygen as well). Implemented ACNET support for setting the sample rate and created an ACNET device for the test stand - Z:CIASRT.

#3 Updated by John Diamond over 4 years ago

Created some additional devices for the test crate:
  • Z:CIARW2
  • Z:CIARW3
  • Z:CIARW4
  • Z:CIARW5
  • Z:CIARW6
  • Z:CIARW7
  • Z:CIARW8
  • Z:CIACH0
  • Z:CIACH1
  • Z:CIACH2
  • Z:CIACH3
  • Z:CIACH4
  • Z:CIACH5
  • Z:CIACH6
  • Z:CIACH7

#4 Updated by John Diamond over 4 years ago

  • % Done changed from 80 to 90

Traced a problem with the external trigger to the fact that the "DSP External Sync Enabled" register is set to "Disabled" (0) by default. Added code that enables this whenever the user selects "External" for the sync source mode.

#5 Updated by John Diamond over 4 years ago

Fixed a bug that was causing the data on channels 1-7 to read incorrect values when the circular buffer is frozen.

#6 Updated by John Diamond over 4 years ago

  • Status changed from Assigned to Closed
  • % Done changed from 90 to 100

Added support for returning waveform data through the FTP devices. It is no longer necessary to plot FTP with one device and raw data through another device.

Also available in: Atom PDF