Wiki

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
resources:eval:user-guides:adrv9009-zu11eg:syncronization [15 Jun 2021 14:22] – [ADRV9009-ZU11EG Multi-SOM Synchronization] Michael Hennerichresources:eval:user-guides:adrv9009-zu11eg:syncronization [21 Feb 2024 09:06] (current) – [Reference distribution] Michael Hennerich
Line 3: Line 3:
 ===== Clock tree synchronization considerations ===== ===== 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 JitterCorrelated Close in Phase NoiseTiming RequirementsPhase Synchronization reliability over PVT, unwanted Signal CouplingThermal DriftPower Consumptionetc.\\+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 recommend planning for and evaluating both options.  
  
Line 9: Line 18:
  
 ==== Reference distribution ==== ==== Reference distribution ====
 +
 +{{ :resources:eval:user-guides:adrv9009-zu11eg:reference_distribution.jpg?600 |}}
  
 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 ''CLKINx'' can be used in this mode. 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 ''CLKINx'' can be used in this mode.
Line 14: Line 25:
 A additional ''SYNC'' signals is used to generate the synchronization event. If the ''SYNC'' pin transitions from 0 to 1 with sufficient setup/hold margin with respect to the VCXO, this synchronization event is deterministically carried through PLL2, up the timing chain through the N2 divider, and then to the master SYSREF timer. This mechanism of deterministic phase adjustment allows synchronization of the SYSREF timer and output phases of multiple HMC7044 devices. Please see the datasheet chapter “**Multichip Synchronization via PLL2**" For further details. A additional ''SYNC'' signals is used to generate the synchronization event. If the ''SYNC'' pin transitions from 0 to 1 with sufficient setup/hold margin with respect to the VCXO, this synchronization event is deterministically carried through PLL2, up the timing chain through the N2 divider, and then to the master SYSREF timer. This mechanism of deterministic phase adjustment allows synchronization of the SYSREF timer and output phases of multiple HMC7044 devices. Please see the datasheet chapter “**Multichip Synchronization via PLL2**" For further details.
  
 +^ Function ^ File ^
 +| dts | [[linux.github>master?arch/arm64/boot/dts/xilinx/zynqmp-adrv9009-zu11eg-revb-adrv2crr-fmc-revb-sync-jesd204-fsm-multisom-primary.dts | zynqmp-adrv9009-zu11eg-revb-adrv2crr-fmc-revb-sync-jesd204-fsm-multisom-primary.dts]] |
 +| dts | [[linux.github>master?arch/arm64/boot/dts/xilinx/zynqmp-adrv9009-zu11eg-revb-adrv2crr-fmc-revb-sync-jesd204-fsm-multisom-secondary.dts | zynqmp-adrv9009-zu11eg-revb-adrv2crr-fmc-revb-sync-jesd204-fsm-multisom-secondary.dts]] |
 +| dts | [[linux.github>master?arch/arm64/boot/dts/xilinx/zynqmp-adrv9009-zu11eg-revb-adrv2crr-fmc-revb-sync-fmcomms8-jesd204-fsm-multisom-primary.dts | zynqmp-adrv9009-zu11eg-revb-adrv2crr-fmc-revb-sync-fmcomms8-jesd204-fsm-multisom-primary.dts]] |
 +| dts | [[linux.github>master?arch/arm64/boot/dts/xilinx/zynqmp-adrv9009-zu11eg-revb-adrv2crr-fmc-revb-sync-fmcomms8-jesd204-fsm-multisom-secondary.dts | zynqmp-adrv9009-zu11eg-revb-adrv2crr-fmc-revb-sync-fmcomms8-jesd204-fsm-multisom-secondary.dts]] |
 +
 +<note warning>
 +Depending on the Linux/Devicetree version, the HMC7044 eval board got replaced by [[resources:eval:user-guides:ad-synchrona14-ebz|AD-SYNCHRONA14-EBZ]] please see here:
 +[[repo>linux/commit/ff537311d1fc7dc20d43a198b44007c22f2e9779]]
 +
 +<code>
 +arch: arm64: adrv9009-zu11eg: Update hmc7044_ext
 +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
 +</code>
 +</note>
 ==== Clock distribution ==== ==== Clock distribution ====
 +
 +{{ :resources:eval:user-guides:adrv9009-zu11eg:clock_distribution.png?600 |}}
  
 The maximum frequency used in the system is generated by the topmost HMC7044 and then distributed throughout the entire clock tree (Inter-stage Frequency).  The maximum frequency used in the system is generated by the topmost HMC7044 and then distributed throughout the entire clock tree (Inter-stage Frequency). 
Line 20: Line 53:
 This method is referred as **clock distribution**. All lower level clock-chips receive their input clock via ''FIN''/CLKIN1 and are synced via ''RFSYNC''/CLKIN0. This method is referred as **clock distribution**. All lower level clock-chips receive their input clock via ''FIN''/CLKIN1 and are synced via ''RFSYNC''/CLKIN0.
  
