Post Go back to editing

Phaser: Help Needed For MIMO Setup

Category: Hardware
Product Number: CN0566

I implemented the FMCW RADAR examples as demonstrated in Jon Kraft's YT playlist. It works fine in 2D frame and I want to extend it further in 3D plane. Creating a 2D Virtual Array for Antennas (8Rx, 2Tx) I want to know how to add the 2nd antenna and sync both of them.



I read the CN0566 Datasheet and if I understand it correctly, I can use the ADF4159's MUXOUT pin to toggle TX Switch.

Transmit antenna switching is triggered by the end of a programmable number of PLL chirps. The ADF4159's MUXOUT pin can be programmed to indicate the end of a ramp, and this signal is level-shifted and applied to the clock input of a 7-stage ripple counter, as shown in Figure 17. Three general-purpose input/output (GPIO) signals from the Raspberry Pi drive a data multiplexer inputs, selecting antenna toggle rates of 2, 4, 8, 16, 32, 64, or 128 chirps.
  


I want to understand in detail on how this can be done. Where are the GPIO_X,Y,Z pins as mentioned in the docs and how do we configure them to enable TX Antenna toggling.

Can you please provide a python script demo using the pyadi-iio library on how to toggle Tx switch.

Also, how can I use the received data to get elevation angle of the detected object

  • There's a couple of options for how you could modify Phaser:

    1.  Install SMP connectors on the existing footprints.  Then cable out to your own 2D antenna (i.e. 2x4 array, "T" array, or circular array).  Then you can scan in both azimuth and elevation.

    2.  You can use the 2nd transmit port, but not simultaneously.  So this is something for creating virtual arrays -- which increase the angular resolution at the expense of scan time.  In our example code, you can see how these GPIOs are set.  But it would not give you a 2 D array, which I think is what you are wanting.  

    3.  You could add a full transmit array by attaching the ADAR1000 eval board to Phasers TX OUT port.  That would give you 4 channels of transmit beamforming.  But again, not a 2D scanning array.  

    These are just ideas that are possible.  But the actual implementation and testing would need to be worked on by you, we do not have example code of these.  I hope that helps.  

  • 2nd Options sounds like what I want to do, However I want to do that with time division multiplexing (TDM). I want to know how can I use phaser to achieve this.

  • Hey Jon, to turn on "end of PLL ramp status" on ADF4159 MUXOUT I made these changes,

    my_phaser.muxout_sel = 15
    my_phaser.set_tx_sw_div(128)

    # Configure SDR Tx
    my_sdr.tx_lo = int(center_freq)
    my_sdr.tx_enabled_channels = [0, 1]
    my_sdr.tx_cyclic_buffer = True # must set cyclic buffer to true for the tdd burst mode
    my_sdr.tx_hardwaregain_chan0 = int(tx_gain) # must be between 0 and -88
    my_sdr.tx_hardwaregain_chan1 = int(tx_gain) # must be between 0 and -88


    I am expecting that this will toggle the TX_Switch every 128 chirps.

    Can you please confirm if this all I need to do?

    additionally, if this is correct, how can I distinguish between the rx buffer obtained from TX1 and TX2?

    Thank you.
  • There would be no way to distinguish between which Tx1/2 aligned with which rx buffer.  Instead, I would just do this command immedciately after every rx data capture:

    my_phaser._gpios.gpio_tx_sw = 0            # 0 = TX_OUT_2     1 = TX_OUT_1

  • There would be no way to distinguish between which Tx1/2 aligned with which rx buffer.

    Is this a hardware or a software limitation?

    Anyways, Could you please confirm this?

    I am expecting that this will toggle the TX_Switch every 128 chirps.