You are on page 1of 10

KEEE494: 2nd Semester 2009

Lab 4

Lab 4: Quadrature Amplitude Modulation


1 Modulation

A quadrature amplitude-modulated (QAM) signal employs two quadrature carriers, cos 2fc t, sin 2fc t, each of which is modulated by an independent sequence of information bits. The transmitted signal waveforms have the form um (t) = Amc gT (t) cos 2fc t + Ams gT (t) sin 2fc t, m = 1, 2, ..., M (1)

where {Amc } and {Ams } are the sets of amplitude. For example, Fig. ?? illustrates a 16-QAM signal constellation that is obtained by amplitude modulating each quadrature carrier by M = 4 PAM. In general, rectangular signal constellations result when two quadrature carriers are each modulated by PAM. More generally, QAM may be viewed as a form of combined digital amplitude and digital phase modulation. Thus the transmitted QAM signal waveforms may be expressed as umn (t) = Am gT (t) cos(2fc t + n ), m = 1, 2, ..., M1 , n = 1, 2, ..., M2 (2)

If M1 = 2k1 and M2 = 2k2 , the combined amplitude- and phase-modulation method results in the simultaneous transmission of k1 + k2 = log2 M1 M2 binary digits occurring at a symbol rate Rb /(k1 + k2 ). It is clear that the geometric signal representation of the signal given by (??) and (??) is in the terms of twodimensional signal vectors of the form sm = ( Es Amc Es Ams ), m = 1, 2, ..., M (3)

Examples of signal space constellation for QAM are shown in Fig. ??. Note that M = 4 QAM is identical to M = 4 PSK.

Demodulation and Detection of QAM

Let us assume that a carrier-phase offset is introduced in the transmission of the signal through the channel. In addition, the received signal is corrupted by additive white Gaussian noise. Hence, r(t) may be expressed as r(t) = Amc gT (t) cos(2fc t + ) + Ams gT (t) sin(2fc t + ) + n(t) where is the carrier-phase offset and n(t) = nc (t) cos 2fc t ns (t) sin 2fc t (4)

The received signal is correlated with the two phase-shifted basis functions 1 (t) = 2 (t) = gT (t) cos(2fc t + ) gT (t) sin(2fc t + )

(5)

as illustrated in Fig. ??, and the outputs of the correlators are sampled and passed to the detector. The phase-locked loop (PLL) shown in Fig. ?? estimates the carrier-phase offset of the received signal and compensates for this phase offset by phase shifting 1 (t) and 2 (t) as indicated in ??. The clock shown in Fig. ?? is assumed to be synchronized 1

Figure 1: M =16-QAM signal constellation.

Transmitting filter g T (t)

Balanced modulator

Binary data

Serial-toparallel converter

Oscillator 90 o phase shift

Transmitted QAM signal

Transmitting filter g T (t)

Balanced modulator

Figure 2: Functional block diagram of modulator for QAM

to the received signal so that the correlator outputs are sampled at the proper instant in time. Under these conditions, the outputs from the two correlators are r1 r2 where nc ns = = 1 2 1 2
T

= =

Amc + nc cos ns sin Ams + nc cos + ns sin

(6)

nc (t)gT (t) dt
0 T

ns (t)gT (t) dt
0

(7)

The noise components are zero-mean, uncorrelated Gaussian random variable with variance No /2. The optimum detector computes the distance metrics D(r, sm ) = |r sm |2 , m = 1, 2, ..., M 2 (8)

Sampler

Clock Received Signal Computes distance metrics D(s m )

PLL

g T (t)

Output decision

90 o phase shift

Sampler

Figure 3: Demodulation and detection of QAM signal

where r = (r1 , r2 ) and sm is given by ??.

Probability of Error for QAM in an AWGN Channel

In this section, we consider the performance of QAM systems that employ rectangular signal constellations. Rectangular QAM signal constellations have the distinct advantage of being easily generated as two PAM signals impressed on phase quadrature carriers. In addition, they are easily demodulated. For rectangular signal constellations in which M = 2k , where k is even, the QAM signal constellation is equivalent to two PAM signals on quadrature carriers, each having M = 2k/2 signal points. Because the signals in the phase quadrature components are perfectly separated by coherent detection, the probability of error for QAM is easily determined from the probability of error for PAM. Specically, the probability of a correct decision for the M -ary QAM system is Pc = (1 PM )2 (9)

where PM is the probability of error of a M -ary PAM with one-half the average power in each quadrature signal of the equivalent QAM systems. By appropriately modifying the probability of error for M -ary PAM, we obtain 1 PM = 2 1 M Q 3 Eav M 1 No (10)

