# EE445S Real-Time Digital Signal Processing Lab - Homework 5 Hints

Homework #5: Assignment in Word and PDF formats.
• A Hamming window is an even symmetric pulse about the midpoint with endpoints having value 0.08. The Matlab command for the Hamming window is `hamming`. The amplitude values of the causal Hamming window of length N samples is defined as
```w[n] = 0.54 - 0.46 cos(2 pi n / (N - 1))
```
for n = 0, 1, ..., N-1.

The group delay of a Hamming pulse of length N samples is (N-1)/2 samples.

• Please keep all of the work for each problem together. Please don't put the writeup in one place and plots in another. That makes it much more difficult for the grader to grade them.

• Problem 5.1: Iterative/adaptive algorithms based on steepest descent are used in channel equalizers, echo cancellers, automatic gain control, sampling time/offset correction, etc. There is an equalizer question on problem 2.2 on midterm #2 from fall 2012 in the course reader. More on homeworks 7 and 8.

The error surface is "basically a plot of the objective as a function of the variable that is being optimized" (page 118). Examples of error surfaces are in Fig. 6.17 on page 119.

The choice of mu has an analogy with the location of a single real-valued pole in a discrete-time LTI system. If we start the pole location at zero and move it towards the unit circle, i.e. toward a value of one, then the transition from passband to stopband will become more narrow. If the pole is on the unit circle, then impulse response will be a unit step function (which oscillates at zero frequency). If the pole moves outside the unit circle, the impulse response grows without bound.

In the update equation, a positive value of mu corresponds to finding the minimum of the objective function, and a negative value of mu corresponds to finding the maximum of the objective function. When mu is zero, no update to the initial guess is made during the iterations.

• Problem 5.2: You might look at the solution for problem 1.3 on midterm #1 in spring 2012 in the course reader.

The problem statement refers to a parameter l which was set to 125 in idsys.m. Page 172 of Software Defined Radio has the following explanation: "The initial delay of 125 corresponds to half the length of the lowpass filter (0.5*fl) plus half the length of the correlator filter (0.5*M) plus half a symbol period (0.5*M), which accounts for the delay from the start of each pulse to its peak."

This problem uses 4-PAM encoding, i.e. 2 bits per symbol. The message to be sent is a string of ASCII characters. Since each ASCII character is eight bits, each ASCII character will correspond to four two-bit symbols.

In analyzing the results, it might be helpful to analyze the sequence of processing steps in the transmitter and receiver in the discrete-time frequency domain as follows.

The parameter M controls the number of samples per symbol. The duration of the discrete-time pulse shape is M samples. (More generally, it is proportionally to M.)

In continuous time, the wider the pulse, the narrower the bandwidth. For example, a rectangular pulse of T seconds in duration has a null bandwidth of 1/T in Hz or 2 pi / T in rad/s. A similar insight holds in discrete time. For example, a rectangular pulse of N samples in duration has a null bandwidth of 2 pi / N in rad/sample.

The Matlab simulation is in discrete time. The discrete-time index is implied in the Matlab code

```t= 1/M : 1/M : length(x)/M;
```
which can be rewritten as
```n = 1 : length(x);
t = n / M;
```
M is both the number of samples per symbol and the sampling rate:
```c(t) = cos(2 pi fc t)
```
Letting t = n / M,
```c[n] = cos(2 pi (fc / M) n)
```
To prevent aliasing, M > 2 fc. With fc = 20, M > 40 would prevent aliasing and modulation by c[n] and demodulation by c[n] works properly. Even when aliasing occurs for M ≤ 40, modulation by c[n] and demodulation by c[n] works properly for most values of M.

• Problem 5.3: For the mathematical analysis of these pre-processing blocks, you might look at the solutions for problem 1.4 on midterm #1 in spring 2011 and problem 1.3 on midterm #1 in spring 2010. The former concerns downconversion and hence a lowpass filter is applied after the static nonlinearity.

Assuming that PAM symbols are equally likely, PAM symbol amplitudes will have an average value of zero. After pulse shaping, the baseband signal will also have an average value of zero. After upconversion, the bandpass signal will have zero content at the carrier frequency, which makes it difficult for the receiver to locate and track the carrier frequency.

In digital communication systems, it is common to use data scramblers to break up long strings of 0 and 1 bits. The spreads the energy in those symbol periods over the transmission band instead of being concentrated at zero frequency at baseband and the carrier frequency in bandpass transmission.

At the receiver, we can emphasize the frequency content around the carrier by applying the right static nonlinearity, such as a squaring block or an absolute value block. The nonlinearity will create a harmonic (or multiple harmonics) of the carrier frequency and each harmonic will have significant power present.

In this homework problem, the receiver is trying to extract information about the carrier frequency, and hence, we would like to apply the appropriate bandpass filter after the static nonlinearity. The center frequency of the bandpass filter will vary with the nonlinearity being applied. For a squaring block, the center frequency will be twice the carrier frequency.

You must run "pulrecsig.m" to generate to suppressed carrier signal defined in MATLAB variable rsc, and then run "pllpreprocess.m". The Software Receiver Design book describes this.

The "pulrecsig.m" script generates two upconverted signals. One is a "suppressed carrier" signal `rsc`; i.e., there isn't any power at the carrier frequency. The other is called a "large carrier" signal `rlc`; i.e., there is significant power at the carrier frequency. The "pulrecsign.m" script then uses the fast Fourier transform (FFT) to locate the carrier frequency by find the peak in the magnitude spectra of the upconverted signals. The FFT method finds the carrier frequency `freqL` exactly for the large carrier signal and carrier frequency `freqS` approximately for the suppressed carrier signal (with about 3.5% error). The phase offset is computed by using the phase of the FFT at the estimated carrier frequency value. The FFT method yields large error in its phase offset estimates for both upconverted signals.

```freqL =

1000

phaseL =

-0.3717

freqS =

1.0347e+003

phaseS =

1.9694
```
If you are using the squaring block, then pllpreprocess.m will estimate twice the carrier frequency and twice the phase offset.

Last updated 03/29/14. Send comments to bevans@ece.utexas.edu