Post Go back to editing

ADRV9002: channel phase synchronisation using TDD profile

Thread Summary

The user asked about enabling both Tx and Rx simultaneously in TDD mode on the ADRV9002 for phase alignment testing. The support engineer confirmed this is not possible in TDD mode with `port_en_mode` set to SPI, but can be achieved by setting `port_en_mode` to Pin, effectively bypassing the TDD constraint. The user can control GPIO pins directly from Kuiper Linux to enable Rx1/Rx2 and Tx1, but must ensure the correct GPIO numbers are used. The engineer also noted that for a simple test, the user doesn't need to worry about digital interface or VCO On/Off times controlled by AXI-CORE-TDD.
AI Generated Content
Category: Software
Product Number: ADRV9002
Software Version: Kuiper Linux: 2021_R2, ADRV9002 Device Driver: ver.68.0.6, ADRV9002 Firmware: ver.0.21.0.9, IIO Oscilloscope: ver.0.17, TES: ver.0.26.0

Hello,

Is there a way to enable both Tx and Rx simultaneously in TDD mode on the ADRV9002?

I'm testing the phase alignment of Rx1 and Rx2 on the ADRV9002.
To achieve this, I'm using the TDD mode profile on the ADRV9002, ensuring that both Rx1 and Rx2 share the same LO.
For the test, I split the signal output from Tx1 using a splitter, then input it into both Rx1 and Rx2 simultaneously for sampling.

Here are the details of my questions:

  1. In TDD mode, when port_en_mode is set to SPI, I am unable to change ensm_mode from primed to rf_enabled for Tx1 while Rx1 and Rx2 are rf_enabled using the Control in IIO Oscilloscope.

    a) Is this behavior expected?

    b) To enable Rx1/Rx2 and Tx1 simultaneously, is it necessary to set port_en_mode to Pin?

  2. When port_en_mode is set to Pin, I want to enable Rx1/Rx2 and Tx1 simultaneously, using it as if in FDD mode.

    a) Are there minimum and maximum values for the settings when using AXI-CORE-TDD in IIO Oscilloscope?
        Is there any reference documentation available?

    b) Is it possible to control the GPIO pins of the ZedBoard or ZCU102 directly without using AXI-CORE-TDD?
        If so, how can this be achieved from Kuiper Linux?

    c) Is it also possible to enable the Rx1/Rx2/Tx1 by applying a High level to the P605 on the evaluation board?

Additional Information:

  • FPGA Carrier Board: ZedBoard or ZCU102 (both carrier boards are used)
  • Device Tree: MIMO mode

Thank you in advance

  • Hi,

    In TDD mode, when port_en_mode is set to SPI, I am unable to change ensm_mode from primed to rf_enabled for Tx1 while Rx1 and Rx2 are rf_enabled using the Control in IIO Oscilloscope.

    a) Is this behavior expected?

    Yes it's expected as in TDD, given it's nature you can't have both RX/TX enabled.

    To enable Rx1/Rx2 and Tx1 simultaneously, is it necessary to set port_en_mode to Pin?

    It's a way to bypass the above constrain as we can't control that from the driver...

    When port_en_mode is set to Pin, I want to enable Rx1/Rx2 and Tx1 simultaneously, using it as if in FDD mode.

    a) Are there minimum and maximum values for the settings when using AXI-CORE-TDD in IIO Oscilloscope?
        Is there any reference documentation available?

    What minimum/maximum values?

    Is it possible to control the GPIO pins of the ZedBoard or ZCU102 directly without using AXI-CORE-TDD?
        If so, how can this be achieved from Kuiper Linux?

    Which GPIO pins? These are the connections available for zcu102:

    https://github.com/analogdevicesinc/linux/blob/main/arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev10-adrv9002.dts#L195

    Then controlling GPIOs from userspace is pretty generic and there's nothing special about kuiper on that.

    Is it also possible to enable the Rx1/Rx2/Tx1 by applying a High level to the P605 on the evaluation board?

    If it's in pin mode yes. But you can control the TX1_EN gpio in order to control it's state.

    - Nuno Sá

  • Hello Nuno,

    Thank you for the response.

    What minimum/maximum values?

    I'd like to know the constraints on the following parameters: "On", "Off", "Digital Interface On", "Digital Interface Off", "VCO On", "VCO Off" for both RX and TX, and "frame length".
    (e.g. frame length have to n ms longer than other longest off time, if a constrain exists)

    Which GPIO pins? These are the connections available for zcu102:

    https://github.com/analogdevicesinc/linux/blob/main/arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev10-adrv9002.dts#L195

    Then controlling GPIOs from userspace is pretty generic and there's nothing special about kuiper on that.

    I'm glad to know this information!
    I'd like to confirm how to control the GPIO pins.
    As an example, is the following method sufficient to enable RX1?

    echo 126 > /sys/class/gpio/export
    echo "out" >  /sys/class/gpio/gpio126/direction
    echo 1 >  /sys/class/gpio/gpio126/value

    For direct pin controlling method, is it correct that I don't have to care about On/Off of digital interface or VCO, which are controlled in AXI-CORE-TDD?

    Thank you,

  • Hi,

    I'd like to know the constraints on the following parameters: "On", "Off", "Digital Interface On", "Digital Interface Off", "VCO On", "VCO Off" for both RX and TX, and "frame length".
    (e.g. frame length have to n ms longer than other longest off time, if a constrain exists)

    Not sure if there are any hard constrains on top of the logic ones (like on + off times being bigger than the frame_length)

    Yes,that's how you use export it. Although there's an offset that you need to apply to 126. You do 'cat /sys/kernel/debug/gpio' and look for zynqmp-gpio. Then you should see an interval of gpios. Get the beginning and sum 128. That should give the exact number to export.

    For direct pin controlling method, is it correct that I don't have to care about On/Off of digital interface or VCO, which are controlled in AXI-CORE-TDD?

    For a simple test don't think you have to care but not sure though. Long time without looking at that core.

    - Nuno Sá