where Eav /No is the average SNR per symbol. Therefore, the probability of a symbol error for the M -ary QAM is PM = 1 (1 PM )2 We note that this result is exact for M = 2k when k is even. MATLAB Perform a Monte Carlo simulation of an M =16-QAM communication system using a rectangular signal constellation. The model of the system to be simulated is hown in Fig. ??. Solution The uniform random number generator (RNG) is used to generate the sequence of information symbols corresponding to the 16 possible 4-bit combinations of b1 , b2 , b3 , b4 . The information symbols are mapped into the corresponding signal points, as illustrated in Fig. ??, which have the coordinates [Amc Ams ]. Two Gaussian (11)

= 64 = 32

= 16

= 8 = 4

Figure 4: Signal space diagram for QAM signals

RNG are used to generate the noise components [nc ns ]. The channel-phase shift is set to 0 for convenience. Consequently, the received signal-plus-noise vector is r = [Amc + nc Ams + ns ] The detector computes the distance metric given by ?? and decides in favor of the signal point that is closest to the received vector r. The error counter counts the symbol errors in the detected sequence. Fig. ?? illustrates the results of the Monte Carlos simulation for the transmission of N = 10000 symbols at different values of the SNR parameter Eb /No , where Eb = Es /4 is the bit energy. Also, shown in Fig. ?? is the theoretical value of the symbol-error probability given by (??) and (??). echo on SNRindB1=0:2:15; SNRindB2=0:0.1:15; M=16; k=log2(M); for i=1:1:length(SNRindB1), smld_err_prb(i)=qam_sim(SNRindB1(i)); % simulated error value echo off; end; echo on; for i=1:length(SNRindB2), SNR = exp(SNRindB2(i)*log(10)/10); % signal-to-noise ratio 4

-3

-2

-1 -1

-2

-3

Figure 5: Block diagram of an M =16-QAM system for the Monte Carlo simulation

% theoretical symbol error rate theo_err_prb(i)=4*Qfunct(sqrt(3*k*SNR/(M-1))); echo off; end; echo on; % Plotting commands follow. semilogy(SNRindB1,smld_err_prb,*) hold semilogy(SNRindB2,theo_err_prb); grid on xlabel(E_b/N_o in dB) ylabel(Symbol Error Rate)

function [p]=qam_sim(snr_in_dB) % [p]=qam_sim(snr_in_dB) % finds the probability of error for the given value of snr_in_dB, % SNR in dB. N=10000; d=1; % min. distance between symbols Eav=10*d2; % energy per symbol snr=10(snr_in_dB/10); % SNR per bit (given) sgma=sqrt(Eav/(8*snr)); % noise variance M=16; % Genreation of the data source follows. for i=1:N, temp=rand; dsource(i)=1+floor(M*temp); end; % Mapping to the signal constellation follows mapping=[-3*d 3*d; -d 3*d; d 3*d; 3*d 3*d; -3*d d; -d d; d d; 3*d d; -3*d -d; -d -d; d -d; 3*d -d; -3*d -3*d; -d -3*d; d -3*d; 3*d -3*d]; for i=1:N, qam_sig(i,:)=mapping(dsource(i),:); end; % received signal for i=1:N, [n(1) n(2)]=gngauss(sgma); r(i,:)=qam_sig(i,:)+n; end; % detection and error probability calculation numoferr=0; for i=1:N, % Metric computation follows. for j=1:M, metrics(j)=(r(i,1)-mapping(j,1))2+ (r(i,2)-mapping(j,2))2; end; [min_metric decis]=min(metrics); if (decis=dsource(i)), numoferr=numoferr+1; 6

end; end; p=numoferr/(N);

10

10

10

Symbol Error Rate

10

10

10

10

10

5 Eb/No in dB

10

15

Figure 6: M = 16-QAM signal constellation for the Monte Carlo simulation

Lab Homework
In this homework, we want to perform a Monte Carlo simulation of an M =16-QAM communication systems for the performance of bit error rate (not a symbol error rate) for the SNR range of SNR=0 15 dB. Use the following hint: For this simulation, you have to generate not only the symbols but also the bits such as s0000=[3*d 3*d]; s0001=[d 3*d]; s0011=[-d 3*d]; s0010=[-3*d 3*d]; s1000=[3*d d]; s1001=[d d]; s1011=[-d d]; s1010=[-3*d d]; s1100=[3*d -d]; s1101=[d -d]; s1111=[-d -d]; s1110=[-3*d -d]; s0100=[3*d -3*d]; s0101=[d -3*d]; s0111=[-d -3*d]; s0110=[-3*d -3*d]; for i=1:1:N, temp=rand; if (temp<1/16), dsource1(i)=0; dsource2(i)=0; dsource3(i)=0; dsource4(i)=0; elseif (temp<2/16), dsource1(i)=0; dsource2(i)=0; dsource3(i)=0; dsource4(i)=1; elseif (temp<3/16), dsource1(i)=0; dsource2(i)=0; dsource3(i)=1; dsource4(i)=0; elseif (temp<4/16), dsource1(i)=0; dsource2(i)=0; dsource3(i)=1; dsource4(i)=1; elseif (temp<5/16), dsource1(i)=0; dsource2(i)=1; dsource3(i)=0; dsource4(i)=0; elseif (temp<6/16), 8

