I have been using the Zedboard with FMCOMMS4 with hdl_2016_r2 branch to build my projects. What I am trying to do is send a signal with certain TX & RX LO frequency (let's say LO1), collect a single received baseband sample, move to another frequency (LO2), collect a sample for this frequency, go back to LO1 and repeat for say about 200 times.
My baseband setup for DDS looks like this:
dds_default_setup(phy, DDS_CHAN_TX1_I_F1, 90000, 100, 100000);
dds_default_setup(phy, DDS_CHAN_TX1_I_F2, 90000, 100, 100000);
dds_default_setup(phy, DDS_CHAN_TX1_Q_F1, 0, 100, 100000);
dds_default_setup(phy, DDS_CHAN_TX1_Q_F2, 0, 100, 100000);
To test, I have connected the TX to RX through cable and I am using 50dB attenuation at the TX. For this test, I would expect all the collected samples for each LO to have same (or at least close) amplitudes. But this is how the baseband sample amplitudes for LO2 look like (LO1 is also similar):
I tried to add some delay in between the change of LO and adc capture and that seemed to help. In order to visualize and quantify the fluctuation in the value, I plotted the histograms for different cases:
If I have to wait for about 10ms to get stable data, then that's a problem. The value of the two frequencies does not really have much impact on the results (I tried with 20MHz and 200MHz separation).
My question is, is this a limitation of the chip that is has to have a certain time to become stable after the change of LO? Or there is something that I am doing wrong?
Thanks in advance,