Escolar Documentos
Profissional Documentos
Cultura Documentos
Prepared By
Mrs. Vidhya R., Asst. Professor
Mr. Ravikiran B. A., Asst. Professor
Table of Contents
EM
SS
PART – A
,K
2 Impulse response of a given system 4
ent
3 Linear convolution of two given sequences. 7
4 Circular convolution of two given sequences 11
5
properties. tm
Autocorrelation of a given sequence and verification of its
15
par
Cross-correlation of given sequences and verification of
6 18
its properties.
7 Solving a given difference equation. 21
De
10 29
and IDFT
Design and implementation of FIR filter to meet given
11 32
specifications.
ab
SS
About the DSP Trainer Kit 44
Using Code Composer Studio 47
,K
1 Linear convolution of two given sequences. 56
2 Circular convolution of two given sequences 58
ent
3 Computation of N point DFT of a given sequence. 60
4
Systems tm
Impulse Response of the First Order and Second Order
62
par
Viva Questions 64
De
CE
-E
ab
PL
DS
DSP Laboratory (10ECL57) 5th Sem KSSEM, Bangalore
PROGRAM 1
EM
VERIFICATION OF SAMPLING THEOREM
Generate a sinusoidal wave of 1kHz. Calculate the Nyquist frequency, and verify
SS
Sampling Theorem, showing output waveforms for undersampled, oversampled and right
sampled cases.
,K
Theory:
Sampling is the process of converting an continuous time signal into a discrete time signal.
ent
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.
rtm
Sampling is described by the relation: 𝑥(𝑛) = 𝑥𝑎 (𝑛𝑇) −∞<𝑛 <∞
Where 𝑥(𝑛) is the discrete-time signal obtained by sampling the analog signal every T
seconds. 𝐹𝑠 = 1/𝑇 is known as the Sampling Frequency.
epa
The Sampling Theorem states that :
continuous time signal, the sampling frequency must be at least 2𝜔. This frequency is known
as the “Nyquist Rate”.
2𝜋𝑛𝐹
𝑥𝑎 (𝑛𝑇) = 𝐴 sin � �
𝐹𝑠
Now, assuming the sampling frequency is more than the Nyquist Frequency, the
ab
continuous time signal can be reconstructed accurately using the interpolation function:
sin 2𝜋𝐹𝑡
𝑔(𝑡) =
2𝜋𝐹𝑡
PL
𝑛=−∞
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
EM
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.
SS
MATLAB CODE:
% Experiment 1 : Sampling Theorem Verification
,K
clear all; close all; clc;
% Signal Parameters
f = 1000; % Signal Frequency = 1kHz
ent
T = 1/f; % Signal Period
t = 0:0.01*T:2*T; % Time index
ylabel('x(t)');
epa
%Oversampling Condition:
fs1 = 10*f; % Oversampling (fs > 2f)
n1 = 0:1/fs1:2*T; % Time scale
D
plot(n1,x1,'r');
hold off;
title('Oversampling Condition : Fs = 10F');
xlabel('n');
ylabel('x(n)');
-E
x2 = cos(2*pi*f*n2);
subplot(2,2,3);
stem(n2,x2);
hold on;
PL
plot(n2,x2,'r');
hold off;
title('Sampling at Nyquist Frequency : Fs = 2F');
xlabel('n');
ylabel('x(n)');
DS
EM
n3 = 0:1/fs3:2*T;
x3 = cos(2*pi*f*n3);
subplot(2,2,4);
stem(n3,x3);
hold on;
plot(n3,x3,'r');
SS
hold off;
title('Undersampling Condition : Fs = 1.5 f');
xlabel('n');
ylabel('x(n)');
,K
OUTPUT:
ent
rtm
D epa
CE
-E
ab
PL
DS
PROGRAM 2
EM
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.
SS
Assume a second-order system represented by the following difference equation:
𝑦(𝑛) = 𝑏0 𝑥(𝑛) + 𝑏1 𝑥(𝑛 − 1) + 𝑏20 𝑥(𝑛 − 2) + 𝑎1 𝑦(𝑛 − 1) + 𝑎2 𝑦(𝑛 − 2)
,K
Theory:
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 an unit impulse, or a Dirac delta function. The impulse
ent
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.
rtm
Discrete-time LTI systems can also be described using Difference Equations. A linear
constant-coefficient difference equation can be of the form:
𝑁 𝑀
epa
� 𝑎𝑘 𝑦[𝑛 − 𝑘] = � 𝑏𝑘 𝑦[𝑛 − 𝑘]
𝑘=0 𝑘=0
Where the integer N is termed the order of the difference equation, and corresponds to the
D
maximum memory involving the system output. The order generally represents the number of
energy storage devices in a physical system.
CE
We can calculate the impulse response of the system using Z-transforms as shown in the
following example:
Or:
𝑌(𝑍)[1 + 3 𝑍 −1 − 0.12 𝑍 −2 ] = 𝑋(𝑍)[1 + 0.2 𝑍 −1 − 1.5 𝑍 −2 ]
DS
EM
𝑌(𝑍) [1 + 3 𝑍 −1 − 0.12 𝑍 −2 ]
𝐻(𝑍) = =
𝑋(𝑍) [1 + 0.2 𝑍 −1 − 1.5 𝑍 −2 ]
SS
𝐻(𝑍) = 1 − 2.8 𝑍 −1 + 7.02 𝑍 −2 − 21.4 𝑍 −3 + 65.03 𝑍 −4
,K
ℎ[𝑛] = [1 − 2.8 7.02 21.4 65.03]
ent
MATLAB CODE:
% Experiment 2 : Impulse Response of a Given Second-Order System
%
b
Accept Input and Output signal Co-efficients:
rtm
= input('Enter the coefficients of x(n) in 1-D Matrix Form: ');
a = input('Enter the coefficients of y(n) in 1-D Matrix Form: ');
epa
N = input('Enter the number of samples of impulse response desired: ');
[h,t] = impz(b,a,N);
stem(t,h);
title('Impulse Response Plot');
ylabel('h(n)'); xlabel('n');
disp('Impulse Response Coefficients:');
disp(h);
-E
OUTPUT:
7.0200
-21.3960
65.0304
EM
SS
,K
ent
rtm
Depa
CE
-E
ab
PL
DS
PROGRAM 3
EM
LINEAR CONVOLUTION OF TWO GIVEN SEQUENCES
Aim: To write the MATLAB code to perform Linear Convolution upon two given discrete
time signals.
SS
Theory:
Convolution is the process used to find the response of a Linear Time Invariant system to a
,K
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.
ent
Let 𝑥1 (𝑛) and 𝑥2 (𝑛) be two discrete-time signals. The convolution sum of the two signals
can be calculated using the formula:
∞
rtm
𝑦(𝑛) = 𝑥1(𝑛) ∗ 𝑥2(𝑛) = � 𝑥1(𝑘) 𝑥2(𝑛 − 𝑘)
𝑘=−∞
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.
epa
MATLAB has a built-in function called “conv” function, which basically performs a
linear convolution of any two given sequences.
CE
Assume two discrete-time sequences 𝑥1 and 𝑥2 in a Linear Time Invariant System, given
by:
ab
MATLAB CODE:
EM
1. Using “conv” function:
%% Linear Convolution using CONV command
clear all; close all; clc;
SS
% Accept input signal sequences
x1 = input('Enter Input Sequence for Signal x1(n): ');
x2 = input('Enter Input Sequence for Signal x2(n): ');
,K
y=conv(x1,x2);
ent
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)');
rtm
subplot(3,1,3);
epa
stem(y);
title('Convolved Signal y(n) = x1(n)*x2(n)');
xlabel('n'); ylabel('y(n)');
disp('Convolved sequence:');
disp(y);
CE
y = zeros(1,N);
for n = 1:N
% y(n) = 0R;
EM
for k = 1:n
y(n)=y(n)+x1(k)*x2(n-k+1);
end
end
SS
subplot(3,1,1);
stem(T,x1);
title('Input Signal x1(n)');
xlabel('n'); ylabel('x1(n)');
,K
subplot(3,1,2);
stem(T,x2);
title('Input Signal x2(n)');
ent
xlabel('n'); ylabel('x2(n)');
subplot(3,1,3);
stem(T,y);
title('Convolved Signal y(n) = x1(n)*x2(n)');
xlabel('n'); ylabel('y(n)');
rtm
% Display the convolved Sequence in Command Window
disp('Convolved sequence:');
disp(y);
D epa
CE
OUTPUT:
Convolved sequence:
2 7 2 -1 11 -6
ab
PL
DS
EM
SS
,K
ent
rtm
Depa
CE
-E
ab
PL
DS
PROGRAM 4
EM
CIRCULAR CONVOLUTION OF TWO GIVEN SEQUENCES
Aim: To write the MATLAB code to perform Circular Convolution upon two given discrete
time signals.
SS
Theory:
The Circular convolution, also known as cyclic convolution, of two aperiodic functions occurs
,K
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
ent
convolved output is also periodic.
Circular convolution sum can be calculated using the formula:
𝑁−1
rtm
𝑦(𝑛) = 𝑥1(𝑛) ∗ 𝑥2(𝑛) = � 𝑥1(𝑛) 𝑥2�(𝑚 − 𝑛)�𝑁
𝑛=0
For 𝑚 = 0,1, … . , 𝑁 − 1
epa
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
CE
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.
-E
Let us take the case of two discrete-time aperiodic signals given by:
For m = 0:
3
𝑛=0
For m = 1:
3
For m = 2:
EM
𝑛=0
For m = 3:
3
SS
𝑛=0
,K
MATLAB CODE:
ent
1. Using Convolution Sum Formula:
%% Circular Convolution using Formula
rtm
x1 = input('Enter Input Sequence for Signal x1(n): ');
n1 = length(x1);
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;
ab
end
y(m)=y(m)+x1(n)*x2(i); %Convolution Sum Formula
end
end
PL
subplot(3,1,2);
stem(T,x2);
EM
subplot(3,1,3);
stem(T,y);
title('Convolved Signal y(n) = x1(n)*x2(n)');
xlabel('n'); ylabel('y(n)');
SS
% Display the convolved Sequence in Command Window
disp('Convolved sequence:');
disp(y);
,K
2. Using “cconv” function.
ent
% 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));
rtm
%Perform Linear Convolution using CONV command
y=cconv(x1,x2,n);
subplot(3,1,2);
stem(x2);
title('Input Signal x2(n)');
xlabel('n'); ylabel('x2(n)');
CE
subplot(3,1,3);
stem(y);
title('Convolved Signal y(n) = x1(n)*x2(n)');
-E
xlabel('n'); ylabel('y(n)');
OUTPUT:
EM
SS
,K
ent
rtm
Depa
CE
-E
ab
PL
DS
PROGRAM 5
EM
AUTOCORRELATION OF A GIVEN SEQUENCE
Aim: To write the MATLAB code to perform Autocorrelation on a given signal and to verify
its properties.
SS
Theory:
,K
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.
ent
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
and
∞ ∞ ∞ ∞
2 2 2 (𝑛) 2 2 (𝑛
� [𝑎𝑥(𝑛) + 𝑏𝑥(𝑛 − 𝑙)] = 𝑎 � 𝑥 + 𝑏 � 𝑥 − 𝑙) + 2𝑎𝑏 � 𝑥 (𝑛)𝑥(𝑛 − 𝑙)
𝑛=−∞ 𝑛=−∞ 𝑛=−∞ 𝑛=−∞
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:
DS
EM
3
SS
We see that the Total energy of the signal is equal to the amplitude of the autocorrelation
signal at the origin.
,K
MATLAB CODE:
% Experiment 5 : Autocorrelation of a Signal.
ent
clear all; close all; clc;
rxx = xcorr(x,x);
rtm
% Perform Autocorrelation using xcorr function.
title('Input Signal');
xlabel('n'); ylabel('x(n)');
CE
subplot(2,1,2);
stem(n2,rxx);
title('Autocorrelation Sequence');
xlabel('n'); ylabel('rxx(l)');
grid on;
-E
end
EM
if rxx_r == rxx_l
disp('Autocorrelation Sequence is Even. Hence, verified.');
else
disp('Autocorrelation Sequence is not Even. Hence, not
verified.');
end
SS
OUTPUT:
,K
Enter a finite-length signal sequence : [1 2 3 4]
Autocorrelation Sequence :
ent
4 11 20 30 20 11 4
rtm
Amplitude of Midpoint of Autocorrelation Sequence : 30
PROGRAM 6
EM
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.
SS
Theory:
,K
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
ent
given by the formula:
∞
∞ ∞ ∞ ∞
2 2 2 (𝑛) 2 2 (𝑛
� [𝑎𝑥(𝑛) + 𝑏𝑦(𝑛 − 𝑙)] = 𝑎 � 𝑥 + 𝑏 � 𝑦 − 𝑙) + 2𝑎𝑏 � 𝑥 (𝑛)𝑦(𝑛 − 𝑙)
𝑛=−∞ 𝑛=−∞ 𝑛=−∞ 𝑛=−∞
This can be written as: �𝑟𝑥𝑦 (𝑙)� ≤ �𝑟𝑥𝑥 (0)𝑟𝑦𝑦 (0) = �𝐸𝑥 𝐸𝑦 .
ab
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.
PL
MATLAB CODE:
EM
% Experiment 6 : Cross-correlation of two Signals.
SS
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);
,K
% 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
ent
n3 = -length(x)+1:length(x)-1;
subplot(3,1,2);
stem(n2,x2);
D
subplot(3,1,3);
CE
stem(n3,rxy);
title('Cross - Correlation Sequence');
xlabel('n'); ylabel('rxy(l)');
grid on;
-E
EM
if rxy == fliplr(ryx)
disp('Since rxy(l) = ryx(-l), Cross - Correlation property is
verified.');
else
disp('Cross - Correlation property is not verified.');
end
SS
OUTPUT:
,K
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):
ent
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 rtm
Max Amplitude of Cross - Correlation Sequence : 25
Cross - Correlation Energy Property is verified
epa
Since rxy(l) = ryx(-l), Cross - Correlation property is verified.
D
CE
-E
ab
PL
DS
PROGRAM 7
EM
SOLVING A GIVEN DIFFERENCE EQUATION
Aim: To write the MATLAB code to solve a given difference equation, given the co-efficients
and initial values.
SS
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.
,K
Theory:
ent
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
rtm
n=5, x(5)=0.0010
epa
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
D
Similarly,
MATLAB CODE:
EM
%Display output sequence
disp('Difference Equation Solution : y(n) : ');
disp(Yout);
SS
subplot(2,1,1);
stem(n,x);
title('Input Sequence x(n)');
xlabel('n'); ylabel('x(n)');
,K
subplot(2,1,2);
stem(n,Yout);
grid on;
ent
title('Output Sequence y(n)');
xlabel('n'); ylabel('y(n)');
OUTPUT:
rtm
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]
epa
Difference Equation Solution : y(n) :
2.0000 1.2500 0.9375 0.7969 0.7305
0.6982
D
CE
-E
ab
PL
DS
PROGRAM 8
EM
COMPUTATION OF N- POINT DFT
Aim: Computation of N point DFT of a given sequence and to plot magnitude and phase
spectrum.
SS
Theory:
DFT stands for Discrete Fourier Transform. It is used to find the amplitude and phase
,K
spectrum of a discrete time sequence.
ent
x(n) X(k)
For k=0,
D
4−1
0
𝑋(0) = � 𝑥(𝑛)𝑒 = 𝑥(0) + 𝑥(1) + 𝑥(2) + 𝑥(3) = 0 + 1 + 2 + 3 = 6
𝑛=0
CE
For k=1,
4−1
2𝜋 2𝜋 2𝜋 2𝜋 2𝜋
−𝑗� �𝑛
𝑋(1) = � 𝑥(𝑛)𝑒 𝑁 = 𝑥(1)𝑒 −𝑗� 4 �.0 + 𝑥(1)𝑒 −𝑗� 4 �1 + 𝑥(2)𝑒 −𝑗� 4 �2 + 𝑥(3)𝑒 −𝑗� 4 �3
𝑛=0
-E
= - j- 2 + 3j = -2 + j2
Similarly,
For k=2,
ab
4−1
2𝜋
−𝑗� �2𝑛
𝑋(2) = � 𝑥(𝑛)𝑒 4 = 𝑥(1)𝑒 −𝑗𝜋.0 + 𝑥(1)𝑒 −𝑗𝜋1 + 𝑥(2)𝑒 −𝑗𝜋2 + 𝑥(3)𝑒 −𝑗𝜋3
𝑛=0
PL
= 0-1+2-3 = -2
For k=3,
X(3) = -2 –j2
DS
MATLAB CODE:
EM
%Experiment 8 : N-Point DFT
clear all; close all; clc;
SS
xn=xn';
N = length(xn);
Xk = zeros(N, 1); %Initialize zero matrix for DFT sequence
,K
%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
ent
%Display DFT Sequence
disp('DSP Sequence : X(k) :');
disp(Xk);
%Plot Signals
n = 0:N-1;
% Input Sequence
%Time base rtm
subplot (2,2,[1:2]);
epa
stem(n, xn);
title('Input Sequence x(n)');
xlabel('n');ylabel('x(n)');
subplot (2,2,3);
stem(n, abs(Xk));
grid on;
title('Magnitude Plot of DFT : |X(k)|');
CE
xlabel('n');ylabel('|X(k)|');
grid on;
title('Phase Plot of DFT : angle(X(k))');
xlabel('n');ylabel('Angle');
ab
OUTPUT:
-2.0000 - 0.0000i
-2.0000 - 2.0000i
EM
SS
,K
ent
rtm
Depa
CE
-E
ab
PL
DS
PROGRAM 9
EM
LINEAR CONVOLUTION USING DFT AND IDFT
Aim: To calculate the Linear Convolution of two sequences using DFT and IDFT
Theory:
SS
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
,K
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.
ent
If x(n) and h(n) are the two sequences of length ‘l’ and ‘m’ respectively. then X(k) and
H(k) their DFT’s of length N=L+M-1.
Y(k)=x(k)h(k)
rtm
Therefore the linear convolution of two sequence is the N point IDFT of Y(k).
Ex: Find the linear convolution of x(n)={1,2} and h(n)={1,2,3} using DFT and IDFT method.
epa
Y(k) = X(k)H(k)
𝑌(𝑘) = { 18 , −6 + 2j , −2 , 6 − 2j }
y(n) = { 1 , 4 , 7 , 6 }
MATLAB CODE
EM
% Experiment 9 : Linear Convolution using Fourier Transforms
clear all; close all; clc;
SS
x1 = input('Enter Input Sequence for Signal x1(n): ');
n1 = length(x1);
x2 = input('Enter Input Sequence for Signal x2(n): ');
n2=length(x2);
,K
N = n1+n2-1; % Length of convolved sequence
T = 1:N;
ent
%Calculate N-point DFT and IDFT.
y1=fft(x1,N); % N-point DFT of x1
y2=fft(x2,N);
y3=y1.*y2;
y=ifft(y3,N); rtm
% N-point DFT of x2
% Multiplication in time domain
% N-point IDFT of y to recover result
subplot(3,1,2);
D
stem(T,x2);
title('Input Signal x2(n)');
xlabel('n'); ylabel('x2(n)');
CE
subplot(3,1,3);
stem(T,y);
title('Convolved Signal y(n) = x1(n)*x2(n)');
xlabel('n'); ylabel('y(n)');
-E
OUTPUT
EM
SS
,K
ent
rtm
Depa
CE
-E
ab
PL
DS
PROGRAM 10
EM
CIRCULAR CONVOLUTION USING DFT AND IDFT
Aim: To calculate the Circular Convolution of two sequences using DFT and IDFT
Theory:
SS
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
,K
the frequency domain, and find the IDFT of the product, to get the periodic convolved signal
in time domain.
Example: Find the circular convolution of x(n)={1,2,3,4} and h(n)={4,3,2} using DFT and
ent
IDFT method.
Y(k) = X(k)H(k)
D
y(n) = { 22 , 19 , 20 , 29 }
-E
MATLAB CODE
x1=[x1 zeros(1,N-n1)];
x2=[x2 zeros(1,N-n2)];
EM
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
SS
stem(T,x1);
title('Input Signal x1(n)');
xlabel('n'); ylabel('x1(n)');
,K
subplot(3,1,2);
stem(T,x2);
title('Input Signal x2(n)');
xlabel('n'); ylabel('x2(n)');
ent
subplot(3,1,3);
stem(T,y);
title('Convolved Signal y(n) = x1(n)*x2(n)');
xlabel('n'); ylabel('y(n)'); grid on;
disp('Convolved sequence:');
disp(y);
rtm
% Display the convolved Sequence in Command Window
epa
OUTPUT
22 19 20 29
CE
-E
ab
PL
DS
EM
SS
,K
ent
rtm
Depa
CE
-E
ab
PL
DS
PROGRAM 11
EM
DESIGN AND IMPLEMENTATION OF FIR FILTER
Aim: To design and implement a FIR Filter for the given specifications.
Theory:
SS
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
,K
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:
ent
h(n) = h d (n) 0≤n≤N-1
= 0 otherwise ……………….(a)
The impulse response h d (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) = h d (n)w(n) ……………….(b) rtm
where w(n) is said to be a rectangular window defined by
w(n) = 1 0≤n≤N-1
epa
= 0 otherwise
Taking DTFT on both the sides of equation(b), we get
H(ω) = H d (ω)*W(ω)
D
Hamming window:
CE
Problem: Using MATLAB design an IIR filter to meet the following specifications choosing
Hamming window:
• Window length, N = 27
ab
MATLAB CODE
EM
% Experiment 11 : Designing a FIR Filter (Hamming Window)
SS
N = input('Enter the window length N : ');
fc = input('Enter the cut-off frequency fc (Hz) : ');
Fs = input('Enter the sampling frequency Fs (Hz) : ');
,K
Wc = 2*fc/ Fs; %Nyquist Frequency
Wh = hamming(N); %Create a N-point symmetric Hamming
window
ent
% Generate a FIR filter based on Hamming Window created
b = fir1(N-1, Wc ,Wh);
% Display Values
rtm
%Magnitude of Response
OUTPUT
0.0934
0.1327
0.1957
PL
0.2787
0.3769
0.4846
0.5954
DS
0.7031
0.8013
0.8843
0.9473
EM
0.9866
1.0000
0.9866
0.9473
SS
0.8843
0.8013
0.7031
,K
0.5954
0.4846
0.3769
ent
0.2787
0.1957
0.1327
0.0934
0.0800
rtm
Unit Sample Response of FIR Filter h(n) :
Columns 1 through 7
epa
0.0019 0.0023 0.0022 -0.0000 -0.0058 -0.0142 -0.0209
Columns 8 through 14
D
Columns 15 through 21
CE
Columns 22 through 27
-0.0142 -0.0058 -0.0000 0.0022 0.0023 0.0019
-E
ab
PL
DS
EM
SS
,K
ent
rtm
Depa
CE
-E
ab
PL
DS
PROGRAM 12
EM
DESIGN AND IMPLEMENTATION OF IIR FILTER
Aim: To design and implement a IIR Filter for the given specifications.
SS
Theory:
,K
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.
ent
The main classes of analog filters are -
1.Butterworth Filter.
2.Chebyshev Filter.
rtm
These filters differ in the nature of their magnitude responses as well as in their design and
implementation.
BUTTERWORTH FILTERS:
epa
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,
| 𝐻(𝑗𝛺) | = 1 / [1 + (𝛺/𝛺𝑐)2𝑁]1/2
D
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)
CE
-E
ab
PL
DS
EM
Butterworth filter tables
N=1; (s + 1)
N=2; (s2 +0.5 s +1)
N=3; (s2 +s+1)(s+1)
SS
N=4; (s2+0.76536s+1)(s2+1.864776s+2)
N=5; (s+1)( s2+0.6180s+1)( s2+1.6180s+1)
,K
CHEBYSHEV FILTERS:
Chebyshev filters are equiripple in either the passband or stopband. Hence the magnitude
ent
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.
rtm
The Chebyshev low-pass filter has a magnitude response given by
D epa
CE
-E
ab
PL
DS
EM
PROBLEM 1: BUTTERWORTH FILTER:
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
SS
and stopband attenuation of 15 db. Use Butterworth prototype design and Bilinear
Transformation.
,K
MATLAB CODE :
ent
% Accept Input Parameters from user
Rp = input('Enter Passband Attenuation in dB : ');
Rs = input('Enter Stopband Attenuation in dB : ');
rtm
fp = input('Enter Passband Frequency in Hz :
fs = input('Enter Stopband Frequency in Hz :
Fs = input('Enter Sampling Frequency in Hz :
');
');
');
disp(Wn);
OUTPUT:
PL
6
Butterworth Window Co-efficient :
EM
0.4104
SS
,K
ent
rtm
D epa
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.
-E
DESIGN:
W1 = (2*pi* F1 )/ Fs = 2*pi*100)/4000 = 0.05Π rad
ab
Prewarp:
PL
T=1sec
Ω1 = 2/T tan (w1/2) = 0.157 rad/sec
Ω2 = 2/T tan (w2/2) = 0.828 rad/sec
DS
Order:
𝐴𝑝
έ =�10− 10 − 1
EM
έ = 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
SS
n = log 10 �𝐠 + �(𝐠𝟐 − 𝟏) � / log 10 {Ω r + √(𝜴𝟐𝒓 – 𝟏) }
,K
n= 1.388
Therefore n= 2.
ent
Cut-off Frequency:
Ωc = Ωp = Ω1 = 0.157 rad\sec
Apply BLT:
H(Z) = H(s)| s=(2/T)[(1-z-1)/(1+z-1)]
4.2769-7.96Z-1 + 3.76Z-2
EM
MATLAB CODE:
SS
% Experiment 12B : Design of IIR Filter (Chebyshev Filter)
clear all; close all; clc;
,K
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 : ');
ent
Fs = input('Enter Sampling Frequency in Hz : ');
disp(N);
disp('Chebyshev Window Cutoff Frequency : ');
disp(Wn);
CE
OUTPUT:
-E
EM
SS
,K
ent
rtm
Depa
CE
-E
ab
PL
DS
EM
SS
,K
ent
rtm
PART B:
epa
DSP Kit
CE
-E
ab
PL
DS
TMS320C6748 DSP
BOARD
EM
Package content:
SS
,K
ent
rtm
D epa
CE
OMAP-L138 which is a low-power dual core processor based on C6748 DSP plus an ARM926EJ-S
32-bit RISC MPU.
The C6748 DSP kit has a TMS320C6748 DSP onboard that allows full-speed verification of
ab
code with Code Composer Studio. The C6748 DSP kit provides:
A USB Interface
PL
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.
The C6748 DSP kit includes a stereo codec. This analog interface circuit (AIC) has the
EM
following characteristics:
SS
• Supports 8-96 ksps sampling rates
,K
• Integrated PLL supporting a wide range of audio clocks
ent
• Programmable digital audio effectsinclude 3D sound, bass, treble, EQ and de-emphasis
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
D
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.
CE
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.
-E
The DSP KIT includes 2 LEDs and 8 DIP switches as a simple way to provide the user with
interactive feedback.
An included 5V external power supply is used to power the board. On-board voltage
ab
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.
PL
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.
DS
EM
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
SS
Eight Independent Functional Units:
Two ALUs (Fixed-Point)
Four ALUs (Floating- and Fixed-Point)
,K
Two Multipliers (Floating- and Fixed-Point)
Load-Store Architecture With 64 32-Bit General-Purpose Registers
Instruction Packing Reduces Code Size
All Instructions Conditional
ent
Instruction Set Features
Native Instructions for IEEE 754
Single- and Double-Precision
Byte-Addressable (8-, 16-, 32-Bit Data)
8-Bit Overflow Protection
rtm
Saturation; Bit-Field Extract, Set, Clear; Bit-Counting; Normalization
67x cache memory.
32K-Byte L1P Program Cache (Direct-Mapped)
epa
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:
D
EM
time projects
1. Launch ccs
SS
Launch the CCS v4 icon from the Desktop or goto All Programs ->Texas Instruments -
>CCSv4
,K
ent
2.
Choose the location for the workspace, where your project will be saved.
rtm
D epa
3.
Click the CCS icon from the welcome page to go the workbench, it is marked in the below
CE
picture.
-E
ab
PL
DS
SS
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.
,K
ent
rtm
epa
B.
D
*
Check the box
TMS320C674
8 and finally
-E
Click Save.
ab
PL
DS
EM
goto Advanced tab give the suitable Gel file path as shown below.
SS
“C:\6748support\c6748.gel”
,K
ent
rtm
D.
epa
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.
D
CE
-E
ab
connect it.
EM
Step P1:
Change the Perspective Debug to C/C++ from the right corner of the CCS
SS
Step P2:
Go to File New CCS Project.
,K
ent
rtm
epa
Step P3:
Specify the name of the project in the
space provided .and Click Next
D
EM
Project Type: C6000
Click Next
SS
,K
ent
rtm
epa
*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.
D
CE
-E
ab
PL
DS
Click finish
EM
A.Go to File New Source File.
SS
,K
ent
rtm
B. Specify the arbitrary source file name. It should be in the source folder (current project
name.).
D epa
CE
Note:
Extension of the source file must be the language what we preferred to write the code.
-E
Eg:
For c-> .c
C++ -> .cpp
Assembly -> .asm
ab
EM
Build the program to check your code
Have any errors and
warnings. Go to
SS
Project Build active project.
,K
ent
rtm
If your code doesn‟t have any errors and warnings, a message will be printed in the console
window that
SS
Goto Target Debug Active project.
,K
ent
rtm
During debug ccs will display following error message.
D epa
CE
-E
Now press reset button on the 6748 hardware , then click on retry.
ab
Once you click on retry ccs will load program on to processor and then ccs will guide
PL
SS
,K
ent
rtm
epa
Once you run the program the output will be printed in the Console
D
CE
-E
ab
PL
DS
EM
PROGRAM 1
SS
Aim: To write the C code to perform Linear Convolution upon two given discrete time
signals.
,K
C Code:
ent
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};
rtm
/*Impulse Response Coefficients*/
epa
int h[15]={1,2,3,4,5,6,0,0,0,0,0,0};
/*Calculate Values*/
for(i=0;i<m+n-1;i++)
D
{
y[i]=0;
for(j=0;j<=i;j++)
CE
y[i]+=x[j]*h[i-j];
}
/* Display Values*/
-E
printf("Sequence 1: \n");
for(i=0;i<m;i++)
printf("%d\t",x[i]);
printf("\nSequence 2: \n");
ab
for(i=0;i<n;i++)
printf("%d\t",h[i]);
PL
OUTPUT:
EM
Sequence 1:
1 2 3 4 5 6
Sequence 2:
1 2 3 4 5 6
SS
Convolved Sequence:
1 4 10 20 35 56 70 76 73 60 36
Procedure:
,K
1. Open Code Composer Studio v4.
ent
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)
rtm
5. Now perform steps 7, 8and 9.Once you run the program you can watch convolution
result in the console window.
epa
6. To view the values in graph
Buffer size : 11
CE
Start Address: y
-E
8. Click : Ok
9. Note down the output waveform.
ab
NOTE : Follow the same procedure for the rest of the experiments.
PL
DS
PROGRAM 2:
EM
CIRCULAR CONVOLUTION OF TWO GIVEN SEQUENCES
Aim: To write the C code to perform Circular Convolution upon two given discrete time
signals.
SS
C Code:
,K
/* 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];
ent
void main()
{
printf("Enter the length of the first sequence\n");
scanf("%d",&m);
scanf("%d",&n);
printf("\nEnter the first sequence\n");
rtm
printf("\nEnter the length of the second sequence\n");
for(i=0;i<m;i++)
epa
scanf("%d",&x[i]);
printf("\nEnter the second sequence\n");
for(j=0;j<n;j++)
scanf("%d",&h[j]);
D
{
for(i=n;i<m;i++)
h[i]=0;
n=m;
-E
}
/*Initialize Array of Zeros*/
for(i=m;i<n;i++)
x[i]=0;
ab
m=n;
}
/* Convert linear sequence to circular sequence*/
PL
y[0]=0;
a[0]=h[0];
for(j=1;j<n;j++) /* folding h(n) to h(-n) */
a[j]=h[n-j];
DS
/*Circular convolution*/
EM
for(i=0;i<n;i++)
y[0]+=x[i]*a[i];
for(k=1;k<n;k++)
{
SS
y[k]=0;
/*circular shift*/
,K
for(j=1;j<n;j++)
x2[j]=a[j-1];
x2[0]=a[n-1];
ent
for(i=0;i<n;i++)
{
a[i]=x2[i];
}
}
y[k]+=x[i]*x2[i];
}
D
OUTPUT:
Enter the length of the first sequence
CE
4
Enter the length of the second sequence
4
Enter the first sequence
-E
2 1 2 1
Enter the second sequence
1 2 3 4
Convolved Sequence:
ab
14 16 14 16
PL
DS
PROGRAM 3:
EM
COMPUTATION OF N- POINT DFT OF A GIVEN SEQUENCE
SS
C Code:
#include<stdio.h>
,K
#include<math.h>
int N,k,n,i;
float pi=3.1416,sumre=0, sumim=0,out_real[8]={0.0},
ent
out_imag[8]={0.0};
int x[32];
void main(void)
{
scanf("%d",&N);
printf("\nEnter the sequence\n");
for(i=0;i<N;i++)
rtm
printf("Enter the length of the sequence\n");
scanf("%d",&x[i]);
epa
for(k=0;k<N;k++)
{
sumre=0;
sumim=0;
D
for(n=0;n<N;n++)
{
CE
sumre=sumre+x[n]* cos(2*pi*k*n/N);
sumim=sumim-x[n]* sin(2*pi*k*n/N);
}
out_real[k]=sumre;
-E
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]);
}
ab
}
PL
DS
OUTPUT:
EM
Enter the length of the sequence
4
Enter the sequence
0 1 2 3
SS
DFT of the Sequence
6.0
-2.0 + 2.0i
-2.0 - 0.0i
,K
-2.0 - 2.0i
ent
rtm
D epa
CE
-E
ab
PL
DS
PROGRAM 4:
EM
IMPULSE RESPONSE OF FIRST ORDER AND SECOND ORDER SYSTEM
Aim: To Calculate the Impulse Response of the First Order and Second Order Systems.
SS
1. First Order System:
C Code:
,K
#include <stdio.h>
ent
#define Order 1 /*First Order Filter*/
#define Len 10 /*Length of Impulse Response*/
main()
{
int j,k;
float b[Order+1]={1, 3};
rtm
/*Input Coefficients*/
float a[Order+1]={1, 0.2}; /*Output Coefficients*/
epa
printf("Impulse Response Coefficients:\n");
for(j=0;j<Len;j++)
{
sum = 0;
for (k=1;k<=Order;k++)
D
{
if ((j-k)>=0)
sum=sum+(b[k]*y[j-k]);
CE
}
if(j<=Order)
y[j]=a[j]-sum;
else
y[j]=-sum;
-E
OUTPUT:
ab
EM
2. Second Order System:
C Code:
SS
#include <stdio.h>
,K
#define Len 10 /*Length of Impulse Response*/
ent
main()
{
int j,k;
float b[Order+1]={1, 3, -0.12}; /*Input Coefficients*/
float a[Order+1]={1, 0.2, -1.5}; /*Output Coefficients*/
for(j=0;j<Len;j++)
{
rtm
printf("Impulse Response Coefficients:\n");
sum = 0;
for (k=1;k<=Order;k++)
epa
{
if ((j-k)>=0)
sum=sum+(b[k]*y[j-k]);
}
if(j<=Order)
D
y[j]=a[j]-sum;
else
y[j]=-sum;
CE
OUTPUT:
EM
1. What is sampling theorem?
2. What do you mean by process of reconstruction?
3. What are techniques of reconstructions?
SS
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?
,K
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.
ent
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?
rtm
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?
epa
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?
D
21. Where to use command filter or impz, and what is the difference between these
two?
CE
function?
30. How to calculate output of DFT using MATLAB?
31. What do you mean by filtic command, explain.
PL
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?
DS
EM
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).
SS
42. Explain the statement- y=x1.*x2
43. What is FIR and IIR filter define, and distinguish between these two.
44. What is filter?
,K
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
ent
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.
rtm
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.
epa
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?
D
58. Explain the program for linear convolution for your given sequence.
59. Why we are using command ‘float’ in CCS programs.
CE