13.1. FREQUENCY
TRANSLATION WITHOUT MULTIPLICATION
Frequency translation is often called for in
digital signal processing algorithms. There are simple schemes for
inducing frequency translation by 1/2 and 1/4 of the signal
sequence sample rate. Let's take a look at these mixing
schemes.
13.1.1 Frequency Translation by f_{s}/2
First we'll consider a technique for frequency
translating an input sequence by f_{s}/2 by merely multiplying a
sequence by (–1)^{n}
= 1,–1,1,–1, ..., etc., where f_{s} is the signal sample rate
in Hz. This process may seem a bit mysterious at first, but it can
be explained in a straightforward way if we review Figure 131(a).There we see
that multiplying a time domain signal sequence by the
(–1)^{n} mixing
sequence is equivalent to multiplying the signal sequence by a
sampled cosinusoid where the mixing sequence samples are shown as
the dots in Figure
131(a). Because the mixing sequence's cosine repeats every two
sample values, its frequency is f_{s}/2. Figure 131(b) and (c) show the discrete Fourier transform (DFT)
magnitude and phase of a 32sample (–1)^{n} sequence. As such, the
right half of those figures represents the negative frequency
range.
Figure 131. Mixing sequence comprising
(–1)^{n} =
1,–1,1,–1, etc: (a) timedomain sequence; (b)
frequencydomain magnitudes for 32 samples; (c) frequencydomain
phase.
Let's demonstrate this (–1)^{n} mixing by an example.
Consider a real x(n) signal sequence having 32 samples of
the sum of three sinusoids whose X(m)
frequency magnitude and f(m) phase spectra are as shown in Figure 132(a) and (b). If we multiply that time
signal sequence by (–1)^{n}, the resulting x_{1,–1}(n) time sequence will have the magnitude
and phase spectra are that shown in Figure 132(c) and (d). Multiplying a time signal by our
(–1)^{n}, cosine
shifts half its spectral energy up by f_{s}/2 and half its spectral
energy down by –f_{s}/2. Notice in these
noncircular frequency depictions that as we count up, or down, in
frequency we wrap around the end points.
Figure 132. A signal and its frequency
translation by f_{s}/2:
(a) original signal magnitude spectrum; (b) original phase; (c) the
magnitude spectrum of the translated signal; (d) translated
phase.
Here's a terrific opportunity for the DSP novice
to convolve the (–1)^{n} spectrum in Figure 131 with the X(m)
spectrum to obtain the frequencytranslated X_{1,–1}(m) signal spectrum. Please do so; that
exercise will help you comprehend the nature of discrete sequences
and their time and frequencydomain relationships by way of the
convolution theorem.
Remember now, we didn't really perform any
explicit multiplications—the whole idea here is to avoid
multiplications, we merely changed the sign of alternating x(n)
samples to get x_{1,–1}(n). One way to look at the X_{1,–1}(m) magnitudes in Figure 132(c) is to see that multiplication
by the (–1)^{n}
mixing sequence flips the positive frequency band of X(m)
[X(0) to X(16)] about the f_{s}/4 Hz point, and flips the
negative frequency band of X(m) [X(17) to X(31)] about the –f_{s}/4 Hz sample. This process
can be used to invert the spectra of real signals when bandpass
sampling is used as described in Section 2.4.
By the way, in the DSP literature be aware that some clever authors
may represent the (–1)^{n} sequence with its
equivalent expressions of
13.1.2 Frequency Translation by
–f_{s}/4
Two other simple mixing sequences form the real
and imaginary parts of a complex –f_{s}/4 oscillator used for
frequency downconversion to obtain a quadrature version (complex
and centered at 0 Hz) of a real bandpass signal originally centered
at f_{s}/4. The real
(inphase) mixing sequence is cos(pn/2) = 1,0,–1,0, etc. shown in Figure 133(a). That mixing
sequence's quadrature companion is –sin(pn/2) =
0,–1,0,1, etc. as shown in Figure 133(b). The spectral magnitudes of
those two sequence are identical as shown in Figure 133(c), but their phase spectrum has
a 90° shift relationship (what we call quadrature).
Figure 133. Quadrature mixing sequences
for downconversion by f_{s}/4: (a) inphase mixing
sequence; (b) quadrature phase mixing sequence; (c) the frequency
magnitudes of both sequences for N
= 32 samples; (d) the phase of the cosine sequence; (e) phase of
the sine sequence.
If we multiply the x(n)
sequence whose spectrum is that in Figure 132(a) and (b) by the inphase (cosine) mixing sequence,
the product will have the I(m) spectrum shown in Figures 134(a) and (b). Again, X(m)'s
spectral energy is translated up and down in frequency, only this
time the translation is by ±f_{s}/4. Multiplying x(n) by
the quadrature phase (sine) sequence yields the Q(m)
spectrum in Figure 134(a)
and (c).
Figure 134. Spectra after translation
down by f_{s}/4: (a)
I(m) and Q(m) spectral magnitudes; (b) phase of
I(m) ; (c) phase of Q(m).
Because their time sample values are merely 1,
–1, and 0, the quadrature mixing sequences are useful because
downconversion by f_{s}/4
can be implemented without multiplication. That's why these mixing
sequences are of so much interest: downconversion of an input time
sequence is accomplished merely with data assignment, or signal
routing.
To downconvert a general x(n) =
x_{real}(n) + jx_{imag}(n) sequence by f_{s}/4, the value assignments
are:
Equation 132
If your implementation is hardwired gates, the
above data assignments are performed by means of routing signals
(and their negatives). Although we've focused on downconversion so
far, it's worth mentioning that upconversion of a general x(n)
sequence by f_{s}/4 can be
performed with the following data assignments:
Equation 133
13.1.3 Filtering and Decimation after
f_{s}/4
DownConversion
There's an efficient way to perform the complex
downconversion and filtering of a real signal by f_{s}/4 process we considered
for the quadrature sampling scheme in Section 8.9.
We can use a novel technique to greatly reduce the computational
workload of the linearphase lowpass filters[1–3].
In addition, decimation of the complex downconverted sequence by a
factor of two is inherent, with no effort on our part, in this
process.
Considering Figure 135(a), notice that if an original
x(n) sequence was realonly, and its
spectrum is centered at f_{s}/4, multiplying x(n) by
cos(pn/2) = 1,0,–1,0, for the inphase
path and –sin(pn/2) = 0,–1,0,1, for the quadrature
phase path to downconvert x(n)'s spectrum to 0 Hz, yields the new
complex sequence x_{new}(n) = x_{i}(n) + x_{q}(n), or
Equation 134
Figure 135. Downconversion by f_{s}/4 and filtering: (a) the
process; (b) the data in the inphase filter; (c) data within the
quadrature phase filter.
Next, we want to lowpass filter (LPF) both the
x_{i}(n) and x_{q}(n) sequences followed by decimation by a
factor of two.
Here's the trick. Let's say we're using fivetap
FIR filters and at the n = 4 time
index; the data residing in the two lowpass filters would be that
shown in Figure 135(b)
and (c). Due to the
alternating zerovalued samples in the x_{i}(n) and x_{q}(n) sequences, we see that only five
nonzero multiplies are being performed at this time instant. Those
computations, at time index n = 4,
are shown in the third row of the rightmost column in Table 131. Because we're
decimating by two, we ignore the time index n = 5 computations. The necessary
computations during the next time index (n = 6) are given in the fourth row of Table 131, where again
only five nonzero multiplies are computed.
A review of Table 131 tells us we can multiplex the
realvalued x(n) sequence, multiply the multiplexed
sequences by the repeating mixing sequence 1,–1, ..., etc.,
and apply the resulting x_{i}(n) and x_{q}(n) sequences to two filters, as shown in
Figure 136(a). Those two
filters have decimated
coefficients in the sense that their coefficients are the
alternating h(k) coefficients from the original
lowpass filter in Figure
135. The two new filters are depicted in Figure 136(b), showing the necessary
computations at time index n = 4.
Using this new process, we've reduced our multiplication workload
by a factor of two. The original data multiplexing in Figure 136(a) is what
implemented our desired decimation by two.
Figure 136. Efficient downconversion,
filtering and decimation: (a) process block diagram; (b) the
modified filters and data at time n = 4; (c) process when a halfband
filter is used.
Table 131. Filter Data and Necessary
Computations after Decimation by Two
Time

