I am using a LimeSDR mini to send a sine signal at 71 MHz center frequency. At the receiver side, I sample the signal at 200MHz and I get lots of aliases. How can I fix this ?
I am using C++ on Ubuntu 22.04.
I did the following minor changes to the basicTx example:
const double frequency = 70e6; //center frequency to 70 MHz
const double sample_rate = 5e6; //sample rate to 5 MHz
const double tone_freq = 1e6; //tone frequency
How are you receiving - with a separate receiver, or with the Lime? Are you possibly compressing the signal? Are you seeing other spurs? What are the spurious frequencies?
OK, eliminated the obvious. What happens if you reduce your TX bandwidth to 2MHz - do the spurs go down? If you change the sample rate, does the spacing change? If you change the center frequency, how do they change?
How close to the rails is your modulation signal - if you reduce the modulation signal amplitude to 1/2 of what it is, how do things change?
My guess at this point is that you are overdriving the upconversion chain, saturating it at some point. If so, reducing the modulation signal level should remove the spurs.
What I am suggesting is reducing the value of the modulation signal - in other words, that 1MHz sine wave you are generating. Assuming you are doing something like M(x) = 1.0 * sin(wt), change it to M(x) = 0.5 * sin(wt). Change the digital values you are sending in to be one half their magnitude.