Midterm2 - Computer Project

Date Assigned - Friday April 24, 2009

Date Due - Monday May 04, 2009


You can work in a group of two students. It is not mandatory that you work in a group. Remember this is an exam. No piece of the MATLAB code can be shared or shown to other groups.

Discussion Page for the Project

Here is a pdf description of the project.

Use the channel coefficients $c_0 = \frac{1}{\sqrt{2}}+j\frac{1}{\sqrt{2}}, c_1 = 1+j0, c_2 = \frac{1}{2}-j\frac{1}{2}$

Project Description

Background and Motivation

The ATSC (Advanced Television Systems Committee) documents a digital television format that will replace the analog NTSC television system in the United States, Canada and Mexico. It was developed by the Advanced Television Systems Committee.
The high definition television standards defined by the ATSC produce wide screen 16:9 images up to 1920×1080 pixels in size — more than six times the display resolution of the earlier standard. ATSC also boasts theater quality audio because it uses the Dolby Digital AC-3 format to provide 5.1-channel surround sound. Numerous auxiliary datacasting services can also be provided. More information about this can be found on wikipedia.

Providing such high quality video and audio in the presence of several impairments that occur during transmission is a challenging task and this requires the use of several sophisticated digital communications techniques that we normally study in ECEN 604, ECEN 661, ECEN 646 etc. Here we will explore one aspect of this problem relevant to ECEN 661.

Problem Description

The bandwidth that is available for digital transmission is 6MHz. The ATSC digital TV system has several modes of operation. In one of the modes of operation, 4-QAM modulation is used and a root raised cosine pulse shape with an excess bandwidth of 0.35 is used as the transmit filter. Say the baseband signal that is transmitted is $s_l(t)$ which corresponds to a passband signal $s(t)$. The baseband signal is then given by

\begin{align} s_l(t) = \sum_{n} I_n \ g_T(t-nT) \end{align}

where $I_n$'s are 4-QAM symbols and $g_T(t)$ is a RRC pulse with excess bandwidth 0.35 and $1/T$ is the symbol rate.

The transmitted signal goes through a wireless channel where the received signal is the addition of reflections from buildings etc as shown in the figure


The received baseband and passband signals are $r_l(t)$ and $r(t)$, where

\begin{equation} r_l(t) = c_0 s_l(t) + c_1 s_l(t-T) + c_2 s_l(t-2T) \end{equation}

where $c_0,c_1,c_2$ are complex coefficients. This corresponds to a channel with impulse response

\begin{align} c(t) = c_0 \delta(t) + c_1 \delta(t-T) + c_2 \delta(t-2T) \end{align}

Use the channel coefficients $c_0 = \frac{1}{\sqrt{2}}+j\frac{1}{\sqrt{2}}, c_1 = 1+j0, c_2 = \frac{1}{2}-j\frac{1}{2}$. Additive white Gaussian noise with two sided power spectral density $N_0/2$ at the passband gets added. At the receiver, the received signal is first filtered using a receiver filter $g_R(t)$ which is matched to $h(t) = g_T(t) \star c(t)$. The output of this filter is sampled once every $T$ seconds to obtain the sequence $\{y_k\}$. In this project, you will build a receiver (whitening filter and equalizer) to recover $\{I_n\}$ from $\{y_k\}$.

Your task should be broken in to the following

  • First determine $T$
  • Simulate a binary input sequence and use 4-QAM modulation to create the signal $s_l(t)$. You may need to truncate the RRC pulse and choose some oversampling rate to represent these signals.
  • Simulate the sequence $r_l(t)$ in MATLAB. Add additive white Gaussian noise of appropriate variance.
  • From $r_l(t)$ compute $\{y_k\}$ using a receive filter $g_R(t)$that is matched to $h(t) = g_T(t) \star c(t)$
  • Design a whitening filter and filter the sequence $\{y_k\}$ by this whitening filter and compute the output of this filter $\{\nu_k\}$
  • Use the Viterbi algorithm to make decisions on $\{I_n\}$
  • Compare your decisions with the actual transmitted sequence and compute BER.

List of things to turn in

  • Plot the magnitude and phase of the channel frequency response in baseband. Notice that although the channel is not bandlimited, since we are transmitted only bandlimited signals, we can consider the channel to be bandlimited over this range of frequencies. What I want here is $C(f)$. However, the X-axis should be marked in Hertz and should go between -3MHz and 3 MHz. The X-axis should not be in MATLAB samples or rad/s. It must be in Hertz.
  • Clearly mention what the whitening filter is and the equivalent channel impulse response you get after the whitening filter.
  • A well documented MATLAB code.
  • Below are the package including the audio and scripts to play it.

Original mp3 file
Manual for the audio and scripts
Mp3 file format (from http://www.datavoyage.com/, only if you are interested)

By 5 PM tomorrow, you should email the grader (duqinghe at ece dot tamu dot edu) two matlab .m files. These files should be labeled

If you are working in a group of two, it is enough if you turn these files with any one of your
last names, but specify in the email to the grader which two of you worked together.

He will download these files in to a directory where he will have two .dat files
one of them will be called audio_sample.dat and the other will be called noisevariance.dat
The second file noisevariance.dat will contain a variable called noisevariance which is the
variance of the real and imaginary components of the noise that will get added at the output
of the whitening filter.

When he simply runs your lastnamenoequalization.m file this should play the sound file prior to the
Viterbi equalizer. Note that you should make hard decisions on the inputs to the Viterbi equalizer
and then play the file. When he runs the file lastnameequalization.m this should play the sound
file with equalization for the same noise variance. The noise samples do not have to be identical
in both cases, rather it is enough if the variances are the same.

[Comments, grader:] Removed.

[Question, Student] Can you say more about the noisevariance.mat file. This was not included in the file downloads. Is it another struct where we access it in our script via "noisevariance.X" or something similar? or do we just use a "load noisevariance.mat" command and then use a variable called "noisevariance" ?

[Comments, grader:] I just realized that there are something unclear in the above descriptions. Now, let us clarify the interface an please follow it.

I have two files

audio_information.mat (corresponds to audio_sample.dat) and noisevariance.mat

The format of audio_information.mat is the same as what I described in the manual. You can just use "load audio_information.mat" to load it.
noisevariance.mat inculdes only one variable, called noisevariance, which is a double-type number. You can use "load noisevariance.mat" to load it. Yes, I did not include noisevariance.mat in the package. But it is very easy to construct one by yourself.

If you have any questions regarding the audio and scripts, please post your questions on the discussion page.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License