EECS 700:
Symbol Timing Recovery for Binary PAM
Objective
The goal of this exercise is to correctly demodulate the noisy
received signal
in RxTRBinaryPAM.mat.
Signal Constellation
The
transmitted data points are taken from the signal space constellation
below. Each transmitted signal carries one
information bit, as shown below.
You should be
aware of the
relationship between A and the average symbol energy.

After being corrupted by noise, the received signal is demodulated by
the system below, which detects the transmitted signal space points and
outputs the estimated values.
Design Exercise
Part I: Binary PAM Detector with Decision Directed Symbol Timing
Recovery
Your design should begin with your final result from the BinaryPAM Exercise.
Using blocks from the SIMULINK Block Library, the Signal Processing
Blockset, and the Communications Blockset, you must add an interpolator, a
timing error detector (TED), a loop filter, a modulo-1 decrementing
counter, and an enabled sample-and-hold device. These new
components are highlighted in red and blue in the diagram below.

Design your detector to be compatible with a binary PAM transmitter
with the
following specifications:
Number
of samples per symbol: 8 (nominal)
Symbol clock
offset:
UNKNOWN
Pulse
shape:
square-root raised cosine (SRRC) with roll-off = 0.5 and Lp = 8 symbols
Average symbol
energy:
1 Joule
For the interpolator, implement one of the Farrow interpolator
structures shown in Figure 8.4.16 in the book (I implemented the
piecewise parabolic with alpha = 1/2). For the TED, I recommend
that you implement the zero-crossing TED (ZCTED).
This is described in Equation (8.37) in the book and is shown in
block-diagram form below (including the enable input).

The contents of the modulo-1 decrementing counter are shown below.

Here is the Enabled Write To
Workspace block. As for the hold
block, use Simulink -> Ports and Subsystems -> Enabled Subsystem
(you do not need to modify this block, use it "as is").
In order to acquire the symbol timing offset, we will use a training
sequence, followed by a sync pattern, followed by the transmitted
message, as shown below.

The training sequence is 0 1 0 1 0 1 ... 0 1 and is 128 bits
long (don't spend any effort trying to recover the entire training
sequence, it does not carry any information, its sole purpose is to
help your timing recovery loop acquire the signal). The 8-bit
sync pattern is 0 0 0 0 0 0 0 0.
Part II: Detecting an
Unknown Data Set
Here are the steps for the next
part of the exercise:
- Connect the input of your detector to a From File
block and set the filename to RxTRBinaryPAM.mat (If you have problems with that
file, here is a ZIP version).
- Set the simulation
parameters to:
Start
Time: 0.0
Stop Time:
(16+1+8+(128+8+1050))*8
Solver
options: Type: Fixed-step, Solver: discrete
(no continuous states)
Fixed
step size: 1
Suggested values for the
loop bandwidth and damping coefficient are 0.01 (normalized to the
symbol rate) and 1.0, respectively.
- Run the Simulation.
- The exact number of
decisions is not especially important and depends on the way your loop
is synchronized.
- To find the data
symbols,
look for the 8-bit sync pattern. Once
the sync pattern is found, the following 1050 symbols
correspond to 150 7-bit ASCII characters.
- Plot the interpolation
interval (mu). Include this with
your report.
- Determine the message
using your own conversion script or an ASCII
table, such as the one found here.
- Submit your answer AND
your detector model file (.mdl SIMULINK file) to the class TA via the
Digital Drop Box in Blackboard (you may submit via e-mail only if you
have
problems with Blackboard). You should organize your files into a
folder, and then ZIP the folder and submit the ZIP file. The
naming
convention for the ZIP file is "Lab#_YourLastName.zip."
Back to the Lab
Exercises Page