Keywords: ASIC, FPGA, field programmable gate array, high-speed, digital to analog converter, DAC, high bandwidth, thermal variations, PVT, data clock module, DCM, double data rate, DDR, update rate, setup and hold, delay adjustment, phase offset
Interfacing the MAX5881 Direct RF Synthesis DAC to FPGAs
By: Brian Dellacroce
Abstract: This application note discusses techniques for interfacing the MAX5881, a 4.3Gsps cable downstream direct RF synthesis DAC, to field-programmable gate arrays (FPGAs). The focus is on the timing of the MAX5881's high-speed, digital-input data interface to a Xilinx® Virtex™-5 FPGA. However, the techniques outlined here are also applicable to a wide variety of FPGAs and custom ASICs.
Introduction
Due to the wide bandwidth of the MAX5881 4.3Gsps cable downstream direct RF synthesis DAC, its data interface requires operation at higher frequencies than lower bandwidth DACs. Designing higher bandwidth data interfaces generally requires more attention to ensure robust, error-free operation.
Interface Architecture
Due to the many possible combinations of FPGA features, several interface architectures are possible. One such architecture is shown in Figure 1. This architecture results in a wide operating frequency range and a high tolerance to process, voltage, and thermal (PVT) variations. This application note focuses on the features of this particular architecture. The advantages of this configuration over some other possible configurations are highlighted, along with a detailed timing analysis of the data interface.
Figure 1. MAX5881 to Xilinx Virtex-5 FPGA interface (CLKDIV = 0, DDR data interface configuration).
Clocking
The MAX5881 has separate analog and digital clocks. The clock for the digital data interface is output by the MAX5881. Because the source of the data, the FPGA, is not the source of the data clock, a "system synchronous" style of data interface¹ is used. It should be noted that the MAX5881's data clock outputs, DATACLKP/DATACLKN, have very low jitter, as this jitter is derived directly from a normally high-quality analog clock at the CLKP/CLKN inputs.
Using an FPGA DCM² with external clock feedback automatically compensates for the FPGA's inherent output data timing shifts with PVT. The external-clock-feedback path is designed to closely match the delay of the FPGA's internal data path and the MAX5881's DATACLKP/DATACLKN outputs. This ensures that the timing compensation provided by the digital clock manager (DCM) matches the PVT drift of the FPGA's clock and data paths. The length of the clock-feedback signal's PCB traces are designed to be equal to the length of the data traces plus the length of the DATACLK traces; this makes the FPGA's data outputs change coincident with the DATACLK edges. Adding additional delay to the clock-feedback path advances the data in relation to DATACLK. This delay is designed or adjusted to ensure that the data is stable within the MAX5881's data setup to hold time window. This additional delay can be provided by either increasing the clock-feedback signal's trace length or by adding an FPGA ODELAY component to the feedback path.
Data Rate
The MAX5881's CLKDIV pin is set low and the FPGA is configured to output double data rate (DDR) formatted data. In this case, the DATACLKP/DATACLKN signal's frequency is one-fourth that of the MAX5881's input clock on the pin pair, CLKP/CLKN. For the MAX5881's update rate, the CLKP/CLKN frequency is 2.0GHz. This results in a DATACLKP/DATACLKN frequency of 500MHz. This 500MHz clock signal drives the FPGA's serializer (OSERDES) components, which are configured to output data on both the rising and the falling edges of clock. Thus the data period of the FPGA's output data is 1ns (or 1.0GHz). The CLKDIV = 0 configuration avoids creating a frequency-doubled clock to drive the serializers, as Xilinx does not allow a DCM (or PLL, for that matter) to be configured for external clock feedback and a multiplied output clock. The OSERDES components at the FPGA final data-output stage reduce the frequency of the clock on the upstream, or data-input, side of the OSERDES. This reduces the FPGA's placement-and-routing effort to a more practical level. For the MAX5881's update rate, the frequency of this upstream clock is 250MHz.
Interface Timing
A timing analysis of this data interface is provided in spreadsheet format in Table 1. The analysis is presented in two major sections. In the first section, the interface is analyzed for the operating frequency and is named "Data Period Analysis." This section does not consider the exact position of stable data within the data period. However, it serves to establish that it is (or is not) possible to tune the clock-feedback delay to ensure that data is stable within the window bounded by the MAX5881's data setup and data hold times. One operating frequency is analyzed in the spreadsheet, then the analysis is repeated (though not shown) for several other operating frequencies; the results are presented graphically in Figure 2. Also, a timing reference waveform is provided in Figure 3.
Table 1. Data Period Analysis of the Virtex-5 to MAX5881 Interface
Time in clock period when data does not have to be valid and stable
128
ps
tPSL = tDW - dtTOTAL
Period timing slack
Extra time between FPGA changing data; data must be stable at DAC
Figure 2. Period margin.
Figure 3. Timing reference waveform.
The second section of the timing analysis calculates the required clock-feedback delay (Table 2). It also calculates the setup and hold time margins, otherwise known as timing slack, with the calculated-feedback delay.
Table 2. Data Timing Analysis (MAX5881 DELAY Pin = 0)
Value
Unit
Specification
Description
Source
Notes
0
ps
tDOUTNOM
FPGA clock-to-data output delay
FPGA external clock-feedback configuration
Feedback-path length equal to data-path length plus clock-path length; this centers data transitions at the clock edge
-170
ps
tSUNOM = tDATAPERIOD - tSETUP - tDOUTNOM
Nominal setup margin (without dtTOTAL factor)
Calculate margin without jitter, skew, and phase-error effects first; they are accounted for later
760
ps
tHLDNOM = tDOUTNOM - tHOLD
Nominal hold margin
Calculate margin without jitter, skew, and phase-error effects first; they are accounted for later
-401
ps
tSUABS = tSUNOM - dtTOTAL/2
Absolute setup margin (including dtTOTAL factor)
Include jitter, skew, and phase-error effects
529
ps
tHLDABS = tHLDNOM - dtTOTAL/2
Absolute hold margin (including dtTOTAL factor)
Include jitter, skew, and phase-error effects
-529
ps
tDADVANCE = -tHLDABS
Delay-adjusted FPGA clock-to-data output
External clock feedback with feedback-path length equal to data-path length plus clock-path length plus tHLDABS
Place data transition immediately after tHOLD
128
ps
tSUFINAL = tSUABS - tDADVANCE
Delay-adjusted setup margin
0
ps
tHLDFINAL = tHLDABS + tDADVANCE
Delay-adjusted hold margin
Similarly, this section of the analysis is also repeated for various operating frequencies. Due to the volume of data generated, the spreadsheet format data is not shown. Instead, the results are shown in the Figure 4 setup margin and Figure 5 hold margin graphs.
Figure 4. Setup margin.
Figure 5. Hold margin.
It should be noted that, in Figures 4 and 5, the clock-feedback delay was calculated for operation across a wide range of operating frequencies (varying fDAC). This was accomplished by placing the leading edge of the data-invalid window where the data starts changing to the next value, which is immediately after the MAX5881's hold time. In other words, the FPGA starts the transition to the next data value as soon as the hold-time specification is met.
For operation at a single specific frequency, the setup and hold time margins can be balanced by increasing the hold-time margin and decreasing the setup time margin. Again, this is accomplished by varying the delay inserted into the clock-feedback path. At low frequencies, the setup and hold time margins are generous, and margin balancing becomes moot.
Figure 6. Margin balancing.
Alternative Approaches
Due to the flexible nature of FPGA devices, a multitude of alternative designs can be conceived. It is beyond the scope of this application note to delve into the details of these approaches, so only brief descriptions of a few of them are presented here:
Use the DCM phase offset to place an output data transition instead of increasing the length of the DCM clock-feedback path to add additional delay. This has advantages from a software or firmware delay-adjustment point of view, but it also introduces more timing uncertainty due to the FPGA phase-offset circuitry.
Use the ODELAY element in the feedback path of the DCM. Again, this is advantageous due to flexibility of firmware delay adjustments, but also introduces more timing uncertainty.
Use alternate method #1 or #2 combined with a device-by-device calibration. The MAX5881 characterization data shows a per-part, data-sampling window variation of 151ps vs. 340ps for all parts over temperature. A smaller per-part timing variation may compensate for the additional FPGA timing uncertainty. With this method, some of the part-to-part FPGA timing variation may also be reduced.
Conclusion
Through careful system architecture selection, PCB design, and utilization of specific design features, FPGAs can be successfully interfaced to the MAX5881 with positive data timing margins.
Virtex is a trademark of Xilinx, Inc.
Xilinx is a registered trademark of Xilinx, Inc.
Automatic Updates
Would you like to be automatically notified when new application notes are published in your areas of interest? Sign up for EE-Mail™.