Hi, i'm trying to demodulate a DSB-SC modulated received signal.
I acquire the signal without any problem
then i want to FFT the signal with 1024 point FFT (using rom routines) and shift my spectrum of Foffset hertz, then IFFT it and have the modified signal.
I have done this:
say S(w) is my FFT output. I perform on the spectrum the frequency shift by doing (this is like S(w)*exp(j*2*pi*Foffset/Fs)) where Fs is the sampling rate of my ADC.
real = Re(S)*cos(u) - Im(S)*sin(u)
imag = Re(S)*sin(u) + Im(S)*cos(u)
where Re(S), Im(S), real and imag are arrays. u = 2*pi*Foffset/Fs. sin(u) and cos(u) are in Q15 format. real and imag are used as input od IFFT.
Whee i IFFT the signal, the output on my scope is a lot of garbage without any useful meaning. I take obviously only the real part of the IFFT output.
What I should do?
Every suggestion in very appreciated.
a shift in the frequency domain is performed by - well - shifting - not multiplying by some complex value.
A frequency shift in the time domain, however, is performed by multiplying the time do main signal by a carrier-frequency-tone. A single tone corresponds to a shifted delta peak in the frequency domain; a multiplication corresponds to a convolution in the frequency domain. Hence, multiplying with a tone in time domain corresponds to convolving with a shifted delta peak in the frequency domain.Finally, convolution with a shifted delta peak is nothing but shifting - and that is what you want to do.
So you need to perform your multiplication in the time domain...
I'm developing Costas loop in order to demodulate my signal
Thanks you so much
I think you're already set, but the least computationally intensive way to shift your signal in frequency is to multiply it by a complex sinusoid in the time domain.
What you're doing appears to just be a multiplication by a constant.
Ok, but if i multiply a real signal by a complex signal i obtain a complex signal....so how can i get the demodulated real signal
Oy crap. I missed the DSB-SC part, 'cuz I just skipped down to the math.
Are the sidebands identical? (I.e., is it AM suppressed carrier? Or is it stereo AM or something).
Is it vestigial carrier, or do you otherwise have a carrier reference?
If I just put my head down and bull through on my original line, you low-pass the resulting complex signal around \(\pm BW\), then choose the real or imaginary part of the result. Or you filter in the range \(-BW \le f < 0\) or \(0 < f \le BW\) to pick out one or the other sideband, and then just take the real or imaginary part.
However, if it's vestigial sideband or you have some other carrier reference, a better way to receive it is to recover the carrier, then multiply the signal by your recovered carrier. A search on "exalted carrier AM reception" should give you some material to work with.