Вы находитесь на странице: 1из 52

DSP HOW-TO GUIDE

EC2306 DIGITAL SIGNAL


PROCESSING LAB MANUAL FOR
TMS320C6745 DSP

Contents at a Glance
EC2306 DIGITAL SIGNAL PROCESSING LAB SYLLABUS........3
1. STUDY OF VARIOUS ADDRESSING MODES OF DSP
USING SIMPLE PROGRAMMING EXAMPLES ......................4
2. CONVOLUTION ............................................................9
a. LINEAR CONVOLUTION.................................................9
b. CIRCULAR CONVOLUTION .......................................... 15
3. SAMPLING OF INPUT AND DISPLAY ............................ 23
4. WAVEFORM GENERATION ......................................... 29
a. SINE WAVEFORM GENERATION.................................. 29
5. IMPLEMENTATION OF FIR FILTER ............................... 36
a. FIR LOW PASS FILTER ................................................. 36
b. FIR HIGH PASS FILTER ................................................. 43

Join the Technical Community Today!


http://www.pantechsolutions.net

EC2306 DIGITAL SIGNAL PROCESSING LAB SYLLABUS


EC2306 DIGITAL SIGNAL PROCESSING LAB L T P C 0 0 3 2
USING TMS320C5X/ TMS320C67XX/ ADSP218X/219X/
BS531/532/561
1. Study of various addressing modes of DSP using simple
programming examples
2. Implementation of Linear and Circular Convolution
3. Sampling of input signal and display
4. Waveform generation
5. Implementation of FIR filter

USING MATLAB
1. Generation of Signals
2. Linear and circular convolution of two sequences
3. Sampling and effect of aliasing
4. Design of FIR filters
5. Design of IIR filters
6. Calculation of FFT of a signal
7. Decimation by polyphase decomposition.
TOTAL= 45 PERIODS

Join the Technical Community Today!


http://www.pantechsolutions.net

1. STUDY OF VARIOUS ADDRESSING MODES OF DSP


USING SIMPLE PROGRAMMING EXAMPLES
Aim
To Study the various addressing mode of TMS320C6745 DSP
processor.
Addressing Modes
The addressing modes on the DSP are linear, circular using
BK0, and circular using BK1. The addressing mode is specified by
the addressing mode register (AMR).
All registers can perform linear addressing. Only eight
registers can perform circular addressing: A4-A7 are used by the
.D1 unit, and B4-B7 are used by the .D2 unit. No other units can
perform circular addressing. LDB(U)/LDH(U)/LDW, STB/STH/STW,
LDNDW,
LDNW,
STNDW,
STNW,
LDDW,
STDW,
ADDAB/ADDAH/ADDAW/ADDAD, and SUBAB/SUBAH/SUBAW
instructions all use AMR to determine what type of address
calculations are performed for these registers. There is no SUBAD
instruction.

Join the Technical Community Today!


http://www.pantechsolutions.net

Addressing Mode Register (AMR)


For each of the eight registers (A4-A7, B4-B7) that can
perform linear or circular addressing, the addressing mode
register (AMR) specifies the addressing mode. A 2-bit field for
each register selects the address modification mode: linear (the
default) or circular mode. With circular addressing, the field also
specifies which BK (block size) field to use for a circular buffer. The
mode select & block size fields are choose by writing values to
AMR. The register details about AMR is availble at TMS320C674x
DSP CPU and Instruction Set Reference Guide.
Linear Addressing Mode
LD and ST Instructions
For load and store instructions, linear mode simply shifts
the offsetR/cst operand to the left by 3, 2, 1, or 0 for doubleword,
word, halfword, or byte access, respectively; and then performs
an add or a subtract to baseR (depending on the operation
specified). The LDNDW and STNDW instructions also support
nonscaled offsets. In nonscaled mode, the offsetR/cst is not
shifted before adding or subtracting from the baseR.

Join the Technical Community Today!


http://www.pantechsolutions.net

For the preincrement, predecrement, positive offset, and negative


offset address generation options, the result of the calculation is
the address to be accessed in memory. For postincrement or
postdecrement addressing, the value of baseR before the addition
or subtraction is the address to be accessed from memory.
ADDA and SUBA Instructions
For integer addition and subtraction instructions, linear
mode simply shifts the src1/cst operand to the left by 3, 2, 1, or 0
for doubleword, word, halfword, or byte data sizes, respectively,
and then performs the add or subtract specified.
Circular Addressing Mode
The BK0 and BK1 fields in AMR specify the block sizes for circular
addressing
LD and ST Instructions
As with linear address arithmetic, offsetR/cst is shifted
left by 3, 2, 1, or 0 according to the data size, and is then added to
or subtracted from baseR to produce the final address. Circular
addressing modifies this slightly by only allowing bits N through 0
of the result to be updated, leaving bits 31 through N + 1
unchanged after address arithmetic.
Join the Technical Community Today!
http://www.pantechsolutions.net

