We will investigate matched filters, which play an important role in applications such as digital communication, radar, sonar, ultrasound imaging, and many others. We will consider the digital communication application, in which the objective is to transmit binary data (0's and 1's) from one location to another. Matched filters are defined by their impulse response, so the filter output is computed by a convolution operation. (Note that this is different from the low-pass, high-pass, and band-pass filters that we studied in Lab 1, which are best represented by their frequency response rather than their impulse response.) We will see how the system performance is affected by two types of degradation that occur in every real communication system: passage of the data stream through a low-pass filter channel, and additive noise. The lab will conclude with a design project in which you will diagnose the shortcomings of a given digital communication system, and then improve the performance by designing proper matched filters. Simulink, which is a graphical programming environment that runs inside Matlab, will be used extensively to simulate the digital communication systems.
An overview of the lab activities is as follows. First, you will use Simulink to investigate how fast rectangular pulses can be transmitted over an RC circuit channel. Then you will see how noise affects the system performance. This will lead you to the matched filter, and you will see the improved performance that is achieved by incorporating matched filters. Finally, you will design proper matched filters for communication over a noisy low-pass filter channel.
Download the following three Simulink files to your account on the Sun computers:
http://www.eg.bucknell.edu/~kozick/elec320/digcom_init.m http://www.eg.bucknell.edu/~kozick/elec320/digcom1.m http://www.eg.bucknell.edu/~kozick/elec320/digcom2.m
Then start matlab and type digcom_init at the Matlab prompt to initialize some variables that are used in the Simulink simulations. The variables are T, which is the width of each pulse; dt, which is the spacing between samples in the simulation (because the simulation must approximate the analog signals by sampled signals); and h, which is used later to implement the matched filter. You can enter the command type digcom_init.m at the Matlab prompt to view the contents of this file. You can change the pulse width T at any time by typing, for example, T=0.2 at the Matlab prompt before starting the Simulink simulation.
Next, type digcom1 at the Matlab prompt to load the first Simulink simulation. The simulation passes rectangular pulses of width T seconds through a first-order low-pass filter (like an RC circuit). Verify that the circuit time constant is initially set to 0.1 seconds. The impulse response of this circuit for a time constant a is h(t) = (1/a) exp(-t/a) u(t). Noise is added to the output of the RC circuit. Verify that the noise variance is 1e-14, which means that the noise is negligible for now. (The noise has a Gaussian distribution with an average value of zero. The variance is, by definition, the average of the squared noise values.)
Take a few minutes to understand the three displays that are produced by the simulation: the graph, the eye diagram, and the error meter. These three displays are important tools in digital communication, and they will be your main tools for this lab. Please take time to digest the information they are providing, and discuss them the instructor.
If T is made smaller, then the pulses are shorter, so more bits are transmitted per second. This is usually a good thing -- it means we can build a faster modem. However, if the bits are no longer communicated correctly to the receiver, then the faster modem is useless. How small can you make T before significant errors occur?
In order to change T, edit the file digcom_init.m, change the value of T, then run digcom_init in Matlab. Then start the digcom1 Simulink simulation.
What is different about the eye diagram in cases such as T=0.4, T=0.1, and T = 0.05 ? How would you expect noise to affect the performance in these cases?
Throughout this lab, please think about and answer all questions of this type in your lab notebook. In addition, please discuss your answers with the instructor before proceeding. Your answers will be needed for the lab report. In addition, plots from the simulation can be printed -- instructions will be provided in lab.
Now let us investigate how noise affects the ability to communicate the bits reliably. Noise arises from many sources, including thermal noise of the electrons in the circuits, as well as interference from other electrical devices. The noise is typically modeled by adding random numbers to the output signal from the RC circuit. Let us temporarily focus on the noise only, and eliminate the "pulse smearing" that occurs when we make T too small relative to the circuit time constant. To do this, set T=0.1 but change the RC circuit time constant to 0.01 in the "RC circuit" block. (This means that the circuit is fast enough to easily follow the pulses of width T=0.1 seconds.) Then, increase the noise variance and observe the performance. At what variance do you begin to see significant errors? What happens to the eye diagram as the noise gets stronger? Try to think of a way to process the received signal that will improve your ability to correctly recover the transmitted 0's and 1's. Is there any way to incorporate averaging of some sort to help get rid of the noise?
In order to detect a pulse with shape p(t) and duration T that arrives at the receiver, a "matched filter" is defined to have impulse response h(t) = p(T-t). Here, p(t) is the shape of the pulse after it passes through the channel. Make a sketch of p(t) for the case in which the pulse duration T is much larger than the RC circuit time constant. What would the matched filter impulse response h(t) = p(T - t) be for this case? Perform the convolution y(t) = p(t) * h(t) for this case. The result y(t) is the signal that appears at the output of the matched filter. How should y(t) be processed in order to decide if a transmitted bit is a 0 or a 1?
Consider the following questions.
In order to load a Simulink simulation that includes matched filters, first modify the file digcom_init.m so that T = 0.1. (You might want to close digcom1 and type close all at the Matlab prompt to close the open windows.) Then type digcom_init at the Matlab prompt, followed by digcom2. The simulation digcom2 includes matched filtering, as well as the method investigated in Section 1 with no matched filtering. Set the initial parameter values to T=0.1 and the RC circuit time constant to 0.01 (so pulse smearing is negligible). Again try different values for the noise variance, and check how large the noise variance can become before the matched filter method incurs significant errors. How does this compare with not doing the matched filtering? Can you see from the eye diagram that the matched filter suppresses much of the noise? Explain why the matched filter suppresses noise. Please ask me to explain how the matched filter is implemented in digcom2. Be sure to have a plan for how to implement the matched filter with discrete-time samples before we discuss the matched filter implementation in the simulation.
So far, we considered separately the effects of the noise and the pulse smearing due to the RC circuit channel. Let us now consider the more realistic situation in which both effects occur at the same time. Continue running digcom2, but change the RC circuit time constant back to 0.1, the pulse width to T=0.2, and the noise variance to 1e-1. Which is better in this case: with filtering, or without filtering?
Your job is to explain why the filter is not effective in this case, and then to design a new filter that lowers the error rate. Verify the improved performance of your design by simulation.
Hint: What is the shape of the pulse that appears at the receiver, after passing through the RC circuit channel? What should the impulse response of the matched filter be?