Some possible reasons for the IF system spur:
1. due to nonlinearity of the IQ mixer:
DAC has very good IMD3 performance, so we cannot see this as a problem just from DAC
output. But typical IQ mixer or modulator we use right now has IIP of 10-16 dBm. If
we send out carrier with amplitude of -10 dBm, at the IQ mixer output, we should get
IMD spur at about 40 dB lower than the signal. And those spur will showing at
integer multiple of various combination of input frequencies.
As the number of carrier we sent out increase, this will make the spectrum after IQ
mixer looks have many spur at each DAC frequency step.
The harmonies of carriers might also contribute some spurs here.
2. due to the DAC quantization: We only program LUT with 2^16 integer numbers, when
matlab or python do the sin/cos calculation, we round the number into nearest
integers. This is typical quantization noise, the theoretical SNR can be calculated
with 6.05N+1.76 where N is 16 for 16 bits DAC.
From this calculation, we get very low quantization noise; however, the quantization
we applied here will introduce some periodic spur which will higher than the
theoretical noise level. I checked this with some matlab simulation. When I did the
simulation, I find this kind of spur is lower than ADC SNR, so it wonâ€™t contribute
noise for the system. We still limited by ADC noise.
But we should be able to see this kind of spur just from DAC output, if we zoom the
resolution good enough.
3. The above 2 possible reason can be checked by looking at IQ up converter output.
Besides those, some other things like delay in between two IQ mixers, IQ mixer DC
offset, and IQ unbalance may introduce other spur which should be considered
together as IIP 10-15 dBm level, but the spur frequency is more random
Ran