Sei sulla pagina 1di 68

K. S.

SCHOOL OF ENGINEERING & MANAGEMENT

SE

# 15, Mallasandra, Off Kanakapura Road,


Bangalore-560062, Karnataka, India.

EC

E,

KS

DEPARTMENT OF ELECTRONICS & COMMUNICATION


ENGINEERING

of

Digital Signal Processing Lab Manual

De

pt

Sub Code: 10ECL57


Sem : V

Prepared By

Mr. Ravikiran B. A., Asst. Professor


Mrs. Vidhya R., Asst. Professor

Table of Contents
PART A
Verification of Sampling theorem.

Impulse response of a given system

Linear convolution of two given sequences.

Circular convolution of two given sequences

11

Autocorrelation of a given sequence and verification of its


properties.

15

Cross-correlation of given sequences and verification of


its properties.

18

Solving a given difference equation.

21

Computation of N point DFT of a given sequence and to


plot magnitude and phase spectrum.

23

Linear convolution of two sequences using DFT and


IDFT.

26

10

Circular convolution of two given sequences using DFT


and IDFT

29

11

Design and implementation of FIR filter to meet given


specifications.

32

12

Design and implementation of IIR filter to meet given


specifications.

De

pt

of

EC

E,

KS

SE

1
4
7

36

PART B
About the DSP Trainer Kit

SE

Using Code Composer Studio

44
47

Linear convolution of two given sequences.

56

Circular convolution of two given sequences

58

Computation of N point DFT of a given sequence.

60

Impulse Response of the First Order and Second Order


Systems

62

Viva Questions

64

De

pt

of

EC

E,

KS

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

PROGRAM 1

Aim: To write the MATLAB code for verifying Sampling Theorem.

VERIFICATION OF SAMPLING THEOREM

SE

Generate a sinusoidal wave of 1kHz. Calculate the Nyquist frequency, and verify
Sampling Theorem, showing output waveforms for undersampled, oversampled and right
sampled cases.

Theory:

Sampling is described by the relation:

( )=

KS

Sampling is the process of converting an continuous time signal into a discrete time signal.
In sampling, the values of the continuous time signal is recorded at discrete intervals of time
(usually equidistant). The number of samples taken during one second is called the sampling
rate.
(

<

<

E,

Where ( ) is the discrete-time signal obtained by sampling the analog signal every T
seconds. = 1/ is known as the Sampling Frequency.

EC

The Sampling Theorem states that :

A bandlimited signal can be reconstructed exactly if it is sampled at a rate atleast twice


the maximum frequency component in it."

of

( ) = sin( ) = sin(2
Assume a band-limited signal
) with maximum
frequency component . The theorem says that, for a good reconstruction of the original
continuous time signal, the sampling frequency must be at least 2 . This frequency is known
as the Nyquist Rate.
Sampling this signal at

gives us the discrete time signal:


(

)=

sin

( )=

sin 2
2

De

pt

Now, assuming the sampling frequency is more than the Nyquist Frequency, the
continuous time signal can be reconstructed accurately using the interpolation function:

Then, approximated recovered signal can be written as:

Dept of ECE

( )=

Page | 1

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

Whenever the Sampling frequency is greater than or equal to the Nyquist Frequency, the
signal can be reconstructed faithfully, capturing all the essential properties of the original
continuous-time signal. However, when < 2 , we encounter a problem called Aliasing,
where distortion is caused by high frequencies overlapping low frequencies. A lot of data is
lost in this process and the signal cannot be recovered.

% Experiment 1 : Sampling Theorem Verification


clear all; close all; clc;

%
%
%
%
%

Signal 1 Frequency = 1kHz


Signal 2 Frequency = 1.4 kHz
Maximum frequency component of signal
Signal Period should cover entire length
Time index

KS

% Signal Parameters
f1 = 1000;
f2 = 1900;
fmax = max(f1,f2);
T = 1/min(f1,f2);
t = 0:0.01*T:2*T;

SE

MATLAB CODE:

% Generate the original signal and plot it:

% Composite Signal

% Oversampling Condition:
fs1 = 10*fmax;

EC

E,

x = cos(2*pi*t*f1)+ cos(2*pi*t*f2);
subplot(2,2,1);
plot(t,x); grid on;
title('Continuous signal');
xlabel('t');
ylabel('x(t)');

% Oversampling (fs > 2f)

of

n1 = 0:1/fs1:2*T;
% Time scale
x1 = cos(2*pi*f1*n1)+cos(2*pi*f2*n1);
% Generating sampled signal
subplot(2,2,2);
stem(n1,x1);
hold on;
plot(n1,x1,'r'); grid on;
hold off;
title('Oversampling Condition : Fs = 10F');
xlabel('n');
ylabel('x(n)');

pt

% Right Sampling Condition:


fs2 = 2*fmax;

% Nyquist Sampling (fs = 2f)

De

n2 = 0:1/fs2:2*T;
x2 = cos(2*pi*f1*n2)+cos(2*pi*f2*n2);
subplot(2,2,3);
stem(n2,x2);
hold on;
plot(n2,x2,'r'); grid on;
hold off;
title('Sampling at Nyquist Frequency : Fs = 2F');
xlabel('n');
ylabel('x(n)');

Dept of ECE

Page | 2

5th Sem

% Under Sampling Condition:


fs3 = 1.2*fmax;

KSSEM, Bangalore

n3 = 0:1/fs3:2*T;
x3 = cos(2*pi*f1*n3)+cos(2*pi*f2*n3);
subplot(2,2,4);
stem(n3,x3);
hold on;
plot(n3,x3,'r'); grid on;
hold off;
title('Undersampling Condition : Fs = 1.2 f');
xlabel('n');
ylabel('x(n)');

De

pt

of

EC

E,

KS

OUTPUT:

% Undersampling (fs < 2f)

SE

DSP Laboratory (10ECL57)

Dept of ECE

Page | 3

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

PROGRAM 2
IMPULSE RESPONSE OF A GIVEN SYSTEM

Aim: To write the MATLAB code to find the impulse response of a given second-order
system whose difference equation representation is given.

SE

Assume a second-order system represented by the following difference equation:


( ) =
( )+
( 1) +
( 2) +
( 1) +
( 2)

Theory:

KS

Impulse response of a system is defined as the output of a given system, when the input
applied to the system, is in the form of a unit impulse, or a Dirac delta function. The impulse
response completely characterizes the behaviour of any LTI system. The impulse response is
often determined from knowledge of the system configuration and dynamics, or can be
measured by applying and approximate impulse to the system input.

E,

Discrete-time LTI systems can also be described using Difference Equations. A linear
constant-coefficient difference equation can be of the form:

EC

[ ]=

[ ]

Where the integer N is termed the order of the difference equation, and corresponds to the
maximum memory involving the system output. The order generally represents the number of
energy storage devices in a physical system.
We can calculate the impulse response of the system using Z-transforms as shown in the
following example:

of

Consider a difference equation:


( )=

( ) + 0.2 ( 1) 1.5 ( 2) 3 ( 1) + 0.12 ( 2)

This can be rewritten in the standard form as:

pt

( ) + 3 ( 1) 0.12 ( 2) =

Finding the Z-transform of the equation:


( ) 0.12

De

Or:

( )+3

( )[1 + 3

Dept of ECE

0.12

( ) + 0.2 ( 1) 1.5 ( 2)

( ) = ( ) + 0.2
] = ( )[1 + 0.2

( ) 1.5
1.5

( )
]

Page | 4

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

( ) = 1 2.8

( ) [1 + 3
=
( ) [1 + 0.2
+ 7.02

0.12
1.5

21.4

]
]
+ 65.03

SE

By long division, we get:

( )=

Transfer Function of the system can be obtained as :

By taking Inverse-Z transform, we can obtain the Impulse Response as:


2.8

7.02

21.4

65.03]

KS

