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. 

BinaryPAMConstellation.jpg

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.

BinaryPamTrRx.jpg

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).

ZcTed.jpg

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

Mod1Counter.jpg


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.

FrameFormat.jpg

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:
  1. 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).
  2. 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.
  3. Run the Simulation.
  4. The exact number of decisions is not especially important and depends on the way your loop is synchronized.
  5. 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.
  6. Plot the interpolation interval (mu).  Include this with your report.
  7. Determine the message using your own conversion script or an ASCII table, such as the one found here.
  8. 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