Clocking waveform digitizers using the k-clock output of a swept-source laser brings many challenges. This is mainly due to the fact that analog-to-digital converters used on these waveform digitizers require their clock frequency to remain within a certain frequency band, whereas k-clock frequency sweeps over very long range in a very short period of time.
Another source of problems is that k-clock frequency during the return path can be much higher than what the waveform digitizer can handle. These very high speed clocks can cause timing problems in the FPGA fabric of the waveform digitizers.
DRAWBACK OF TRADITIONAL METHODS
Many laser manufacturers use a Dummy Clock to alleviate this problem. This solution can work, but it can also create its own set of problems. For example, if the Dummy Clock is too slow, it will not be able to provide the necessary number of clock edges for the waveform digitizer to re-arm in between triggers, causing it to miss triggers.
Dummy Clocks can also create clock glitches if their switching is not well controlled.
THE ALAZARTECH ADVANTAGE
AlazarTech has developed the new OCT Ignore Bad Clock technology that can effectively ignore the k-clock signal for a user-specified amount of time. This eliminates clocking problems mentioned above.
Users must call an API function that takes Good Clock Duration and Bad Clock Duration as input parameters. User must determine the correct values for these parameters. Some laser manufacturers may be able to provide these parameters.
A software utility called IgnoreBadClock has been created that lets the user confirm their Duration values using an oscilloscope.
GOOD CLOCK DURATION This is the amount of time after trigger for which the swept source supplies good k-clocks. The objective is to use the k-clock for analog-to-digital conversion during this time in order to collect data that is linear in k-space.
BAD CLOCK DURATION This is the amount of time for which the swept source outputs k-clock signal that may be out of specification, e.g. frequency too low or too high or clock has insufficient amplitude or is too glitchy etc. The objective is to not let this out-of-specification clock affect the integrity of data collected during Good Clock Duration.
MEASURING GOOD AN BAD CLOCK DURATIONS There are multiple ways of figuring out what values to use for Good Clock Duration and Bad Clock Duration when programming the waveform digitizer.
The most accurate way to measure the Durations is by using a 4-channel oscilloscope with enough bandwidth for the k-clock signal. User should run the OCT_IgnoreBadClock software utility.
This utility outputs an IgnoreClock signal from the AUX I/O connector of the waveform digitizer that can be displayed on another channel of the same oscilloscope. This signal will be HIGH for the period during which the waveform digitizer will ignore k-clock.
User is allowed to change the Good Clock Duration and Bad Clock Duration parameters in the software utility and visually confirm if the IgnoreClock signal covers the entire Bad Clock Duration of the k-clock signal.
Yet another way to come up with values for these parameters is to use AlazarDSO software to capture the k-clock signal using the waveform digitizer in internal clock mode. You can then use the shape of the captured signal to estimate the Durations.
The easiest is if the swept-source manufacturer supplies you these values, or at least a graph showing the shape of the k-clock signal and the A-scan trigger. Most of the time, you can estimate the Durations from this graph.
FIRMWARE AND DRIVER VERSIONS The following firmware and driver versions are required to take advantage of OCT Ignore Bad Clock:
For existing customers, these firmware and driver versions are available for download from AlazarTech’s website free of charge. If customers have already purchased a license of ATS-SDK, they can download the new version at no charge.
API SUPPORT FOR OCT IGNORE BAD CLOCK AlazarTech’s software libraries support OCT Ignore Bad Clock functionality with a function called AlazarOCTIgnoreBad-Clock().
Programmers must call this function before calling AlazarStartCapture() function to start.