Packet transmission with libiio

Hello!

I want to transmit data from MATLAB over radio in frames using libiio and ad9361 in non-cyclic mode and have no RF signals in the channel while there are no more frames to transmit.

There are three issues regarding this setup I've stumbled upon:

  • sine tone is transmitted automatically at startup.
  • ad9361 core repeats the last transmitted samples if there's no new data incoming.
  • if DMA buffers are released using tx.release(), then the board switches to DDS.

This is what I've found so far and what is left unsolved:

  • I can disable oscilloscope autostart as described here. But will matlab initialize all the required parameters of ad9361 and do the calibrations?
  • Second issue can be corrected by adding some zeros at the end of the buffer. But what is the minimal number necessary? Also there's LO leakage if I do it this way, which is significantly bad for me.
  • In this question I've read that writing 0 to the out_volatgeX_raw device attributes will solve it, but can I do it after release function in MATLAB? OR I can somehow change the default behavior?

Thank you in advance,
Ilya.

Parents
  • 0
    •  Analog Employees 
    on May 31, 2019 7:15 PM

    1. Yes, this is independent of IIO-Scope

    2. To reduce LO leakage you can increase TX attenuation or power-down TX. Recent HDL has been updated to pass zeros after DMA finishes. You can easily test this with digital loopback enabled.

    3. You would have to modify some of the base classes. In adi.common.RxTx, after line 113 you could add "obj.ToggleDDS(false)" which would do this. This would also require adding a class to adi.common.RxTx as well. Changing line 1 to "classdef (Abstract) RxTx < matlabshared.libiio.base & adi.common.DDS"

                  Or maxing out the TX attenuation or powering down TX would do the same.

    -Travis

Reply
  • 0
    •  Analog Employees 
    on May 31, 2019 7:15 PM

    1. Yes, this is independent of IIO-Scope

    2. To reduce LO leakage you can increase TX attenuation or power-down TX. Recent HDL has been updated to pass zeros after DMA finishes. You can easily test this with digital loopback enabled.

    3. You would have to modify some of the base classes. In adi.common.RxTx, after line 113 you could add "obj.ToggleDDS(false)" which would do this. This would also require adding a class to adi.common.RxTx as well. Changing line 1 to "classdef (Abstract) RxTx < matlabshared.libiio.base & adi.common.DDS"

                  Or maxing out the TX attenuation or powering down TX would do the same.

    -Travis

Children