I'm using a Nuand BladeRF 2.0 micro, which is based on the AD9361. I'm just trying to get a handle for how it behaves at the moment, so I was testing generation of some CW tones using GNU Radio and see some interesting results on my spectrum analyzer.
This is f_s = 30MHz, LO = 900MHz; there is also a 800-1050MHz filter between the BladeRF and the spectrum analyzer.
Generating a 7.5MHz CW tone (1/4 x f_s), just using the Cosine Source block directly connected to the Soapy SDR sink, I get:
7.6MHz tone spectrum:
8MHz tone spectrum:
What am I seeing here w.r.t the "spikes" above the noise floor, i.e. -70dBm with this RBW?
I understand in principle that there's a reconstruction filter after the DAC, which should be a lowpass filter to prevent higher-frequency images, but that doesn't seem to relate to what I'm seeing in the images above.
Obviously the FFTs in GNU Radio Companion show nothing but the pure tone with everything else >100dB down.
I have some intuitive idea that the difference in the spectrum is due to rounding errors between the floating point representation in GNU Radio and the 12 bit DAC output. I tried to simulate this with a pair of Complex to IShort / IShort to Complex blocks and I can generate the same general structure but the power level of the spikes is still much lower.
Is this just how it should look, or is this an indication of a misconfiguration or other problem?
EDIT: I investigated the behavior using different amplitudes for the Signal Source to see if that would change things, per the suggestion from Marcus Müller, and it seems that is the cause!
Using the same 8MHz tone as before, with the amplitude at 0.25:
Then at 0.5:
Even at 0.99 all is well:
Only when I go to 1.0 do I get all the spurs:
EDIT2: time domain view is actually super interesting; I dialed back the LO to 100MHz because my oscilloscope is only good for 300MHz; here is the 7.6MHz tone with the trigger set slightly above where the waveform should ever go:
Looks like it glitching like that in bursts, and within those bursts every 2.5 microseconds.
Really I have no idea what to make of it. None of that time-domain behavior is apparent with the amplitude at 0.99 either.