# How to Shift Carrier Frequency in QAM Signal?

If I wanted to apply a 100MHz frequency shift to a QAM signal with a 400MHz carrier frequency, I would

1. Demodulate it at the carrier frequency
2. Apply a frequency shift to the original signal
3. Modulate it again at the new carrier frequency

Is there a way to apply a frequency shift to the IQ values of a QAM signal without demodulating it?

• Is there any reason why plain heterodyning (multiply by sinusoid at difference of carrier frequencies and filter to remove unwanted image signal) does not work? – Dilip Sarwate Jun 18 '12 at 17:36
• @DilipSarwate It looks like this'll work. Could you write up a little bit more about heterodyning in an answer and I'll accept it. Since it creates extra harmonics, will it degrade the signal after filtering? – Atav32 Jun 18 '12 at 18:56

I am not sure what the phrase to correct frequency offset in the title of this question means. Does it mean that the carrier frequency is supposed to be $10$ MHz but actually is $10.001$ MHz, that is, off by $1$ kHz, and what is wanted is a method to fix this problem? If so, the method described below will not work.

Frequency translation by substantial amounts, e.g. changing a $10$ MHz to, say, $455$ kHz, is generally accomplished by heterodyning or mixing the signal with another carrier signal at a different frequency and bandpass filtering the mixer output. Suppose that the QAM signal at carrier frequency $f_c$ Hz is $$x(t) = I(t)\cos(2\pi f_c t) - Q(t)\sin(2\pi f_c t)$$ where $I(t)$ and $Q(t)$ are the in-phase and quadrature baseband data signals. The spectrum of the QAM signal occupies a relatively narrow band of frequencies, say, $\left[f_c-\frac{B}{2}, f_c+ \frac{B}{2}\right]$ centered at $f_c$ Hz. Multiplying this signal by $2\cos(2\pi\hat{f}_ct)$ and applying the trigonometric identities

\begin{align*}2\cos(C)\cos(D) &= \cos(C+D) + \cos(C-D)\\ 2\sin(C)\cos(D) &= \sin(C+D) + \sin(C-D) \end{align*}

gives us

\begin{align*} 2x(t)\cos(2\pi \hat{f}_ct) &= \quad \left(I(t)\cos(2\pi (f_c +\hat{f}_c) t) - Q(t)\sin(2\pi (f_c+\hat{f}_c)t)\right)\\ &\quad +\ \left(I(t)\cos(2\pi (f_c-\hat{f}_c)t) - Q(t)\sin(2\pi(f_c- \hat{f}_c)t)\right) \end{align*}

which is the sum of two QAM signals with identical data streams but different carrier frequencies shifted up and down by $\hat{f}_c$ Hz from the input carrier frequency $f_c$. The frequency spectra of these two QAM signals occupy bands of width $B$ Hz centered at $f_c+\hat{f}_c$ and $f_c-\hat{f}_c$ respectively, and if

$$f_c-\hat{f}_c + \frac{B}{2} < f_c+\hat{f}_c - \frac{B}{2} \Rightarrow \hat{f_c} > \frac{B}{2},$$ then bandpass filtering can be used to eliminate one of the two QAM signals while retaining the other. Needless to say, if the frequency shift is much larger than the QAM signal bandwidth, that is, if $\hat{f}_c \gg B/2$, then the task of designing and implementing the bandpass filter is easier. Note also that this method cannot be used to correct small frequency offsets because the two QAM signals produced at the mixer output will have overlapping spectra and cannot be separated by filtering.

• You have a good point that I wasn't clear enough in my question. Although I'm actually looking to shift the frequency by a tiny amount (300Hz out of 100MHz), I'll edit the question because this answer is great. Thanks! – Atav32 Jun 22 '12 at 15:24

Yes it is possible for doppler blue-shift only. If you have red shift then you can not predict future.

For this correction the system must have infinite memory capacity. Imaginte infinite queue fed with blue-shifted signal on one end and consumer of queue retransmitting signal with corrected carrier. The requirement to have queue comes because of phase component. Say amplitude component left intact by doppler, but frequency shift is simply ever-running phase lag/boost.

As system needs an infinite resource it is impractical. It is more practical to build queue to store demodulated information, that what your system will do. Like in your description of steps 1-2-3.

There is a subtle problem with Doppler shift of datarate. The datarate shift still stays even if you have corrected the carrier shift. So that what queue will be needed for, if you will reconstruct the datarate as well.

In all practical systems queue will have capacity as large as the packet. If your source has infinite packet, then perfect correction is impossible for capacity reasons and unpredictable future reason.

There is a funny paradox related to modulation: Say someone sends single AM CW packet of fixed frequency. According to fourier series it must be possible to detect carrier and sidebands of signal at ANY given time including -T (predict the future), because the signal is exactly series of infinite in time sinusoids. Infinite, means, that the sinusoids existed all time before, during and after the signal was sent.