The resulting address is bounded to 2(N + 1) range, regardless of


the size of the offsetR/cst.
The circular buffer size in AMR is not scaled; for example, a blocksize of 8 is 8 bytes, not 8 times the data size (byte, halfword,
word). So, to perform circular addressing on an array of 8 words, a
size of 32 should be specified, or N = 4. Example 3-4 shows an
LDW performed with register A4 in circular mode and BK0 = 4, so
the buffer size is 32 bytes, 16 halfwords, or 8 words. The value in
AMR for this example is 0004 0001h

ADDA and SUBA Instructions


As with linear address arithmetic, offsetR/cst is shifted
left by 3, 2, 1, or 0 according to the data size, and is then added to
or subtracted from baseR to produce the final address. Circular
addressing modifies this slightly by only allowing bits N through 0
of the result to be updated, leaving bits 31 through N + 1
Join the Technical Community Today!
http://www.pantechsolutions.net

unchanged after address arithmetic. The resulting address is


bounded to 2(N + 1) range, regardless of the size of the
offsetR/cst.
The circular buffer size in AMR is not scaled; for example, a block
size of 8 is 8 bytes, not 8 times the data size (byte, halfword,
word). So, to perform circular addressing on an array of 8 words, a
size of 32 should be specified, or N = 4.
Example shows an ADDAH performed with register A4 in circular
mode and BK0 = 4, so the buffer size is 32 bytes, 16 halfwords, or
8 words. The value in AMR for this example is 0004 0001h.

Result
Thus, the various addressing mode of DSP processor
TMS320C6745 was studied.
Join the Technical Community Today!
http://www.pantechsolutions.net

2. CONVOLUTION
a. LINEAR CONVOLUTION
Aim
To perform the Linear Convolution of two given discrete
sequence in TMS320C6745 KIT.
Requirements
CCS v4
TMS320C6745 KIT
USB Cable
5V Adapter
Theory
Convolution is a formal mathematical operation, just as
multiplication, addition, and integration. Addition takes two
numbers and produces a third number, while convolution takes
two signals and produces a third signal. Convolution is used in the
mathematics of many fields, such as probability and statistics. In
linear systems, convolution is used to describe the relationship
between three signals of interest: the input signal, the impulse
response, and the output signal.

Join the Technical Community Today!


http://www.pantechsolutions.net

If the input and impulse response of a system are x[n] and h[n]
respectively, the convolution is given by the expression,
x[n] * h[n] = x[k] h[n-k]
Where k ranges between - and
If,
x(n) is a M- point sequence
h(n) is a N point sequence
then, y(n) is a (M+N-1) point sequence.
In this equation, x(k), h(n-k) and y(n) represent the input to
and output from the system at time n. Here we could see that one
of the inputs is shifted in time by a value every time it is multiplied
with the other input signal. Linear Convolution is quite often used
as a method of implementing filters of various types.
Procedure
1. Open Code Composer Studio v4.
2. In Workspace Launcher.
a. BROWSE Select the project location and make one new
folder, MAKE NEW FOLDER Type the Workspace name, OK
OK.
3. FILE NEW CCS PROJECT
a. Project name: Type your project name.
b. Tick use default location. NEXT
Join the Technical Community Today!
http://www.pantechsolutions.net

c. Project type: C6000.


d. Tick Debug and Release. NEXT NEXT.
e. Output type: Executable.
f. Device Variant: generic C67XX Device.
g. Device Endianness : little
h. Code Generation Tools: TI v6.1.12.
i. Run time support library: automatic.
j. Target content: none.
FINISH
4. FILE NEW SOURCE FILE
a. Source file: Type your projectname.c(.c extension is must).
b. Type the program.
c. FILE SAVE.
5. Paste the following board library files in workspace location.
a. Common folder (contains header files)
b. Gel folder (contains gel file)
c. Library folder(contains library files)
6. Paste the Linker file in the project location.(linker file is
available in cd)
Note: Those folders and linker file are availble at cd.
7. PROJECT PROPERTIES C/C++ BUILD BASIC OPTION
a. Target processor version(--silicon version, -mv) : 6400+
OK.
Join the Technical Community Today!
http://www.pantechsolutions.net

