LABORATORY 6:

Implementation of Digital FIR filter on TMS320C6711/TMS320C6713 DSP Starter Kits

EEE 182: DIGITAL SIGNAL PROCESSING LABORATORY

Department of Electrical & Electronic Engineering

College of Engineering & Computer Science

California State University, Sacramento

SPRING 2016

EEE 182LABORATORY 4

Overview of practical DSP applications in Communication Engineering

The TMS320C6711/TMS320C6713 DSP Starter Kits provide system design engineers with an easy-to-use, cost-effective way to take their high-performance DSP designs from concept to production. As was extensively discussed in the previous chapter, and also in Appendix E of this book, the TMS320C6711 DSK is powerful enough to use for fast development of networking, communications, imaging and other applications.

The TMS320 series DSKs have the capability of real-time signal processing operations, the most important of which is digital filtering. Filtering is one of the most widely used applications in Communication Engineering [1]. Some of the practical applications of filtering are listed below:

  • Demodulation of AM and FM signals: Low pass filtering is utilized to recover baseband audio or video signal from the modulated signal.
  • Stereo generation: In stereo systems, the basic audio signal is separated into low frequency and high frequency components using filter banks, amplified, and then synthesized to generate the stereo signal
  • Filtering of noise: Communications signals such as audio and video signals are corrupted by various sources of noise during propagation through communication channels. Filters are very useful in signal restoration and signal enhancement.

In this laboratory, students will design, simulate and implement important filtering applications, using the ‘C6711 DSK. The laboratory will cover a wide spectrum of software and hardware tools, including MATLAB to design filters, programming the ‘C6711 DSK to implement the filters, and finally, using signal sources and measuring equipment to test the overall applications.

Filtering application to extract sinusoidal signal from a combination of two sinusoidal signals

In many communication applications, including wireless and cellular, it is often required to separate two baseband signals, s1 (t) and s2 (t), with different frequencies, f1Hz and f2 Hz respectively. The essential filtering process is shown in Figure 1, where a band stop filter can be used to filter out the signal s1(t) or s2(t).

The procedure to implement the system, shown in Figure 1 below, is divided into six experimental steps, with each step being very important to the overall application.

Figure 1. Schematic of signal recovery

Step 1: Design of digital band-stop filter using MATLAB

There are several ways to design digital filters using MATLAB, which were discussed in Chapter 5. However, we will focus on the method that is available even on the simplest MATLAB Student version. Real-time digital filters can be implemented using the following protocol:

  • Given a desired analog frequency response, Hd (j), convert the latter response to the corresponding digital frequency response, Hd (ej), using the transformation = T, where T (sec.) is the sampling interval. Note that T = 1/fs, where fsis the sampling frequency (Hz). The default sampling rate in the DSK is 8 KHz.
  • In the present application, we have to design a band stop filter with a center frequency of f1Hz, and a bandwidth of f Hz. Hence the cutoff frequencies of the desired band stop filter are fl= f1f/2(lower cutoff frequency), and fu= f1f/2 (upper cutoff frequency).
  • Obtain the desired Nth order FIR digital filter coefficients h(n), 0 nN using MATLAB. The various MATLAB commands for FIR Digital Filter Design are given in the Section 5.4.1 of this book. Examples of these commands are fir1, fir2andRemezin which the appropriate windowing function should also be specified. A sample program using the fir1 command is given below:

% MATLAB Program to calculate the FIR band stop filter coefficients

N = 50; specifies the filter order (50)

fs = 8000; specifies the sampling frequency (8 KHz)

f =[fl fh ]; specifies the analog filter cutoff frequency vector in Hz.

wn=2*pi*f/fs; transforms the analog cutoff frequency vector, fHz, to ;digital cutoff frequency vector, wn, rad.