[ ] = [1
MATLAB CODE:

% Experiment 2 : Impulse Response of a Given Second-Order System


clear all; close all; clc;

Accept Input and Output signal Co-efficients:


= input('Enter the coefficients of x(n) in 1-D Matrix Form: ');
= input('Enter the coefficients of y(n) in 1-D Matrix Form: ');
= input('Enter the number of samples of impulse response desired: ');

E,

%
b
a
N

[h,t] = impz(b,a,N);

EC

% Calculate Impulse Response using IMPZ function:


% [H,T] = IMPZ(B,A,N) computes N samples of the impulse response, using
% coefficients B and A from difference equation representation.

pt

OUTPUT:

of

%Plot and Display impulse response co-efficients:


stem(t,h);
title('Impulse Response Plot');
ylabel('h(n)'); xlabel('n');
disp('Impulse Response Coefficients:');
disp(h);

Enter the coefficients of x(n) in 1-D Matrix Form: [1 0.2 -1.5]


Enter the coefficients of y(n) in 1-D Matrix Form: [1 3 -0.12]

De

Enter the number of samples of impulse response desired: 5


Impulse Response Coefficients:
1.0000
-2.8000
7.0200
-21.3960
65.0304

Dept of ECE

Page | 5

5th Sem

KSSEM, Bangalore

De

pt

of

EC

E,

KS

SE

DSP Laboratory (10ECL57)

Dept of ECE

Page | 6

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

PROGRAM 3
LINEAR CONVOLUTION OF TWO GIVEN SEQUENCES

Aim: To write the MATLAB code to perform Linear Convolution upon two given discrete
time signals.

SE

Theory:

KS

Convolution is the process used to find the response of a Linear Time Invariant system to a
given input, assuming we already know the impulse response of that system. In case of
continuous-time signals, we can find the system response using the Convolution Integral,
while in case of discrete-time systems, the response can be calculated using the Convolution
Sum.
( ) be two discrete-time signals. The convolution sum of the two signals
Let ( ) and
can be calculated using the formula:
( ) = 1( ) 2( ) =

1( ) 2( )

E,

If 1( ) is a M- point sequence and 2( ) is an N point sequence, then the convolved


sequence, ( ) is a (M+N-1) point sequence.

EC

We can perform the convolution by different methods:

1. Using MATLABs CONV function :


MATLAB has a built-in function called conv function, which basically performs a
linear convolution of any two given sequences.

of

2. Using the Linear Convolution Sum formula :


Here, we use the convolution sum formula and substitute values of and in the
expression, and calculate the values of the convolved signal. Alternatively, we can
perform the signal inversion-time shift-superposition method, by which we can
calculate the resultant signal values.

pt

Assume two discrete-time sequences 1 and 2 in a Linear Time Invariant System, given
by:
1( ) = {1, 2, 1, 3} and 2( ) = {2,3, 2}

De

We see that length of sequence 1 is (M = 4) and that of sequence 2 is (N = 3). Therefore,


the length of the convolved sequence will be (M+N-1 = 6).
Using any of the above given methods, we see that the resultant convolved sequence can be
given by:
( ) = 1( ) 2( ) = { 2

Dept of ECE

1 11

6}
Page | 7

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

MATLAB CODE:
1. Using conv function:

%% Linear Convolution using CONV command


clear all; close all; clc;

SE

% Accept input signal sequences


x1 = input('Enter Input Sequence for Signal x1(n): ');
x2 = input('Enter Input Sequence for Signal x2(n): ');

%Plot Input and Convolved Signals


subplot(3,1,1);
stem(x1);
title('Input Signal x1(n)');
xlabel('n'); ylabel('x1(n)');

E,

subplot(3,1,2);
stem(x2);
title('Input Signal x2(n)');
xlabel('n'); ylabel('x2(n)');

KS

%Perform Linear Convolution using CONV command


y=conv(x1,x2);

EC

subplot(3,1,3);
stem(y);
title('Convolved Signal y(n) = x1(n)*x2(n)');
xlabel('n'); ylabel('y(n)');
% Display the convolved Sequence in Command Window
disp('Convolved sequence:');
disp(y);

2. Using Convolution Sum formula:

of

%% Linear Convolution without using CONV command


clear all; close all; clc;
x1 = input('Enter Input Sequence for Signal x1(n): ');
n1 = length(x1);

pt

x2 = input('Enter Input Sequence for Signal x2(n): ');


n2=length(x2);
%Length of Convolved Sequence
% Create Time Index

De

N = n1+n2-1;
T = 1:N;

%Zero padding to make sequences of length N


x1=[x1 zeros(1,N-n1)];
x2=[x2 zeros(1,N-n2)];
%Initializing Output sequence of zeros.
y = zeros(1,N);
%Performing Linear Convolution:

Dept of ECE

Page | 8

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

for n = 1:N
%
y(n) = 0R;
for k = 1:n
y(n)=y(n)+x1(k)*x2(n-k+1);
end
end

KS

subplot(3,1,2);
stem(T,x2);
title('Input Signal x2(n)');
xlabel('n'); ylabel('x2(n)');

SE

% Plot Input and Output Sequences:


subplot(3,1,1);
stem(T,x1);
title('Input Signal x1(n)');
xlabel('n'); ylabel('x1(n)');

subplot(3,1,3);
stem(T,y);
title('Convolved Signal y(n) = x1(n)*x2(n)');
xlabel('n'); ylabel('y(n)');

EC

E,

% Display the convolved Sequence in Command Window


disp('Convolved sequence:');
disp(y);

OUTPUT:

De

pt

of

Enter Input Sequence for Signal x1(n): [1 2 -1 3]


Enter Input Sequence for Signal x2(n): [2 3 -2]
Convolved sequence:
2
7
2
-1
11
-6

Dept of ECE

Page | 9

5th Sem

KSSEM, Bangalore

De

pt

of

EC

E,

KS

SE

DSP Laboratory (10ECL57)

Dept of ECE

Page | 10

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

PROGRAM 4
CIRCULAR CONVOLUTION OF TWO GIVEN SEQUENCES

Aim: To write the MATLAB code to perform Circular Convolution upon two given discrete
time signals.

SE

Theory:

KS

The Circular convolution, also known as cyclic convolution, of two aperiodic functions occurs
when one of them is convolved in the normal way with a periodic summation of the other
function. Circular convolution is only defined for finite length functions (usually equal in
length), continuous or discrete in time. In circular convolution, it is as if the finite length
functions repeat in time, periodically. Because the input functions are now periodic, the
convolved output is also periodic.
Circular convolution sum can be calculated using the formula:

1( ) 2 (

E,

= 0,1, . ,

For

( ) = 1( ) 2( ) =

EC

Circular convolution can be performed in different ways :

of

1. Using the expression for linear convolution sum, but assuming the signal repeats
periodically. This can be done by changing the negative indices of (n-k) to repetitions
of the latter portions of the original aperiodic signal.
2. Convolution in time domain corresponds to multiplication in frequency domain. To
make use of this property, we can calculate the DTFT of each of the aperiodic signals,
multiply these in the frequency domain, and find the IDFT of the product, to get the
periodic convolved signal in time domain.
Let us take the case of two discrete-time aperiodic signals given by:
1( ) = {2,1,2,1}

and

De

pt

Using the formula with N = 4.


For m = 0:

2( ) = {1,2,3,4}

For m = 1:

For m = 2:

Dept of ECE

(0) =

(1) =

1( ) 2 ( )
1( ) 2 (1 )

= 14
= 16

Page | 11

5th Sem

(2) =

1( ) 2 (2 )

= 14

(3) =

1( ) 2 (3 )

= 16

SE

For m = 3:

KSSEM, Bangalore

DSP Laboratory (10ECL57)

( ) = {14,16,14,16}

So, we get the circular convolution sum as:


MATLAB CODE:

KS

1. Using Convolution Sum Formula:

%% Circular Convolution using Formula


clear all; close all; clc;

E,

x1 = input('Enter Input Sequence for Signal x1(n): ');


n1 = length(x1);
x2 = input('Enter Input Sequence for Signal x2(n): ');
n2=length(x2);
% Length of Convolved Sequence
% Create Time Index

EC

N = max(n1,n2);
T = 1:N;

%Zero padding to make sequences of length N


x1=[x1 zeros(1,N-n1)];
x2=[x2 zeros(1,N-n2)];

of

%Initializing Output sequence of zeros.


y = zeros(1,N);

De

pt

%Performing Linear Convolution:


for m=1:N
for n=1:N
i=m-n+1;
%(m-n+1) since we're taking index
from 1
if(i<=0)
i=N+i;
end
y(m)=y(m)+x1(n)*x2(i); %Convolution Sum Formula
end
end
% Plot Input and Output Sequences:
subplot(3,1,1);
stem(T,x1);
title('Input Signal x1(n)');
xlabel('n'); ylabel('x1(n)');
subplot(3,1,2);
stem(T,x2);

Dept of ECE

Page | 12

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

subplot(3,1,3);
stem(T,y);
title('Convolved Signal y(n) = x1(n)*x2(n)');
xlabel('n'); ylabel('y(n)');

2. Using cconv function.

KS

%% Circular Convolution using CCONV command


clear all; close all; clc;

SE

% Display the convolved Sequence in Command Window


disp('Convolved sequence:');
disp(y);

title('Input Signal x2(n)');


xlabel('n'); ylabel('x2(n)');

% Accept input signal sequences


x1 = input('Enter Input Sequence for Signal x1(n): ');
x2 = input('Enter Input Sequence for Signal x2(n): ');
n=max(length(x1),length(x2));

E,

%Perform Linear Convolution using CONV command


y=cconv(x1,x2,n);

EC

%Plot Input and Convolved Signals


subplot(3,1,1);
stem(x1);
title('Input Signal x1(n)');
xlabel('n'); ylabel('x1(n)');
subplot(3,1,2);
stem(x2);
title('Input Signal x2(n)');
xlabel('n'); ylabel('x2(n)');

of

subplot(3,1,3);
stem(y);
title('Convolved Signal y(n) = x1(n)*x2(n)');
xlabel('n'); ylabel('y(n)');

OUTPUT:

pt

% Display the convolved Sequence in Command Window


disp('Convolved sequence:');
disp(y);

De

Enter Input Sequence for Signal x1(n): [2 1 2 1]


Enter Input Sequence for Signal x2(n): [1 2 3 4]
Convolved sequence:
14 16 14 16

Dept of ECE

Page | 13

5th Sem

KSSEM, Bangalore

De

pt

of

EC

E,

KS

SE

DSP Laboratory (10ECL57)

Dept of ECE

Page | 14

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

PROGRAM 5
AUTOCORRELATION OF A GIVEN SEQUENCE

Aim: To write the MATLAB code to perform Autocorrelation on a given signal and to verify
its properties.

SE

Theory:

In signal processing, Correlation is a measure of similarity of two waveforms, as a function


of a time-lag applied to one of them. This is also known as a sliding dot product or sliding
inner-product. It is commonly used for searching a long-signal for a shorter, known feature.

KS

Auto-correlation is a special form of Correlation, in which a signal is cross-convolved with


itself. It is a mathematical tool for finding repeating patterns, such as the presence of a
periodic signal which has been buried under noise, or identifying the missing fundamental
frequency in a signal implied by its harmonic frequencies. It is often used in signal processing
for analyzing functions or series of values, such as time domain signals.

E,

Auto-correlation of a signal ( ) is given by the formula:


()=

( ) ( )

= 0, 1, 2,

Where = ,

=0

EC

In case of finite-duration signals, we can write:


( )=

and

( )+

( )+

of

Assuming our signal is of the form


Energy in the signal is given by:
[

| |

( )] =

pt

De

This can be written as:

( ) ( )

= 0,

( )

( )+

(0)+
( )| |

< 0.

( )+ 2

(0) + 2
(0)| =

( ) ( )

() 0

That is, autocorrelation sequence of a signal attains its maximum value at zero lag. This is
consistent with the notion that a signal matches perfectly with itself at zero shift.
Assume a signal

( ) = {1,2,3,4}. Its autocorrelation sequence can be calculated as:


( ) = {4,11,20,30, 20,11,4}

Dept of ECE

Page | 15

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

Energy of the signal is given by:


( ) = 1 + 2 + 3 + 4 = 30 =

(0)

SE

Hence, it is an energy signal.


We see that the Total energy of the signal is equal to the amplitude of the autocorrelation
signal at the origin.
MATLAB CODE:

% Experiment 5 : Autocorrelation of a Signal.

KS

clear all; close all; clc;

% Accept user-defined input sequence and define time index


x = input('Enter a finite-length signal sequence : ');
n = 0:length(x)-1;

E,

% Perform Autocorrelation using xcorr function.


rxx = xcorr(x,x);
% Generate Time Index for Autocorrelation sequence, about origin
n2 = -length(x)+1:length(x)-1;
disp('Autocorrelation Sequence : ');
disp(int8(rxx));

EC

% Plot the Original Signal and Autocorrelation Sequence


subplot(2,1,1);
stem(n,x);
title('Input Signal');
xlabel('n'); ylabel('x(n)');

of

subplot(2,1,2);
stem(n2,rxx);
title('Autocorrelation Sequence');
xlabel('n'); ylabel('rxx(l)');
grid on;

De

pt

% Verifying Autocorrelation properties:


E = sum(x.^2);
% Energy of signal.
mid = ceil(length(rxx)/2);
% Find index of centre of sequence
E0 = rxx(mid);
% Detect Amplitude of Sequence
midpoint
fprintf('Energy of Input Signal : %d\n',E);
fprintf('Amplitude of Midpoint of Autocorrelation Sequence :
%d\n',E0);
% Verify Autocorrelation Property by comparing Energy values
if int8(E0) == int8(E)
%Type conversion for approximation
disp('Autocorrelation Energy Property is verified');
else
disp('Autocorrelation Energy Property is not verified');
end
% Verify that the Signal is even.
rxx_r = rxx(mid:length(rxx));
%Right Side of AC Sequence

Dept of ECE

Page | 16

5th Sem

DSP Laboratory (10ECL57)


rxx_l = rxx(mid:-1:1);

KSSEM, Bangalore
%Left Side of AC Sequence

OUTPUT:
Enter a finite-length signal sequence : [1 2 3 4]

4 11 20 30 20 11

Energy of Input Signal : 30

KS

Autocorrelation Sequence :

SE

if rxx_r == rxx_l
disp('Autocorrelation Sequence is Even. Hence, verified.');
else
disp('Autocorrelation Sequence is not Even. Hence, not
verified.');
end

Amplitude of Midpoint of Autocorrelation Sequence : 30

E,

Autocorrelation Energy Property is verified

De

pt

of

EC

Autocorrelation Sequence is Even. Hence, verified.

Dept of ECE

Page | 17

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

PROGRAM 6
CROSS - CORRELATION OF A GIVEN SEQUENCE

Aim: To write the MATLAB code to perform cross-correlation on a given signal and to verify
its properties.

SE

Theory:

()=

KS

Cross-correlation is a process, in which a signal is convolved with another signal. It is


commonly used for searching a long-signal for a shorter, known feature. It also has
applications in pattern recognition, single particle analysis, electron tomographic averaging,
cryptanalysis, and neurophysiology. Cross-correlation of two signals 1( ) and 2( ) is
given by the formula:
( ) ( )

= 0, 1, 2,

=0

()=

and

( )+

Assuming our signal is of the form


Energy in the signal is given by:
( )+

( )] =

( ) ( )

= 0,

pt

This can be written as:

( )

( )+

of

| |

EC

Where = ,

E,

In case of finite-duration signals, we can write:

(0)+

()

( )+ 2

(0) + 2
(0)

< 0.

(0) =

( ) ( )

() 0
.

Note that the shape of the autocorrelation sequence does not change with amplitude scaling
of input signals. Only the amplitude of the autocorrelation sequence changes accordingly.

De

Cross-correlation satisfies the property:

Dept of ECE

()=

( )

Page | 18

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

MATLAB CODE:
% Experiment 6 : Cross-correlation of two Signals.

clear all; close all; clc;

KS

SE

% Accept user-defined input sequences and define time index for it


x1 = input('Enter a finite-length signal sequence X1(n): ');
n1 = 0:length(x1)-1;
x2 = input('Enter a finite-length signal sequence X2(n): ');
n2 = 0:length(x2)-1;
x= max(x1,x2);
% Perform Cross - Correlation using xcorr function.
rxy = xcorr(x1,x2);
% rxy(l)
ryx = xcorr(x2,x1);
% ryx(l)
% Generate Time Index for Cross - Correlation sequence, about origin
n3 = -length(x)+1:length(x)-1;
disp('Cross - Correlation Sequence rxy(l): ');
disp(int8(rxy));
disp('Cross - Correlation Sequence ryx(l): ');
disp(int8(ryx));

E,

% Plot the Original Signal and Cross - Correlation Sequence


subplot(3,1,1);
stem(n1,x1);
title('Input Signal 1');
xlabel('n'); ylabel('x1(n)');

EC

subplot(3,1,2);
stem(n2,x2);
title('Input Signal 2');
xlabel('n'); ylabel('x2(n)');

% Verifying

of

subplot(3,1,3);
stem(n3,rxy);
title('Cross - Correlation Sequence');
xlabel('n'); ylabel('rxy(l)');
grid on;

Cross-correlation properties:

De

pt

E1 = sum(x1.^2);
E2 = sum(x2.^2);
mid = ceil(length(rxy)/2);
E0 = abs(max(rxy));
fprintf('Energy of Input Signal
fprintf('Energy of Input Signal
fprintf('Max Amplitude of Cross

% Energy of signal 1.
% Energy of signal 2.
% Find index of centre of sequence
% Detect Max Amplitude of Sequence
X1 : %d\n',E1);
X2 : %d\n',E2);
- Correlation Sequence : %d\n',E0);

% Verify Cross - Correlation Property by comparing Energy values


% Max amplitude of Sequence should be less than sqrt(E1*E2).
if int8(E0) <= int8(sqrt(E1*E2))
%Type conversion to 8-bit
int
disp('Cross - Correlation Energy Property is verified');
else
disp('Cross - Correlation Energy Property is not verified');
end

Dept of ECE

Page | 19

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

SE

% Verify Signal property : rxy(l)=ryx(-l).


if rxy == fliplr(ryx)
disp('Since rxy(l) = ryx(-l), Cross - Correlation property is
verified.');
else
disp('Cross - Correlation property is not verified.');
end

OUTPUT:

De

pt

of

EC

E,

KS

Enter a finite-length signal sequence X1(n): [4 3 2 1]


Enter a finite-length signal sequence X2(n): [1 2 3 4]
Cross - Correlation Sequence rxy(l):
16 24 25 20 10 4 1
Cross - Correlation Sequence ryx(l):
1 4 10 20 25 24 16
Energy of Input Signal X1 : 30
Energy of Input Signal X2 : 30
Max Amplitude of Cross - Correlation Sequence : 25
Cross - Correlation Energy Property is verified
Since rxy(l) = ryx(-l), Cross - Correlation property is verified.

Dept of ECE

Page | 20

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

PROGRAM 7
SOLVING A GIVEN DIFFERENCE EQUATION

Aim: To write the MATLAB code to solve a given difference equation, given the co-efficients
and initial values.

SE

Let us consider the difference equation as y (n) 3/2 y (n-1) + y (n-2) = x (n). Given
x(n) = (1/4)n *u(n). Assume initial conditions as y(-1) = 4, y(-2) = 10.
Theory:

KS

Consider x(n) = (1/4)n *u(n).

E,

Let n take values from 0 to 5,


n=0:5
n=0, x(0)=1
n=1, x(1)=0.25
n=2, x(2)=0.0625
n=3, x(3)=0.0156
n=4, x(4)=0.0039
n=5, x(5)=0.0010

EC

For n=0;
y(0) - 3/2 y(0-1) + 1/2 y(0-2) = x(0)
Substituting the initial conditions and the value of x(0) in the above equation we get,
y(0) = 1 + 6 - 5 = 2
Similarly,

MATLAB CODE:

of

For n=1; y(1) = 0.25 + 3 - 2 = 1.2500


For n=2; y(2) = 0.0625 + 1.875 -1 = 0.9375
For n=3; y(3) = 0.0156 + 1.40625 - 0.625 = 0.7969
For n=4; y(4) = 0.0039 + 1.19535 - 0.46625 = 0.7365
For n=5; y(5) = 0.0010 + 1.09575 - 0.3982 = 0.6982

pt

%Experiment 7 : Difference Equation Solving


clear all; close all; clc;
%Accept Difference Equation Coefficients from Input

De

b = input('Enter the coefficients of input x(n) : ');


a = input('Enter the coefficients of output y(n) : ');
y = input('Enter the initial conditions y(-1), y(-2),... : ');
%Calculate Initial Conditions using filtic
z = filtic(b,a,y);
%Ignore if No Initial Conditions
%Enter Input sequence samples.
x = [1 1/4 1/16 1/64 1/256 1/1024];
n = 0:length(x)-1;
%Time Base for plotting

Dept of ECE

Page | 21

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

%Display output sequence


disp('Difference Equation Solution : y(n) : ');
disp(Yout);

OUTPUT:

KS

subplot(2,1,2);
stem(n,Yout);
grid on;
title('Output Sequence y(n)');
xlabel('n'); ylabel('y(n)');

SE

%Plot Input and Output


subplot(2,1,1);
stem(n,x);
title('Input Sequence x(n)');
xlabel('n'); ylabel('x(n)');

%Calculate output using initial conditions


Yout = filter(b,a,x,z);
%Use filter(b,a,x) if no IC

E,

Enter the coefficients of input x(n) : 1


Enter the coefficients of output y(n) : [1 -3/2 1/2]
Enter the initial conditions y(-1), y(-2),... : [4 10]

0.7305

De

pt

of

EC

Difference Equation Solution : y(n) :


2.0000
1.2500
0.9375
0.7969
0.6982

Dept of ECE

Page | 22

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

PROGRAM 8
COMPUTATION OF N- POINT DFT

Aim: Computation of N point DFT of a given sequence and to plot magnitude and phase
spectrum.

SE

Theory:

DFT stands for Discrete Fourier Transform. It is used to find the amplitude and phase
spectrum of a discrete time sequence.

N-DFT

x(n)

KS

The N-point DFT of a finite-length sequence x(n) of length N, is given by X(k) as


X(k)

Basic equation to find the DFT of a sequence is given below.


( )

E,

( )=

For example: Find the DFT of the sequence x(n) = {0,1,2,3}

For k=0,

( )

(1) =

= - j- 2 + 3j = -2 + j2

= (1)

pt

Similarly,
For k=2,
(2) =

= (0) + (1) + (2) + (3) = 0 + 1 + 2 + 3 = 6

of

For k=1,

( )

(0) =

EC

In this case N=4.

( )

De

= 0-1+2-3 = -2

= (1)

+ (1)

+ (1)

+ (2)

+ (2)

+ (3)

+ (3)

For k=3,

X(3) = -2 j2

Hence, X(k) = {6, -2+j2, -2, -2-j2}

Dept of ECE

Page | 23

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

MATLAB CODE:

%Experiment 8 : N-Point DFT


clear all; close all; clc;

SE

%Accept Input sequence from user


xn = input ('Enter the sequence x(n) : ');
xn=xn';
N = length(xn);
Xk = zeros(N, 1);
%Initialize zero matrix for DFT sequence

KS

%Calculate DFT using formula


n = 0:N-1;
for k = 0:N-1
Xk(k+1) = exp(-j*2*pi*k*n/N)*xn;
end
%Display DFT Sequence
disp('DSP Sequence : X(k) :');
disp(int8(Xk));
%Plot Signals
n = 0:N-1;

EC

% Input Sequence
subplot (2,2,[1:2]);
stem(n, xn);
title('Input Sequence x(n)');
xlabel('n');ylabel('x(n)');

E,

%Time base

% Output Magnitude Plot


subplot (2,2,3);
stem(n, abs(Xk));
grid on;
title('Magnitude Plot of DFT : |X(k)|');
xlabel('n');ylabel('|X(k)|');

OUTPUT:

pt

of

% Output Phase Plot


subplot(2,2,4);
stem(n, angle(Xk)');
grid on;
title('Phase Plot of DFT : angle(X(k))');
xlabel('n');ylabel('Angle');

Enter the sequence x(n) : [0 1 2 3]

De

DSP Sequence : X(k) :


6.0000 + 0.0000i

-2.0000 + 2.0000i
-2.0000 - 0.0000i
-2.0000 - 2.0000i

Dept of ECE

Page | 24

5th Sem

KSSEM, Bangalore

De

pt

of

EC

E,

KS

SE

DSP Laboratory (10ECL57)

Dept of ECE

Page | 25

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

PROGRAM 9

LINEAR CONVOLUTION USING DFT AND IDFT


Aim: To calculate the Linear Convolution of two sequences using DFT and IDFT

SE

Theory:

KS

An interesting property of the Discrete Fourier Transforms, is the effect it has on


convolution. Convolution of two signals in the time domain translates to a multiplication of
their Fourier transforms in the frequency domain. In this procedure, we find the discrete
Fourier transforms of the individual signals, multiply them, and apply an Inverse Fourier
Transform upon the product, to get the convolved signal in the time domain.
If x(n) and h(n) are the two sequences of length l and m respectively. then X(k) and
H(k) their DFTs of length N=L+M-1.
Y(k)=x(k)h(k)

E,

Therefore the linear convolution of two sequence is the N point IDFT of Y(k).

Soln: Given,

x(n)={1,2}
h(n)={1,2,3}
here L = 2, M = 3

N=L+M-1

EC

Ex: Find the linear convolution of x(n)={1,2} and h(n)={1,2,3} using DFT and IDFT method.

Therefore, N=4

of

x(n)={1,2,0,0} and h(n)={1,2,3,0}

Finding X(k) using DIT FFT algorithm:


X(k) = {3 , 1-2j , -1 , 1+2j }

pt

Finding H(k) using DIT FFT algorithm


H(k) = {6 , -2-2j , 2 , -2+2j }

De

Product Y(k) is calculated as :


Y(k) = X(k)H(k)

( ) = { 18 , 6 + 2j , 2 , 6 2j }

Finding y(n) using DIT FFT algorithm:


y(n) = { 1 , 4 , 7 , 6 }
Dept of ECE

Page | 26

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

MATLAB CODE

% Experiment 9 : Linear Convolution using Fourier Transforms


clear all; close all; clc;

SE

%Accept input sequences


x1 = input('Enter Input Sequence for Signal x1(n): ');
n1 = length(x1);
x2 = input('Enter Input Sequence for Signal x2(n): ');
n2=length(x2);
N = n1+n2-1;
T = 1:N;

% Length of convolved sequence

E,

% Plot Input and Output Sequences:


subplot(3,1,1);
stem(x1);
title('Input Signal x1(n)');
xlabel('n'); ylabel('x1(n)');

KS

%Calculate N-point DFT and IDFT.


y1=fft(x1,N);
% N-point DFT of x1
y2=fft(x2,N);
% N-point DFT of x2
y3=y1.*y2;
% Multiplication in time domain
y=ifft(y3,N);
% N-point IDFT of y to recover result

EC

subplot(3,1,2);
stem(x2);
title('Input Signal x2(n)');
xlabel('n'); ylabel('x2(n)');

subplot(3,1,3);
stem(y);
title('Convolved Signal y(n) = x1(n)*x2(n)');
xlabel('n'); ylabel('y(n)');

pt

OUTPUT

of

% Display the convolved Sequence in Command Window


disp('Convolved sequence:');
disp(y);

De

Enter Input Sequence for Signal x1(n): [1 2]


Enter Input Sequence for Signal x2(n): [1 2 3]
Convolved sequence:
1 4 7 6

Dept of ECE

Page | 27

5th Sem

KSSEM, Bangalore

De

pt

of

EC

E,

KS

SE

DSP Laboratory (10ECL57)

Dept of ECE

Page | 28

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

PROGRAM 10
CIRCULAR CONVOLUTION USING DFT AND IDFT

Aim: To calculate the Circular Convolution of two sequences using DFT and IDFT

SE

Theory:

Convolution in time domain corresponds to multiplication in frequency domain. To make use


of this property, we can calculate the DTFT of each of the aperiodic signals, multiply these in
the frequency domain, and find the IDFT of the product, to get the periodic convolved signal
in time domain.

KS

Example: Find the circular convolution of x(n)={1,2,3,4} and h(n)={4,3,2} using DFT and
IDFT method.
Solution: Given two signals, x(n)={1,2,3,4} and h(n)={4,3,2}

X(k) = {10 , -2-2j , -2 , -2-2j }

H(k) = { 9 , 2-3j , 3 , 2+3j }


Y(k) = X(k)H(k)
Y(k) ={ 90 , 2+10j , -6 , 2-10j }

EC

Finding H(k) using DIT FFT algorithm

E,

Finding X(k) using DIT FFT algorithm

Finding y(n) using DIT FFT algorithm

MATLAB CODE

of

y(n) = { 22 , 19 , 20 , 29 }

pt

% Experiment 10 - Circular Convolution using Fourier Transforms


clear all; close all; clc;

De

%Accept input sequences


x1 = input('Enter Input Sequence for Signal x1(n): ');
n1 = length(x1);
x2 = input('Enter Input Sequence for Signal x2(n): ');
n2=length(x2);
N=max(n1,n2);
T = 1:N;

% Length of convolved sequence

x1=[x1 zeros(1,N-n1)];
x2=[x2 zeros(1,N-n2)];

Dept of ECE

Page | 29

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

%Calculate N-point DFT and IDFT.


y1=fft(x1,N);
% N-point DFT of x1
y2=fft(x2,N);
% N-point DFT of x2
y3=y1.*y2;
% Multiplication in time domain
y=ifft(y3,N);
% N-point IDFT of y to recover result

SE

% Plot Input and Output Sequences:


subplot(3,1,1);
stem(x1);
title('Input Signal x1(n)');
xlabel('n'); ylabel('x1(n)');

KS

subplot(3,1,2);
stem(x2);
title('Input Signal x2(n)');
xlabel('n'); ylabel('x2(n)');

subplot(3,1,3);
stem(y);
title('Convolved Signal y(n) = x1(n)*x2(n)');
xlabel('n'); ylabel('y(n)'); grid on;

E,

% Display the convolved Sequence in Command Window


disp('Convolved sequence:');
disp(y);

OUTPUT

De

pt

of

EC

Enter Input Sequence for Signal x1(n): [1 2 3 4]


Enter Input Sequence for Signal x2(n): [4 3 2]
Convolved sequence:
22
19
20
29

Dept of ECE

Page | 30

5th Sem

KSSEM, Bangalore

De

pt

of

EC

E,

KS

SE

DSP Laboratory (10ECL57)

Dept of ECE

Page | 31

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

PROGRAM 11

Aim: To design and implement a FIR Filter for the given specifications.

SE

Theory:

DESIGN AND IMPLEMENTATION OF FIR FILTER

KS

A linear-phase is required throughout the passband of the filter to preserve the shape of the
given signal in the passband. A causal IIR filter cannot give linear-phase characteristics and
only special types of FIR filters that exhibit center symmetry in its impulse response give the
linear-space. An FIR filter with impulse response h(n) can be obtained as follows:

EC

E,

h(n) = hd(n) 0nN-1


= 0 otherwise .(a)
The impulse response hd(n) is truncated at n = 0, since we are interested in causal FIR Filter. It
is possible to write above equation alternatively as
h(n) = hd(n)w(n) .(b)
where w(n) is said to be a rectangular window defined by
w(n) = 1 0nN-1
= 0 otherwise
Taking DTFT on both the sides of equation(b), we get
H() = Hd()*W()

Hamming window:

of

The impulse response of an N-term Hamming window is defined as follows:


0.54 0.46 (2 / ( 1))
0 1
( ) =
0

De

pt

Problem: Using MATLAB design an IIR filter to meet the following specifications choosing
Hamming window:
Window length, N = 27
Stop band attenuation = 50dB
Cut-off frequency = 100 Hz
Sampling frequency = 1000 Hz

Dept of ECE

Page | 32

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

MATLAB CODE
% Experiment 11 : Designing a FIR Filter (Hamming Window)

close all; clear all; clc;

SE

% Accept Filter Parameters from User


N = input('Enter the window length N : ');
fc = input('Enter the cut-off frequency fc (Hz) : ');
Fs = input('Enter the sampling frequency Fs (Hz) : ');
Wc = 2*fc/ Fs;
Wh = hamming(N);
window

%Nyquist Frequency
%Create a N-point symmetric Hamming

KS

% Generate a FIR filter based on Hamming Window created


b = fir1(N-1, Wc ,Wh);

% Calculate Frequency Response of Filter designed.


% h - Frequency Response values
w = Frequencies
[h,w] = freqz(b,1,256);
mag = 20*log10(abs(h));
%Magnitude of Response

EC

E,

% Display Values
disp('Hamming Window Co-efficients : ');
disp(Wh);
disp('Unit Sample Response of FIR Filter h(n) : ');
disp(b);
% Plot Frequency response of Butterworth Filter.
freqz(b);
title('Hamming Filter Frequency Response');

OUTPUT

of

Enter the window length N : 27


Enter the cut-off frequency fc (Hz) : 100
Enter the sampling frequency Fs (Hz) : 1000

De

pt

Hamming Window Co-efficients :


0.0800
0.0934
0.1327
0.1957
0.2787
0.3769
0.4846
0.5954
0.7031
0.8013

Dept of ECE

Page | 33

5th Sem

DSP Laboratory (10ECL57)

KS

SE

0.8843
0.9473
0.9866
1.0000
0.9866
0.9473
0.8843
0.8013
0.7031
0.5954
0.4846
0.3769
0.2787
0.1957
0.1327
0.0934
0.0800

KSSEM, Bangalore

EC

E,

Unit Sample Response of FIR Filter h(n) :


Columns 1 through 7
0.0019 0.0023 0.0022 -0.0000 -0.0058 -0.0142 -0.0209

0.0890

0.1429

Columns 15 through 21
0.1840 0.1429 0.0890

0.0374

0.0000 -0.0185 -0.0209

Columns 22 through 27
-0.0142 -0.0058 -0.0000

0.0022

0.0023

0.1840

0.1994

0.0019

De

pt

of

Columns 8 through 14
-0.0185 0.0000 0.0374

Dept of ECE

Page | 34

5th Sem

KSSEM, Bangalore

De

pt

of

EC

E,

KS

SE

DSP Laboratory (10ECL57)

Dept of ECE

Page | 35

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

PROGRAM 12

Aim: To design and implement a IIR Filter for the given specifications.

SE

Theory:

DESIGN AND IMPLEMENTATION OF IIR FILTER

KS

A desired frequency response is approximated by a transfer function expressed as a ratio of


polynomials. This type of transfer function yields an impulse response of infinite duration.
Therefore, the analog filters are commonly referred to as infinite impulse response (IIR)
filters.
The main classes of analog filters are 1.Butterworth Filter.
2.Chebyshev Filter.
These filters differ in the nature of their magnitude responses as well as in their design and
implementation.

E,

BUTTERWORTH FILTERS:

EC

Butterworth filters have very smooth passband, which we pay for with a relatively wide
transition region. A Butterworth filter is characterized by its magnitude frequency response,

De

pt

of

where N is the order of the filter and c is defined as the cutoff frequency where the filter
magnitude is 1/2 times the dc gain (=0)

Dept of ECE

Page | 36

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

SE

Butterworth filter tables


N=1; (s + 1)
N=2; (s2 +0.5 s +1)
N=3; (s2 +s+1)(s+1)
N=4; (s2+0.76536s+1)(s2+1.864776s+2)
N=5; (s+1)( s2+0.6180s+1)( s2+1.6180s+1)
CHEBYSHEV FILTERS:

KS

Chebyshev filters are equiripple in either the passband or stopband. Hence the magnitude
response oscillates between the permitted minimum and maximum values in the band a
number of times depending upon the order of filters. There are two types of chebyshev filters.
The chebyshev I filter is equiripple in passband and monotonic in the stopband, whereas
Chebyshev II is just the opposite.

De

pt

of

EC

E,

The Chebyshev low-pass filter has a magnitude response given by

Dept of ECE

Page | 37

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

PROBLEM 1: BUTTERWORTH FILTER:

SE

Using MATLAB design an IIR filter with passband edge frequency 1500Hz and stop band
edge at 2000Hz for a sampling frequency of 8000Hz, variation of gain within pass band 1db
and stopband attenuation of 15 db. Use Butterworth prototype design and Bilinear
Transformation.
MATLAB CODE :

KS

% Experiment 12 : Design of IIR Filter (Butterworth Filter)


clear all; close all; clc;
% Accept Input Parameters from user
Rp = input('Enter Passband Attenuation in dB
Rs = input('Enter Stopband Attenuation in dB
fp = input('Enter Passband Frequency in Hz :
fs = input('Enter Stopband Frequency in Hz :
Fs = input('Enter Sampling Frequency in Hz :

E,

% Calculate Sampled Frequency values


Wp=2* fp / Fs ;
Ws=2* fs / Fs ;

: ');
: ');
');
');
');

EC

% Calculate Butterworth filter order and cutoff frequency:


% N = Minimum order of Filter
Wn = Cutoff Frequencies
[N,Wn] = buttord(Wp,Ws,Rp,Rs);
% Butterworth Filter Design (z = zeros
[z,p] = butter(N,Wn);

p = poles)

of

% Display Filter parameters :


disp('Order of Butterworth Filter : ');
disp(N);
disp('Butterworth Window Cutoff Frequency : ');
disp(Wn);

OUTPUT:

pt

% Plot Frequency Response of Filter


freqz(z,p);
title('Butterworth frequency response');

De

Enter Passband Attenuation in dB : 1


Enter Stopband Attenuation in dB : 15
Enter Passband Frequency in Hz : 1500
Enter Stopband Frequency in Hz : 2000
Enter Sampling Frequency in Hz : 8000
Order of Butterworth Filter :
6

Dept of ECE

Page | 38

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

EC

E,

KS

SE

Butterworth Window Co-efficient :


0.4104

PROBLEM 2: CHEBYSHEV FILTER:

of

Using MATLAB design an IIR filter with passband edge frequency 1500Hz and stop band
edge at 2000Hz for a sampling frequency of 8000Hz, variation of gain within pass band 1 db
and stopband attenuation of 15 db. Use Chebyshev prototype design and Bilinear
Transformation.

pt

DESIGN:
W1 = (2*pi* F1 )/ Fs = 2*pi*100)/4000 = 0.05 rad
W2 = (2*pi* F2 )/ Fs = 2*pi*500)/4000 =0.25 rad

De

Prewarp:
T=1sec
1 = 2/T tan (w1/2) = 0.157 rad/sec
2 = 2/T tan (w2/2) = 0.828 rad/sec

Dept of ECE

Page | 39

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

n = log10

= 0.765
A= 10-As/20 , A = 1020/20 , A=10
g= (A2 - 1) / , g = 13.01
r= 2 / 1 r=0.828/0.157 = 5.27 rad\sec
)

/ log10{r + (

Cut-off Frequency:

EC

H(s)=[bo / 1+ 2 ] / [ s2+b1s+b0]
= 0.505/[ s2+0.8s+0.036]

E,

c = p = 1 = 0.157 rad\sec
Normalized Transfer Function:

)}

KS

n= 1.388
Therefore n= 2.

SE

= 10

Order:

Denormalized Transfer Function:

H(s)= Hn(s) |s-s/c H(s)= Hn(s) |s-s/0.157


H(s) = 0.0125 / [s2+0.125s+0.057]

of

Apply BLT:
H(Z) = H(s)|s=(2/T)[(1-z-1)/(1+z-1)]

pt

H(Z) = 0.0125+0.025Z-1 + 0.0125 Z-2


4.2769-7.96Z-1 + 3.76Z-2

De

H(Z) = 0.0029+0.0052Z-1 + 0.0029 Z-2


1-1.86Z-1 + 0.88Z-2

Dept of ECE

Page | 40

5th Sem

DSP Laboratory (10ECL57)

KSSEM, Bangalore

MATLAB CODE:

KS

% Calculate Sampled Frequency values


Wp=2* fp / Fs ;
Ws=2* fs / Fs ;

: ');
: ');
');
');
');

SE

% Accept Input Parameters from user


Rp = input('Enter Passband Attenuation in dB
Rs = input('Enter Stopband Attenuation in dB
fp = input('Enter Passband Frequency in Hz :
fs = input('Enter Stopband Frequency in Hz :
Fs = input('Enter Sampling Frequency in Hz :

% Experiment 12B : Design of IIR Filter (Chebyshev Filter)


clear all; close all; clc;

% Calculate Chebyshev filter order and cutoff Frequency:


% N = Minimum order of Filter
Wn = Cutoff Frequencies
[N,Wn]=cheb1ord(Wp,Ws,Rp,Rs);
% Chebyshev Filter Design (z = zeros
[z,p]=cheby1(N,Rp,Wn);

p = poles)

EC

E,

% Display Filter parameters :


disp('Order of Chebyshev Filter : ');
disp(N);
disp('Chebyshev Window Cutoff Frequency : ');
disp(Wn);
% Plot Frequency Response of Filter :
freqz(z,p);
title('Chebyshev Frequency response');

OUTPUT:

pt

of

Enter Passband Attenuation in dB : 1


Enter Stopband Attenuation in dB : 15
Enter Passband Frequency in Hz : 1500
Enter Stopband Frequency in Hz : 2000
Enter Sampling Frequency in Hz : 8000
Order of Chebyshev Filter :
4

De

Chebyshev Window Cutoff Frequency :


0.3750

Dept of ECE

Page | 41

5th Sem

KSSEM, Bangalore

De

pt

of

EC

E,

KS

SE

DSP Laboratory (10ECL57)

Dept of ECE

Page | 42

5th Sem

KSSEM, Bangalore

KS

SE

DSP Laboratory (10ECL57)

De

pt

of

EC

E,

PART B:
Exercises using the
DSP Kit

Dept of ECE

Page | 43

DSP Laboratory (10ECL57)

V Semester

KSSEM, Bangalore

TMS320C6748 DSP
BOARD

EC

E,

KS

SE

Package content:

of

The C6748 DSP Experimenter Kit packaged for Universities (TMDSEXPL138-UNV)


provides everything academics need to get started with teaching and projects using the TI
TMS320C6000 DSP. The TI TMS320C6000 family of DSPs is popular for use in Real-time DSP
coursesThe Experimenter Kit for Universities is a low-cost, flexible development platform for the
OMAP-L138 which is a low-power dual core processor based on C6748 DSP plus an ARM926EJ-S
32-bit RISC MPU.

pt

The C6748 DSP kit has a TMS320C6748 DSP onboard that allows full-speed verification of
code with Code Composer Studio. The C6748 DSP kit provides:

De

A USB Interface
128MB DDRAM and ROM
An analog interface circuit for Data conversion
(AIC) An I/O port
Embedded JTAG emulation support

Connectors on the C6748 DSP kit provide DSP external memory interface (EMIF) and
peripheral signals that enable its functionality to be expanded with custom or third party daughter
boards.
Dept of ECE

Page | 44

DSP Laboratory (10ECL57)

V Semester

KSSEM, Bangalore

The C6748 DSP kit includes a stereo codec. This analog interface circuit (AIC) has the
following characteristics:

High-Performance Stereo Codec

Supports 8-96 ksps sampling rates


High SNR (100-102dB DAC, 92dB ADC)
Integrated PLL supporting a wide range of audio clocks

SE

Interfaces directly to digital or analog microphones

KS

Low-power headphone, speaker and playback modes for portable systems

Programmable digital audio effectsinclude 3D sound, bass, treble, EQ and de-emphasis


Software Control Via TI McASP-Compatible Multiprotocol Serial Port.Glueless
Interface to TI McASPs.

E,

Audio-Data Input/Output Via TI McASP-Compatible Programmable Audio Interface


16/20/24/32-Bit Word Lengths.
The C6748DSP kit has the following features:

EC

The 6748 DSP KIT kit is a low-cost standalone development platform that enables customers
to evaluate and develop applications for the TI C67XX DSP family. The DSP KIT also serves
as a hardware reference design for the TMS320C6748 DSP. Schematics, logic equations and
application notes are available to ease hardware development and reduce time to market.

of

An on-board AIC3106 codec allows the DSP to transmit and receive analog signals.
McASP is used for the codec control interface and for data. Analog audio I/O is done through
two 3.5mm audio jacks that correspond to line input, and line. The analog output is driven to
the line out .McASP1 can be re-routed to the expansion connectors in software.
The DSP KIT includes 2 LEDs and 8 DIP switches as a simple way to provide the user with
interactive feedback.

De

pt

An included 5V external power supply is used to power the board.


On-board voltage
regulators provide the 1.26V DSP core voltage, 3.3V digital and 3.3V analog voltages. A
voltage supervisor monitors the internally generated voltage, and will hold the board in reset
until the supplies are within operating specifications and the reset button is released.
Code Composer communicates with the DSP KIT through an embedded JTAG emulator with a
USB host interface. The DSP KIT can also be used with an external emulator through the
external JTAG connector.
TMS320C6748 DSP Features
Highest-Performance Floating-Point Digital Signal Processor (DSP):
Eight 32-Bit Instructions/Cycle

Dept of ECE

Page | 45

DSP Laboratory (10ECL57)

KSSEM, Bangalore

32/64-Bit Data Word


375/456-MHz C674x Fixed/Floating-Point
Up to 3648/2746 C674x MIPS/MFLOPS
Rich Peripheral Set, Optimized for Audio
Highly Optimized C/C++ Compiler
Extended Temperature Devices Available
Advanced Very Long Instruction Word (VLIW) TMS320C67x DSP Core
Eight Independent Functional Units:
Two ALUs (Fixed-Point)
Four ALUs (Floating- and Fixed-Point)
Two Multipliers (Floating- and Fixed-Point)
Load-Store Architecture With 64 32-Bit General-Purpose Registers
Instruction Packing Reduces Code Size
All Instructions Conditional
Instruction Set Features
Native Instructions for IEEE 754
Single- and Double-Precision
Byte-Addressable (8-, 16-, 32-Bit Data)
8-Bit Overflow Protection
Saturation; Bit-Field Extract, Set, Clear; Bit-Counting; Normalization
67x cache memory.
32K-Byte L1P Program Cache (Direct-Mapped)
32K-Byte L1D Data Cache (2-Way)
256K-Byte L2 unified Memory RAM\Cache.
Real-Time Clock With 32 KHz Oscillator and Separate Power Rail.
Three 64-Bit General-Purpose Timers
Integrated Digital Audio Interface Transmitter (DIT) Supports:
S/PDIF, IEC60958-1, AES-3, CP-430 Formats
Up to 16 transmit pins
Enhanced Channel Status/User Data
Extensive Error Checking and Recovery
2
Two Inter-Integrated Circuit Bus (I C Bus) .
3 64-Bit General-Purpose Timers (each configurable as 2 32-bit timers)
Flexible Phase-Locked-Loop (PLL) Based Clock Generator Module

E,

EC

of

KS

SE

V Semester

IEEE-1149.1 (JTAG

) Boundary-Scan-Compatible

De

pt

3.3-V I/Os, 1.2 -V Internal (GDP & PYP)


3.3-V I/Os, 1.4-V Internal (GDP)(300 MHz only)
LCD Controller
Two Serial Peripheral Interfaces (SPI) Each With Multiple Chip-Selects
Two Multimedia Card (MMC)/Secure Digital (SD) Card Interface with Secure Data I/O
(SDIO) Interfaces
One Multichannel Audio Serial Port.
Two Multichannel Buffered Serial Ports

Dept of ECE

Page | 46

DSP Laboratory (10ECL57)

V Semester

KSSEM, Bangalore

General Procedure to work on Code Composer Studio V4 for non-real


time projects

1. Launch ccs

KS

SE

Launch the CCS v4 icon from the Desktop or goto All Programs ->Texas Instruments >CCSv4

2.

EC

E,

Choose the location for the workspace, where your project will be saved.

3.

De

pt

of

Click the CCS icon from the welcome page to go the workbench, it is marked in the below
picture.

Dept of ECE

Page | 47

A. From the Target menu select New target Configuration


Target -> New target Configuration.
It will open a window like given below.

4. Configure ccs to your target

EC

E,

KS

SE

Specify any arbitrary target name. For Eg., 6748config.ccxml (Extension should be
.ccxml).. Click Finish then you will get configuration window for the created target.

*
Check the box
TMS320C674
8 and finally
Click Save.

De

pt

of

B.
1. Select the Connection: Texas instruments XDS100v1 USB Emulator
2. Select the Device: TMS320C6748. To make search easier type 6748 in device block.

Dept of ECE

Page | 48

goto Advanced tab give the suitable Gel file path as shown below.

C. Next

Follow the path.

E,

KS

SE

C:\6748support\c6748.gel

D.

pt

of

EC

Go to view option and select the Target Configuration:


View->Target Configuration.
A wizard will open in the workspace expand the User Defined folder and you can find your
target, Right click on 6748config.ccxml and select the Launch Selected Configuration.

E. Connect CCS to the target

De

Goto Target -> Connect Target


Now our target is successfully configured and connected.
In future we no need to repeat these steps. If we are working with the same hardware we
can just open the already configured target and launch the selected configuration and
connect it.

Dept of ECE

Page | 49

5. Creating the New Project

Step P1:
Change the Perspective Debug to C/C++ from the right corner of the CCS

EC

Step P3:
Specify the name of the project in the
space provided .and Click Next

E,

KS

SE

Step P2:
Go to File New CCS Project.

De

pt

of

Eg., Project Name: Hello World

Dept of ECE

Page | 50

Select the project type

Project Type: C6000

E,

KS

SE

Click Next

De

pt

of

EC

*However our target is based on C6000 family, Based on the family we need to select the
Project
Type.
Set the project settings window as shown below.

Click finish

Dept of ECE

Page | 51

6. To write the program select one new file.

KS

SE

A.Go to File New Source File.

EC

E,

B. Specify the arbitrary source file name. It should be in the source folder (current project
name.).

pt

of

Note:
Extension of the source file must be the language what we preferred to write the code.
Eg:
For c-> .c
C++ -> .cpp
Assembly -> .asm

De

C.Type your C Code

Dept of ECE

Page | 52

7. BUILD

Build the program to check your code


Have any errors and
warnings. Go to

KS

SE

Project Build active project.

EC

Build Complete for the project

E,

If your code doesnthave any errors and warnings, a message will be printed in the console
window that

De

pt

of

Problems window display errors or warnings, if any.

Dept of ECE

Page | 53

8. DEBUG

After successful Build, Debug your code. During this step ccs will connect to target and it
will
load program on to target.

E,

KS

SE

Goto Target Debug Active project.

of

EC

During debug ccs will display following error message.

pt

Now press reset button on the 6748 hardware , then click on retry.

De

Once you click on retry ccs will load program on to processor and then ccs will guide
us to debug mode, if it is not done automatically.
Change the Perspective C/C++ to Debug
from the right corner of the CCS.

Dept of ECE

Page | 54

9.RUN

E,

KS

SE

Now you can run the code, by selecting the option run from the dialog box else you can
Go to Target Run

De

pt

of

EC

Once you run the program the output will be printed in the Console

Dept of ECE

Page | 55

DSP Laboratory (10ECL57)

V Semester

KSSEM, Bangalore

PROGRAM 1
LINEAR CONVOLUTION OF TWO GIVEN SEQUENCES

SE

Aim: To write the C code to perform Linear Convolution upon two given discrete time
signals.
C Code:

/* PROGRAM TO IMPLEMENT LINEAR CONVOLUTION */

E,

KS

#include<stdio.h>
int y[20];
main()
{
int m=6;
/*Length of i/p samples sequence*/
int n=6;
/*Length of impulse response Coefficients*/
int i=0,j;
/*Input Signal Samples*/
int x[15]={1,2,3,4,5,6,0,0,0,0,0,0};
/*Impulse Response Coefficients*/
int h[15]={1,2,3,4,5,6,0,0,0,0,0,0};

of

EC

/*Calculate Values*/
for(i=0;i<m+n-1;i++)
{
y[i]=0;
for(j=0;j<=i;j++)
y[i]+=x[j]*h[i-j];
}

pt

/* Display Values*/
printf("Sequence 1: \n");
for(i=0;i<m;i++)
printf("%d\t",x[i]);

De

printf("\nSequence 2: \n");
for(i=0;i<n;i++)
printf("%d\t",h[i]);
printf("\nConvolved Sequence: \n");
for(i=0;i<m+n-1;i++)
printf("%d\t",y[i]);

Dept of ECE

Page | 56

DSP Laboratory (10ECL57)

V Semester

KSSEM, Bangalore

20

35

56

70

76

73

60

36

SE

Sequence 1:
1
2
3
Sequence 2:
1
2
3
Convolved Sequence:
1
4
10

OUTPUT:

Procedure:
1. Open Code Composer Studio v4.

KS

2. Connect the target (step 4).

3. Create new project with name as sine wave (step 5).

4. Create new source file and type the code linear.c and save it.(step 6)

6. To view the values in graph

E,

5. Now perform steps 7, 8and 9.Once you run the program you can watch convolution
result in the console window.

EC

a. Go to Tools Graph Single Time


7. Set the Graph Properties as shown
Buffer size : 11

DSP Data Type : 16-Bit Unsigned Int

of

Start Address: y

Display Data Size : 11

pt

8. Click : Ok
9. Note down the output waveform.

De

NOTE : Follow the same procedure for the rest of the experiments.

Dept of ECE

Page | 57

DSP Laboratory (10ECL57)

V Semester

KSSEM, Bangalore

PROGRAM 2:

CIRCULAR CONVOLUTION OF TWO GIVEN SEQUENCES

SE

Aim: To write the C code to perform Circular Convolution upon two given discrete time
signals.
C Code:

EC

E,

KS

/* PROGRAM TO IMPLEMENT CIRCULAR CONVOLUTION */


#include<stdio.h>
int m,n,x[30],h[30],y[30],i,j,temp[30],k,x2[30],a[30];
void main()
{
printf("Enter the length of the first sequence\n");
scanf("%d",&m);
printf("\nEnter the length of the second sequence\n");
scanf("%d",&n);
printf("\nEnter the first sequence\n");
for(i=0;i<m;i++)
scanf("%d",&x[i]);
printf("\nEnter the second sequence\n");
for(j=0;j<n;j++)
scanf("%d",&h[j]);

De

pt

of

if(m-n!=0)
/* If length of both sequences are not equal */
{
if(m>n)
/* Pad the smaller sequence with zero */
{
for(i=n;i<m;i++)
h[i]=0;
n=m;
}
/*Initialize Array of Zeros*/
for(i=m;i<n;i++)
x[i]=0;
m=n;
}
/* Convert linear sequence to circular sequence*/
y[0]=0;
a[0]=h[0];
for(j=1;j<n;j++)
/* folding h(n) to h(-n) */
a[j]=h[n-j];

Dept of ECE

Page | 58

DSP Laboratory (10ECL57)

V Semester

KSSEM, Bangalore

/*Circular convolution*/
for(i=0;i<n;i++)
y[0]+=x[i]*a[i];

SE

for(k=1;k<n;k++)
{
y[k]=0;

KS

/*circular shift*/
for(j=1;j<n;j++)
x2[j]=a[j-1];
x2[0]=a[n-1];
for(i=0;i<n;i++)
{
a[i]=x2[i];
y[k]+=x[i]*x2[i];
}

EC

E,

}
/* displaying the result */
printf("\nConvolved Sequence:\n");
for(i=0;i<n;i++)
printf("%d \t",y[i]);
}

OUTPUT:

of

Enter the length of the first sequence


4
Enter the length of the second sequence
Enter the first sequence
2
1
2
1
Enter the second sequence

16

14

16

De

14

pt

Convolved Sequence:

Dept of ECE

Page | 59

DSP Laboratory (10ECL57)

V Semester

KSSEM, Bangalore

PROGRAM 3:

COMPUTATION OF N- POINT DFT OF A GIVEN SEQUENCE


Aim: Computation of N point DFT of a given sequence.

SE

C Code:

EC

E,

KS

#include<stdio.h>
#include<math.h>
int N,k,n,i;
float pi=3.1416,sumre=0, sumim=0,out_real[8]={0.0},
out_imag[8]={0.0};
int x[32];
void main(void)
{
printf("Enter the length of the sequence\n");
scanf("%d",&N);
printf("\nEnter the sequence\n");
for(i=0;i<N;i++)
scanf("%d",&x[i]);
for(k=0;k<N;k++)
{
sumre=0;
sumim=0;

De

pt

of

for(n=0;n<N;n++)
{
sumre=sumre+x[n]* cos(2*pi*k*n/N);
sumim=sumim-x[n]* sin(2*pi*k*n/N);
}
out_real[k]=sumre;
out_imag[k]=sumim;
printf("DFT of the Sequence :\n");
printf("X([%d])=\t%f\t+\t%fi\n",k,out_real[k],out_imag[k]);

Dept of ECE

Page | 60

DSP Laboratory (10ECL57)

V Semester

KSSEM, Bangalore

OUTPUT:

De

pt

of

EC

E,

KS

SE

Enter the length of the sequence


4
Enter the sequence
0 1 2 3
DFT of the Sequence
6.0
-2.0 + 2.0i
-2.0 - 0.0i
-2.0 - 2.0i

Dept of ECE

Page | 61

DSP Laboratory (10ECL57)

V Semester

KSSEM, Bangalore

PROGRAM 4:

IMPULSE RESPONSE OF FIRST ORDER AND SECOND ORDER SYSTEM


Aim: To Calculate the Impulse Response of the First Order and Second Order Systems.

SE

1. First Order System:


C Code:
#include <stdio.h>

/*First Order Filter*/


/*Length of Impulse Response*/

KS

#define Order 1
#define Len 10
float y[Len] = {0,0,0}, sum;
main()
{

E,

int j,k;
float b[Order+1]={1, 3};
/*Input Coefficients*/
float a[Order+1]={1, 0.2}; /*Output Coefficients*/
printf("Impulse Response Coefficients:\n");
for(j=0;j<Len;j++)
{

OUTPUT:

pt

of

EC

sum = 0;
for (k=1;k<=Order;k++)
{
if ((j-k)>=0)
sum=sum+(b[k]*y[j-k]);
}
if(j<=Order)
y[j]=a[j]-sum;
else
y[j]=-sum;
printf("Response [%d] = %f\n",j,y[j]);
}
}

De

Impulse Response Coefficients:


Response [0] = 1.000000
Response [1] = -2.800000
Response [2] = 8.400000
Response [3] = -25.199999
Response [4] = 75.599998
Response [5] = -226.799988
Response [6] = 680.399963
Response [7] = -2041.199951
Response [8] = 6123.599609
Response [9] = -18370.798828

Dept of ECE

Page | 62

DSP Laboratory (10ECL57)

V Semester

KSSEM, Bangalore

2. Second Order System:

C Code:

#define Order 2
#define Len 10

SE

#include <stdio.h>

/*Second Order Filter*/


/*Length of Impulse Response*/

float y[Len] = {0,0,0}, sum;

KS

main()
{

EC

E,

int j,k;
float b[Order+1]={1, 3, -0.12}; /*Input Coefficients*/
float a[Order+1]={1, 0.2, -1.5}; /*Output Coefficients*/
printf("Impulse Response Coefficients:\n");
for(j=0;j<Len;j++)
{
sum = 0;
for (k=1;k<=Order;k++)
{
if ((j-k)>=0)
sum=sum+(b[k]*y[j-k]);
}
if(j<=Order)
y[j]=a[j]-sum;
else
y[j]=-sum;
printf("Response [%d] = %f\n",j,y[j]);
}

OUTPUT:

of

De

pt

Impulse Response Coefficients:


Response [0] = 1.000000
Response [1] = -2.800000
Response [2] = 7.020000
Response [3] = -21.396000
Response [4] = 65.030403
Response [5] = -197.658722
Response [6] = 600.779785
Response [7] = -1826.058350
Response [8] = 5550.268555
Response [9] = -16869.933594

Dept of ECE

Page | 63

DSP Laboratory (10ECL57)

V Semester

KSSEM, Bangalore

SAMPLE VIVA QUESTIONS:

De

pt

of

EC

E,

KS

SE

1. What is sampling theorem?


2. What do you mean by process of reconstruction?
3. What are techniques of reconstructions?
4. What do you mean Aliasing? What is the condition to avoid aliasing for sampling?
5. Write the conditions of sampling.
6. How many types of sampling there?
7. Explain the statement- t= 0:0.000005:0.05
8. In the above example what does colon (:) and semicolon (;) denote?
9. What is a) Undersampling b) Nyquist Plot c) Oversampling.
10. Write the MATLAB program for Oversampling.
11. What is the use of command legend?
12. Write the difference between built in function, plot and stem describe the function.
13. What is the function of built in function and subplot?
14. What is linear convolution?
15. Explain how convolution syntax built in function works.
16. How to calculate the beginning and end of the sequence for the two sided
controlled output?
17. What is the total output length of linear convolution sum.
18. What is an LTI system?
19. Describe impulse response of a function.
20. What is the difference between convolution and filter?
21. Where to use command filter or impz, and what is the difference between these
two?
22. What is the use of function command deconv?
23. What is the difference between linear and circular convolution?
24. What do you mean by statement subplot (3,3,1).
25. What do you mean by command mod and where it is used?
26. What do you mean by Autocorrelation and Crosscorrelation sequences?
27. What is the difference between Autocorrelatio and Crsscorrelation.
28. List all the properties of autocorrelation and Crosscorrelaion sequence.
29. Where we use the inbuilt function xcorr and what is the purpose of using this
function?
30. How to calculate output of DFT using MATLAB?
31. What do you mean by filtic command, explain.
32. How to calculate output length of the linear and circular convolution.
33. What do you mean by built in function fliplr and where we need to use this.
34. What is steady state response?
35. Which built in function is used to solve a given difference equation?
36. Explain the concept of difference equation.
37. Where DFT is used?

Dept of ECE

Page | 64

DSP Laboratory (10ECL57)

V Semester

KSSEM, Bangalore

De

pt

of

EC

E,

KS

SE

38. What is the difference between DFT and IDFT?


39. What do you mean by built in function abs and where it is used?
40. What do you mean by phase spectrum and magnitude spectrum/ give comparison.
41. How to compute maximum length N for a circular convolution using DFT and
IDFT.(what is command).
42. Explain the statement- y=x1.*x2
43. What is FIR and IIR filter define, and distinguish between these two.
44. What is filter?
45. What is window method? How you will design an FIR filter using window
method.
46. What are low-pass and band-pass filter and what is the difference between these
two?
47. Explain the command : N = ceil(6.6 *pi/tb)
48. Write down commonly used window function characteristics.
49. What is the MATLAB command for Hamming window? Explain.
50. What do you mea by cut-off frequency?
51. What do you mean by command butter, cheby1?
52. Explain the command in detail- [N,wc]=buttord(2*fp/fs,2*fstp/fs,rp,As)
53. What is CCS? Explain in detail to execute a program using CCS.
54. Why do we need of CCS?
55. How to execute a program using dsk and simulator?
56. Which IC is used in CCS? Explain the dsk, dsp kit.
57. What do you mean by noise?
58. Explain the program for linear convolution for your given sequence.
59. Why we are using command float in CCS programs.
60. Where we use float and where we use int?
61. Explain the command- i= (n-k) % N
62. Explain the entire CCS program in step by step of execution.
63. What is MATLAB? What does it stand for?

Dept of ECE

Page | 65

Potrebbero piacerti anche