DC-coupling and a pulse SYSREF clock are required.
- Program the clock generator device to use pulse SYSREF mode; place in idle state (no pulses being generated).
- Wait for analog clock to be stabilized.
- Enable the analog SYSREF receiver for all devices involved (there should be
no pulse detected at this
point).
// Execute XRFdc_MTS_Sysref_Config on all devices (for loop is pseudo code). for (Device_Id = 0; Device_Id < NumberOfDevices; Device_Id++ ) { SysRefEnable = 1; status_dac|=XRFdc_MTS_Sysref_Config(&InstancePtr, &DACSyncConfigPtr, &ADCSyncConfigPtr, SysRefEnable); }
- Execute commands to arm mixer settings, NCO phase reset, QMC, and/or coarse
delay on all devices (for loop is pseudo
code).
for (Device_Id = 0; Device_Id < NumberOfDevices; Device_Id++ ) { status_dac |=XRFdc_SetMixerSettings(&RFdcInst, Type, Tile_Id, Block_Id, &Mixer_Settings); status_dac |= XRFdc_ResetNCOPhase(&RFdcInst,Type, Tile_Id,Block_Id); //note that Coarse mixer and QMC could also be part of this for loop. }
- Wait for successful return of API calls to make sure all register writes have
been
completed.
if (status_dac!=XST_SUCCESS) // Execute error code;
- Issue two synchronized pulses from the analog SYSREF to all devices involved. Two pulses are only required after the SYSREF receiver is first enabled. If the receiver is left enabled between updates then only one pulse is required.
- Wait long enough to ensure a rising edge has been detected; at this point the update starts.
- Disable the analog SYSREF receiver with the API
command.
for (Device_Id = 0; Device_Id < NumberOfDevices; Device_Id++ ) { SysRefEnable = 0; status_dac|=XRFdc_MTS_Sysref_Config(&InstancePtr, &DACSyncConfigPtr, &ADCSyncConfigPtr, SysRefEnable); }
Figure 1. Dynamic Update Event Trigger Using SYSREF for Multiple Devices
with DC-Coupling