From 4d40c256b5893fb979a31749592962bee2785cf5 Mon Sep 17 00:00:00 2001 From: AndreiGrozav Date: Fri, 10 Jan 2025 13:00:57 +0200 Subject: [PATCH 1/2] adrv9001: Add Tx selectable SSI clk source Signed-off-by: AndreiGrozav --- projects/adrv9001/common/adrv9001_bd.tcl | 6 ++++++ projects/adrv9001/zc706/system_project.tcl | 21 ++++++++++++++++++++- projects/adrv9001/zcu102/system_project.tcl | 13 ++++++++++++- projects/adrv9001/zed/system_project.tcl | 21 ++++++++++++++++++++- 4 files changed, 58 insertions(+), 3 deletions(-) diff --git a/projects/adrv9001/common/adrv9001_bd.tcl b/projects/adrv9001/common/adrv9001_bd.tcl index 370cc3022c1..4c84b4599f3 100644 --- a/projects/adrv9001/common/adrv9001_bd.tcl +++ b/projects/adrv9001/common/adrv9001_bd.tcl @@ -66,8 +66,14 @@ create_bd_port -dir O tdd_sync_cntr # adrv9001 +set USE_RX_CLK_FOR_TX1 $ad_project_params(USE_RX_CLK_FOR_TX1) +set USE_RX_CLK_FOR_TX2 $ad_project_params(USE_RX_CLK_FOR_TX2) + ad_ip_instance axi_adrv9001 axi_adrv9001 ad_ip_parameter axi_adrv9001 CONFIG.CMOS_LVDS_N $ad_project_params(CMOS_LVDS_N) +ad_ip_parameter axi_adrv9001 CONFIG.EXT_SYNC 1 +ad_ip_parameter axi_adrv9001 CONFIG.USE_RX_CLK_FOR_TX1 $USE_RX_CLK_FOR_TX1 +ad_ip_parameter axi_adrv9001 CONFIG.USE_RX_CLK_FOR_TX2 $USE_RX_CLK_FOR_TX2 # dma for rx1 diff --git a/projects/adrv9001/zc706/system_project.tcl b/projects/adrv9001/zc706/system_project.tcl index 1c2b20e5c96..637b320888b 100644 --- a/projects/adrv9001/zc706/system_project.tcl +++ b/projects/adrv9001/zc706/system_project.tcl @@ -1,5 +1,5 @@ ############################################################################### -## Copyright (C) 2014-2023 Analog Devices, Inc. All rights reserved. +## Copyright (C) 2020-2023, 2025 Analog Devices, Inc. All rights reserved. ### SPDX short identifier: ADIBSD ############################################################################### @@ -7,8 +7,27 @@ source ../../../scripts/adi_env.tcl source $ad_hdl_dir/projects/scripts/adi_project_xilinx.tcl source $ad_hdl_dir/projects/scripts/adi_board.tcl +# The get_env_param procedure retrieves parameter value from the environment if exists, +# other case returns the default value specified in its second parameter field. +# +# How to use over-writable parameters from the environment: +# +# e.g. +# make USE_RX_CLK_FOR_TX1=0 USE_RX_CLK_FOR_TX2=0 +# +# 0 = Tx1 SSI reference clock +# 1 = Rx1 clocks +# 2 = Rx2 clocks +set USE_RX_CLK_FOR_TX1 [get_env_param USE_RX_CLK_FOR_TX1 0] +# 0 = Tx2 SSI reference clock +# 1 = Rx1 clocks +# 2 = Rx2 clocks +set USE_RX_CLK_FOR_TX2 [get_env_param USE_RX_CLK_FOR_TX2 0] + adi_project adrv9001_zc706 0 [list \ CMOS_LVDS_N 1 \ + USE_RX_CLK_FOR_TX1 $USE_RX_CLK_FOR_TX1 \ + USE_RX_CLK_FOR_TX2 $USE_RX_CLK_FOR_TX2 \ ] adi_project_files adrv9001_zc706 [list \ diff --git a/projects/adrv9001/zcu102/system_project.tcl b/projects/adrv9001/zcu102/system_project.tcl index cb119a56192..d269d80d067 100644 --- a/projects/adrv9001/zcu102/system_project.tcl +++ b/projects/adrv9001/zcu102/system_project.tcl @@ -1,5 +1,5 @@ ############################################################################### -## Copyright (C) 2020-2023 Analog Devices, Inc. All rights reserved. +## Copyright (C) 2020-2023,2025 Analog Devices, Inc. All rights reserved. ### SPDX short identifier: ADIBSD ############################################################################### @@ -25,8 +25,19 @@ source $ad_hdl_dir/projects/scripts/adi_board.tcl set CMOS_LVDS_N [get_env_param CMOS_LVDS_N 1] +# 0 = Tx1 SSI reference clock +# 1 = Rx1 clocks +# 2 = Rx2 clocks +set USE_RX_CLK_FOR_TX1 [get_env_param USE_RX_CLK_FOR_TX1 0] +# 0 = Tx2 SSI reference clock +# 1 = Rx1 clocks +# 2 = Rx2 clocks +set USE_RX_CLK_FOR_TX2 [get_env_param USE_RX_CLK_FOR_TX2 0] + adi_project adrv9001_zcu102 0 [list \ CMOS_LVDS_N $CMOS_LVDS_N \ + USE_RX_CLK_FOR_TX1 $USE_RX_CLK_FOR_TX1 \ + USE_RX_CLK_FOR_TX2 $USE_RX_CLK_FOR_TX2 \ ] adi_project_files {} [list \ diff --git a/projects/adrv9001/zed/system_project.tcl b/projects/adrv9001/zed/system_project.tcl index 2c99225957d..479a96f21ab 100644 --- a/projects/adrv9001/zed/system_project.tcl +++ b/projects/adrv9001/zed/system_project.tcl @@ -1,5 +1,5 @@ ############################################################################### -## Copyright (C) 2014-2023 Analog Devices, Inc. All rights reserved. +## Copyright (C) 2020-2023, 2025 Analog Devices, Inc. All rights reserved. ### SPDX short identifier: ADIBSD ############################################################################### @@ -7,8 +7,27 @@ source ../../../scripts/adi_env.tcl source $ad_hdl_dir/projects/scripts/adi_project_xilinx.tcl source $ad_hdl_dir/projects/scripts/adi_board.tcl +# The get_env_param procedure retrieves parameter value from the environment if exists, +# other case returns the default value specified in its second parameter field. +# +# How to use over-writable parameters from the environment: +# +# e.g. +# make USE_RX_CLK_FOR_TX1=0 USE_RX_CLK_FOR_TX2=0 +# +# 0 = Tx1 SSI reference clock +# 1 = Rx1 clocks +# 2 = Rx2 clocks +set USE_RX_CLK_FOR_TX1 [get_env_param USE_RX_CLK_FOR_TX1 0] +# 0 = Tx2 SSI reference clock +# 1 = Rx1 clocks +# 2 = Rx2 clocks +set USE_RX_CLK_FOR_TX2 [get_env_param USE_RX_CLK_FOR_TX2 0] + adi_project adrv9001_zed 0 [list \ CMOS_LVDS_N 1 \ + USE_RX_CLK_FOR_TX1 $USE_RX_CLK_FOR_TX1 \ + USE_RX_CLK_FOR_TX2 $USE_RX_CLK_FOR_TX2 \ ] adi_project_files adrv9001_zed [list \ "system_top.v" \ From c0137f5d764fc7f2060cc010226fbbd2a57c44d2 Mon Sep 17 00:00:00 2001 From: AndreiGrozav Date: Tue, 30 Sep 2025 11:49:30 +0300 Subject: [PATCH 2/2] doc/projects/adrv9001 and jupiter_sdr: Update Add info regarding selectable Tx clock source during build time. Signed-off-by: AndreiGrozav --- docs/projects/adrv9001/index.rst | 45 +++++++++++++++++++++++++++++ docs/projects/jupiter_sdr/index.rst | 40 +++++++++++++++++++++++++ 2 files changed, 85 insertions(+) diff --git a/docs/projects/adrv9001/index.rst b/docs/projects/adrv9001/index.rst index d4437d6a264..c64c1557330 100644 --- a/docs/projects/adrv9001/index.rst +++ b/docs/projects/adrv9001/index.rst @@ -230,6 +230,51 @@ the HDL repository. $cd hdl/projects/adrv9001/zcu102 $make +TX clock source selection (build-time) +------------------------------------------------------------------------------- +Two environment parameters control which clock drives each TX SSI interface. +These are read in ``system_project.tcl`` and forwarded to the ``axi_adrv9001`` +IP as ``CONFIG.USE_RX_CLK_FOR_TX1/2``. + +``USE_RX_CLK_FOR_TX1``: Clock source for TX1 + +- ``0`` = TX1 dedicated SSI reference clock +- ``1`` = RX1 SSI clock +- ``2`` = RX2 SSI clock + +``USE_RX_CLK_FOR_TX2``: Clock source for TX2 + +- ``0`` = TX2 dedicated SSI reference clock +- ``1`` = RX1 SSI clock +- ``2`` = RX2 SSI clock + +Examples +------------------------------------------------------------------------------- +- Drive TX1 from RX1 and TX2 from RX2: + +.. code-block:: bash + + make USE_RX_CLK_FOR_TX1=1 USE_RX_CLK_FOR_TX2=2 + +- Drive TX channels from RX1: + +.. code-block:: bash + + make USE_RX_CLK_FOR_TX1=1 USE_RX_CLK_FOR_TX2=1 + +- LVDS interface with TX2 driven by RX1 clock: + +.. code-block:: bash + + make CMOS_LVDS_N=0 USE_RX_CLK_FOR_TX1=2 + +Notes +------------------------------------------------------------------------------- +- Defaults: ``system_project.tcl`` defaults both to ``0`` (dedicated TX clocks). + But, for LVDS builds on ZCU102, ``system_bd.tcl`` sets TX1=1 and TX2=2 to use + RX clocks by default. +- Related IP parameters are also described in :ref:`axi_adrv9001` (library docs). + A more comprehensive build guide can be found in the :ref:`build_hdl` user guide. Resources diff --git a/docs/projects/jupiter_sdr/index.rst b/docs/projects/jupiter_sdr/index.rst index 6a3e3397ffd..65326801b2d 100644 --- a/docs/projects/jupiter_sdr/index.rst +++ b/docs/projects/jupiter_sdr/index.rst @@ -252,6 +252,46 @@ the HDL repository. $cd hdl/projects/jupiter_sdr $make +TX clock source selection (build-time) +------------------------------------------------------------------------------- +Two environment parameters control which clock drives each TX SSI interface. +These are read in ``system_project.tcl`` and forwarded to the ``axi_adrv9001`` +IP as ``CONFIG.USE_RX_CLK_FOR_TX1/2``. + +``USE_RX_CLK_FOR_TX1``: Clock source for TX1 + +- ``0`` = TX1 dedicated SSI reference clock +- ``1`` = RX1 SSI clock +- ``2`` = RX2 SSI clock + +``USE_RX_CLK_FOR_TX2``: Clock source for TX2 + +- ``0`` = TX2 dedicated SSI reference clock +- ``1`` = RX1 SSI clock +- ``2`` = RX2 SSI clock + +Examples +------------------------------------------------------------------------------- +- Drive TX1 from RX1 and TX2 from RX2: + +.. code-block:: bash + + make USE_RX_CLK_FOR_TX1=1 USE_RX_CLK_FOR_TX2=2 + +- Drive TX channels from RX1: + +.. code-block:: bash + + make USE_RX_CLK_FOR_TX1=1 USE_RX_CLK_FOR_TX2=1 + +Notes +------------------------------------------------------------------------------- +- Defaults: ``system_project.tcl`` defaults both to ``0`` (dedicated TX clocks). + But, for LVDS builds on ZCU102, ``system_bd.tcl`` sets TX1=1 and TX2=2 to use + RX clocks by default. +- Related IP parameters are also described in :ref:`axi_adrv9001` (library docs). + + A more comprehensive build guide can be found in the :ref:`build_hdl` user guide. Resources