dsource1(i)=0; dsource2(i)=1; dsource3(i)=0; dsource4(i)=1; elseif (temp<7/16), dsource1(i)=0; dsource2(i)=1; dsource3(i)=1; dsource4(i)=0; elseif (temp<8/16), dsource1(i)=0; dsource2(i)=1; dsource3(i)=1; dsource4(i)=1; elseif (temp<9/16), dsource1(i)=1; dsource2(i)=0; dsource3(i)=0; dsource4(i)=0; elseif (temp<10/16), dsource1(i)=1; dsource2(i)=0; dsource3(i)=0; dsource4(i)=1; elseif (temp<11/16), dsource1(i)=1; dsource2(i)=0; dsource3(i)=1; dsource4(i)=0; elseif (temp<12/16), dsource1(i)=1; dsource2(i)=0; dsource3(i)=1; dsource4(i)=1; elseif (temp<13/16), dsource1(i)=1; dsource2(i)=1; dsource3(i)=0; dsource4(i)=0; elseif (temp<14/16), dsource1(i)=1; dsource2(i)=1; dsource3(i)=0; dsource4(i)=1; elseif (temp<15/16), dsource1(i)=1; dsource2(i)=1; dsource3(i)=1; dsource4(i)=0; else (temp<15/16), dsource1(i)=1; 9

dsource2(i)=1; dsource3(i)=1; dsource4(i)=1; end; end; Then, the received signal at the detector for the ith symbol (in Matlab form) is n(1)=gngauss(sgma); n(2)=gngauss(sgma); if ((dsource1(i)==0) & (dsource2(i)==0) & (dsource3(i)==0) & (dsource4(i)==0)), r=s0000+n; elseif ((dsource1(i)==0) & (dsource2(i)==0) & (dsource3(i)==0) & (dsource4(i)==1)) r=s0001+n; elseif ((dsource1(i)==0) & (dsource2(i)==0) & (dsource3(i)==1) & (dsource4(i)==0)) r=s0010+n; elseif ((dsource1(i)==0) & (dsource2(i)==0) & (dsource3(i)==1) & (dsource4(i)==1)) r=s0011+n; elseif ((dsource1(i)==0) & (dsource2(i)==1) & (dsource3(i)==0) & (dsource4(i)==0)) r=s0100+n; elseif ((dsource1(i)==0) & (dsource2(i)==1) & (dsource3(i)==0) & (dsource4(i)==1)) r=s0101+n; elseif ((dsource1(i)==0) & (dsource2(i)==1) & (dsource3(i)==1) & (dsource4(i)==0)) r=s0110+n; elseif ((dsource1(i)==0) & (dsource2(i)==1) & (dsource3(i)==1) & (dsource4(i)==1)) r=s0111+n; elseif ((dsource1(i)==0) & (dsource2(i)==0) & (dsource3(i)==0) & (dsource4(i)==0)), r=s1000+n; elseif ((dsource1(i)==1) & (dsource2(i)==0) & (dsource3(i)==0) & (dsource4(i)==1)) r=s1001+n; elseif ((dsource1(i)==1) & (dsource2(i)==0) & (dsource3(i)==1) & (dsource4(i)==0)) r=s1010+n; elseif ((dsource1(i)==1) & (dsource2(i)==0) & (dsource3(i)==1) & (dsource4(i)==1)) r=s1011+n; elseif ((dsource1(i)==1) & (dsource2(i)==1) & (dsource3(i)==0) & (dsource4(i)==0)) r=s1100+n; elseif ((dsource1(i)==1) & (dsource2(i)==1) & (dsource3(i)==0) & (dsource4(i)==1)) r=s1101+n; elseif ((dsource1(i)==1) & (dsource2(i)==1) & (dsource3(i)==1) & (dsource4(i)==0)) r=s1110+n; else r=s1111+n; end; Then, the correlation metrics will be followed.

10

You might also like