This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
resources:eval:user-guides:adrv9009-zu11eg:syncronization [04 Feb 2021 12:36] – [Theory of Operation] Michael Hennerich | resources:eval:user-guides:adrv9009-zu11eg:syncronization [21 Feb 2024 09:06] (current) – [Reference distribution] Michael Hennerich | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== ADRV9009-ZU11EG Multi-SOM Synchronization ====== | ====== ADRV9009-ZU11EG Multi-SOM Synchronization ====== | ||
- | .... | + | |
+ | ===== Clock tree synchronization considerations ===== | ||
+ | |||
+ | The HMC7044 used throughout the entire clock-tree in this design supports two alternative synchronizations modes and methods. Both modes may have their own benefits and tradeoffs, such as: | ||
+ | * Jitter | ||
+ | * Correlated Close in Phase Noise | ||
+ | * Timing Requirements | ||
+ | * Phase Synchronization reliability over PVT | ||
+ | * Unwanted Signal Coupling | ||
+ | * Thermal Drift | ||
+ | * Power Consumption | ||
+ | * etc. | ||
+ | |||
+ | We recommend planning for and evaluating both options. | ||
+ | |||
+ | We provide device-trees for both methods. | ||
+ | |||
+ | ==== Reference distribution ==== | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | A lower frequency reference is used between different levels in the clock tree (Inter-stage Frequency). All clock-chips in the hierarchy require its own local VCXO and this reference is used to lock the VCXO using PLL1 to the external reference. Any of the four available reference inputs '' | ||
+ | |||
+ | A additional '' | ||
+ | |||
+ | ^ Function ^ File ^ | ||
+ | | dts | [[linux.github> | ||
+ | | dts | [[linux.github> | ||
+ | | dts | [[linux.github> | ||
+ | | dts | [[linux.github> | ||
+ | |||
+ | <note warning> | ||
+ | Depending on the Linux/ | ||
+ | [[repo> | ||
+ | |||
+ | < | ||
+ | arch: arm64: adrv9009-zu11eg: | ||
+ | To match default AD-SYNCHRONA14-EBZ configuration: | ||
+ | |||
+ | CH8 - HMC7044 CLKOUT4 - CMOS | ||
+ | CH10 - HMC7044 CLKOUT5 - LVPECL AC-COUPLED | ||
+ | CH6 - HMC7044 CLKOUT6 - CMOS | ||
+ | CH9 - HMC7044 CLKOUT12 - LVPECL AC-COUPLED | ||
+ | </ | ||
+ | </ | ||
+ | ==== Clock distribution ==== | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | The maximum frequency used in the system is generated by the topmost HMC7044 and then distributed throughout the entire clock tree (Inter-stage Frequency). | ||
+ | This method bypasses the PLL1 and PLL2 of all clock chips below the TOP chip. All lower level clock-chips act as clock fanout buffers, where only the clock distribution network output dividers can be used. | ||
+ | This method is referred as **clock distribution**. All lower level clock-chips receive their input clock via '' | ||
+ | |||
+ | <note tip>This mode also allows for TRX baseband rates that would be otherwise not possible with the default installed VCXO of 122.880MHz. Let's say someone needs exactly 250.000MSPS. This becomes possible by providing a 500.000MHz or 1000.000MHz external clock.</ | ||
+ | |||
+ | Depending on your [[resources: | ||
+ | |||
+ | <note important> | ||
+ | * Replace C18, C19, C236, C240 with 0 Ohm resistors | ||
+ | * Replace C289, C290 with 0 Ohm resistors | ||
+ | * Unload 0 Ohm resistors from location R77, R112 and insert to R110, R111 | ||
+ | Rev C.1: | ||
+ | * Replace C289, C290 with 0 Ohm resistors | ||
+ | * Unload 0 Ohm resistors from location R77, R112 and insert to R110, R111 | ||
+ | </ | ||
+ | |||
+ | ^ Function ^ File ^ | ||
+ | | dts | [[linux.github> | ||
+ | | dts | [[linux.github> | ||
===== Hardware setup ===== | ===== Hardware setup ===== | ||
Line 29: | Line 97: | ||
-CLKOUT5_P and CLKOUT6_P connect to the SYNC SMAs on the carrier | -CLKOUT5_P and CLKOUT6_P connect to the SYNC SMAs on the carrier | ||
-CLKOUT0 and CLKOUT2 connect to the REFCLK SMAs on the carrier | -CLKOUT0 and CLKOUT2 connect to the REFCLK SMAs on the carrier | ||
+ | <WRAP important> | ||
+ | The other outputs are 180deg out of phase in CMOS mode and should be used as differential REFCLOCK.</ | ||
{{ : | {{ : | ||
===== Software ===== | ===== Software ===== | ||
- | * 11/ | + | * [[:resources:tools-software:linux-software:kuiper-linux |Analog Devices Kuiper Linux]] |
- | * {{ :resources:eval:user-guides:adrv9009-zu11eg: | + | |
<note tip>The board which connects the external HMC7044 clockchip is refered as **primary** and requires the devicetree (system.dtb) from the primary folder in the archive. Likewise the board without the external clockchip connected is called **secondary**, | <note tip>The board which connects the external HMC7044 clockchip is refered as **primary** and requires the devicetree (system.dtb) from the primary folder in the archive. Likewise the board without the external clockchip connected is called **secondary**, | ||
Line 43: | Line 112: | ||
There are two domains of synchronization that are considered in this configuration, | There are two domains of synchronization that are considered in this configuration, | ||
- | {{ : | + | The System Clocking Tree Diagram is located here: |
+ | {{ : | ||
During multi-chip synchronization (MCS), which is a feature of the ADRV9009s, all baseband data from the converters is synchronized across transceiver chips. This requires specific sysrefs to be captured at each of the transceiver simultaneously. This will also create deterministic phase differences between transceivers, | During multi-chip synchronization (MCS), which is a feature of the ADRV9009s, all baseband data from the converters is synchronized across transceiver chips. This requires specific sysrefs to be captured at each of the transceiver simultaneously. This will also create deterministic phase differences between transceivers, | ||
Line 64: | Line 134: | ||
</ | </ | ||
+ | |||
+ | === Synchronization at the application layer === | ||
+ | |||
+ | Synchronization at the application layer across multiple FPGAs is achieved using the external synchronization feature of the transport layer cores and using the SYSREF signal as the external synchronization signal. | ||
+ | * [[: | ||
+ | * [[: | ||
+ | |||
+ | Once the JESD links are up the SYSREF pulses are no longer required from the JESD link perspective. However later assertions of the SYSREF pulses must respect the timing of the initial pulses in terms of phase and frequency to match the LMCF/LEMC of the link layer. These later SYSREF pulses can be used as references for simultaneous data capture/ | ||
+ | The synchronization mechanism must be orchestrated by software, software must disable the SYSREF generation to FPGAs before arming the external synchronization mechanisms from all the transport layer cores from all FPGAs, it must program all DMA cores to prepare moving data to or from system memory depending on direction, then software must program the clock chips for a single SYSREF pulse that will reach the transport layer cores simultaneously. | ||
+ | |||
+ | |||
+ | |||