X2740 Digitizer
Waveform readout block for X2740/X2745 boards. Uses the high-speed DMA engine and DDR4 memory to capture and transfer waveforms from all 64 channels to the PC. All channels acquired synchronously on trigger.
Introduction
The X2740 Digitizer block implements waveform readout using the high-speed DMA engine and the large DDR4 memory buffer inside the X2740/X2745 boards. This block takes 16-bit waveform signals and, upon trigger, acquires and transfers them to the PC.
All acquisition parameters are configured by software using CAEN FELib or the SciCompiler-generated SDK. The acquisition is initialized by a LOW → HIGH transition of the TRIGGER input (except when software trigger is selected).
Important: The acquisition of all 64 channels is always synchronous - when the trigger fires, all channels are captured at the same instant.
At a glance:
| Channels | 64 |
| Input format | plain 16-bit vector per channel, not time-multiplexed |
| Bits per clock per channel | 16 |
| Symbol pins | AN0-AN63, CE, TRIGGER |
| Properties | none |
Pin Description
Channel Enable for per-sample decimation.
- HIGH: Current sample is captured
- LOW: Current sample is discarded
- Unconnected: All samples captured (forced to ‘1’)
Useful for reducing data rate or conditional sampling.
Acquisition trigger input. A LOW → HIGH transition starts the waveform readout process.
Important: The acquisition of all 64 channels is always synchronous. When trigger fires, all channels are captured at the same instant.
If software trigger is enabled via CAEN FELib, this pin can be left unconnected.
Waveform input channels (64 total). Each channel is a standard 16-bit input (not time-multiplexed).
Connect to ADC outputs or processing chain outputs. Unconnected channels are automatically forced to 0.
Properties
Usage
What the Digitizer Does
The Digitizer is NOT the ADC itself - it is the readout block that:
- Receives 16-bit waveform data from the 64 analog input channels
- Captures all 64 channels simultaneously when triggered
- Stores the waveforms in the DDR4 memory buffer
- Transfers the data to the PC via high-speed DMA
┌─────────────────────────────────────────────────────────────────┐
│ Digitizer Flow │
│ │
│ 16-bit Signals ─►┌──────────────┐ ┌─────────┐ ┌─────┐│
│ (64 ch) │ │ │ │ │ ││
│ ═════════════════│ DIGITIZER │════►│ DDR4 │════►│ DMA │╋══► PC
│ │ │ │ Buffer │ │ ││
│ TRIGGER ────────►│ │ │ │ │ ││
│ └──────────────┘ └─────────┘ └─────┘│
│ ▲ │
│ │ │
│ L→H starts acquisition │
└─────────────────────────────────────────────────────────────────┘
Synchronous Acquisition
All 64 channels are acquired synchronously. When the TRIGGER signal transitions from LOW to HIGH:
- All channel inputs are sampled at the same clock edge
- The acquisition continues for the configured record length
- Data is buffered in DDR4 for transfer to PC
This ensures perfect time alignment between channels for multi-channel analysis.
Input Format
Every ANx pin is a plain 16-bit std_logic_vector: one sample per clock cycle, per channel. The waveform inputs are not time-multiplexed, so a processing chain can be wired straight into them with no TM factor to match and no per-lane unpacking.
Typical Usage
Connect the Digitizer to receive waveforms from the analog inputs or processing chain outputs:
┌──────────────┐ ┌──────────────┐
│ Board │ │ X2740 │
│ Analog │ (or processing) │ Digitizer │
│ Inputs │ │ │
├──────────────┤ ├──────────────┤
│ ADC_CH0 ─────┼────────────────────────►│ AN0 │
│ ADC_CH1 ─────┼────────────────────────►│ AN1 │
│ ... │ │ ... │
│ ADC_CH63 ────┼────────────────────────►│ AN63 │
│ │ │ │
│ │ Trigger logic ──────►│ TRIGGER │
└──────────────┘ └──────────────┘
Channel Enable (CE) Pin
The optional CE (Channel Enable) pin allows per-sample data decimation:
| CE State | Behavior |
|---|---|
| HIGH | Sample is captured and stored |
| LOW | Sample is discarded |
| Unconnected | All samples captured (CE forced to ‘1’) |
Use cases for CE:
- Reduce data rate by decimating samples
- Conditional sampling based on external logic
- Synchronize with external timing signals
Software Integration
Acquisition parameters are configured via CAEN FELib or the auto-generated SDK:
c
// Example: Configure and start acquisition
CAEN_FELib_Open("x2740://...", &handle);
// Set record length, pre-trigger, etc.
CAEN_FELib_SetValue(handle, "/ch/0/par/RecordLength", "1024");
CAEN_FELib_SetValue(handle, "/ch/0/par/PreTrigger", "100");
// Start acquisition
CAEN_FELib_SendCommand(handle, "/cmd/ArmAcquisition");
CAEN_FELib_SendCommand(handle, "/cmd/SwStartAcquisition");
// Read waveforms
while (running) {
CAEN_FELib_ReadData(handle, timeout, &data, &size);
// Process waveforms...
}
Best Practices
- All channels synchronous: Trigger affects all 64 channels simultaneously
- Unconnected channels: Channels without connections are forced to 0
- Trigger timing: Ensure trigger arrives when signals are stable
- CE usage: Use CE for decimation only when needed
- Buffer management: Monitor DDR4 buffer to avoid overflow
Resources & Timing
-
Latency: 1 clock cycle for trigger detection
-
Throughput: 64 channels × 16 bits per clock = 1024 bits/clock
- 64 channels with standard 16-bit inputs
- Data is buffered in DDR4 before DMA transfer to PC
- All channels acquired synchronously on trigger edge
Supported Boards
- X2740
- X2745