-Depending on your [[resources:eval:user-guides:adrv9009-zu11eg:adrv2crr-fmc_carrier_board|ADRV2CRR-FMC]] Carrier Board Hardware revision following stuffing options need to be checked.+<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.</note> 
 +  
 +Depending on your [[resources:eval:user-guides:adrv9009-zu11eg:adrv2crr-fmc_carrier_board|ADRV2CRR-FMC]] Carrier Board Hardware revision following stuffing options need to be checked. These are required to route ''RFSYNC'' DC coupled to the from SMA connectors J5 RFSYNC_P, J6 RFSYNC_N to the HMC7044 ''RFSYNC'' input.  
 + 
 +<note important>Rev C:    
 +  * 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 
 +</note>
  
-| C289 | bypass/short |  +^ Function ^ File ^ 
-C290 bypass/short |  +dts [[linux.github>master?arch/arm64/boot/dts/xilinx/zynqmp-adrv9009-zu11eg-revb-adrv2crr-fmc-revb-sync-fmcomms8-jesd204-fsm-multisom-primary-clockdist.dts | zynqmp-adrv9009-zu11eg-revb-adrv2crr-fmc-revb-sync-fmcomms8-jesd204-fsm-multisom-primary-clockdist.dts]] 
-| R110 | insert/short |  +dts [[linux.github>master?arch/arm64/boot/dts/xilinx/zynqmp-adrv9009-zu11eg-revb-adrv2crr-fmc-revb-sync-fmcomms8-jesd204-fsm-multisom-secondary-clockdist.dts | zynqmp-adrv9009-zu11eg-revb-adrv2crr-fmc-revb-sync-fmcomms8-jesd204-fsm-multisom-secondary-clockdist.dts]] |
-R111 insert/short +
  
 ===== Hardware setup ===== ===== Hardware setup =====
Line 60: Line 103:
 ===== Software ===== ===== Software =====
  
-  * 11/09/2020 +  * [[:resources:tools-software:linux-software:kuiper-linux |Analog Devices Kuiper Linux]]
-    * {{ :resources:eval:user-guides:adrv9009-zu11eg:adrv9009_zu11eg_fmcomms8_nov9_2020.zip |ADRV9009-ZU11EG+FMCOMMMS8 Boot Files}} +
-  * 02/04/2021 +
-    * {{ :resources:eval:user-guides:adrv9009-zu11eg:adrv9009_zu11eg_feb4_2021.zip |ADRV9009-ZU11EG Boot Files}} +
-    * {{ :resources:eval:user-guides:adrv9009-zu11eg:adrv9009_zu11eg_fmcomms8_feb4_2021.zip |ADRV9009-ZU11EG+FMCOMMMS8 Boot Files}}+
  
 <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**, and requires the devicetree from the secondary folder.</note> <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**, and requires the devicetree from the secondary folder.</note>
Line 73: Line 112:
 There are two domains of synchronization that are considered in this configuration, the ADRV9009 transceivers and the FPGAs. Synchronization for the transceivers is provided by the clocking tree of HMC7044s and the JESD protocol. In the diagram several HMC7044s are cascade from a parent, or what we call external HMC7044, who is responsible for general system reference (sysref) control. These reference signals feed the clock chips on the individual SOMs and FPGAs.  There are two domains of synchronization that are considered in this configuration, the ADRV9009 transceivers and the FPGAs. Synchronization for the transceivers is provided by the clocking tree of HMC7044s and the JESD protocol. In the diagram several HMC7044s are cascade from a parent, or what we call external HMC7044, who is responsible for general system reference (sysref) control. These reference signals feed the clock chips on the individual SOMs and FPGAs. 
  
-{{ :resources:eval:user-guides:adrv9009_zu11eg:talise_clocking_tree.png?direct&400 |talise_clocking_tree}}+The System Clocking Tree Diagram is located here: 
 +{{ :resources:eval:user-guides:adrv9009-zu11eg:adrv9009_rfsom_clocking_tree.png?direct&400 |ADRV9009-ZU11EG Clock Tree}}
  
 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, when RFPLL sync is enabled, as well. The individual API rights to the transceivers, clock chips, and their sequences are detailed in the rx method of the python class [[https://github.com/analogdevicesinc/pyadi-iio/blob/master/adi/adrv9009_zu11eg_multi.py|adrv9009_zu11eg_multi.py]].  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, when RFPLL sync is enabled, as well. The individual API rights to the transceivers, clock chips, and their sequences are detailed in the rx method of the python class [[https://github.com/analogdevicesinc/pyadi-iio/blob/master/adi/adrv9009_zu11eg_multi.py|adrv9009_zu11eg_multi.py]]. 
resources/eval/user-guides/adrv9009-zu11eg/syncronization.1623759751.txt.gz · Last modified: 15 Jun 2021 14:22 by Michael Hennerich