DSP Lab Manual
DSP Lab Manual
Program: UG
LABORATORY MANUAL
DIGITAL SIGNAL PROCESSING LAB
III Year B.Tech. ECE – II Sem
AVNIET-ECE-IV-I-SEM. i
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
Mission:
Page 2
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
Page 3
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
List of Experiments:
1. Generation of Sinusoidal Waveform / Signal based on Recursive Difference Equations
2. Histogram of White Gaussian Noise and Uniformly Distributed Noise.
3. To find DFT / IDFT of given DT Signal
4. To find Frequency Response of a given System given in Transfer Function/ Differential
equation form.
5. Obtain Fourier series coefficients by formula and using FET and compare for half sine
wave.
6. Implementation of FFT of given Sequence
7. Determination of Power Spectrum of a given Signal(s).
8. Implementation of LP FIR Filter for a given Sequence/Signal.
9. Implementation of HP IIR Filter for a given Sequence/Signal
10. Generation of Narrow Band Signal through Filtering
11. Generation of DTMF Signals
12. Implementation of Decimation Process
13. Implementation of Interpolation Process
14. Implementation of I/D Sampling Rate Converters
15. Impulse Response of First order and Second Order Systems.
* Additional Experiments
16. To find the Discrete Cosine Transform of image.
17. Verification of Linear and Circular Convolution of signals/ Sequences.
18. Develop an algorithm to implement A) Histogram equalization, B) Histogram
specification. Of image
19. Read a 256x256 image. Do the following operations. A) Filtering using simple averaging
masks, B) Median filtering C) Gaussian filtering D) Triangular filtering (Pyramidal
filter, cone filter) E) Compare your results
Page 4
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP.NO: 1
THEORY: For the given difference equation, a sinusoidal signal/sequence is applied as the
input. Using the given initial conditions, the sinusoidal response of the given discrete system
is to be computed.
1. The difference equation is y(n)=x(n)+y(n-1), which is a first order system, with the initial
condition y(-1)=4.
Program:
clc;
clear all;
close all;
a=input('enter the amplitude of the signal');
f=input('enter the frequency of the signal');
N=input('enter the number of cycles');
l=input('enter the intial condition y(-1)');
T=1/f;
t=0:1/100*T:N*T;
x=a*sin(2*pi*f*t);
y=zeros(1,length(t));
for i=1:1:length(x)
y(i)=x(i)+l;
l=y(i);
end;
subplot(2,1,1);
plot(t,x);
xlabel('timet');
ylabel('amplitude');
title('sine signal ');
subplot(2,1,2);
plot(t,y);
xlabel('timet');
ylabel('amplitude');
title(' sine signal generated by recursive equation');
Page 5
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
OUTPUT
RESULT
Page 6
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP.NO: 2
Aim: To generate histogram of white Gaussian noise and uniformly distributed noise using
matlab software
PROGRAM:
clc;
clear all;
close all;
l=10000;
mu=input('enter the mean value');
sigma=input('enter the standard deviation');
n=input('enter the number of bins');
x=sigma*randn(1,l)+mu;
y=sigma*rand(1,l)+mu;
[f1,x1]=hist(x,n);
[f2,y2]=hist(y,n);
subplot(2,2,1);
plot(x);
xlabel('time');
ylabel('amplitude');
title('white gaussian noise');
subplot(2,2,2);
bar(x1,f1);
xlabel('number of bars');
ylabel('probability of occurance');
title('histogram of white gaussian');
subplot(2,2,3);
plot(y);
xlabel('time');
ylabel('amplitude');
title('uniform distributed noise');
subplot(2,2,4);
bar(y2,f2);
xlabel('number of bars');
ylabel('probability of occurance');
title('histogram of uniformly distributed noise');
Page 7
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
INPUTS:
Enter the mean value0
Enter the standard deviation2
Enter the number of bins30
OUTPUT
Page 8
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP.NO: 3
Page 9
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
disp(x1);
disp('the thiddle factor matrix is:');
disp(x2);
disp('the dft of x(n) is');
disp(y);
magnitude=abs(y);
phase=angle(y);
subplot(2,1,1);
stem(magnitude);
xlabel('frequency');
ylabel('magnitude');
title('magnitude plot');
subplot(2,1,2);
stem(phase);
xlabel('frequency');
ylabel('phase');
title('phase plot');
RESULT:
Page 10
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
PROGRAM:
%IDFT function
clc;
clear all;
close all;
x=input('enter the values of input sequence');
N=input('enter the npoint dft values');
l=length(x);
if(N<l)
error('N should be >=l');
end;
x1=[x zeros(1,(N-l))]
for k=0:1:N-1;
for n=0:1:N-1;
p=exp(j*2*pi*n*k/N)
x2(n+1,k+1)=p;
end;
end;
y=(1/N)*(x1*x2);
disp('the input sequence is:');
disp(x1);
disp('the thiddle factor matrix is:');
disp(x2);
disp('the idft of x(n) is');
disp(y);
magnitude=abs(y);
phase=angle(y);
subplot(2,1,1);
stem(magnitude);
xlabel('frequency');
ylabel('magnitude');
title('magnitude plot');
subplot(2,1,2);
stem(phase);
xlabel('frequency');
ylabel('phase');
title('phase plot');
OUTPUT:
Enter the sequence:[7.0000 -1.0000 + 2.0000i -1.0000 - 0.0000i -1.0000 - 2.0000i]
Enter the value of N:4
The DFT of the given sequence is
1.0000 1.0000 + 0.0000i 2.0000 - 0.0000i 3.0000 - 0.0000i
The corresponding magnitude vector is
1 1 2 3
The corresponding phase vector is
1.0e-014 * 0 0.3836 -0.1754 -0.8607
Page 11
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
RESULT:
Page 12
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP.NO: 4
FREQUENCY RESPONSE OF A GIVEN SYSTEM
PROGRAM:
clc;
clear all;
close all;
w=-pi:0.01:pi;
num=input('enter the numerator coefficient');
den=input('enter the denominator coefficient');
h=freqz(num,den,w);
magnitude=abs(h);
phase=angle(h);
subplot(2,1,1);
plot(w,magnitude);
xlabel('frequency');
ylabel('magnitude');
title('magnitude plot ');
subplot(2,1,2);
plot(w,phase);
xlabel('frequency');
ylabel('angle');
title('phase plot');
OUTPUT:
enter the numerator coefficient[1 3 4 5]
enter the denominator coefficient[3 -2 -6 7]
RESULT:
Page 13
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP.NO: 6
IMPLEMENTATION OF FFT FOR A GIVEN SEQUENCE
X[K] = xne N
K 0
Program:
Page 14
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
clc;
clear all;
close all;
x=input('enter the values of input sequence ');
N=input('enter the npoint fft values');
l=length(x);
if(N<l)
error('N should be >=l');
end;
x1=[x,zeros(1,(N-l))]
y=fft(x1,N)
magnitude=abs(y);
phase=angle(y);
disp('the input sequence x(n) is');
disp(x1);
disp('the fft of x1 is y');
disp(y);
subplot(2,1,1);
stem(magnitude);grid;
xlabel('frequency');
ylabel('magnitude');
title('magnitude plot');
subplot(2,1,2);
stem(phase);grid;
xlabel('frequency');
ylabel('phase');
title('phase plot');
FFT INPUTS
the fft of x1 is y
Columns 1 through 6
Columns 7 through 8
Page 15
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
RESULT:
Page 16
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP.NO: 7
DETERMINATION OF POWER SPECTRUM OF A SIGNAL
AIM: To determine the power density spectrum of a given signal.
N
1
lim
N N
x ( n) x ( n )
n 1
N 1
S ( ) FT ( R( )) lim
N
N 1
ˆ ( )e j
R
1
R( ) FT 1 ( S ( )) S ( )e d
j
2
PROGRAM:
clc;
close all;
clear all;
x=input('enter the sequence');
Page 17
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
N=length(x);
n=0:1:N-1;
y=xcorr(x,x);
subplot(3,1,1);
stem(n,x);
xlabel(' n----->');ylabel('Amplitude--->');
title('input seq');
subplot(3,1,2);
N=length(y);
n=0:1:N-1;
stem(n,y);
xlabel('n---->');ylabel('Amplitude----.');
title('autocorr seq for input');
disp('autocorr seq for input');
disp(y)
P=fft(y,N);
subplot(3,1,3);
stem(n,P);
xlabel('K----->');ylabel('Amplitude--->');
title('psd of input');
disp('the psd function:');
disp(P)
OUTPUT:
the psd of x1 is
162.0000 13.6569 4.0000 2.3431 2.0000 2.3431 4.0000 13.6569
Page 18
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
Page 19
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP.NO: 8
IMPLEMENTATION OF LOW PASS FIR FILTER FOR A GIVEN
SEQUENCE/SIGNAL
PROGRAM:
clc;
clear all;
close all;
fs=200e3;
ts=1/fs;
t=0:ts:5e-3-ts;
f1=1e3;
f2=20e3;
f3=30e3;
y=5*sin(2*pi*f1*t)+9*sin(2*pi*f2*t)+8*sin(2*pi*f3*t);
nfft=length(y);
nfft2=2.^nextpow2(nfft);
fy=fft(y,nfft2);
fy1=fy(1:nfft2/2);
xfft=fs.*(0:nfft2/2-1)/nfft2;
cutoff=(1.2e3)/(fs/2);
order=60;
h=fir1(order,cutoff);
fh=fft(h,nfft2);
fh1=fh(1:nfft2/2);
fc=fy1.*fh1;
convolution=conv(y,h);
subplot(3,2,1);
plot(t,y);
xlabel('time');
ylabel('amplitude')
title('sinusoidal signal with multiple frequency components');
subplot(3,2,2);
plot(xfft,abs(fy1/max(fy1)));
xlabel('frequency');
ylabel('magnitude')
title('fft of input signal');
subplot(3,2,3);
stem(h);
xlabel('time');
ylabel('amplitude')
title('low pass filter with cutoff frequency=1.2khz');
subplot(3,2,4);
plot(xfft,abs(fh1/max(fh1)));
xlabel('frequency');
ylabel('magnitude')
title('fft of low pass filter');
subplot(3,2,5);
plot(convolution);
xlabel('time');
ylabel('amplitude')
title('o/p response of low pass filter');
subplot(3,2,6);
plot(xfft,abs(fc/max(fc)));
Page 20
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
xlabel('frequency');
ylabel('magnitude')
title('o/p response of low pass filter in frequency domain');
RESULT:
Page 21
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP.NO: 9
IMPLEMENTATION OF HIGH PASS FIR FILTER
PROGRAM:
%Implimentation of HP Fir filter for given sequence
clc
clear all
close all
b1=input('enter the sequence b1');
a1=[1];
w=0:.01:pi;
h1=freqz(b1,a1,w);
subplot(2,1,1);
plot(w/pi,abs(h1),'k');
xlabel('normalised frequency'), ylabel('magnitude');
title('magnitude response')
subplot(2,1,2);
plot(w/pi,angle(h1),'k');
xlabel('normalised frequency'), ylabel('phase angle in radians');
title('phase response')
Page 22
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP.NO: 10
GENERATION OF NARROW BAND SIGNAL THROUGH FILTERING
b
k 0
k z k
H ( z) N (1)
a k Z k
k 1
M and N are order of the two polynomials bk and ak are the filter coefficients. These filter
coefficients are generated using FDS (Filter Design software or Digital Filter design
package).
PROGRAM:
clc;
clear all
close all
b1=input('enter the sequence');
%b1=[.2 .2];
a1=[1 -.6];
w=0:.01:pi;
h1=freqz(b1,a1,w);
subplot(2,2,1);
plot(w/pi,abs(h1),'k');
hold on
subplot(2,2,2);
plot(w/pi,20*log10(abs(h1)),'k');
hold on
subplot(2,1,2);
plot(w/pi,angle(h1),'k');
hold on
b2=[.05 .05];
a2=[1 -0.9];
w=0:.01:pi;
Page 23
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
h2=freqz(b2,a2,w);
subplot(2,2,1);
plot(w/pi,abs(h2),'k-.');
xlabel('normalised frequency'), ylabel('magnitude');
title('Magnitude Response')
subplot(2,2,2);
plot(w/pi,20*log10(abs(h2)),'k-.');
xlabel('normalised frequency'), ylabel('magnitude in dB');
title('Magnitude Response in db')
subplot(2,1,2);
plot(w/pi,angle(h2),'k-.');
xlabel('normalised frequency'), ylabel('phase angle in radians');
title('Phase Response')
RESULT:
Page 24
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP.NO: 11
GENERATION OF DTMF SIGNALS
AIM: To generate DTMF signals
EQUIPMENT: PC with windows (95/98/XP/NT/2000). MATLAB Software
Thus the scheme gets its name as dual tone multi frequency (DTMF).
697 1 2 3 A
770 4 5 6 B
852 7 8 9 C
941 * 0 # D
Each digit or symbol represented in figure 1 has 2 distinct high and low frequency
components. Thus each high-low frequency pair uniquely identifies the corresponding
telephone keypad digit or symbol. Each key pressed can be represented as a discrete time
signal of form
Where N is defined as number of samples taken. Typically in the sampling frequency used is
8khz. Thus if the two individual frequency components of the signal can be identified then the
number dialed can be decoded.
In this report we have used (dual tone and digit/symbols) interchangeably but both mean the
same. Dual tone means the encoded samples of the corresponding DTMF digits/symbols.
The DTMF encoder is implemented in MATLAB function dtmfe.m. The implementation is based
on a digital oscillator, that will generate sinusoidal tones at frequencies F o in response to an input
signal x[n] = δ[n].
Note :Implementation of DTMF Encoder
The H[n] is plotted and is sinusoidal and hence any input to this system will oscillate .
Page 25
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
PROGRAM:
%Generation of DTMF signals
Fs = 8000; % Sampling frequency
Ts = 1/Fs;
Numof_samples =input('enter the no of samples');
dialnumber=input('enter the dial number');
T = Ts*(0:Numof_samples-1)';
switch dialnumber
case 0
F1 = 941;
F2 = 1336;
case 1
F1 = 697;
F2 = 1209;
case 2
F1 = 697;
F2 = 1336;
case 3
F1 = 697;
F2 = 1477;
case 'A'
F1 = 697;
F2 = 1633;
case 4
F1 = 770;
F2 = 1209;
case 5
F1 = 770;
F2 = 1336;
case 6
F1 = 770;
F2 = 1477;
case 'B'
F1 = 770;
F2 = 1633;
case 7
F1 = 852;
F2 = 1209;
case 8
F1 = 852;
F2 = 1336;
case 9
F1 = 852;
F2 = 1477;
case 'C'
F1 = 852;
F2 = 1633;
Page 26
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
case '*'
F1 = 941;
F2 = 1209;
case '#'
F1 = 941;
F2 = 1477;
otherwise
F1 = 941;
F2 = 1633;
end;
firstsine = cos(2*pi*F1*T); % first sinusoidal signal
secondsine = cos(2*pi*F2*T); % second sinusoidal signal
d = firstsine + secondsine;
dtmfoutput = d ;
figure(1);
title('THE DTMF OUTPUT');
plot(dtmfoutput);
RESULT:
Page 27
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP.NO: 12
IMPLEMENTATION OF DECIMATION PROCESS
AIM: To implement decimation process.
THEORY: The sampling rate of a discrete time signal x(n) can be reduced by a factor M by
taking every M_th value of the signal the block diagram representation of the down sampler
is shown in figure below. The quadratic symbol in below figure with arrow pointing down
words is called a down sampler. The output signal y(n) is a down sampled signal of the input
signal x(n) and can be represented by
y(n) = x(Mn)
RESULT:
Page 28
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP.NO: 13
IMPLEMENTATION OF INTERPOLATION PROCESS
AIM: To implement Interpolation process.
THEORY: The sampling rate of a discrete time signal can be increased by a factor L by
placing L-1 equally spaced zeros between each pair of samples. Mathematically up sampling
is represented by
Y(n) = x(n/L) n= 0, +L, +2L,……..
PROGRAM:
%illustration of up sampling(interpolation)
clear all;
N=10;
n=0:1:N-1;
x=sin(2*pi*n/10)+sin(2*pi*n/5);
L=3;
x1=[zeros(1,L*N)]
n1=1:1:L*N;
j=1:L:L*N;
x1(j)=x;
subplot(2,1,1);
stem(n,x);
xlabel('n');ylabel('x');title('input signal');
subplot(2,1,2);
stem(n1,x1);
xlabel('n');ylabel('x1');title('up sample sequence');
RESULT:
Page 29
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP.NO: 14
Implementation of I/D Sampling Rate Converters
OUTPUT:
Up-sampling factor = 5
Down-sampling factor = 2
RESULT:
Page 30
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP.NO: 15
IMPULSE RESPONSE OF FIRST ORDER AND SECOND ORDER SYSTEM
AIM: To determine the response of first order and second order systems.
PROGRAM:
%This program finds the unit sample response of the first order discrete system, expressed
%by its difference equation as y(n)= x(n)+2.y(n-1)
a=input('enter the coefficient vector of input starting from the coefficient of x(n) term')
b=input('enter the coefficient vector of output starting from the coefficient of y(n) term')
n1=input('enter the lower limit of the range of impulse response')
n2=input('enter the upper limit of the range of impulse response')
n=[n1:n2];
x=zeros(1,length(n));
for i=1:length(n)
if n(i)==0
x(i)=1;
end
end
h=filter(a,b,x);
stem(n,h)
title('Unit sample response of the discrete system y(n)=x(n)+2.y(n-1)');
xlabel('Time ')
ylabel('Unit Sample Response')
axis([-1 7 0 35])
OUTPUT:
enter the coefficient vector of input starting from the coefficient of x(n) term1
a =1
enter the coefficient vector of output starting from the coefficient of y(n) term[1 -2] b =1 -2
enter the lower limit of the range of impulse response0 n1 = 0
enter the upper limit of the range of impulse response5 n2 = 5
RESULT:
Page 31
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
PROGRAM:
% This program find the Unit Sample response of the second order discrete system
represented
clc;
clear all;
close all;
num=input('enter the numerator coefficient');
den=input('enter the denominator coefficient');
N=input('enter the no of samples');
h=impz(num,den,N);
disp('impulse response is');
disp(h);
stem(h);grid;
xlabel('time');
ylabel('amplitude');
title('impulse response of first order');
OUTPUT:
enter the numerator coefficient1
enter the denominator coefficient[1 -0.6 0.08]
enter the no of samples20
RESULT:
Page 32
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP.NO: 16
FIND DCT AND IDCT OF OF GIVEN IMAGE
PROGRAM:
a=imread('C:\Users\eceavniet\Desktop\leena.jpg');
x=rgb2gray(a);
[m,n]=size(x);
y=dct2(x);
x1=idct2(y);
subplot(2,3,1);
imshow(a);
title('original image');
subplot(2,3,2);
imshow(y,[0 255]);
title('DCT');
subplot(2,3,3);
imshow(x1,[0 255]);
title('IDCT');
Page 33
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP.NO: 17
VERIFY LINEAR AND CORCULAR CONVOLUTION OF SIGNAL /SEQUENCE
PROGRAM:
clc;
clear all;
close all;
x=input('Enter the input sequence x[n]= ');
lx=input('Enter the starting time index of x[n] =');
h=input('Enter the impulse response h[n]= ');
lh=input('Enter the starting time index of h[n] =');
y=conv(x,h);
n=lx+lh:length(y)+lx+lh-1;
stem(n,y);
ylabel('amplitude');
xlabel('time index');
title('Linear convolution output');
SAMPLE INPUTS
Enter the input sequencex[n]= [1 2 3 4]
Enter the starting time index of x[n] =-2
Enter the impulse response h[n]= [3 3 4]
Enter the starting time index of h[n] =-1
Page 34
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
SAMPLE INPUTS
enter first sequence[1 2 3 4]
enter second sequence[3 3 4]
CIRCULAR CONVOLUTION
MATLAB CODE
clc;
clear all;
close all;%Circular convolution
x=input('first seqn');
h=input('secondseqn');
subplot(3,1,1);
stem(x);
subplot(3,1,2);
stem(h);n1=length(x);
n2=length(h);
N=max(n1,n2);
x=[x,zeros(1,N-n1)];
h=[h,zeros(1,N-n2)];
for n=1:Ny(n)=0;
for k=1:N
y(n)=y(n)+x(k)*h(mod(n+N-k,N)+1);
end;
end;
subplot(3,1,3);
stem(y);
SAMPLE INPUTS
first seqn[1 2 3 4]second seqn[4 3 2 1]
RESULT
The circular convolution of two given sequences was performed using MATLABand the
resulting sequencewas plotted.y = 24 22 24 30
Page 35
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP.NO: 18
VERIFY SPATIAL DOMAIN FILTERING OF GIVEN
AIM: Read a 256x256 image. Do the following operations.
a) Filtering using simple averaging masks.
b) Median filtering
c) Gaussian filtering
d) Triangular filtering(Pyramidal filter, cone filter)
e) Compare your results
PROGRAM:
clc
clear all
close all
A=imread('boat_512.tiff');
A=imresize(A,[256 256]);
%% Creating a 5x5 averaging filter
h1=fspecial('average',5);
B1=imfilter(A,h1,'replicate');
imshow(A)
title('Original image')
figure
imshow(B1)
title('Output of averaging filter')
%% Creating a 5x5 Median filter
B2=medfilt2(A, [5 5]);
figure
imshow(B2)
title('Output of median filter')
%% Creating a 5x5 Gaussian filter
h2=fspecial('gaussian',[5 5],1);
B3=imfilter(A,h2,'replicate');
figure
imshow(B3)
title('Output of Gaussian filter')
%% Creating a 5x5 Pyramidal filter
h3=(1/81).*[1 2 3 2 1 ;2 4 6 4 2 ; 3 6 9 6 3 ; 2 4 6 4 2 ; 1 2 3 2 1 ];
B4=imfilter(A,h3,'replicate');
figure
imshow(B4)
title('Output of pyramidal filter')
%% Creating a 5x5 Cone filter
h4=(1/25).*[0 0 1 0 0;0 2 2 2 0;1 2 5 2 1;0 2 2 2 0;0 0 1 0 0];
B5=imfilter(A,h4,'replicate');
figure
imshow(B5)
title('Output of cone filter')
Page 36
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
Output
Original image Output of averaging filter
Observations
All the filters used above are defined using 5x5 masks. No noise has been added to any of the
images. From the above images, we can see that the simple averaging filter produces the
largest amount of blurring (smoothening) of the image. Out of all the filters above, the
Gaussian filter produces the best results in terms of the visual perception.
Page 37
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP.NO: 18
DEVELOP AN ALGORITHM TO IMPLEMENT HISTOGRAM EQUALIZATION
AND HISTOGRAM SPECIFICATION OF OF GIVEN IMAGE
Matlab Code:
a) Histogram equalization
%% Histogram Equalization %%
% Implementation of Algorithm
clc;
clear all;
close all;
A1=imread('einstein.tif');
A=imresize(A1,[256 256]);
B=uint8(zeros(256,256));
freq=zeros(256,1);
probf=zeros(256,1);
cum_prob=zeros(256,1);
cum=zeros(256,1);
output=zeros(256,1);
for i=1:256
for j=1:256
value=A(i,j);
freq(value+1)=freq(value+1)+1;
probf(value+1)=freq(value+1)/(256*256);
end
end
sum=0;
no_bins=255;
for i=1:size(probf)
sum=sum+freq(i);
cum_prob(i)=sum/(256*256);
output(i)=round(cum_prob(i)*no_bins);
end
for i=1:256
for j=1:256
B(i,j)=output(A(i,j)+1);
end
end
figure
subplot (1,2,1)
imshow(A);
title('Original Image')
subplot (1,2,2)
Page 38
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
imhist(A)
title('Histogram of Original Image')
figure
subplot (1,2,1)
imshow(B);
title('Histogram Equalized Image');
subplot (1,2,2)
imhist(B)
title('Histogram of Equalized Image')
Output
Histogram of Original Image
1800
1600
Original Image
1400
1200
1000
800
600
400
200
0 100 200
Page 39
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
1600
Histogram Equalized Image
1400
1200
1000
800
600
400
200
0 100 200
1800
1600
Histogram Equalized Image using built-in function
1400
1200
1000
800
600
400
200
0 100 200
Page 40
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
b) Histogram Specification
%% Histogram Specification
clear all;close all;clc
A1 = imread('lena512','bmp');
A =imresize(A1,[256 256]);
%% Finding the pdf of input image
B=uint8(zeros(256,256));
freq=zeros(256,1);
probf=zeros(256,1);
cum_prob=zeros(256,1);
cum=zeros(256,1);
for i=1:256
for j=1:256
value=A(i,j);
freq(value+1)=freq(value+1)+1;
probf(value+1)=freq(value+1)/(256*256);
end
end
sum1=0;
no_bins=255;
for i=1:size(probf)
sum1=sum1+freq(i);
cum(i)=sum1;
cum_prob(i)=cum(i)/(256*256);
end
%% Histogram Matching for exponential pdf
pdfZ=1+exp((0:.1:25.5));% Specified pdf
pdfZ=pdfZ./sum(pdfZ);
zk=pdfZ*triu(ones(256));
mapping=zeros(256);
z0=zeros(256);
for q=1:256
for p=mapping(q)+1:256
if ((zk(p)-cum_prob(q)) >= 0)
mapping(q) = p;
list=find(A == q-1);
z0(list)=p;
break
end
end
end
Z1=reshape(z0,256*256,1);
Zpdf=hist(Z1,0:1:255)/100000;
figure
imshow(A);
title('Original Image')
figure
z0=uint8(z0);
imshow(z0)
Page 41
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
Output
Original Image
Page 42
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
0.01
0
0 50 100 150 200 250 300
Specified pdf
0.1
0.05
0
0 50 100 150 200 250 300
Matched pdf
0.2
0.1
0
0 50 100 150 200 250 300
Page 43
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
Page 44
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
Page 45
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
TMS320C6713 ARCHITECTURE
Page 46
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
Page 47
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
Page 48
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
TMS C6713DSK
The 6713 DSK is a low-cost standalone development platform that enables customers
to evaluate and develop applications for the TI C67XX DSP family. The DSK also serves as
a hardware reference design for the TMS320C6713 DSP. Schematics, logic equations and
application notes are available to ease hardware development and reduce time to market.
The DSK uses the 32-bit EMIF for the SDRAM (CE0) and daughtercard expansion
interface (CE2 and CE3). The Flash is attached to CE1 of the EMIF in 8-bit mode.
An on-board AIC23 codec allows the DSP to transmit and receive analog signals.
McBSP0 is used for the codec control interface and McBSP1 is used for data. Analog audio
I/O is done through four 3.5mm audio jacks that correspond to microphone input, line input,
line output and headphone output. The codec can select the microphone or the line input as
the active input. The analog output is driven to both the line out (fixed gain) and headphone
(adjustable gain) connectors. McBSP1 can be re-routed to the expansion connectors in
software.
A programmable logic device called a CPLD is used to implement glue logic that ties
the board components together. The CPLD has a register based user interface that lets the
user configure the board by reading and writing to the CPLD registers. The registers reside at
the midpoint of CE1.
The DSK includes 4 LEDs and 4 DIPswitches as a simple way to provide the user with
interactive feedback. Both are accessed by reading and writing to the CPLD registers.
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. If
desired, JP1 and JP2 can be used as power test points for the core and I/O power supplies.
Code Composer communicates with the DSK through an embedded JTAG emulator
with a USB host interface. The DSK can also be used with an external emulator through the
external JTAG connector.
Page 49
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
Page 50
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
Page 51
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
Page 52
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
Code Composer is the DSP industry's first fully integrated development environment
(IDE) with DSP-specific functionality. With a familiar environment liked MS-based C++TM,
Code Composer lets you edit, build, debug, profile and manage projects from a single unified
environment. Other unique features include graphical signal analysis, injection/extraction of
data signals via file I/O, multi-processor debugging, automated testing and customization via
a C-interpretive scripting language and much more.
Step 1: Start CCS Setup by double clicking on the Setup CCS desktop icon.
Step 2: select Family c67xx
Platform simulator
Endianness little
.
Step 3: Click the Import button (File import) to import our selection (c67xx_sim.ccs) to
the system configuration currently being created in the CCS Setup window.
Step 4: Click the Save and Quit button to save the configuration in the System Registry.
Page 53
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
Step 5: Click the Yes button to start the CCS IDE when we exit CCS Setup. The CCS Setup
closes and the CCS IDE automatically opens using the configuration we just created.
Page 54
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
Page 55
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
Step 3: Add files to our project (source file\ library file\ linker file)
Source file: Add the source file in the project using ‗Projectadd files to project‘
pull down menu.
Files of type: c/c++ source file (*.c*)
Path: C:\CCStudio_v3.1\ MyProjects\Project Name\file_name.c
Library file: Add the library file in the project using ‗Projectadd files to
project‘ pull down menu.
Files of type: Object and Library Files (*.o*,*.l*)
Path: C:\CCStudio_v3.1\ C6000\ cgtools\ lib \ rts6700.lib
Page 56
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
Linker file: Add the linker file in the project using ‗Projectadd files to project‘
pull down menu.
Files of type: Linker command Files (*.cmd*,*.lcf*)
Path: C:\CCStudio_v3.1\ tutorial\ dsk6711\ hello1 \ hello.cmd
Step 4: Building and Running the Program (compile\ Build\ Load Program\ Run)
Compile: Compile the program using the ‗Project-compile‘ pull down menu or by
clicking the shortcut icon on the left side of program window.
Page 57
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
Build: Build the program using the ‗Project-Build‘ pull down menu or by clicking
the shortcut icon on the left side of program window.
Load Program: Load the program in program memory of DSP chip using the ‗File-
load program‘ pull down menu.
Files of type:(*.out*)
Path: C:\CCStudio_v3.1\ MyProjects\Project Name\ Debug\ Project Name.out
Page 58
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
Page 59
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
Run: Run the program using the ‗Debug-Run‘ pull down menu or by clicking the
shortcut icon on the left side of program window.
Page 60
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP.No:
LINEAR CONVOLUTION
AIM: Verify the linear convolution operation Using DSK Code composer studio
In this equation, x(k), h(n-k) and y(n) represent the input to and output from the system at
time n. Here we could see that one of the inputs is shifted in time by a value every time it is
multiplied with the other input signal. Linear Convolution is quite often used as a method of
implementing filters of various types.
Page 61
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
#include<stdio.h>
int x[15],h[15],y[15];
main()
{
int i,j,m,n;
printf("\n enter first sequence length m:");
scanf("%d",&m);
printf("\n enter second sequence length n:");
scanf("%d",&n);
printf("Enter i/p sequence for x(n):\n");
for(i=0;i<m;i++)
scanf("%d",&x[i]);
printf("Enter i/p sequence for h(n): \n");
for(i=0;i<n; i++)
scanf("%d",&h[i]);
// padding of zeors
for(i=m;i<=m+n-1;i++)
x[i]=0;
for(i=n;i<=m+n-1;i++)
h[i]=0;
/* convolution operation */
for(i=0;i<m+n-1;i++)
{
y[i]=0;
for(j=0;j<=i;j++)
{
y[i]=y[i]+(x[j]*h[i-j]);
}
}
//displaying the o/p
printf("Output (Linear Convolution) sequence is:\n ");
for(i=0;i<m+n-1;i++)
printf("y[%d]=%d\t",i,y[i]);
}
Page 62
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
PROCEDURE:
Open Code Composer Studio, make sure the DSP kit is turned on.
(Path: c:\ti\tutorial\dsk6713\hello1\hello.cmd)
(Path: c:\ti\c6000\cgtools\lib\rts6700.lib)
Load the program (lconv.out) in program memory of DSP chip using the
Page 63
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
Page 64
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP.No:
CIRCULAR CONVOLUTION
AIM: To verify the circular convolution operation Using DSK Code composer studio
Page 65
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
#include<stdio.h>
int m,n,x[30],h[30],y[30],i,j, k,x2[30],a[30];
void main()
{
printf(" enter the length of the first sequence\n");
scanf("%d",&m);
printf(" enter the length of the second sequence\n");
scanf("%d",&n);
printf(" enter the first sequence\n");
for(i=0;i<m;i++)
scanf("%d",&x[i]);
printf(" enter the second sequence\n");
for(j=0;j<n;j++)
scanf("%d",&h[j]);
/*Circular convolution*/
for(i=0;i<n;i++)
y[0]+=x[i]*a[i];
for(k=1;k<n;k++)
{
y[k]=0;
/*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];
Page 66
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
}
}
PROCEDURE:
Open Code Composer Studio; make sure the DSP kit is turned on.
(Path: c:\ti\tutorial\dsk6713\hello1\hello.cmd)
(Path: c:\ti\c6000\cgtools\lib\rts6700.lib)
Page 67
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
Page 68
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP.No:
N-POINT FAST FOURIER TRANSFORM (FFT)
M nk
j 2
X ( k ) x ( n) e n
;0 k N 1
k 0
The above equation is the mathematical representation of the DFT. As the number of
computations involved in transforming a N point time domain signal into its corresponding
frequency domain signal was found to be N2 complex multiplications, an alternative
algorithm involving lesser number of computations is opted. When the sequence x(n) is
divided into 2 sequences and the DFT performed separately, the resulting number of
computations would be N2/2. (i.e.)
N2 N2
21 21
x(k ) x(2n) WN2 nk x(2n 1) WN( 2 n1) k
n 0 n 0
Consider x(2n) be the even sample sequences and x(2n+1) be the odd sample sequence
derived form x(n).
N2
21
x ( 2n)
n 0
WN2 nk
N2
21
(N/2)2multiplication‘s x(2n 1)
n 0
WN( 2 n1) k
N2 N2 N2
= Computations
4 4 2
N2 N
21 21 k
x ( k ) x ( 2n) W 2 nk
N x(2n 1) W
( 2 nk )
N W
N
n 0 n 0
N N
21 k 21
x(2n) WN2 nk W x(2n 1) WN( 2 nk )
N
n 0 n 0
Dividing the sequence x(2n) into further 2 odd and even sequences would reduce the
computations.
WN is the twiddle factor
j 2
e n
j 2
nk
WNnk e n
N N
K K
W
N
2
WN W
N
2
j 2 j 2 n
k
e n
e n 2
j 2
k
W k
N e n
Page 70
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
N
K
W
N
2
WNk (1)
N
K
W
N
2
WNk
Employing this equation, we deduce
N2 N
21 21
x(k ) x(2n) WN2 nk x(2n 1) WN( 2 nk ) (13)
n 0 n 0
N
21 K N
N
x(k ) x(2n) WN W x(2n 1) 21 WN( 2 nk ) (14)
2 nk
2 n 0 N
The time burden created by this large number of computations limits the usefulness of
DFT in many applications. Tremendous efforts devoted to develop more efficient ways of
computing DFT resulted in the above explained Fast Fourier Transform algorithm. This
mathematical shortcut reduces the number of calculations the DFT requires drastically.
The above mentioned radix-2 decimation in time FFT is employed for domain
transformation.
Dividing the DFT into smaller DFTs is the basis of the FFT. A radix-2 FFT divides the
DFT into two smaller DFTs, each of which is divided into smaller DFTs and so on,
resulting in a combination of two-point DFTs. The Decimation -In-Time (DIT) FFT
divides the input (time) sequence into two groups, one of even samples and the other of
odd samples. N/2 point DFT are performed on the these sub-sequences and their outputs
are combined to form the N point DFT.
The above shown mathematical representation forms the basis of N point FFT and is called
the Butterfly Structure.
Page 71
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
PROGRAM
fft256.c
#include <math.h>
#define PTS 64 //# of points for FFT
#define PI 3.14159265358979
main()
{
for (i = 0 ; i<PTS ; i++) // set up twiddle constants in w
{
w[i].real = cos(2*PI*i/(PTS*2.0)); //Re component of twiddle constants
w[i].imag =-sin(2*PI*i/(PTS*2.0)); //Im component of twiddle constants
}
for (i = 0 ; i < PTS ; i++) //swap buffers
{
Page 72
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
} //end of main
fft.c:
#define PTS 64 //# of points for FFT
typedef struct {float real,imag;} COMPLEX;
extern COMPLEX w[PTS]; //twiddle constants stored in w
Page 73
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
PROCEDURE:
Open Code Composer Studio, make sure the DSP kit is turned on.
Start a new project using ‗Project-new ‗ pull down menu, save it in a
separate directory(c:\ti\myprojects) with name ―FFT.pjt”.
Add the source files ―fft256.c― and “fft.C” in the project using
‗Projectadd files to project‘ pull down menu.
Add the linker command file ―hello.cmd”.
Add the rts file “rts6700.lib” .
Compile the program using the ‗Project-compile‘ pull down menu or by
clicking the shortcut icon on the left side of program window.
Load the program in program memory of DSP chip using the ‗File-load program‘ pull
down menu.
Run the program and observe output using graph utility.
Page 74
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
GRAPHS
Page 75
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP.No:
TO COMPUTE POWER DENSITY SPECTRUM OF
A SEQUENCE [USING TMS320C6713 DSP PROCESSOR]
N
1
lim
N N
x ( n) x ( n )
n 1
N 1
S ( ) FT ( R( )) lim
N
N 1
ˆ ( )e j
R
1
R( ) FT 1 ( S ( )) S ( )e d
j
2
Page 76
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
***************************************************************
* DESCRIPTION
* Number of points for FFT (PTS)
* x --> Sine Wave Co-Efficients
* iobuffer --> Out put of Auto Correlation.
* x1 --> use in graph window to view PSD
/*===========================================================*/
#include <math.h>
#define PTS 128 //# of points for FFT
#define PI 3.14159265358979
main()
{
float j,sum=0.0 ;
int n,k,i,a;
for (i = 0 ; i<PTS ; i++) // set up twiddle constants in w
{
w[i].real = cos(2*PI*i/(PTS*2.0));
/*Re component of twiddle constants*/
w[i].imag =-sin(2*PI*i/(PTS*2.0));
Page 77
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
for(i=0,j=0;i<PTS;i++)
{ x[i] = sin(2*PI*5*i/PTS);
// Signal x(Fs)=sin(2*pi*f*i/Fs);
samples[i].real=0.0;
samples[i].imag=0.0;
}
for(n=0;n<PTS;n++)
{
sum=0;
for(k=0;k<PTS-n;k++)
{
sum=sum+(x[k]*x[n+k]); // Auto Correlation R(t)
}
iobuffer[n] = sum;
}
} //end of main
Page 78
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
FFT.c:
}
index += step;
}
leg_diff = leg_diff/2;
step *= 2;
Page 79
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
}
j = 0;
for (i = 1; i < (N-1); i++)
//bit reversal for resequencing data
{
k = N/2;
while (k <= j)
{
j = j - k;
k = k/2;
}
j = j + k;
if (i<j)
{
temp1.real = (Y[j]).real;
temp1.imag = (Y[j]).imag;
(Y[j]).real = (Y[i]).real;
(Y[j]).imag = (Y[i]).imag;
(Y[i]).real = temp1.real;
(Y[i]).imag = temp1.imag;
}
}
return;
}
Page 80
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
PROCEDURE:
Open Code Composer Studio, make sure the DSP kit is turned on.
Start a new project using ‗Project-new ‗ pull down menu, save it in a
separate directory(c:\ti\myprojects) with name ―PSD.pjt”.
Add the source files ―PSD.c― and “FFT.c” in the project using
‗Projectadd files to project‘ pull down menu.
Add the linker command file “hello.cmd” .
Add the rts file ―rts6700.lib‖ .
Compile the program using the ‗Project-compile‘ pull down menu or by
clicking the shortcut icon on the left side of program window.
Load the program in program memory of DSP chip using the ‗File-load program‘ pull
down menu.
Run the program and observe output using graph utility.
Page 81
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
RESULTS
Page 82
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP.No:
FIR LP/HP FILTER DESIGN
USING TMS320C6713 DSP PROCESSOR
AIM: The aim of this laboratory exercise is to design and implement a Digital FIR Filter &
observe its frequency response. In this experiment we design a simple FIR filter so as to stop
or attenuate required band of frequencies components and pass the frequency components,
which are outside the required band.
EQUIPMENT:
TMS 320C6713 Kit.
Oscilloscope & Function Generator
RS232 Serial Cable
Power Cord
Operating System – Windows XP
Software – CCStudio_v3.1
THEORY: A Finite Impulse Response (FIR) filter is a discrete linear time-invariant system
whose output is based on the weighted summation of a finite number of past inputs. An FIR
transversal filter structure can be obtained directly from the equation for discrete-time
convolution.
N 1
y ( n) x ( k ) h( n k ) 0 n N 1 (1)
k 0
In this equation, x(k) and y(n) represent the input to and output from the filter at time n.
h(n-k) is the transversal filter coefficients at time n. These coefficients are generated by using
FDS (Filter Design Software or Digital filter design package).
Page 83
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
Start
Initialize Counter = 0
Initialize Output = 0 , i = 0
Output += coeff[N-i]*val[i]
Shift the input value by one
No
Is the loop
Cnt = order
Page 84
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
#include "filtercfg.h"
#include "dsk6713.h"
#include "dsk6713_aic23.h"
DSK6713_AIC23_Config config = {\
0x0017, /* 0 DSK6713_AIC23_LEFTINVOL Leftline input channel volume */\
0x0017, /* 1 DSK6713_AIC23_RIGHTINVOL Right line input channel volume*/\
0x00d8, /* 2 DSK6713_AIC23_LEFTHPVOL Left channel headphone volume */\
0x00d8, /* 3 DSK6713_AIC23_RIGHTHPVOL Right channel headphone volume */\
0x0011, /* 4 DSK6713_AIC23_ANAPATH Analog audio path control */\
0x0000, /* 5 DSK6713_AIC23_DIGPATH Digital audio path control */\
0x0000, /* 6 DSK6713_AIC23_POWERDOWN Power down control */\
0x0043, /* 7 DSK6713_AIC23_DIGIF Digital audio interface format */\
0x0081, /* 8 DSK6713_AIC23_SAMPLERATE Sample rate control */\
0x0001 /* 9 DSK6713_AIC23_DIGACT Digital interface activation */ \
};
/*
* main() - Main code routine, initializes BSL and generates tone
*/
void main()
{
DSK6713_AIC23_CodecHandle hCodec;
DSK6713_AIC23_setFreq(hCodec, 1);
while(1)
{ /* Read a sample to the left channel */
Page 85
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
l_output=(Int16)FIR_FILTER(&filter_Coeff ,l_input);
r_output=l_output;
for(i=30;i>0;i--)
in_buffer[i] = in_buffer[i-1]; /* shuffle the buffer */
for(i=0;i<32;i++)
output = output + h[i] * in_buffer[i];
return(output);
Page 86
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
PROCEDURE:
STEPS TO IMPLEMENT FILTERS
Do diagnostic test
Open DSKC6713 studio
Open new project and give it a name. see whether the project is in C drive or D drive
Go to file. Say new and select DSPBIOS configuration
Select DSK6713 or DSK6711 whatever is available (double click)
Click on configuration window and save
Path: C:/ CCStudio_v3.1/myprojects/ project name
ProjectAdd files to project
Filter type as: configuration file(*.cdb)
Configl—open
Observe under your project .cdb file under DSP and two configure files under
generated files
Close configl window
Go to file say new/source file/copy paste the filter program onto untitled window
The filter program is on desktop in programs for 6713
File/save/your project/file type is c source file and give a name to the file and say save
After saving the file add to the project/the file name i.e the saved file and say save.
Add library file to the project
Project Add files to project
Path: CCStudio_v3.1\C6000\dsk6713\lib\dsk6713bsl.lib
Files of type: Object and Library Files (*.o*,*.l*)
Add header file to the project
Open configlcfg-c.c(under generated files)/
Copy #include configlcfg.h (close) and paste it to our program
Remove filter.h file
Go to project/ add files to project
Path: CCStudio_v3.1\C6000\dsk6713
Files of type: All files
Select include/copy the first two header files(dsk 6713,dsk6713_aic23) and paste in
our project i.e
Path: CCStudio_v3.1/myprojects/ our project name
Save
Building and Running the Program (compile\ Build\ Load Program\ Run)
Compile: Compile the program using the ‗Project-compile‘ pull down menu or by
clicking the shortcut icon on the left side of program window.
Build: Build the program using the ‗Project-Build‘ pull down menu or by clicking
the shortcut icon on the left side of program window.
Load Program: Load the program in program memory of DSP chip using the ‗File-
load program‘ pull down menu.
Files of type:(*.out*)
Path: C:\CCStudio_v3.1\ MyProjects\Project Name\ Debug\ Project Name.out
Run: Run the program using the ‗Debug-Run‘ pull down menu or by clicking the
shortcut icon on the left side of program window.
Page 87
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP. No:
IIR LP/HP FILTER DESIGN USING TMS320C6713 DSP PROCESSOR
AIM: The aim of this laboratory exercise is to design and implement a Digital IIR Filter &
observe its frequency response. In this experiment we design a simple IIR filter so as to stop
or attenuate required band of frequencies components and pass the frequency components
which are outside the required band
EQUIPMENT:
TMS 320C6713 Kit.
Oscilloscope & Function Generator
RS232 Serial Cable
Power Cord
Operating System – Windows XP
Software – CCStudio_v3.1
INTRODUCTION
GENERAL CONSIDERATIONS:
In the design of frequency – selective filters, the desired filter characteristics are
specified in the frequency domain in terms of the desired magnitude and phase response of
the filter. In the filter design process, we determine the coefficients of a causal IIR filter that
closely approximates the desired frequency response specifications.
BACKGROUND CONCEPTS:
Page 88
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
rational transfer function, described by polynomials in z in both the numerator and the
denominator:
M
b
k 0
k z k
H ( z) N (1)
a
k 1
k Z k
M and N are order of the two polynomials bk and ak are the filter coefficients. These filter
coefficients are generated using FDS (Filter Design software or Digital Filter design
package).
ALGORITHM TO IMPLEMENT:
We need to realize the Butter worth band pass IIR filter by implementing the difference
equation y[n] = b0x[n] + b1x[n-1]+b2x[n-2]-a1y[n-1]-a2y[n-2] where b0 – b2, a0-a2 are feed
forward and feedback word coefficients respectively [Assume 2nd order of filter].These
coefficients are calculated using MATLAB.A direct form I implementation approach is
taken.
Step 1 - Initialize the McBSP, the DSP board and the on board codec.
―Kindly refer the Topic Configuration of 6713Codec using BSL‖
Step 2 - Initialize the discrete time system , that is , specify the initial conditions.
Generally zero initial conditions are assumed.
Step 3 - Take sampled data from codec while input is fed to DSP kit from the signal
generator. Since Codec is stereo , take average of input data read from left and right
channel . Store sampled data at a memory location.
Step 4 - Perform filter operation using above said difference equation and store filter
Output at a memory location .
Step 5 - Output the value to codec (left channel and right channel) and view the output at
Oscilloscope.
Step 6 - Go to step 3.
Page 89
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
Start
Do y[-3] = y[-2],y[-2]=y[-1]
and Y[-1] = output . output = x[0]b0+x[-1]b1+
x[-3] = x[-2], x[-2]=x[-1] x[-2]b2 - y[-1]a1 - y[-2]a2
x[-1]=x[0]
Poll for ready bit
Stop
Page 90
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
#include "filtercfg.h"
#include "dsk6713.h"
#include "dsk6713_aic23.h"
/*
* main() - Main code routine, initializes BSL and generates tone
*/
void main()
{
DSK6713_AIC23_CodecHandle hCodec;
DSK6713_AIC23_setFreq(hCodec, 3);
while(1)
{ /* Read a sample to the left channel */
while (!DSK6713_AIC23_read(hCodec, &l_input));
Page 91
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
l_output=IIR_FILTER(&filter_Coeff ,l_input);
r_output=l_output;
Page 92
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
return (temp<<2);
}
PROCEDURE:
Switch on the DSP board.
Open the Code Composer Studio.
Create a new project
Project New (File Name. pjt , Eg: FIR.pjt)
Initialize on board codec.
―Kindly refer the Topic Configuration of 6713 Codec using BSL‖
Add the given above ‗C‘ source file to the current project (remove codec.c source
file from the project if you have already added).
Connect the speaker jack to the input of the CRO.
Build the program.
Load the generated object file(*.out) on to Target board.
Run the program using F5.
RESULT:
Observe the waveform that appears on the CRO screen.
Page 93
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
EXP.No:
DISCRETE COSINE TRANSFORM
Aim: To observe transformed and inverse transformed sequences and images using DCT
EQUIPMENT:
PC with windows(95/98/xp/NT/2000)
MATLAB software
PROGRAM:
N=length(xn);
Cf=[1/sqrt(2),ones(1,N-1)];
for f=0: N-1;
for x=0: N-1;
W(f+1, x+1)=cos((2*x+1)*pi*f/(2*N)); %matrix kernel
end
end
Xk=W*xn';
Xk=(sqrt(2/N)*Xk.*Cf')'; % Final result
disp('DCT Result:'); Xk
subplot(3,2,1)
p=[0:N-1];
stem(p,xn); title('Input Sequence');
subplot(3,2,2)
stem(p,Xk,'fill'); title('DCT of Input sequence');
subplot(3,2,[3,4])
stem(p,abs(Xk),'fill'); title('Magnitude');
phaX = angle(Xk);
subplot(3,2,[5,6])
stem(p,Xk,'fill'); title('Phase plot');
Page 94
AVN INSTITUTE OF ENGINEERING AND TECHNOLOGY ECE Dept
RESULT
Page 95