b. IN C/C++ BUILD, INCLUDE OPTIONS (Add dir to #include


search path(--include_path,-I)) select this add icon and add
the following three path by indivdually
"${Diag}../../common/header"
"${XDAIS_CG_ROOT}/packages/ti/xdais"
"${C6000_CSL_CG_ROOT}/include"
8. FILE NEW TARGET CONFIGURATION FILE
a. file name: projectname. ccxml (.ccxml extension is must)
b. Connection: Texas Instrument XDS100 v1 USB Emulator.
c. Device: TMS320C6745. SAVE TARTGET CONFIGURATION
C674X_0 BROWSE, browse the workspace location, open
the gel folder and select the GEL file. OPEN SAVE.
9. In C/C++ Project window, Right click the project REBUILD
PROJECT.
10. Connections :
a. Connect the usb cable, PC to KIT.
b. Connect the 5v adapter.
c. Power on the kit.
11. TARGET DEBUG ACTIVE PROJECT.
12. VIEW MEMORY.
13. In right side, memory window will open. Type the adrress and
give the input at particular location.
Join the Technical Community Today!
http://www.pantechsolutions.net

Give the input as follow:


X(n)
0xC0001000 00000001
0xC0001004 00000001
0xC0001008 00000001
0xC000100C 00000001

h(n)
0xC0001030 00000001
0xC0001034 00000001
0xC0001038 00000001
0xC000103C 00000001

14. TARGET RUN.


15. TARGET HALT.
See the Output at Particular location:
Example :
0xC0001050 00000001
0xC0001054 00000002
0xC0001058 - 00000003
0xC000105C - 00000004
0xC0001060 - 00000003
0xC0001064 - 00000002
0xC0001068 00000001

Program
#include<stdio.h>
#define xn 4
#define hn 4
Join the Technical Community Today!
http://www.pantechsolutions.net

void main()
{
int *x,*h,*y,i,n,k;
x = (int *)0xc0001000;
h = (int *)0xc0001030;
y = (int *)0xc0001050;

for(i=0;i<(xn+hn-1);i++)
{
y[i]=0;
x[xn+i]=0;
h[hn+i]=0;
}

for(n=0;n<(xn+hn-1);n++)
{
for(k=0;k<=n;k++)
y[n] = (y[n]) + ((x[k])*(h[n-k]));
}
while(1);
}
Join the Technical Community Today!
http://www.pantechsolutions.net

Result
Thus, the Linear Convolution of two given discrete sequence
has performed and the result is stored at memory
location(0xC0001050).

b. CIRCULAR CONVOLUTION
Aim
To perform the Circular Convolution of two given discrete
sequence in TMS320C6745 KIT.
Requirements
CCS v4
TMS320C6745 KIT
USB Cable
5V Adapter
Theory
The circular convolution, also known as cyclic convolution. A
convolution operation that contains a circular shift is called
circular convolution. Circular convolution of two sequences x1[n]
and x2[n] is given by
x1[n]*x2[n] = k x1[k] x2((n-k))N, 0 n N-1
Join the Technical Community Today!
http://www.pantechsolutions.net

where k ranges between 0 and N-1


One of the methods to find circular convolution....
In circular convolution the length of the output sequence will be
equal to length of the input sequence ie. length(y)=length(x)
So first perform linear convolution using any of the methods u
find easier.
If m is the length of 'x' and n is the length of the 'h' then length of
'yl' from linear conv is m+n-1.
Since length of output from circular conv is m, we will bring the
last n-1 terms from 'yl' and add them to first n-1 terms.
So the obtained output is circularly convoluted output.
For eg. if x= 1, 2, 3, 4 and h= 2,3,1
lin conv op ie. yl= 2,7,13,19,15,4
bring last two (n-1) terms to first two terms
so circularly convluted op is yc= 17, 11,13,19

Join the Technical Community Today!


http://www.pantechsolutions.net

Procedure
1. Open Code Composer Studio v4 .
2. In WorkSpace Launcher.
BROWSE Select the project location and make one new folder,
MAKE NEW FOLDER Type the Workspace name, OK OK.
2. FILE NEW CCS PROJECT
a.Project name: Type your project name.
b.Tick use default location. NEXT
c.Project type: C6000.
d.Tick Debug And Release. NEXT NEXT.
e.Output type: Executable.
f.Device Variant : generic C67XX Device.
g.Device Endianness : little
h.Code Generation Tools: TI v6.1.12.
i.Run time support library: automatic.
j.Target content: none.

FINISH

4.FILE NEW SOURCE FILE


Join the Technical Community Today!
http://www.pantechsolutions.net

A.Source file: Type your projectname.c( .c extension is must ).