Data in the
Filters

Necessary
Computations

n = 0

x(0)

–

–

–

–

i(0) = x(0)h_{0}


h_{0}

h_{1}

h_{2}

h_{3}

h_{4}



0

–

–

–

–

q(0) = 0

n = 2

–x(2)

0

x(0)

–

–

i(2) = x(0)h_{2} –x(2)h_{0}


h_{0}

h_{1}

h_{2}

h_{3}

h_{4}



0

–x(1)

0

–

–

q(2) =
–x(1)h_{1}

n = 4

x(4)

0

–x(2)

0

x(0)

i(4) = x(0)h_{4} –x(2)h_{2} +x(4)h_{0}


h_{0}

h_{1}

h_{2}

h_{3}

h_{4}



0

x(3)

0

–x(1)

0

q(4) =
–x(1)h_{3} +x(3)h_{1}

n = 6

–x(6)

0

x(4)

0

–x(2)

i(6) =
–x(2)h_{4} +x(4)h_{2} –x(6)h_{0}


h_{0}

h_{1}

h_{2}

h_{3}

h_{4}



0

–x(5)

0

x(3)

0

q(6) = x(3)h_{3} –x(5)h_{1}

n = 8

x(8)

0

–x(6)

0

x(4)

i(8) = x(4)h_{4} –x(6)h_{2} +x(8)h_{0}


h_{0}

h_{1}

h_{2}

h_{3}

h_{4}



0

x(7)

0

–x(5)

0

q(8) =
–x(5)h_{3} +x(7)h_{1}\dn7

Here's another feature of this efficient
downconversion structure. If halfband filters are used in Figure 135(a), then only one
of the coefficients in the modified quadrature lowpass filter is
nonzero. This means we can implement the quadraturepath filtering
as K unit delays, a single
multiply by the original halfband filter's center coefficient,
followed by another K delay as
depicted in Figure
136(c). For an original Ntap
halfband filter, K is the integer
part of N/4. If the original
halfband filter's h(N–1)/2 center coefficient is 0.5,
as is often the case, we can implement its multiply by an
arithmetic right shift of the delayed x_{q}(n).
This downconversion process is indeed slick.
Here's another attribute. If the original lowpass filter in Figure 135(a) has an odd
number of taps, the coefficients of the modified filters in Figure 136(b) will be
symmetrical and we can use the folded FIR filter scheme (Section
13.7) to reduce the number of multipliers (at the expense of
additional adders) by almost another factor of two!
Finally, if we need to invert the output x_{c}(n') spectrum, there are two ways to do
so. We can negate the 1,–1, sequence driving the mixer in the
quadrature path, or we can swap the order of the single unit delay
and the mixer in the quadrature path.
