ADF4382
The ADF4382 is a high performance, ultralow jitter, dual output integer-N and fractional-N phase-locked loop (PLL) with an integrated voltage controlled oscillator (VCO). The ADF4382 operates with a VCO frequency range of 11 GHz to 22 GHz and supports output frequencies from 687.5 MHz to 22 GHz through configurable output dividers.
The ADF4382A has a different VCO range, 11.5 GHz to 21 GHz, and supports output dividers of 1, 2 and 4. Its output bands are 11.5–21 GHz, 5.75–10.5 GHz and 2.875–5.25 GHz, respectively. The gaps between these bands are not supported; the ADF4382’s continuous output range does not apply to the ADF4382A.
The ADF4382 is commonly used as the sampling clock source for high-speed data converters such as the AD9084/AD9088 MxFE devices, providing the precision timing required for multi-chip synchronization.
Supported Devices
Description
The ADF4382 driver provides:
ADF4382 frequency synthesis from 687.5 MHz to 22 GHz, using output dividers of 1, 2, 4, 8 or 16.
ADF4382A frequency synthesis within the three output bands above, using output dividers of 1, 2 or 4. A requested frequency must map to a VCO frequency within the matched device’s limits; reference-clock and PLL configuration constraints also apply.
Dual differential outputs with independent enable control
Integrated clock provider for downstream consumers
Phase adjustment for multi-chip synchronization
Auto-alignment support for precision timing applications
Temperature monitoring
Theory of operation
Frequency synthesis
The ADF4382 uses a fractional-N PLL architecture:
Reference clock is optionally doubled and divided by R
Phase-frequency detector compares reference to feedback
VCO range: 11–22 GHz for ADF4382; 11.5–21 GHz for ADF4382A.
Output dividers provide final output frequency
The output frequency is calculated as:
fVCO = fREF × D × N / R
The output frequency, fRFOUT, produced at the output of the output divider is given by the following:
An example for the calculation procedure is described at “Output Frequency Calculation Procedure” in the datasheet.
Multi-chip synchronization
When used with AD9084/AD9088 MxFE devices and the ADF4030 precision synchronizer, the ADF4382 supports auto-alignment mode:
Enable auto-alignment via
en_auto_alignattributeWrite phase offset via
phaseattributeThe PLL adjusts its phase to align with the BSYNC signal from ADF4030
This enables ±10ps multi-chip synchronization across multiple converters.
Source Code
Status
Source |
Mainlined? |
|---|---|
No |
Files
Function |
File |
|---|---|
driver |
Adding Linux driver support
Kernel configuration
Configure kernel with make menuconfig:
Note
The ADF4382 driver depends on CONFIG_SPI and CONFIG_IIO
Linux Kernel Configuration
Device Drivers --->
Industrial I/O support --->
Frequency Synthesizers DDS/PLL --->
<*> Analog Devices ADF4382 Wideband Synthesizer
Devicetree configuration
Basic configuration as clock source for AD9084:
adf4382: adf4382@0 {
#clock-cells = <1>;
compatible = "adi,adf4382";
reg = <0>;
spi-max-frequency = <1000000>;
adi,spi-3wire-enable;
clocks = <&clkin_125>;
clock-names = "ref_clk";
clock-output-names = "adf4382_out_clk";
adi,power-up-frequency = /bits/ 64 <20000000000>;
label = "adf4382";
#io-channel-cells = <1>;
};
Consumer example (AD9084 using ADF4382 as clock source):
ad9084: ad9084@0 {
compatible = "adi,ad9084";
reg = <0>;
/* Use ADF4382 as device clock */
clocks = <&adf4382 0>;
clock-names = "dev_clk";
/* IIO channel for phase/frequency control */
io-channels = <&adf4030 5>, <&adf4382 0>;
io-channel-names = "bsync", "clk";
};
Required properties
compatible: Must be"adi,adf4382"or"adi,adf4382a"reg: SPI chip select numberclocks: Reference to the reference clock inputclock-names: Must be"ref_clk"
Optional properties
adi,power-up-frequency: Initial output frequency in Hz (64-bit)adi,ref-divider: Reference divider valueadi,charge-pump-microamp: Charge pump current in microampsadi,bleed-word: Bleed current configuration wordadi,output-power-value: Output power level settingadi,spi-3wire-enable: Enable 3-wire SPI modeadi,ref-doubler-en: Enable reference frequency doubleradi,cmos-3v3: Use 3.3V CMOS output levels#clock-cells: Set to<1>to act as clock providerclock-output-names: Name for the output clock#io-channel-cells: Set to<1>to act as IIO provider
Driver testing
This device can be found under /sys/bus/iio/devices/.
Use iio_info to check if the device and driver are present:
~$
iio_info
iio:device0: adf4382
3 channels found:
altvoltage0: (output)
altvoltage1: (output)
temp0: (input)
Navigate to the device folder:
~$
cd $(grep -rw /sys/bus/iio/devices/*/name -e "adf4382" -l | xargs dirname)
IIO channel attributes
Output channels (altvoltage0, altvoltage1)
- out_altvoltageX_en (read/write)
Enable/disable the output channel.
- out_altvoltageX_hardwaregain (read/write)
Output power level setting.
- out_altvoltage_phase (read/write)
Signed phase adjustment in femtoseconds (shared by both output channels). Read back the quantized result.
- out_altvoltage_frequency (read/write)
Output frequency in Hz (shared by all channels).
~$
cat out_altvoltage_frequency
20000000000
~$
echo 19500000000 > out_altvoltage_frequency
- out_altvoltage_en_auto_align (read/write)
Enable/disable auto-alignment mode. Used for multi-chip synchronization with ADF4030 and AD9084/AD9088.
- out_altvoltage_bleed_pol (read/write)
Bleed current polarity.
- out_altvoltage_coarse_current (read/write)
Coarse charge pump current setting.
- out_altvoltage_fine_current (read/write)
Fine charge pump current setting.
Temperature channel (temp0)
- in_temp0_input (read-only)
Die temperature in millidegrees Celsius.
$ cat in_temp0_input
45000
Clock provider interface
The ADF4382 registers as a clock provider, allowing downstream devices to reference it directly via devicetree:
/* In AD9084 devicetree node */
clocks = <&adf4382 0>;