b.Type the program.
c.FILE SAVE.
5. Paste the following board library files in workspace location.
a.Common folder (contains header files)
b.Gel folder (contains gel file)
c.Library folder(contains library files)
6. Paste the Linker file in the project location.(linker file is
available in cd)
Note: Those folders and linker file are availble at cd.
7. PROJECT PROPERTIES C/C++ BUILD BASIC OPTION
a.Target processor version(--silicon version, -mv) : 6400+
OK.
b. IN C/C++ BUILD, INCLUDE OPTIONS (Add dir to #include
search path(--include_path,-I)) select this add icon and add
the following three path by indivdually
"${Diag}../../common/header"
"${XDAIS_CG_ROOT}/packages/ti/xdais"
"${C6000_CSL_CG_ROOT}/include"
Join the Technical Community Today!
http://www.pantechsolutions.net

8. FILE NEW TARGET CONFIGURATION FILE


a.file name: projectname. ccxml (.ccxml extension is must)
b.Connection: Texas Instrument XDS100 v1 USB Emulator.
c.Device: TMS320C6745. SAVE TARTGET
CONFIGURATION C674X_0 BROWSE, browse the workspace
location, open the gel folder and select the GEL file. OPEN
SAVE.
9. In C/C++ Project window, Right click the project REBUILD
PROJECT.
10. Connections :
a.Connect the usb cable, PC to TMS320C6745 KIT.
b.Connect the 5v adapter.
c.Power on the kit.
11. TARGET DEBUG ACTIVE PROJECT.
12. VIEW MEMORY
13. In right side, memory window will open. Type the adrress and
give the input at particular location.
Give the input as follow:

Join the Technical Community Today!


http://www.pantechsolutions.net

X(n)
0xC0001000 00000001
0xC0001004 00000001
0xC0001008 00000001
0xC000100C 00000001

h(n)
0xC0001030 00000001
0xC0001034 00000001
0xC0001038 00000001
0xC000103C 00000001

14. TARGET RUN.


15. TARGET HALT.
See the Output at Particular location:
Example :
0xC0001050 00000004
0xC0001054 00000004
0xC0001058 - 00000004
0xC000105C - 00000004

Program
#include <stdio.h>
int rot(int *x);
void main()
{

Join the Technical Community Today!


http://www.pantechsolutions.net

int *in1,*in2,*out,*temp,i,sum=0,j;
in1 = (int *)0xc0001000;
in2 = (int *)0xc0001030;
out = (int *)0xc0001050;
temp = (int *)0xc0002000;
for(i=0;i<4;i++)
{
if(i == 1)
temp[i+2] = in1[i];
else if(i == 3)
temp[i-2] = in1[i];
else
temp[i] = in1[i];
}
for(i=0;i<4;i++)
{
sum = 0;
for(j=0;j<4;j++)
Join the Technical Community Today!
http://www.pantechsolutions.net

{
sum+=(in2[j] * temp[j]);
}
out[i] = sum;
rot(temp);
}
while(1);
}
rot(int *x)
{
int t;
t = x[0];
x[0] = x[3];
x[3] = x[2];
x[2] = x[1];
x[1] = t;
}
Join the Technical Community Today!
http://www.pantechsolutions.net

Result
Thus, the Circular Convolution of two given discrete sequence
has performed and the result is stored at memory
location(0xC0001050).

3. SAMPLING OF INPUT AND DISPLAY


Aim
To Sample the input sinewave waveform using TMS320C6745
DSP KIT.
Requirements
CCS v4
TMS320C6745 KIT
USB Cable
5V Adapter
Theory
Sampling is the process of converting a signal (for example, a
function of continuous time or space) into a numeric sequence (a
function of discrete time or space) at the regular time interval.
Join the Technical Community Today!
http://www.pantechsolutions.net

The sampling frequency should be greater than or equal to


2*input frequency, and the frequency should be bounded..
i,e.,

fs = 2 * finput

where fs= sampling frequency. To avoid alias, always our input


frequency is lesser than the half the sampling frequency. The
input Sinusoidal signal is sampled through ADC (MCP3202) at
regular interval. Then the generated sample is stored to to display
in CCS Graph Tool.

Procedure
1. Open Code Composer Studio v4 .
2. In WorkSpace Launcher.
BROWSE Select the project location and make one new
folder, MAKE NEW FOLDER Type the Workspace name, OK
OK.
3. FILE NEW CCS PROJECT
a.Project name: Type your project name.
b.Tick use default location. NEXT
c.Project type: C6000.
Join the Technical Community Today!
http://www.pantechsolutions.net

d.Tick Debug And Release. NEXT NEXT.


e.Output type: Executable.
f.Device Variant : generic C67XX Device.
g.Device Endianness : little
h.Code Generation Tools: TI v6.1.12.
i.Run time support library: automatic.
j.Target content: none.