wn=wn/pi; normalizes the digital cutoff frequency vector (MATLAB ;requirement

h = fir1(N,wn, ‘stop’); calculates the band stop FIR filter coefficients

Note: If not window function is specified, as in the program above, then MATLAB uses the Hamming window.

Once the required filter coefficients, h(n), 0 nN, are obtained, a coefficient file, bandstop.cof is created as shown below:

/*bandstop.cof FIR bandstop filter coefficients file*/

#define N 51 /*length of filter*/

short hbs[N]=

{ h(0) ,h(1) ,………………………h(10),

h(11) ,h(12) ,………………………h(20),

h(21), h(22), ………………………h(30),

h(31), h(32), ………………………h(40),

h(41), h(32), ………………………h(50)

};

Step 2: C program to implement bandstop filter on the ‘6711 DSK

The C program basically executes the filter operation, defined by the following convolution equation, which was discussed initially in Chapter 2.

(8.1)

The C language filter program fir.c is given below. Some of the important features of the program are as follows:

  • The program fir.c is a very generic program, and can be utilized for the implementation of any kind of FIR filter, as defined by the operation in equation (8.1). It is only the coefficient file, bandstop.cof, whichhas to be changed according to the type of filter. Ultimately, it is only the numbers within the coefficient file that govern the nature of the filter, which is one of the remarkable advantages in the implementation of digital systems.
  • Hence the same program fir.c can be utilized for the other two applications in this laboratory, taking care to include the appropriate coefficient file for the application.

//Fir.c FIR filter. Include coefficient file with length N

#include "bandstop.cof" //coefficient file

int yn = 0; //initialize filter's output

short dly[N]; //delay samples

interrupt void c_int11() //ISR

{

short i;

dly[0] = input_sample(); //new input @ beginning of buffer

yn = 0; //initialize filter's output

for (i = 0; i< N; i++)

yn += (h[i] * dly[i]); //y(n) += h(i)* x(n-i)

for (i = N-1; i > 0; i--) //starting @ end of buffer

dly[i] = dly[i-1]; //update delays with data move

output_sample(yn > 15); //scale output filter

return;

}

void main()

{

comm_intr(); //init DSK, codec, McBSP

while(1); //infinite loop

}

Step 3: Setting up the 6711 DSK for filter implementation

The steps for this exercise are given in detail in Section 7.2. However, the main instructions are again summarized below:

oInitial Setting up of the Equipment
  • Connect the parallel printer port cable between the parallel port on the DSK board (J2) and the parallel printer port on the back of the computer.
  • Connect the 5V power supply to the power connector next to the parallel port on the DSK board (J4). You should see 3 LEDs blink next to some dip switches.

Once the DSK board is connected to your PC and the power supply has been connected, you can start CCS.

  • To do this, click on Start, go to Program, and then go to Texas Instruments then Code Composer Studio DSK Tools 2 ('C6000).
  • Select CCStudio or from Desktop click on CCS-DSK 2 ('C6000).
oCreating a new project file
  • In CCS, select Project and then New. A window named Project Creation will appear.
  • In the field labeled Project Name, enter filtering_twosignals. In the field Location, click on the on the right side of the field and browse to the folder c:\ti\myprojects\ filtering_twosignals \
  • In the field Project Type, verify that Executable (.out) is selected, and in the field Target, verify that TMS320C67XX is selected.
  • Finally, click on Finish. CCS has now created a project file filtering_twosignals.pjt, which will be used to build an executable program. This file is stored in the folder c:\ti\myprojects\ filtering_twosignals. The .pjt file stores project information on build options, source filenames, and dependencies.
oLoading the support files

Add the following support files to the project c:\ti\myprojects\ filtering_twosignals. Details on the functions of these support files are given in Section 7.2. Note that you need to scan all dependencies after all files have been added including source files in order to include the header files. Header files cannot be added to a project.

  • C6xdsk.cmd
  • C6x.h
  • C6xdskinit.c
  • Vectors_11.asm
  • C6xdsk.h
  • C6xinterrupts.h
  • C6xdskinit.h
  • rts6701.lib
oLoading the program files

Add the C source files Fir.c and the filter coefficient file bandstop.cof to theproject c:\ti\myprojects\ filtering_twosignals

Step 4: Hardware setup for the filtering of two sinusoidal signals

  • Generate a mixed signal (using a BNC TEE junction) consisting of two sinusoidal signals of frequency 1.5 KHz and 3 KHz, both with amplitude of 0.5 Volts, as shown in Figure 8.2 (Note that this step will require two HP 3324A signal generators). Verify the mixed output signal, both in time and frequency domains, using the HP 35665A Dynamic Signal Analyzer.
  • Connect the mixed signal output to the input of the ‘C6711 DSK, and connect the output of the ‘C6711 DSK to Channel 1 of the HP 35665A Dynamic Signal Analyzer, as shown in Figure 2.

Figure 2. Experimental set up for filter implementation

The experimental setup is complete and measurements can be started.

Step 5: Running the DSK and making measurements

  • Follows the steps 1-3, to implement a digital bandstop filter on the ‘C6711 DSK. The bandstop filter should have a center frequency of 1.5 kHz, and bandwidth of 100 Hz.
  • Go to Project pull-down menu in the CCS window, and then select Build (or press the button with three red down arrows on the top toolbar in the CCS window). A new sub-window will appear on the bottom of the CCS window. When building is complete, you should see the following message in the new sub-window:

Build Complete,

0 Errors, 0 Warnings, 0 Remarks

The following executable file will be created:

c:\ti\myprojects\filtering_twosignals\Debug \filtering_twosignals.out

  • Click on the Debug pull-down menu and select Reset CPU.
  • Then, to load the program onto the DSK, click on the File pull-down menu and select Load Program.
  • In the new window that appears, double-click on the folder Debug, select the filtering_twosignals.out file and click on Open.
  • In CCS, select the Debug pull down menu and then select Run, or just simply click on the top running man on the left side toolbar. You should now see the filtered output with a predominant peak at 3 kHz on the Signal Analyzer. However, there may be a small component at 1.5 kHz, hence measure the power level (dBm) at both 1.5 kHz and 3 kHz.

Step 6: Design of DSK to extract the signal with frequency of 1.5 KHz

Repeat the procedure in the Step 2 above and implement a band stop filter centered at 3 kHz, and a bandwidth of 100 Hz. Observe the filtered output on the HP 35665A Dynamic Signal Analyzer, and check that there is a significant peak at 1.5 KHz. However, measure the power level (dBm) at both 1.5 kHz and 3 kHz.