Lab 10: Real Bandpass and Complex Lowpass Signals, QAM

ECEN 4652/5002
Communications Lab
04-13-15
Spring 2015
P. Mathys
Lab 10: Real Bandpass and Complex Lowpass Signals,
QAM, General BPFs
1
Introduction
Modern communication systems are often implemented as a combination of digital and analog
hardware. The digital part generally consists of a DSP (dgital signal processing) chip with
associated software, and/or ASICs (application specific integrated circuit), FPGAs (fieldprogrammable gate arrays), etc. The analog part is usually used to frequency-shift, filter
and amplify the transmitted and received signals at radio frequencies (RF). To interface
beteeen the digital and analog parts, A/D (analog to digital) and D/A (digital to analog)
converters are used. Digital hardware and associated software is able to produce and process
signals with very precise specifications and reproducible characteristics. But because the
processing speed in a digital system has to be at least twice the highest signal frequency,
the carrier frequencies at which radio signals can be processed directly in the digital domain
are limited, roughly to the MHz or at most the sub-GHz range. Analog hardware, on the
other hand, can be built relatively easily up into the GHz region. But once built, it cannot
just be reprogrammed for another application. Also, component tolerances and component
aging limit the precision of analog signal shaping that can be achieved economically. The
best design philosophy to adopt is therefore to perform all precise and complicated signal
processing functions at the lower frequencies which DSP hardware can handle directly, and
to use the analog hardware only for amplification of low level signals, simple filtering, and
frequency conversion to and from the high RF frequencies. The mathematical tool that
enables this approach is the frequency shift property of the Fourier transform, which allows
real-valued bandpass signals to be converted to complex-valued lowpass signals and vice
versa.
1.1
Complex Lowpass Representation of Real Bandpass Signals
A real-valued bandpass (RBP) signal with center frequency fc and bandwidth 2fL is a
signal x(t) whose Fourier transform (FT) X(f ) satisfies
X(f ) = X ∗ (−f ) ,
and
|X(f )| = 0 ,
for 0 ≤ |f | < fc −fL and |f | > fc +fL .
An example of the FT of a RBP signal is shown in the graph below.
1
X(f )
A
−fc +fL
−fc −fL
−fc
fc −fL
fc
fc +fL
f
−A
Since X(f ) = X ∗ (−f ), it suffices to know X(f ) for f > 0. Shifted left by fc and multiplied
by 2, this yields XL (f ) ⇔ xL (t) as shown below for the example X(f ).
XL (f )
2A
−fL
f
fL
−2A
The signal xL (t), which is complex-valued in general, is called a complex-valued lowpass
(CLP) signal and xL (t) is the CLP representation of the RBP signal x(t). Note that if x(t)
has bandwidth 2fL , then xL (t) has bandwidth fL . To recover x(t) from xL (t) use
x(t) = Re{xL (t) e
j2πfc t
xL (t) ej2πfc t + x∗L (t) e−j2πfc t
.
}=
2
Using the FT pairs
xL (t) ej2πfc t
⇐⇒
XL (f −fc ) ,
x∗L (t) e−j2πfc t
and
⇐⇒
XL∗ (−f −fc ) ,
this corresponds to
XL (f −fc ) + XL∗ (−f −fc )
X(f ) =
2
=⇒
X(f ) = X ∗ (−f ) ,
in the frequency domain.
Since xL (t) is complex-valued, it can be written as
xL (t) = Re{xL (t)} + j Im{xL (t)} = xLi (t) + j xLq (t) ,
where xLi (t) is the in-phase component (or real part) of xL (t) and xLq (t) is the quadrature
component (or imaginary part) of xL (t). From xL (t) ⇔ XL (f ) and x∗L (t) ⇔ XL∗ (−f ), the
FTs of xLi (t) and xLq (t) are obtained as follows:
xL (t) + x∗L (t)
2
xL (t) − x∗L (t)
xLq (t) = Im{xL (t)} =
2j
⇐⇒
xLi (t) = Re{xL (t)} =
⇐⇒
2
XL (f ) + XL∗ (−f )
,
2
XL (f ) − XL∗ (−f )
XLq (f ) =
.
2j
XLi (f ) =
Therefore
XL (f ) = XLi (f ) + j XLq (f ) .
But note that, while xLi (t) and xLq (t) are real-valued, their FTs XLi (f ) and XLq (f ) are
complex-valued in general. The following figure shows XLi (f ) and XLq (f ) for the example
of X(f ) that was given earlier.
XLq (f )
XLi (f )
2jA
jA
2A
A
−fL
f
fL
0
fL
f
−fL −jA
−2jA
The blockdiagram given below shows how to convert the RBP signal x(t) to its CLP representation xL (t) and how to reconstruct x(t) from xL (t).
x(t)
v(t)
×
LPF
at fL
xL (t)
xL (t)
2e−j2πfc t
×
w(t)
Re{.}
x(t)
ej2πfc t
Note that, except for x(t), all signals are complex-valued. An implementation of the conversion from x(t) to xL (t) = xLi (t) + j xLq (t), and vice versa, that uses only real-valued signals
is shown in the next blockdiagram.
×
x(t)
vi (t)
LPF
at fL
xLi (t)
xLi (t)
×
+
•
2 cos 2πfc t
+
cos 2πfc t
x(t)
+
×
vq (t)
LPF
at fL
xLq (t)
−2 sin 2πfc t
|
{z
}
AM Demodulators
xLq (t)
×
− sin 2πfc t
|
{z
}
AM Modulators
The insight gained from this version is that conversion from x(t) to xL (t) is equivalent to
AM demodulation with both a cosine and a (negative) sine carrier, whereas reconstruction
of x(t) from xL (t) is equivalent to AM modulation, again with the same carriers.
3
Hilbert Transform. Yet another method to obtain the CLP representation xL (t) of the
RBP signal x(t) makes use of the Hilbert transform xh (t) of x(t), which is defined as
xh (t) = H{x(t)} =
1
∗ x(t)
πt
⇐⇒
Xh (f ) = −j sgn(f ) X(f ) .
Combining x(t) and jxh (t) yields the Fourier transform pair
xu (t) = x(t) + j xh (t)
Xu (f ) = 1 + sgn(f ) X(f ) = 2u(f ) X(f ) ,
⇐⇒
where
Xu (f ) =
2X(f ) , f > 0 ,
0,
otherwise .
Thus, xL (t) is obtained by shifting Xu (f ) left by fc , as shown in the following blockdiagram.
x(t)
+
•
+
H{ . }
1.2
xh (t)
xu (t)
+
j
×
xL (t)
e−j2πfc t
Quadrature Amplitude Modulation
A regular AM-DSB-SC signal with carrier frequency fc has the form
x(t) = m(t) cos(2πfc t) ,
where m(t) is the message signal, e.g., speech, music, or a PAM signal. But nothing speaks
against using a sine carrier instead of a cosine carrier, and
x0 (t) = −m(t) sin(2πfc t) ,
where the minus sign was used for consistency in notation but has no other fundamental
meaning, is just as good an AM-DSB-SC signal as x(t). In fact, because sin(2πfc t) and
cos(2πfc t) are orthogonal functions, x(t) and x0 (t) can be used simultaneously to generate a
quadrature amplitude modulated (QAM) signal of the form
x(t) = mi (t) cos(2πfc t) − mq (t) sin(2πfc t) ,
where mi (t) is the in-phase message signal and mq (t) is the quadrature message signal. The
block diagrams of a QAM modulator and a QAM demodulator are shown below.
4
mi (t)
×
cos 2πfc t
mq (t)
×
+
x(t)
r(t)
•
vi (t)
LPF
at fL
m
ˆ i (t)
LPF
at fL
m
ˆ q (t)
2 cos 2πfc t
vq (t)
×
×
− sin 2πfc t
−2 sin 2πfc t
Setting r(t) = x(t), the demodulator computes
vi (t) = 2x(t) cos 2πfc t = 2mi (t) cos2 2πfc t − 2mq (t) sin 2πfc t cos 2πfc t
= mi (t) (1 + cos 4πfc t) − mq (t) sin 4πfc t ,
vq (t) = −2x(t) sin 2πfc t = −2mi (t) cos 2πfc t sin 2πfc t + 2mq (t) sin2 2πfc t
= −mi (t) sin 4πfc t + mq (t) (1 − cos 4πfc t) .
Thus, after lowpass filtering at fL = fm , where fm ≤ fc is the highest message frequency, the
in-phase and quadrature message signals mi (t) and mq (t) can be recovered independently of
each other.
Practical transmission systems rarely use QAM to directly transmit and receive two independent analog message signals mi (t) and mq (t). The main reason is the difficulty to
establish and maintain exact frequency and phase synchronization between transmitter and
receiver. However, since any real bandpass signal x(t) can be regarded as a QAM signal with
mi (t) = xLi (t) and mq (t) = xLq (t), where xL (t) = xLi (t) + j xLq (t) is the CLP representation of x(t), QAM can be used to generate (and demodulate) any AM, PM, or FM signal.
Characteristic examples are given below.
AM-DSB. For AM-DSB-SC with message signal m(t), carrier frequency fc , and carrier
phase θc , the transmitted real-valued bandpass signal is
x(t) = m(t) cos(2πfc t + θc ) = m(t) cos θc cos 2πfc t − m(t) sin θc sin 2πfc t .
| {z }
| {z }
= mi (t)
= mq (t)
The corresponding complex-valued lowpass signal is thus
xL (t) = mi (t) + j mq (t) = m(t) (cos θc + j sin θc ) .
For AM-DSB-TC, simply replace m(t) by 1 + α mn (t).
PM/FM. For phase modulation with normalized message signal mn (t), maximum phase
deviation ∆θ , and carrier frequency fc , the transmitted real-valued bandpass signal is
x(t) = cos 2πfc t + ∆θ mn (t) = cos(∆θ mn (t)) cos 2πfc t − sin(∆θ mn (t)) sin 2πfc t .
{z
}
|
{z
}
|
= mi (t)
= mq (t)
5
The complex-valued lowpass signal corresponding to x(t) is therefore
xL (t) = mi (t) + j mq (t) = cos(∆θ mn (t)) + j sin(∆θ mn (t)) .
For frequency modulation with maximum frequency deviation ∆f , mi (t) and mq (t) become
Z t
Z t
mi (t) = cos 2π∆f
mn (τ ) dτ ,
and
mq (t) = sin 2π∆f
mn (τ ) dτ ,
−∞
and thus
−∞
xL (t) = cos 2π∆f
Z
t
mn (τ ) dτ + j sin 2π∆f
−∞
1.3
Z
t
−∞
mn (τ ) dτ .
General Bandpass Filters
Let h(t) be the unit impulse response of a real-valued bandpass filter (BPF) with real-valued
input x(t) and real-valued output y(t) so that
y(t) = x(t) ∗ h(t) .
Define the following complex-valued lowpass representations
y(t):
yL (t) = yLi (t) + j yLq (t) ,
x(t):
xL (t) = xLi (t) + j xLq (t) ,
h(t):
hL (t) = hLi (t) + j hLq (t) .
In complex-valued lowpass form the operation of the BPF can be described as
yL (t) = xL (t) ∗ hL (t) = [xLi (t) + j xLq (t)] ∗ [hLi (t) + j hLq (t)]
= [xLi (t) ∗ hLi (t) − xLq (t) ∗ hLq (t)] +j [xLi (t) ∗ hLq (t) + xLq (t) ∗ hLi (t)] .
{z
}
|
{z
}
|
= yLi (t)
= yLq (t)
A block diagram which implements this convolution and includes the translation from passband (around fc ) to baseband and vice versa is shown in the figure below.
×
xLi (t)
•
+
yLi(t)
−
hLq (t)
2 cos 2πfc t
x(t)
+
hLi (t)
×
cos 2πfc t +
•
+
+
hLq (t)
×
xLq (t)
+
•
hLi (t)
+
−2 sin 2πfc t
+
yLq (t)
×
− sin 2πfc t
6
y(t)
To determine hLi (t) ⇔ HLi (f ) and hLq (t) ⇔ HLq (f ) from h(t) ⇔ H(f ), proceed as follows.
Shift H(f ) to the left using some conveniently chosen fc . Then lowpass filter the result
with an appropriate cutoff frequency fL and multiply the result by 2. This yields the CLP
representation HL (f ) ⇔ hL (t). Then use
HLi (f ) =
HL (f ) + HL∗ (−f )
,
2
and
HLq (f ) =
HL (f ) − HL∗ (−f )
,
2j
to obtain the desired in-phase and quadrature components needed to implement the filter
with real-valued hardware and/or software.
Example: VSB/SSB Filter. To convert AM-DSB signals into AM-VSB-USB or AMSSB-USB signals, a BPF with the following ideal real-valued FT specification h(t) ⇔ H(f )
can be used.
H(f )
0 ≤ ∆ ≤ fL
1
−fc −fL
−fc
−fc −∆
−fc +∆
fc
0
fc −∆
fc +fL
f
fc +∆
After shifting this spectrum to the left by fc , multiplying it by 2, and lowpass filtering it at
fL , the following spectrum HL (f ) of the complex-valued lowpass representation hL (t) of the
BPF is obtained.
HL (f )
0 ≤ ∆ ≤ fL
2
−fL
−∆
0
∆
fL
f
Making use of
hL (t) + h∗L (t)
2
hL (t) − h∗L (t)
hLq (t) =
2j
hLi (t) =
⇐⇒
⇐⇒
HL (f ) + HL∗ (−f )
2
HL (f ) − HL∗ (−f )
H ∗ (−f ) − HL (f )
HLq (f ) =
=j L
2j
2
HLi (f ) =
yields the in-phase and quadrature component spectra of hL (t) shown in the next two graphs.
HLi (f )
0 ≤ ∆ ≤ fL
1
−fL
−∆
0
∆
7
fL
f
HLq (f )
0 ≤ ∆ ≤ fL
j
∆
−fL
fL
f
−∆
−j
A convenient way to implement the BPF considered in this example is shown in the following
blockdiagram.
×
h1 (t)
•
×
+
−
h2 (t)
2 cos 2πfc t
x(t)
+
xLi (t)
cos 2πfc t +
•
y(t)
+
+
h2 (t)
×
h1 (t)
•
+
xLq (t)
+
×
+
−2 sin 2πfc t
− sin 2πfc t
In this blockdiagram hLi (t) = h1 (t) and hLq (t) = h1 (t) ∗ h2 (t), with h1 (t) and h2 (t) as given
next.
H1 (f )
h1 (t) =
sin(2πfL t)
πt
1
⇐⇒
−fL
f
fL
0
H2 (f )
h2 (t) =
1 sin(2π∆t)
πt 2π∆t
···
⇐⇒
j
∆
−fL −∆
−j
fL
f
···
Now, if the filter input x(t) is an AM-DSB signal with carrier frequency fc ≥ fL , i.e.,
x(t) = m(t) cos(2πfc t), then xLq (t) = 0 and therefore the block diagram of a AM-VSB-USB
or AM-SSB-USB modulator can be reduced to the following.
8
m(t)
mL (t)
•
h1 (t)
×
+
+
cos 2πfc t
y(t)
+
×
h2 (t)
− sin 2πfc t
The benefits of using this blockdiagram for implementing AM-VSB and AM-SSB modulation are that all filtering is done at baseband and can be implemented very precisely and
maintenance-free using DSP chips, even if fc is several hundred MHz or a few GHz, as would
be the case for cellular telephones or wireless LANs. Off the shelf analog ICs exist for the
implementation of the QAM modulator stage for such applications.
1.4
Filterless SSB Upconversion
Modern communication systems generally use digital signal processing (DSP) to generate
signals that satisfy precise specifications, largely independent of component tolerances and
component aging. However, power, price, and availability considerations often necessitate
the use of a lower carrier frequency fc1 at the output of the DSP than the final carrier
frequency fc2 . Typical values are fc1 ≈ 1 . . . 20 MHz and fc2 ≈ 1 . . . 5 GHz. One solution to
convert a signal x(t) with carrier frequency fc1 at the ouput of a DSP system to an actually
transmitted signal y(t) with carrier frequency fc2 , is to use a mixer as shown below in the
form of a blockdiagram.
x(t)
at fc1
×
v(t)
BPF
y(t)
at fc2
2 cos 2π(fc2 −fc1 )t
Because
2 cos 2πfc1 t cos 2π(fc2 − fc1 )t = cos 2π(fc2 − 2fc1 )t + cos 2πfc2 t ,
a BPF is necessary to reject the signal at frequency fc2 − 2fc1 . If fc2 = 2 GHz and fc1 = 2
MHz, then the (analog) BPF needs to have a very narrow band, with a width of only about
2 MHz at 2 GHz, for the transition from passband to stopband. To avoid the need for such
a BPF, the strategy outlined in the following blockdiagram can be used.
9
x(t)
at fc1
+
•
+
H{ . }
xh (t)
xu (t)
+
×
w(t)
Re{ . }
y(t)
at fc2
j
ej2π(fc2 −fc1 )t
The Hilbert transform block computes
xh (t) = H{x(t)} =
1
∗ x(t)
πt
⇐⇒
Xh (f ) = −j sgn(f ) X(f ) ,
and thus
xu (t) = x(t) + j xh (t)
⇐⇒
Xu (f ) = 1 + sgn(f ) X(f ) = 2u(f ) X(f ) .
That is, the complex-valued signal xu (t) has a spectrum that is zero for all f < 0. The multiplication with ej2π(fc2 −fc1 )t then frequency-shifts that spectrum right by fc2 − fc1 . Finally,
after taking the real part of the result, a real bandpass signal y(t) at fc2 is obtained, without
the additional signal at fc2 − 2fc1 . An implementation of this, using only real-valued signals
and processing blocks, is shown in the blockdiagram below.
×
x(t)
at fc1
+
•
2 cos 2π(fc2−fc1 )t
H{ . }
xh (t)
+
+
y(t)
at fc2
×
−2 sin 2π(fc2 −fc1 )t
Implementing the Hilbert transform in analog hardware is quite non-trivial, but in a DSP
chip it is fairly simple and straightforward. The QAM modulation with carrier frequency
fc2 − fc1 is usually done with analog hardware. To suppress signal components at fc2 − 2fc1 ,
it is crucial to maintain the 90◦ phase shift between the oscillators precisely, and to have all
other characteristics between the in-phase and quadrature paths closely matched.
1.5
Zero IF Receivers
If digital signal processing is used at a receiver for AM, QAM, PM , or FM signals, then
it is generally more efficient to work with complex lowpass signals than with real-valued
bandpass signals at some intermediate frequency fIF , because in this way the sampling rate
can be kept at a minimum. Thus, rather than using a conventional superheterodyne front
10
end and a IF amplifier, modern communications receivers very often use a “zero IF” design,
whereby the received signal is directly mixed down to baseband. However, in order to keep
all processing options, such as extracting a carrier term for synchronization, or equalization
for crosstalk between in-phase and quadrature signal components, open, both a sine and a
cosine oscillator are used for the mixer. This corresponds to multiplying the received (real)
signal r(t) by the complex exponential e−j2πfc t , which just simply shifts the spectrum R(f )
to the left by fc . The general structure of a zero IF receiver is shown in the following block
diagram.
vi (t)
×
•
hLi (t)
hLq (t)
2 cos 2πfc t
r(t)
•
hLq (t)
vq (t)
×
•
hLi (t)
y1 (t)
y2 (t)
y3 (t)
y4 (t)
−2 sin 2πfc t
Most of the processing at the receiver is done by selecting the right filters hLi (t) and hLq (t),
and then by taking linear combinations of their outputs y1 (t) . . . y4 (t). Both local oscillators
are needed in most cases (including AM-DSB-SC), but not all four filters are needed in all
cases.
Example: AM-SSB-USB Zero IF Receiver. The blockdiagram below shows the operation of a zero IF receiver for AM-SSB-USB using complex-valued signal paths and complexvalued signal processing.
r(t)
×
v(t)
m
ˆ u (t)
HL (f )
Re{.}
m(t)
ˆ
HL (f ) for USB
2e−j2πfc t
1
f
−fm
0
fm
The (real-valued) signal r(t) is shifted left by fc in the frequency domain by multiplication
with 2e−j2πfc t . The resulting (complex-valued) signal v(t) is then lowpass filtered and, using
the specific HL (f ) shown above, only the upper sideband is present in the (complex-valued)
message signal m
ˆ u (t). Taking the real part of this signal yields the (real-valued) received
11
message signal m(t).
ˆ
The next blockdiagram shows an implementation that uses only realvalued signal paths and real-valued processing blocks.
×
vi (t)
•
hLi (t)
hLq (t)
2 cos 2πfc t
r(t)
•
hLq (t)
×
vq (t)
•
hLi (t)
+
y1 (t)
+
m(t)
ˆ
−
y2 (t)
wired for
SSB-USB
y3 (t)
y4 (t)
−2 sin 2πfc t
Finally, the Fourier transforms of the filters with (real-valued) impulse responses hLi (t) and
hLq (t) are shown in the following two graphs.
HLq (f )
HLi (f )
1/2
−fm
2
j/2
0
fm
f
−fm
fm
f
−j/2
Lab Experiments
E1. QAM Modulation/Demodulation. (a) Implement the Matlab function qamxmtr
for QAM modulation whose header is shown below.
12
function xt = qamxmtr(tt,mi,mq,fcparms,fmparms)
%qamxmtr Qadrature Amplitude Modulation (QAM) Transmitter
%
>>>>> xt = qamxmtr(tt,mi,mq,fcparms,fmparms) <<<<<
%
where
%
xt:
transmitted QAM signal
%
tt:
time axis for mi(t), mq(t), x(t)
%
mi:
(wideband) in-phase message signal to be modulated
%
mq:
(wideband) quadrature message signal to be modulated
%
fcparms = [fc thetaei thetaeq]
%
fc:
carrier frequency
%
thetaei: carrier phase error, in-phase (cos) oscillator
%
thetaeq: carrier phase error, quadrature (sin) oscillator
%
fmparms = [fm km alpham]
LPF at fm parameters
%
no LPF at fm if fmparms = []
%
fm:
highest message frequency
%
km:
LPF h(t) truncation to -km/2fm <= t <= km/2fm
%
alpham: LPF at fm frequency rolloff parameter, linear
%
rolloff over range 2*alpham*fm
Test the qamxmtr function by generating x(t) from mi (t) = cos(2πfmi t), fmi = 1000 Hz,
and mq (t) = cos(2πfmq t), fmq = 2000 Hz. Use Fs = 44100 Hz and fc = 4000 Hz and
generate a signal of length ≈ 1 sec. Set the phase errors θei and θeq to zero. Use showft
to display the Fourier transform of x(t). What happens if you leave mi (t) unchanged, but
use mq (t) = sin(2πfmq t), fmq = 1000 Hz. Save the two QAM signals as myqam901.wav and
myqam902.wav.
(b) Implement the Matlab function qamrcvr for QAM demodulation whose header is shown
below.
13
function [mihat,mqhat] = qamrcvr(tt,rt,fcparms,fmparms)
%qamrcvr Quadrature Amplitude Modulation (QAM) Receiver
%
>>>>> [mihat,mqhat] = qamrcvr(tt,rt,fcparms,fmparms) <<<<<
%
where
%
mihat:
demodulated in-phase message signal
%
mqhat:
demodulated quadrature message signal
%
tt:
time axis for r(t), mihat(t), mqhat(t)
%
rt:
received QAM signal
%
fcparms = [fc thetaei thetaeq]
%
fc:
carrier frequency
%
thetaei: in-phase (cos) local osc phase error
%
thetaeq: quadrature (sin) local osc phase error
%
fmparms = [fm km alpham]
%
no LPF at fm if fmparms = []
%
fm:
highest message frequency
%
km:
LPF h(t) truncation to -km/2fm <= t <= km/2fm
%
alpham: LPF at fm frequency rolloff parameter, linear
%
rolloff over range 2*alpham*fm
Use the QAM signals from part (a) to verify that the QAM demodulator works correctly.
(c) Use the speech signal in speech1001.wav and the music signal in music1001.wav as inphase and quadrature message signals to generate a QAM signal x(t) with fc = 6000 Hz and
fm = 4000 Hz. Set the phase errors θei and θeq to zero. Save this signal as myqam1003.wav
for later use. Then use the showpsd function to verify that the QAM signal indeed only
occupies a bandwidth of about 8 kHz Next, use qamrcvr with the same fc = 6000 Hz and
θei = θeq = 0 to verify that mi (t) and mq (t) can be recovered independently and without
interference from each other. Thus, as opposed to AM-DSB, no bandwidth expansion takes
place when QAM is used. But how robust is QAM with respect to phase and frequency
errors between transmitter and receiver? Test this by generating another QAM signal with
the same parameters as above, except for setting the phase error θeq = 10◦ , so that the sine
and cosine carriers are now offset by 100◦ rather than 90◦ . Demodulate using the same phase
error and check whether mi (t) and mq (t) can still be recovered without interference from
each other.
(d) Real-world bandpass channels are often asymmetric around the center or carrier frequency fc . How does that affect QAM signals? Use the trapfilt function to generate a
filter with the frequency response shown below.
14
FT Approximation , F =44100 Hz, N=44100, ∆ =1 Hz
s
f
1.4
1.2
|X(f)|
1
0.8
0.6
0.4
0.2
0
0
2000
4000
6000
f [Hz]
8000
10000
12000
Then pass the QAM signal in myqam903.wav through the filter with the above frequency
response and demodulate the received signal. Listen to mi (t) and mq (t) and describe the
effect that the asymmetric filter has on each.
(e) Show how to construct a (real-valued) BPF with frequency response as shown below
(passband from 6 to 14 kHz, gain of 1 at 6 kHz and gain of 2 at 14 kHz, linear phase in
passband) using a complex-valued LPF implementation.
FT Approximation , Fs=44100 Hz, N=44100, ∆f=1 Hz
2.5
|X(f)|
2
1.5
1
0.5
0
−2.5
−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
2.5
4
x 10
200
∠X(f) [deg]
100
0
−100
−200
−2.5
−2
−1.5
−1
−0.5
0
f [Hz]
0.5
1
1.5
2
2.5
4
x 10
In particular, determine the frequency responses HLi (f ) ⇔ hLi (t) and HLq (f ) ⇔ hLq (t).
(f ) Implement the BPF with the frequency response shown in (e) in the GNU Radio Companion. Use a speech or music signal to generate a AM-DSB-SC signal with fc = 10 kHz
15
and pass it through the BPF. Demodulate the output using two coherent demodulators, one
using cos(2πfc t) and another one using sin(2πfc t) for the local oscillator. Listen to both
outputs. Should you hear the speech/music signal from both demodulators or only from one
of them? Explain!
E2. AM-VSB/SSB Generation with Baseband Filters. (a) The unit impulse response
and the frequency response of an ideal CT Hilbert transform filter are given by
h(t) =
1
πt
⇐⇒
H(f ) = −j sgn(f ) .
That is, the Hilbert transform leaves the magnitude of the input signal unchanged, but shifts
the phase by −90◦ . Use the following Matlab code to generate h(t), sampled at rate Fs , and
to look at its FT.
Fs = 44100;
tt = [0:Fs-1]/Fs-1/2;
ht = zeros(size(tt));
ix = find(tt~=0);
ht(ix) = 1./(pi*tt(ix));
showft(tt,ht,[-Fs/2 Fs/2 0])
%Sampling rate
%Time axis
%Unit impulse response
You should find that the phase shift by −90◦ works well, but the magnitude of H(f ) is not
equal to 1 for all f . However, changing h(t) to the following h0 (t)
h0 (t) =
cos πFs t
1
−
,
πt
πt
and using the Matlab code
Fs = 44100;
%Sampling rate
tt = [0:Fs-1]/Fs-1/2;
%Time axis
ht = zeros(size(tt));
%Unit impulse response
ix = find(t~=0);
ht(ix) = 1./(pi*tt(ix));
ht(ix) = h(ix)-cos(pi*Fs*tt(ix))./(pi*tt(ix));
showft(tt,ht,[-Fs/2 Fs/2 0])
works very well. Can you explain why? Hint: Remember that Matlab (and DSP chips
in general) can only work with DT signals that are derived from their CT counterparts by
sampling at rate Fs (without violating the sampling theorem).
(b) The Matlab function hilbfilt, whose header is given below, is used to implement the
filter with impulse response
1 sin 2π∆t
h2 (t) =
,
πt 2π∆t
16
which was derived in the introduction. When ∆ = 0, the filter computes the Hilbert transform of the input signal x(t). Using the results from part (a), use the following
h02 (t) =
1 sin 2π∆t cos πFs t
−
,
πt 2π∆t
πt
instead of the original h2 (t) to complete hilbfilt.
function yt = hilbfilt(xt,Fs,ord,delta)
%hilbfilt Delay Compensated FIR Hilbert Transform Filter
%
(-90 deg Phase Shift)
%
>>>>> yt = hilbfilt(xt,Fs,ord,delta) <<<<<
%
where
%
yt:
filter output y(t), sampling rate Fs
%
xt:
filter input x(t), sampling rate Fs
%
Fs:
sampling rate for x(t), y(t)
%
ord:
filter order (must be even)
%
delta: linear transition region -delta<f<delta
%
%
^ H(f)
%
|
%
+--------------- + j
+-- - %
|
\ |
|
%
-Fs/2|
\| delta
|
%
------+--------------+--+--+--------------+-------> f
%
|
-delta |\
|Fs/2
%
|
| \
|
%
- - --+
-j + ---------------+
%
|
To test hilbfilt, use
Fs = 44100;
%Sampling rate
ord = 300;
%Filter order
delta = 1000;
%Transition band parameter
tt = [0:Fs-1]/Fs-1/2;
%Time axis
ui = zeros(size(tt));
ui(1+Fs/2) = Fs;
%Unit impulse at t=0;
h2 = hilbfilt(ui,Fs,ord,delta); %Impulse response h(t)
showft(tt,h2,[-5000 5000 0])
This should result in the following graphs for the magnitude (linear scale!) and the phase of
the frequency response of the Hilbert filter.
17
FT Approximation , Fs=44100 Hz, N=44100, ∆f=1 Hz
1.4
1.2
|X(f)|
1
0.8
0.6
0.4
0.2
0
−5000
−4000
−3000
−2000
−1000
0
1000
2000
3000
4000
5000
−4000
−3000
−2000
−1000
0
f [Hz]
1000
2000
3000
4000
5000
200
∠X(f) [deg]
100
0
−100
−200
−5000
(c) Use the filter functions trapfilt and hilbfilt to implement the AM transmitter function amxmtr30 whose description is shown below. It uses the idea of complex lowpass filtering
to generate AM-VSB and AM-SSB signals with selectable LSB or USB and selectable transition region −∆ . . . ∆, 0 ≤ ∆ ≤ fm , for AM-VSB.
18
function xt = amxmtr30(tt,mt,xtype,fcparms,fmparms,hLparms)
%amxmtr30
Amplitude Modulation Transmitter, V3.0
%
Uses complex lowpass shaping with hL(t)=hLi(t)+j*hLq(t)
%
for AM-VSB/SSB filtering
%
>>>>> xt = amxmtr30(tt,mt,xtype,fcparms,fmparms,hLparms) <<<<<
%
where
%
xt:
transmitted AM signal
%
tt:
time axis for m(t), x(t)
%
mt:
(wideband) message signal to be modulated
%
xtype: amplitude modulation transmitter type from list
%
{’amdsbsc’,’amdsbtc’,’amssbsc’,’amvsbsc’}
%
fcparms = [fc thetac]
for {’amdsbsc’,’amssbsc’,’amvsbsc’}
%
fcparms = [fc thetac alpha] for {’amdsbtc’}
%
fc:
carrier frequency
%
thetac: carrier phase in deg (0: cos, -90: sin)
%
alpha: modulation index 0<=alpha<=1
%
fmparms = [fm km alpham]
LPF at fm parameters
%
no LPF at fm if fmparms = []
%
fm:
highest message frequency
%
km:
LPF h(t) truncation to -km/2fm <= t <= km/2fm
%
alpham: LPF at fm frequency rolloff parameter, linear
%
rolloff over range 2*alpham*fm
%
hLparms = [sb ordL delta]
for {’amssbsc’,’amvsbsc’}
%
(use small delta for ’amssbsc’)
%
sb:
sideband (sb=-1 LSB, sb=+1 USB)
%
ordL:
order of hL filter (ordL = length(hL)-1)
%
delta: frequency rolloff fc-delta to fc+delta
Test amxmtr30 by generating a AM-VSB-USB-SC, a AM-VSB-LSB-SC, a AM-SSB-USB-SC,
and a AM-SSB-LSB-SC signal with fc = 6000 Hz and Fs = 44100 Hz from the (increasing)
chirp signal in chirp1001.wav. Assume fm = 3000, use ∆ = 1000 Hz and ordL ≈ 200
for the AM-VSB signals, and ∆ = 50 Hz and ordL ≈ 1000 for the AM-SSB signals. Use
showpsd to check the spectrum of each of the four signals for correctness.
(d) Use amxmtr30 and the signals in chirp1001.wav (chirp with increasing frequency) and
chirp1002.wav (chirp with decreasing frequency) to generate a AM-SSB-USB-SC and a
AM-SSB-LSB-SC signal, respectively, with Fs = 44100 Hz at fc = 6000 Hz. Add the two
signals to obtain a AM-DSB-SC signal whose upper and lower sidebands carry different
message signals. Save this signal as myam1004.wav for later use.
(e) Use the idea of filterless SSB upconversion to shift the QAM signal that you saved
in myqam1003.wav from a carrier frequency of fc1 = 6000 Hz to a carrier frequency of
fc2 = 7000 Hz. Verify the integrity of this signal by demodulating it using qamrcvr. How
does this operation of shifting the spectrum of a QAM signal (or any real bandpass signal)
differ from using a mixer that would multiply the QAM signal with a local oscillator at
frequency fx = fc2 − fc1 ?
19
E3. Zero IF Receiver. (Experiment for ECEN 5002, optional for ECEN 4652) (a) Use the
following blockdiagram as a basis for an AM receiver that can be used to receive AM-DSB,
and AM-SSB signals, with a provision to select either the LSB or the USB.
×
vi (t)
•
hLq (t)
2 cos 2πfc t
r(t)
hLi (t)
•
hLq (t)
×
vq (t)
•
hLi (t)
y1 (t)
y2 (t)
y3 (t)
y4 (t)
−2 sin 2πfc t
To demodulate an AM-DSB-SC signal, the output y1 (t) can be used directly. To demodulate
AM-SSB-SC signals, a linear combination (either sum or difference) of y1 (t) and y3 (t) is used.
The header of this zero-IF AM receiver with complex lowpass filtering, called amrcvr30, looks
as follows
20
function mhat = amrcvr30(tt,rt,rtype,fcparms,fmparms,hLparms)
%amrcvr30 Amplitude Modulation Receiver, V3.0
%
Zero-IF receiver with complex lowpass filtering
%
using hL(t)=hLi(t)+j*hLq(t)
%
>>>>> mhat = amrcvr30(tt,rt,rtype,fcparms,fmparms,hLparms) <<<<<
%
where
%
mhat:
demodulated message signal
%
tt:
time axis for r(t), mhat(t)
%
rt:
received AM signal
%
rtype: amplitude modulation receiver type from list
%
{’amdsbsc’,’amssbsc’,’amvsbsc’}
%
fcparms = [fc thetac]
for {’amdsbsc’,’amssbsc’,’amvsbsc’}
%
fc:
carrier frequency
%
thetac: carrier phase in deg (0: cos, -90: sin)
%
fmparms = [fm km alpham]
LPF at fm parameters
%
no LPF at fm if fmparms = []
%
fm:
highest message frequency
%
km:
LPF h(t) truncation to -km/2fm <= t <= km/2fm
%
alpham: LPF at fm frequency rolloff parameter, linear
%
rolloff over range 2*alpham*fm
%
hLparms = [sb ordL delta]
for {’amssbsc’,’amvsbsc’}
%
(use small delta for ’amssbsc’)
%
sb:
sideband (sb=-1 LSB, sb=+1 USB)
%
ordL:
order of hL filter (ordL = length(hL)-1)
%
delta: frequency rolloff fc-delta to fc+delta
Test the receiver using the signal you saved earlier in myam1004.wav (AM signal with different
chirp signals in the LSB and USB).
(b) Analyze the signals in the wav-files amsig1002.wav and amsig1003.wav. The first signal
is an AM-DSB-SC signal with one of the sidebands jammed. The second signal consists of a
set of frequency division multiplexed AM-SSB-SC signals with carrier frequencies fc1 = 2000
Hz, fc2 = 5500 Hz, fc3 = 9000 Hz, fc4 = 12500 Hz, and fc5 = 16000 Hz. Demodulate all
message signals with as little noise and crossinterference as possible, using amrcvr30
c
2000–2015,
P. Mathys.
Last revised: 4-20-15, PM.
21