FINISH

4.FILE NEW SOURCE FILE


a.Source file: Type your projectname.c( .c extension is must ).
b.Type the program.
c.FILE SAVE.
5. Paste the following board library files in workspace location.
a.Common folder (contains header files)
b.Gel folder (contains gel file)
c.Library folder(contains library files)
6. Paste the Linker file and spiadc.h in the project location.(linker
file is available in cd)
Join the Technical Community Today!
http://www.pantechsolutions.net

Note: Those folders and linker file are availble at cd.

7. PROJECT PROPERTIES C/C++ BUILD BASIC OPTION


a.Target processor version(--silicon version, -mv) : 6400+
OK.
b. IN C/C++ BUILD, INCLUDE OPTIONS (Add dir to
#include search path(--include_path,-I)) select this add icon
and add the following three path by indivdually
"${Diag}../../common/header"
"${XDAIS_CG_ROOT}/packages/ti/xdais"
"${C6000_CSL_CG_ROOT}/include"

8. FILE NEW TARGET CONFIGURATION FILE


a.file name: projectname. ccxml (.ccxml extension is must)
b.Connection: Texas Instrument XDS100 v1 USB Emulator.
c.Device: TMS320C6745. SAVE TARTGET
CONFIGURATION C674X_0 BROWSE, browse the workspace
location, open the gel folder and select the GEL file. OPEN
SAVE.

Join the Technical Community Today!


http://www.pantechsolutions.net

9. In C/C++ Project window, Right click the project REBUILD


PROJECT.
10. Connections :
a.Connect the usb cable, PC to TMS320C6745 KIT.
b.Connect the 5v adapter.
c.Power on the kit.
11. TARGET DEBUG ACTIVE PROJECT.
Note: Connect the Function generator probe positive terminal to
Adc input pin and negative terminal to ground. Set the frequency
as 1Khz & Amplitude as 3V.
12. TARGET RUN.(wait few seconds read samples)
13. TARGET HALT.
14. TOOLS GRAPH SINGLE TIME
a.Acquirstion buffer size : 500
b.Index increment : 1
c.Start address : adc_value.
d.Display data size : 500 Ok.

Join the Technical Community Today!


http://www.pantechsolutions.net

Program
#include "stdio.h"
#include "c6745.h"
#include "spiadc.h"
signed int adc_value[1000];
void main( void )
{
static Uint8 spiadcbuf[3];
unsigned int j;
short *out,i=0;
C6745_init( );
out = (short *)0xc0000000;
spiadc_init();
for(i=0;i<500;i++)
{
spiadcbuf[0] = 0x01; // setup command
spiadcbuf[1] = 0xBF;
spiadcbuf[2] = 0x00;
spiadc_cycle(spiadcbuf, 3); // Execute spiadc read cycle
adc_value[i] = ((spiadcbuf[1]&0x0f) << 8)| spiadcbuf[2];
//for(j=0;j<100000;j++);
}
Join the Technical Community Today!
http://www.pantechsolutions.net

printf("ALL PROCESSED");
while(1);
}

Result
Thus, the Sampling of input sine waveform was sampled and
Displayed the sampled signal in Graph.

4. WAVEFORM GENERATION
a. SINE WAVEFORM GENERATION
Aim
To Generate a sinewave form using TMS320C6745 DSP KIT.
Requirements
CCS v4
TMS320C6745 KIT
USB Cable
5V Adapter

Join the Technical Community Today!


http://www.pantechsolutions.net

Theory
The simplest method to generate Sine wave is to use
Trignometric Sin function. The Sin function will generate the
samples from our specific parameter like sampling frequency,
number of samples, input frequency. In this project, generating
the correct sample is important. The library function "sin()" does
all of the work.

Its most basic form as a function of time (t) is:

where:
A, the amplitude, is the peak deviation of the function from its
center position.
, the angular frequency, specifies how many oscillations occur in
a unit time interval, in radians per second
, the phase, specifies where in its cycle the oscillation begins at t
= 0.
Join the Technical Community Today!
http://www.pantechsolutions.net

When the phase is non-zero, the entire waveform appears to be


shifted in time by the amount / seconds. A negative value
represents a delay, and a positive value represents an advance.
Procedure
1. Open Code Composer Studio v4 .
2. In WorkSpace Launcher.
BROWSE Select the project location and make one new
folder, MAKE NEW FOLDER Type the Workspace name, OK
OK.
4. FILE NEW CCS PROJECT
a.Project name: Type your project name.
b.Tick use default location. NEXT
c.Project type: C6000.
d.Tick Debug And Release. NEXT NEXT.
e.Output type: Executable.
f.Device Variant : generic C67XX Device.
g.Device Endianness : little
Join the Technical Community Today!
http://www.pantechsolutions.net

h.Code Generation Tools: TI v6.1.12.


i.Run time support library: automatic.
j.Target content: none.

FINISH

4.FILE NEW SOURCE FILE


a.Source file: Type your projectname.c( .c extension is must ).
b.Type the program.
c.FILE SAVE.
5. Paste the following board library files in workspace location.
a.Common folder (contains header files)
b.Gel folder (contains gel file)
c.Library folder(contains library files)
6. Paste the Linker file in the project location.(linker file is
available in cd)
Note: Those folders and linker file are availble at cd.
7. PROJECT PROPERTIES C/C++ BUILD BASIC OPTION
a.Target processor version(--silicon version, -mv) : 6400+
OK.
Join the Technical Community Today!
http://www.pantechsolutions.net

b. IN C/C++ BUILD, INCLUDE OPTIONS (Add dir to


#include search path(--include_path,-I)) select this add icon
and add the following three path by indivdually
"${Diag}../../common/header"
"${XDAIS_CG_ROOT}/packages/ti/xdais"
"${C6000_CSL_CG_ROOT}/include"
8. FILE NEW TARGET CONFIGURATION FILE
a.file name: projectname. ccxml (.ccxml extension is must)
b.Connection: Texas Instrument XDS100 v1 USB Emulator.
c.Device: TMS320C6745. SAVE TARTGET
CONFIGURATION C674X_0 BROWSE, browse the workspace
location, open the gel folder and select the GEL file. OPEN
SAVE.
9. In C/C++ Project window, Right click the project REBUILD
PROJECT.
10. Connections :
a.Connect the usb cable, PC to TMS320C6745 KIT.
b.Connect the 5v adapter.
c.Power on the kit.
11. TARGET DEBUG ACTIVE PROJECT.
Join the Technical Community Today!
http://www.pantechsolutions.net

12. TARGET RUN.(wait to generate samples)


13. TARGET HALT.
14. TOOLS GRAPH SINGLE TIME
a.Acquirstion buffer size : 256
b.Index increment : 1
c.Start address : 0xC0000000.
d.Display data size : 256 Ok.

Program
#include<stdio.h>
#include<math.h>
#define PI 3.14
void main()
{
const float sampf = 1024000.0;// Sampling frquency is fixed
const int inpf = 4000; // change the input frquency from 1khz to
8khz(1000 to 8000)
float sampt;
Join the Technical Community Today!
http://www.pantechsolutions.net

double teta;
short value,*sinout;
int i,count,nsamp,value1;
sinout = (short *)0xc0000000;
sampt = 1/sampf;
nsamp = sampf/inpf;
printf("\n Sampling Frequency is : %f",sampf);
printf("\n Sampling Time is :%f",sampt);
printf("\n Input Frequency is : %d",inpf);
printf("\n The number of Sample is : %d",nsamp);

for(i=0;i<400;i++)
*(sinout+i)=0;

for(count=0;count<nsamp;count++)
{
teta = (2 * PI * inpf * sampt * count);
printf("\nteta = %lf",teta);
value = sin(teta)*1024;
printf("\t sin %lf Value is : %d",teta,value);
value1 = value&0x0000FFFF;
Join the Technical Community Today!
http://www.pantechsolutions.net

*sinout++ = value1;
}
}

Result
Thus, the Sine waveform generation was generated and the sine
samples is stored at memory location(0xc0000000).

5. IMPLEMENTATION OF FIR FILTER


a. FIR LOW PASS FILTER
Aim
To Implement the FIR Low pass filter using TMS320C6745 KIT
Requirements
CCS v4
TMS320C6745 KIT
USB Cable
5V Adapter
Join the Technical Community Today!
http://www.pantechsolutions.net

Theory
In signal processing, a finite impulse response (FIR) filter is a
filter whose impulse response (or response to any finite length
input) is of finite duration, because it settles to zero in finite time.
This is in contrast to infinite impulse response (IIR) filters, which
may have internal feedback and may continue to respond
indefinitely (usually decaying).
The impulse response of an Nth-order discrete-time FIR filter (i.e.,
with a Kronecker delta impulse input) lasts for N + 1 samples, and
then settles to zero.
The output y of a linear time invariant system is determined by
convolving its input signal x with its impulse response b.
For a discrete time FIR filter, the output is a weighted sum of the
current and a finite number of previous values of the input. The
operation is described by the following equation, which defines
the output sequence y[n] in terms of its input sequence x[n]:

where:
is the input signal,
Join the Technical Community Today!
http://www.pantechsolutions.net

is the output signal,


are the filter coefficients, also known as tap weights, that make
up the impulse response,
is the filter order; an th-order filter has
terms on the righthand side. The
in these terms are commonly referred to as
taps, based on the structure of a tapped delay line that in many
implementations or block diagrams provides the delayed inputs to
the multiplication operations. One may speak of a 5th order/6-tap
filter, for instance.
Procedure
1. Open Code Composer Studio v4 .
2. In WorkSpace Launcher.
BROWSE Select the project location and make one new
folder, MAKE NEW FOLDER Type the Workspace name, OK
OK.
3. FILE NEW CCS PROJECT
a.Project name: Type your project name.
b.Tick use default location. NEXT
Join the Technical Community Today!
http://www.pantechsolutions.net

c.Project type: C6000.


d.Tick Debug And Release. NEXT NEXT.
e.Output type: Executable.
f.Device Variant : generic - TMS320C6745.
g.Device Endianness : little
h.Code Generation Tools: TI v6.1.12.

i.Run time support library: automatic.


j.Target content: none.

FINISH

4.FILE NEW SOURCE FILE


a.Source file: Type your projectname.c( .c extension is must ).
b.Type the program.
c.FILE SAVE.
5. Paste the following board library files in workspace location.
a.Common folder (contains header files)
b.Gel folder (contains gel file)
c.Library folder(contains library files)
Join the Technical Community Today!
http://www.pantechsolutions.net

6. Paste the Linker file in the project location.(linker file is


available in cd)
Note: Those folders and linker file are availble at cd.
7. PROJECT PROPERTIES C/C++ BUILD BASIC OPTION
a.Target processor version(--silicon version, -mv) : 6400+
OK.
b. IN C/C++ BUILD, INCLUDE OPTIONS (Add dir to
#include search path(--include_path,-I)) select this add icon
and add the following three path by indivdually
"${Diag}../../common/header"
"${XDAIS_CG_ROOT}/packages/ti/xdais"
"${C6000_CSL_CG_ROOT}/include"
8. FILE NEW TARGET CONFIGURATION FILE
a.file name: projectname. ccxml (.ccxml extension is must)
b.Connection: Texas Instrument XDS100 v1 USB Emulator.
c.Device: TMS320C6745. (Tick the TMS320C6745) SAVE
TARTGET CONFIGURATION C674X_0 BROWSE, browse the
workspace location, open the gel folder and select the GEL file.
OPEN SAVE.

Join the Technical Community Today!


http://www.pantechsolutions.net

9. In C/C++ Project window, Right click the project REBUILD


PROJECT.
10. Connections :
a.Connect the usb cable, PC to TMS320C6745 KIT.
b.Connect the 5v adapter.
c.Power on the kit.
11. TARGET DEBUG ACTIVE PROJECT.
12. TARGET RUN.(wait few seconds)
13. Output is displayed at Console Window.
14. TARGET HALT.

Program
// ideal low pass filter

#include<stdio.h>
#include<math.h>
#define PI 3.14
Join the Technical Community Today!
http://www.pantechsolutions.net

void main()
{
const int sampf=10000;
const int cutf=1000;
float value,a,b,output;
int nyqf,n,c0;
int *coeff;
coeff = (int *)0xc0001000;
nyqf=sampf/2;
c0=cutf/nyqf;
for(n=-5;n<6;n++)
{
if(n==0)
{
output = 0.5;
}
else
a = (n * PI)/2;

Join the Technical Community Today!


http://www.pantechsolutions.net

b = n * PI;
value = sin(a);
output = value/b;
printf("\n The Fir Low pass filter coefficient : %f",output);

}
}

Result
Thus, the FIR Low pass filter was Implemented and displayed
the results in console window.

b. FIR HIGH PASS FILTER


Aim
To Implement the FIR High pass filter using TMS320C6745 KIT
Requirements
CCS v4
TMS320C6745 KIT
Join the Technical Community Today!
http://www.pantechsolutions.net

USB Cable
5V Adapter
Theory
In signal processing, a finite impulse response (FIR) filter
is a filter whose impulse response (or response to any finite length
input) is of finite duration, because it settles to zero in finite time.
This is in contrast to infinite impulse response (IIR) filters, which
may have internal feedback and may continue to respond
indefinitely (usually decaying).
The impulse response of an Nth-order discrete-time FIR filter (i.e.,
with a Kronecker delta impulse input) lasts for N + 1 samples, and
then settles to zero.
The output y of a linear time invariant system is determined by
convolving its input signal x with its impulse response b.

For a discrete time FIR filter, the output is a weighted sum of the
current and a finite number of previous values of the input. The
operation is described by the following equation, which defines
the output sequence y[n] in terms of its input sequence x[n]:

Join the Technical Community Today!


http://www.pantechsolutions.net

where:
is the input signal,
is the output signal,
are the filter coefficients, also known as tap weights, that make
up the impulse response, is the filter order; an th-order filter has
terms on the right-hand side. The
in these terms are
commonly referred to as taps, based on the structure of a tapped
delay line that in many implementations or block diagrams
provides the delayed inputs to the multiplication operations. One
may speak of a 5th order/6-tap filter, for instance.
Procedure
1. Open Code Composer Studio v4 .
2. In WorkSpace Launcher.
BROWSE Select the project location and make one new
folder, MAKE NEW FOLDER Type the Workspace name, OK
OK.
Join the Technical Community Today!
http://www.pantechsolutions.net

3. FILE NEW CCS PROJECT


a.Project name: Type your project name.
b.Tick use default location. NEXT
c.Project type: C6000.
d.Tick Debug And Release. NEXT NEXT.
e.Output type: Executable.
f.Device Variant : generic - TMS320C6745.
g.Device Endianness : little
h.Code Generation Tools: TI v6.1.12.
i.Run time support library: automatic.
j.Target content: none.

FINISH

4.FILE NEW SOURCE FILE


a.Source file: Type your projectname.c( .c extension is must ).
b.Type the program.
c.FILE SAVE.
5. Paste the following board library files in workspace location.
a.Common folder (contains header files)
Join the Technical Community Today!
http://www.pantechsolutions.net

b.Gel folder (contains gel file)


c.Library folder(contains library files)
6. Paste the Linker file in the project location.(linker file is
available in cd)
Note: Those folders and linker file are availble at cd.
7. PROJECT PROPERTIES C/C++ BUILD BASIC OPTION
a.Target processor version(--silicon version, -mv) : 6400+
OK.
b. IN C/C++ BUILD, INCLUDE OPTIONS (Add dir to
#include search path(--include_path,-I)) select this add icon
and add the following three path by indivdually
"${Diag}../../common/header"
"${XDAIS_CG_ROOT}/packages/ti/xdais"
"${C6000_CSL_CG_ROOT}/include"
8. FILE NEW TARGET CONFIGURATION FILE
a.file name: projectname. ccxml (.ccxml extension is must)
b.Connection: Texas Instrument XDS100 v1 USB Emulator.
c.Device: TMS320C6745. (Tick the TMS320C6745) SAVE
TARTGET CONFIGURATION C674X_0 BROWSE, browse the
Join the Technical Community Today!
http://www.pantechsolutions.net

workspace location, open the gel folder and select the GEL file.
OPEN SAVE.
9. In C/C++ Project window, Right click the project REBUILD
PROJECT.
10. Connections :
a.Connect the usb cable, PC to TMS320C6745 KIT.
b.Connect the 5v adapter.
c.Power on the kit.
11. TARGET DEBUG ACTIVE PROJECT.
12. TARGET RUN.(wait few seconds)
13. TARGET HALT.(AUTO halt)
14. Output is displayed at Console Window.

Program
// ideal high pass filter coefficients
#include<stdio.h>
#include<math.h>
#define PI 3.14
Join the Technical Community Today!
http://www.pantechsolutions.net

void main()
{
const int sampf=10000;
const int cutf=1000;
double value,a,b,output,final;

int nyqf,n,c0;
int *coeff;
coeff = (int *)0xc0001000;
nyqf=sampf/2;
c0=cutf/nyqf;
for(n=-5;n<6;n++)
{
if(n==0)
{
output = 0.5;
}
Join the Technical Community Today!
http://www.pantechsolutions.net

else
a = (n * PI)/2;
b = n * PI;
value = sin(a);
output = value/b;
final = 1 - output;

printf("\n The Fir High pass filter coefficient : %f",final);


}
}

Result
Thus, the FIR High pass filter was Implemented and displayed
the results in console window.

Join the Technical Community Today!


http://www.pantechsolutions.net

Did you enjoy the read?


Pantech solutions creates information packed technical
documents like this one every month. And our website is a rich
and trusted resource used by a vibrant online community of
more than 1,00,000 members from organization of all shapes
and sizes.

Join the Technical Community Today!


http://www.pantechsolutions.net

What do we sell?
Our products range from Various Microcontroller
development boards, DSP Boards, FPGA/CPLD boards,
Communication Kits, Power electronics, Basic electronics,
Robotics, Sensors, Electronic components and much more . Our
goal is to make finding the parts and information you need
easier and affordable so you can create awesome projects and
training from Basic to Cutting edge technology.

Join the Technical Community Today!


http://www.pantechsolutions.net