+ All Categories

Download - c6713 Dsp Lab

Transcript
  • 8/9/2019 c6713 Dsp Lab

    1/58

     

    L B M NU L

    Prepared by:

    T.Krishna Chaitanya M.Tech. 

    M.Suneel M.Tech. 

    Department of Electronics & Communications Engineering,

    Bapatla Engineering College,

    Bapatla.

  • 8/9/2019 c6713 Dsp Lab

    2/58

    CONTENTS

    Page.No:

    INTRODUCTION TO TMS320C6713 DSK 1

    LIST PROGRAMS:

    1. MAT lab program to perform Edge detection using Prewitt operator 8

    2. MAT lab program to perform Edge detection using Roberts operator 11

    3. MAT lab program to perform Edge detection using Sobel operator 13

    4. MAT lab program to perform Point detection 16

    5. MAT lab program to perform Line detection 18

    6. MAT lab program to perform Linear and Circular convolution 21

    7. MAT lab program to perform Discrete Fourier Transform 23

    8. MAT lab program to perform Discrete Cosine Transform 25

    9. MAT lab program to perform Image compression using JPEG standard 28

    10. Program to perform Linear convolution using CC Studio 36

    11. Program to perform Circular convolution using CC Studio 39

    12. Program to perform FFT operation using CC Studio 43

    13. Program to perform DFT operation using CC Studio 50

  • 8/9/2019 c6713 Dsp Lab

    3/58

    1

    INTRODUCTION TO -TMS320C6713 DSK

    Package Contents:

    The C6713™ DSK builds on TI's industry-leading line of low cost, easy-to-use DSP

    Starter Kit (DSK) development boards. The high-performance board features the TMS320C6713

    floating-point DSP. Capable of performing 1350 million floating-point operations per second

    (MFLOPS), the C6713 DSP makes the C6713 DSK the most powerful DSK development board.

    The DSK is USB port interfaced platform that allows to efficiently develop andtest applications for the C6713. The DSK consists of a C6713-based printed circuit boardthat will serve as a hardware reference design for TI’s customers’ products. Withextensive host PC and target DSP software support, including bundled TI tools, the DSK provides ease-of-use and capabilities that are attractive to DSP engineers.

    The following checklist details items that are shipped with the C6711 DSK kit.

      TMS320C6713 DSK TMS320C6713 DSK development board

      Other hardware External 5VDC power supply

    IEEE 1284 compliant male-to-female cable

      CD-ROM Code Composer Studio DSK tools

  • 8/9/2019 c6713 Dsp Lab

    4/58

    2

    The C6713 DSK has a TMS320C6713 DSP onboard that allows full-speed

    verification of code with Code Composer Studio. The C6713 DSK provides:

    •  A USB Interface•  SDRAM and ROM

    •  An analog interface circuit for Data conversion (AIC)•  An I/O port•  Embedded JTAG emulation support

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

    The DSK provides a C6713 hardware reference design that can assist you in thedevelopment of your own C6713-based products. In addition to providing a reference forinterfacing the DSP to various types of memories and peripherals, the design also

    addresses power, clock, JTAG, and parallel peripheral interfaces.

    DSK HARDWARE INSTALLATION

    •  Shut down and power off the PC•  Connect the supplied USB port cable to the board•  Connect the other end of the cable to the USB port of PC•  Plug the other end of the power cable into a power outlet•  Plug the power cable into the board•  The user LEDs should flash several times to indicate board is operational•  When you connect your DSK through USB for the first time on a Windows

    loaded PC the new hardware found wizard will come up. So, Install the drivers (The CCS CD contains the require drivers for C5416 DSK).

    •  Install the CCS software for C5416 DSK.

    Troubleshooting DSK Connectivity 

    If Code Composer Studio IDE fails to configure your port correctly, perform the

    following steps:

    •  Test the USB port by running DSK Port test from the start menuUse StartProgramsTexas InstrumentsCode Composer StudioCode Composer

    Studio C6713 DSK ToolsC6713 DSK Diagnostic Utilities

    •  The below Screen will appear

    •  Select   Start  Select 6713 DSK Diagnostic Utility Icon from Desktop

    •  The Screen Look like as below

    •  Select Start Option

  • 8/9/2019 c6713 Dsp Lab

    5/58

    3

    •  Utility Program will test the board

    •   After testing Diagnostic Status you will get PASS 

     If the board still fails to detect

    Go to CMOS setup  Enable the USB Port Option

    (The required Device drivers will load along with CCS Installation)

    SOFTWARE INSTALLATION

    You must install the hardware before you install the software on your system .

    The requirements for the operating platform are;

    •  Insert the installation CD into the CD-ROM drive

    An install screen appears; if not, goes to the windows Explorerand run setup.exe

    •  Choose the option to install Code Composer Sutido

    If you already have C6000 CC Studio IDE installed on your PC,do not install DSK software. CC Studio IDE full tools supportsthe DSK platform

    Respond to the dialog boxes as the installation program runs.

  • 8/9/2019 c6713 Dsp Lab

    6/58

    4

    The Installation program automatically configures CC Studio IDE for operationwith your DSK and creates a CCStudio IDE DSK icon on your desktop. To install, followthese instructions:INTRODUCTION TO CODE COMPOSER STUDIO

    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.

    CODE COMPOSER FEATURES INCLUDE:

    •  IDE•  Debug IDE•  Advanced watch windows•  Integrated editor•  File I/O, Probe Points, and graphical algorithm scope probes•  Advanced graphical signal analysis•  Interactive profiling•  Automated testing and customization via scripting•  Visual project management system•  Compile in the background while editing and debugging•

      Multi-processor debugging•  Help on the target DSP

    Procedure to work on Code Composer Studio :

    1. To create a New Project

    Project   New (SUM.pjt) 

  • 8/9/2019 c6713 Dsp Lab

    7/58

    5

    2. To Create a Source file

    File   New

    Type the code (Save & give a name to file, Eg: sum.c).

    3. To Add Source files to Project 

    Project   Add files to Project   sum.c

  • 8/9/2019 c6713 Dsp Lab

    8/58

    6

    4. To Add r ts6700.lib file & hello.cmd:

    Project   Add files to Project  rts6700.lib 

    Path: c:\CCStudio\c6000\cgtools\lib\rts6700.lib

    Note: Select Object & Library in(*.o,*.l) in Type of fi les

    Project   Add files to Project  hello.cmd

    Path: c:\ti\tutorial\dsk6713\hello1\hello.cmd

    Note: Select Linker Command f ile(*.cmd) in Type of files

  • 8/9/2019 c6713 Dsp Lab

    9/58

    7

    5. To Compi le:

    Project   Compile File

    6. To build or Link:

    Project   build,

    Which will create the final executable (.out) file.(Eg. sum.out).

    7. Procedure to Load and Run program: 

    Load program to DSK:

    File   Load program   sum. out

    8. To execute project:

    Debug   Run.

  • 8/9/2019 c6713 Dsp Lab

    10/58

    8

    1. Edge detection using Prewitt operator

    Aim: To implement edge detection (vertical, horizontal,+45,-45 ) using prewitt operator.

    Software used:

    Mat lab 7.0.1 version

    Program:

    a=imread('cameraman.tif');

     p1=[-1 -1 -1;0 0 0;1 1 1];

     p2=[-1 0 1;-1 0 1;-1 0 1];

     p3=[0 -1 -1;1 0 -1;1 1 0];

     p4=[-1 -1 0;-1 0 1;0 1 1];

    [m n]=size(a);

    a1=zeros(m+2,n+2);

    for i=1:m

    for j=1:n

    a1(i+1,j+1)=a(i,j);

    end

    end

    for i=2:m+1

    for j=2:n+1

    h1(i-1,j-1)=sum(sum(a1(i-1:i+1,j-1:j+1).*p1))./9;

    h2(i-1,j-1)=sum(sum(a1(i-1:i+1,j-1:j+1).*p2))./9;

    h3(i-1,j-1)=sum(sum(a1(i-1:i+1,j-1:j+1).*p3))./9;

    h4(i-1,j-1)=sum(sum(a1(i-1:i+1,j-1:j+1).*p4))./9;

    end

    end

  • 8/9/2019 c6713 Dsp Lab

    11/58

    9

    for i=1:m

    for j=1:n

    if h1(i,j)

  • 8/9/2019 c6713 Dsp Lab

    12/58

    10

    end

    end

    figure,imshow(~h),title(‘detected image’);

    figure,imshow(a),title(‘original image’); 

    Result: Edge detection using prewitt operator is implemented practically.

    Input image Out put edge detected image 

  • 8/9/2019 c6713 Dsp Lab

    13/58

    11

    2. Edge detection using Roberts’s operator

    Aim: To implement edge detection using Roberts operator in MATLAB.

    Software used:

    Mat lab 7.0.1 version

    Program: 

    a=imread('cameraman.tif');

    r1=[-1 0;0 1];

    r2=[0 -1;1 0];

    [m n]=size(a);

    a1=zeros(m+1,n+1);

    for i=1:m

    for j=1:n

    a1(i+1,j+1)=a(i,j);

    end

    end

    for i=1:m

    for j=1:n

    h1(i,j)=sum(sum(a1(i:i+1,j:j+1).*r1))./4;

    h2(i,j)=sum(sum(a1(i:i+1,j:j+1).*r2))./4;

    end

    end

    for i=1:m

    for j=1:n

    if h1(i,j)

  • 8/9/2019 c6713 Dsp Lab

    14/58

    12

    if h2(i,j)

  • 8/9/2019 c6713 Dsp Lab

    15/58

    13

    3. Edge detection using Sobel operator

    Aim: To implement edge detection Sobel operator.

    Software used:

    Mat lab 7.0.1 version

    Program: 

    a=imread('cameraman.tif');

    s1=[-1 -2 -1;0 0 0;1 2 1];

    s2=[-1 0 1;-2 0 2;-1 0 1];

    s3=[0 -1 -2;1 0 -1;2 1 0];

    s4=[-2 -1 0;-1 0 1;0 1 2];

    [m n]=size(a);

    a1=zeros(m+2,n+2);

    for i=1:m

    for j=1:n

    a1(i+1,j+1)=a(i,j);

    end

    end

    for i=2:m+1

    for j=2:n+1

    h1(i-1,j-1)=sum(sum(a1(i-1:i+1,j-1:j+1).*s1))./9;

    h2(i-1,j-1)=sum(sum(a1(i-1:i+1,j-1:j+1).*s2))./9;

    h3(i-1,j-1)=sum(sum(a1(i-1:i+1,j-1:j+1).*s3))./9;

    h4(i-1,j-1)=sum(sum(a1(i-1:i+1,j-1:j+1).*s4))./9;

    end

    end

  • 8/9/2019 c6713 Dsp Lab

    16/58

    14

    for i=1:m

    for j=1:n

    if h1(i,j)

  • 8/9/2019 c6713 Dsp Lab

    17/58

    15

    end

    end

    figure,imshow(~h,[]);

    Result: Edge detection using Sobel operator is implemented practically.

    Input image Out put edge detected image

  • 8/9/2019 c6713 Dsp Lab

    18/58

    16

    4. Point detection

    Aim: 

    To implement Point detection using MATLB.

    Software used:

    Mat lab 7.0.1 version

    Program: 

    a=imread('cameraman.tif');

    d1=[-1 -1 -1;-1 8 -1;-1 -1-1];

    [m n]=size(a);

    a1=zeros(m+2,n+2);

    for i=1:m

    for j=1:n

    a1(i+1,j+1)=a(i,j);

    end

    end

    for i=2:m+1

    for j=2:n+1

    h1(i-1,j-1)=sum(sum(a1(i-1:i+1,j-1:j+1).*d1))./9;

    end

    end

    for i=1:m

    for j=1:n

    if h1(i,j)

  • 8/9/2019 c6713 Dsp Lab

    19/58

    17

    end

    figure,imshow(~h1,[]);

    Result:  The Point detection is implemented practically.

    Input image Out put point detected image

  • 8/9/2019 c6713 Dsp Lab

    20/58

    18

    5. Line detection

    Aim: To implement Line detection.

    Software used:

    Mat lab 7.0.1 version

    Program: 

    a=imread('cameraman.tif');

    s1=[-1 -1 -1;2 2 2;-1 -1 -1];

    s2=[-1 2 1;-2 0 2;-1 0 1];

    s3=[0 -1 -2;1 0 -1;2 1 0];

    s4=[-2 -1 0;-1 0 1;0 1 2];

    [m n]=size(a);

    a1=zeros(m+2,n+2);

    for i=1:m

    for j=1:n

    a1(i+1,j+1)=a(i,j);

    end

    end

    for i=2:m+1

    for j=2:n+1

    h1(i-1,j-1)=sum(sum(a1(i-1:i+1,j-1:j+1).*s1))./9;

    h2(i-1,j-1)=sum(sum(a1(i-1:i+1,j-1:j+1).*s2))./9;

    h3(i-1,j-1)=sum(sum(a1(i-1:i+1,j-1:j+1).*s3))./9;

    h4(i-1,j-1)=sum(sum(a1(i-1:i+1,j-1:j+1).*s4))./9;

    end

    end

  • 8/9/2019 c6713 Dsp Lab

    21/58

    19

    for i=1:m

    for j=1:n

    if h1(i,j)

  • 8/9/2019 c6713 Dsp Lab

    22/58

    20

    end

    end

    figure,imshow(~h,[]);

    Result: Line detection using Sobel operator is implemented practically…

    Input image out put line detected image

  • 8/9/2019 c6713 Dsp Lab

    23/58

    21

    6. Convolution

    Aim: To implement the circular and linear convolution using mat lab.

    Software Used:

    Mat lab 7.0.1 version

    Program:

    Circular Convolution:

    x=[2 3 8 9];

    m=length(x);

    h=[4 2 4 8];

    n=length(h);

     N=max(m,n);

    s=m-n;

     j=1;

    z=[];

    if(s==0)

    h=[h,zeros(1,s)];

    else

    x=[x,zeros(1,-s)];

    h=[h,zeros(1,s)];

    end

    for n=1:N

    y=0;

    for i=1:N

     j=(n-i)+1;

    if(j

  • 8/9/2019 c6713 Dsp Lab

    24/58

    22

    end

    y=y+(x(i)*h(j));

    end

    z=[z y];

    end

    z

    linear convolution:

    u=[2 3 4 2];

    m=length(u);

    v=[4 3 2 1];n=length(v);

    z=[];

    for k=1:m+n-1

     b=0;

    for j=max(1,k+1-n): min(k,m)

    y=u(j)*v(k+1-j);

     b=b+y;

    end

    z=[z,b];

    end

    z

    Result:  The circular & linear convolutions are implemented practically.

    In put Sequence: x[n] = {1, 2, 3, 4}, h[k] = {1, 2, 3, 4}

    Out put Sequence: y[r] = { 1, 4, 10, 20, 25, 24, 16}. 

  • 8/9/2019 c6713 Dsp Lab

    25/58

    23

    7. DFT & Inverse DFT

    Aim: To implement DFT & Inverse DFT Operations for a given sequence.

    Software used:

    Mat lab 7.0.1 version

    Program:

    % DFT

    function c=udft(x) 

    % x=[1 1 2 2 3 3]; 

    N=length(x); 

    sum=0; 

    c=[]; 

    for k=0:N‐1 

    t=1 

    for n=0:N‐1 

    R=x(t)*exp(‐ j*2*pi*n*k/N); 

    sum=sum+R; 

    t=t+1; 

    end 

    c=[c;sum] 

    sum=0; 

    end 

    % Inverse

     DFT

     

    function  c=Uidft(x) 

    %x=[1,2,3,4] 

    N=length(x); 

  • 8/9/2019 c6713 Dsp Lab

    26/58

    24

    sum=0; 

    c=[]; 

    for n=0:N‐1 

    t=1; 

    for k=0:N‐1 

    Y=x(t)*exp((j*2*pi*n*k)/N); 

    R=(1/N)*Y; 

    sum=sum+R; 

    t=t+1; 

    end 

    c=[c;sum] 

    sum=0; 

    end 

    Result:

    The DFT and IDFT operations for a given sequence are performed practically. 

    Input: Out Put: 

    DFT 

    x=[1 1 2 2 3 3]  c= 12.0000 ‐1.5000 + 2.5981i ‐1.5000 + 

    0.8660i 

    0 ‐ 0.0000i ‐1.5000 ‐ 0.8660i  ‐1.5000 ‐

    2.5981i 

    IDFT 

    x =  c= 12.0000 ‐1.5000 + 2.5981i ‐1.5000 + 0.8660i  c= 1 1 2 2  3 3 

    0 ‐ 0.0000i ‐1.5000 ‐ 0.8660i  ‐1.5000 ‐ 2.5981i 

  • 8/9/2019 c6713 Dsp Lab

    27/58

    25

    8. DCT & Inverse DCT

    Aim: To implement DCT & Inverse DCT Operations for a given matrix.

    Software used:

    Mat lab 7.0.1 version

    Program:

    clear;close;clc;

    a=magic(4)

    [M,N]=size(a);

    for u=1:M

    for v=1:N

    if (u==1&&v==1)

    c=1/(sqrt(M*N));

    elseif ((u~=1&&v==1)||(u==1&&v~=1))

    c=sqrt(2/(M*N));

    elseif (u~=1&&v~=1)

    c=2/(sqrt(M*N));

    end

    r=0;

    for x=1:M

    for y=1:N

    r=r+a(x,y)*((cos((pi*((2*x)-1)*(u-1))/(2*M)))*(cos((pi*((2*y)-1)*(v-1))/(2*N))));

    end

    end

    s(u,v)=c*r;

    end

    end

  • 8/9/2019 c6713 Dsp Lab

    28/58

    26

    [M,N]=size(s);

    for x=1:M

    for y=1:N

    q=0;

    for u=1:M

    for v=1:N

    if (u==1&&v==1)

    c=1/(sqrt(M*N));

    elseif ((u~=1&&v==1)||(u==1&&v~=1))

    c=sqrt(2/(M*N));elseif (u~=1&&v~=1)

    c=2/(sqrt(M*N));

    end

    q=q+(c*(s(u,v)*((cos((pi*((2*x)-1)*(u-1))/(2*M)))*(cos((pi*((2*y)-1)*(v-1))/(2*N))))));

     b(x,y)=q;

    end

    end

    end

    end

     b

    Result: The DCT and IDCT operations are performed practically..

  • 8/9/2019 c6713 Dsp Lab

    29/58

    27

    Input sequence:

    a =

    16 2 3 13

    5 11 10 8

    9 7 6 12

    4 14 15 1

    DCT out put:

    s =

    34.0000 0.0000 -0.0000 -0.0000

    0.0000 -0.0000 13.5140 0.0000

    -0.0000 3.3785 0.0000 2.9302

    -0.0000 -0.0000 11.7206 0.0000

    IDCT out put:

     b =

    16.0000 2.0000 3.0000 13.0000

    5.0000 11.0000 10.0000 8.0000

    9.0000 7.0000 6.0000 12.0000

    4.0000 14.0000 15.0000 1.0000

  • 8/9/2019 c6713 Dsp Lab

    30/58

    28

    9. Image compression using JPEG standard

    Aim: To implement lossless image compression using JPEG compression standard.

    Software used:

    Mat lab 7.01 version

    Program:

    Main program:

    Clc;clear all;

    a=imread('cameraman.tif');

    [m,n]=size(a);

    a=double(a);

    q=load('quant.m');

    for i=1:m/8

    for j=1:n/8

    a1=a(((i-1)*8)+1:((i-1)*8)+8,((j-1)*8)+1:((j-1)*8)+8);

    a2=becdct(a1);

    a3=a2./q;

    a4=round(a3);

    a5=becscan2(a4);

    a6=invscan2(a5);

    a7=a6.*q;

    a8(((i-1)*8)+1:((i-1)*8)+8,((j-1)*8)+1:((j-1)*8)+8)=becidct2(a7);

    end

    end

    imshow(a8,[]);

    figure,imshow(a,[]);

  • 8/9/2019 c6713 Dsp Lab

    31/58

    29

    1.block processing: 

    %function a1=blockproc(a);

    a=imread('cameraman.tif');

    [m,n]=size(a);

    for i=1:m/8

    for j=1:n/8

    a1(((i-1)*8)+1:((i-1)*8)+8,((j-1)*8)+1:((j-1)*8)+8) = a(((i-1)*8)+1:((i-1)*8)+8,((j-1)*8)+1:((j-

    1)*8)+8);

    end

    end

    2.discret cosine transform: 

    function s=becdct(a);

    % a=magic(4)

    [M,N]=size(a);

    for u=1:M

    for v=1:N

    if (u==1&&v==1)

    c=1/(sqrt(M*N));

    elseif ((u~=1&&v==1)||(u==1&&v~=1))

    c=sqrt(2/(M*N));

    elseif (u~=1&&v~=1)

    c=2/(sqrt(M*N));

    end

    r=0;

    for x=1:M

    for y=1:N

    r = r+a(x,y)*((cos((pi*((2*x)-1)*(u-1))/(2*M)))*(cos((pi*((2*y)-1)*(v-1))/(2*N))));

  • 8/9/2019 c6713 Dsp Lab

    32/58

    30

    end

    end

    s(u,v) = c*r;

    end

    end

    end

    3.Quantization:

    q= [16 11 10 16 24 40 51 61;

    12 12 14 19 26 58 60 55;

    14 13 16 24 40 57 69 56;14 17 22 29 51 87 80 62;

    18 22 37 56 68 109 103 77;

    24 35 55 64 81 104 113 92;

    49 64 78 87 103 121 120 101;

    72 92 95 98 112 100 103 99];

    4.Zigzag scaning (pixel re-odering):

    function x=becscan2(a);

    % a=magic(8);

    [m,n]=size(a);

    c(1:m,1:n)=a(1:8,8:-1:1);

    d=diag(c);

    e=d';

    i=1;

     j=1;

    x=[];

    z=[];

  • 8/9/2019 c6713 Dsp Lab

    33/58

    31

     b(1:8,1:8)=a(8:-1:1,8:-1:1);

    y=[];

    while (i

  • 8/9/2019 c6713 Dsp Lab

    34/58

    32

     j=j+1;

    end

    end

    end

    y=y(28:-1:1);

    x=[z,e,y];

    5.Inverse scaning:

    function fin=invscan2(a1);

    %a1=[64,2,9,17,55,3,61,54,47,40,32,26,46,12,60,6,13,20,27,34,41,49,23,35,37,21,51,7,57,50,43,

    36,29,22,15,8,58,14,44,28,30,42,16,24,31,38,45,52,59,5,53,19,39,33,25,18,11,4,62,10,48,56,63,1

    ;];

    [m n]=size(a1);

    i=1;

     j=1;

    k1=1;

    z=a1(1:28);

    y1=a1(37:64);

    y=y1(28:-1:1);

     b=zeros(8,8);

    a=zeros(8,8);

    while (i

  • 8/9/2019 c6713 Dsp Lab

    35/58

    33

    end

    if (i==1 && mod(j,2)==0)

    for j=j:-1:1

     b(i,j)=y(k1);

    a(i,j)=z(k1);

    k1=k1+1;

    i=i+1;

    end

    end

    if(j==1 && mod(i,2)==0) b(i,j)=y(k1);

    a(i,j)=z(k1);

    k1=k1+1;

    i=i+1;

     j=1;

    end

    if(j==1 && mod(i,2)==1)

    for i=i:-1:1

     b(i,j)=y(k1);

    a(i,j)=z(k1);

    k1=k1+1;

     j=j+1;

    end

    end

    end

    d=a1(36:-1:29);

  • 8/9/2019 c6713 Dsp Lab

    36/58

    34

    k2=1;

    i=8;

     j=1;

     b=b(8:-1:1,8:-1:1);

    fin=b;

    while (i

  • 8/9/2019 c6713 Dsp Lab

    37/58

    35

    for y=1:N

    q=0;

    for u=1:M

    for v=1:N

    if (u==1&&v==1)

    c=1/(sqrt(M*N));

    elseif ((u~=1&&v==1)||(u==1&&v~=1))

    c=sqrt(2/(M*N));

    elseif (u~=1&&v~=1)

    c=2/(sqrt(M*N));end

    q=q+(c*(s(u,v)*((cos((pi*((2*x)-1)*(u-1))/(2*M)))*(cos((pi*((2*y)-1)*(v-1))/(2*N))))));

     b(x,y)=q;

    end

    end

    end

    end

    end

    Result:  JPEG standard for image compression is implemented practically.

    Input image out put JPEG compressed image

  • 8/9/2019 c6713 Dsp Lab

    38/58

    36

    10. LINEAR CONVOLUTION

    Aim:

    To perform the linear convolution operation for the given sequences.

    Equipment Required:

    1.TMS 320 DSK 6713 Trainer

    2.Power Adopter

    3.USB cable

    4.Code Composer studio software.

    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 aseparate directory(c:\ti\myprojects) with name lconv.pjt.

      Add the source files conv.c 

      to the project using ‘Projectadd files to project’ pull down menu.

      Add the linker command file hello.cmd .(Path: c:\ti\tutorial\dsk6713\hello1\hello.cmd)

      Add the run time support library file rts6700.lib  (Path: c:\ti\c6000\cgtools\lib\rts6700.lib)

      Compile the program using the ‘Project-compile’ pull down menu or byclicking the shortcut icon on the left side of program window.

      Build the program using the ‘Project-Build’ pull down menu or byclicking the shortcut icon on the left side of program window.

      Load the program(lconv.out) in program memory of DSP chip using the‘File-load program’ pull down menu.

      To View output graphicallySelect view graph time and frequency.

  • 8/9/2019 c6713 Dsp Lab

    39/58

    37

    ‘C’ PROGRAM TO IMPLEMENT LINEAR CONVOLUTION:

    /* prg to implement linear convolution */

    #include

    #define LENGHT1 6 /*Lenght of i/p samples sequence*/

    #define LENGHT2 4 /*Lenght of impulse response Co-efficients */

    int x[2*LENGHT1-1]={1,2,3,4,5,6,0,0,0,0,0}; /*Input Signal

    Samples*/

    int h[2*LENGHT1-1]={1,2,3,4,0,0,0,0,0,0,0}; /*Impulse Response Co-

    efficients*/

    int y[LENGHT1+LENGHT2-1];

     main()

    {

    int i=0,j;

    for(i=0;i

  • 8/9/2019 c6713 Dsp Lab

    40/58

    38

    Configure the graphical window as shown below

  • 8/9/2019 c6713 Dsp Lab

    41/58

    39

    11. Circular Convolution

    Aim:

    To perform the circular convolution operation for given input sequences.

    Equipment Required:

    1.TMS 320 DSK 6713 Trainer

    2.Power Adopter

    3.USB cable

    4.Code Composer studio software.

    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 aseparate directory(c:\ti\myprojects) with name ci r  conv.pjt.

      Add the source files Circular Convolution.C 

      to the project using ‘Projectadd files to project’ pull down menu.

      Add the linker command file hello.cmd .(Path: c:\ti\tutorial\dsk6713\hello1\hello.cmd)

      Add the run time support library file rts6700.lib  (Path: c:\ti\c6000\cgtools\lib\rts6700.lib)

      Compile the program using the ‘Project-compile’ pull down menu or byclicking the shortcut icon on the left side of program window.

      Build the program using the ‘Project-Build’ pull down menu or byclicking the shortcut icon on the left side of program window.

      Load the program(lconv.out) in program memory of DSP chip using the

    ‘File-load program’ pull down menu.

  • 8/9/2019 c6713 Dsp Lab

    42/58

    40

    Program to Implement Circular Convolution:

    #i ncl ude

    i nt m, n, x[ 30] , h[ 30] , y[ 30] , i , j , t emp[ 30] , k, x2[ 30] , a[ 30] ;

    voi d mai n( )

    {

    pr i nt f ( " ent er t he l engt h of t he f i r st sequence\ n") ;

    scanf ( "%d" , &m) ;

    pr i nt f ( " ent er t he l engt h of t he second sequence\ n") ;

    scanf ( "%d" , &n) ;

    pr i nt f ( " ent er t he f i r st sequence\ n") ;

    f or( i =0; i

  • 8/9/2019 c6713 Dsp Lab

    43/58

    41

    {

    f or( i =n; i

  • 8/9/2019 c6713 Dsp Lab

    44/58

    42

    y[k] =0;

    / *ci r cul ar shi f t * /

    f or ( j =1; j

  • 8/9/2019 c6713 Dsp Lab

    45/58

    43

    12.  Fast Fourier Transforms (FFT)

    Aim:

    To perform the FFT operation for the given input sequence.

    Equipment Required:

    1.TMS 320 DSK 6713 Trainer

    2.Power Adopter

    3.USB cable

    4.Code Composer studio software.

    C PROGRAM TO IMPLEMENT FFT:

    Main.c (fft 256.c):

    #include

    #define PTS 64 //# of points for FFT

    #define PI 3.14159265358979

    typedef struct {float real,imag;} COMPLEX;

    void FFT(COMPLEX *Y, int n); //FFT prototype

    float iobuffer[PTS]; //as input and output buffer

    float x1[PTS]; //intermediate buffer

    short i; //general purpose index

    variable

    short buffercount = 0; //number of new samples in

    iobuffer

    short flag = 0; //set to 1 by ISR when

    iobuffer full

    COMPLEX w[PTS]; //twiddle constants stored

    in w

    COMPLEX samples[PTS]; //primary working buffer

  • 8/9/2019 c6713 Dsp Lab

    46/58

    44

     main()

    {

    for (i = 0 ; i freq,

    64 -> sampling freq*/

    samples[i].real=0.0;

    samples[i].imag=0.0;

    }

    for (i = 0 ; i < PTS ; i++) //swap buffers

    {

    samples[i].real=iobuffer[i]; //buffer with new data

    }

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

    samples[i].imag = 0.0; //imag components = 0

  • 8/9/2019 c6713 Dsp Lab

    47/58

    45

    FFT(samples,PTS); //call function FFT.c

    for (i = 0 ; i < PTS ; i++) //compute magnitude

    {

    x1[i] = sqrt(samples[i].real*samples[i].real

    + samples[i].imag*samples[i].imag);

    }

    } //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

    void FFT(COMPLEX *Y, int N) //input sample array, # of points

    {

    COMPLEX temp1,temp2; //temporary storage variables

    int i,j,k; //loop counter variables

    int upper_leg, lower_leg; //index of upper/lower butterfly

    leg

    int leg_diff; //difference between upper/lower

    leg

    int num_stages = 0; //number of FFT stages (iterations)

    int index, step; //index/step through twiddle

    constant

    i = 1; //log(base2) of N points= # of stages

  • 8/9/2019 c6713 Dsp Lab

    48/58

    46

    do

    {

    num_stages +=1;

    i = i*2;

    }while (i!=N);

    leg_diff = N/2; //difference between upper&lower legs

    step = (PTS*2)/N; //step between values in twiddle.h

    for (i = 0;i < num_stages; i++) //for N-point FFT

    {

    index = 0;

    for (j = 0; j < leg_diff; j++)

    {

    for (upper_leg = j; upper_leg < N; upper_leg += (2*leg_diff))

    {

    lower_leg = upper_leg+leg_diff;

    temp1.real = (Y[upper_leg]).real + (Y[lower_leg]).real;

    temp1.imag = (Y[upper_leg]).imag + (Y[lower_leg]).imag;

    temp2.real = (Y[upper_leg]).real - (Y[lower_leg]).real;

    temp2.imag = (Y[upper_leg]).imag - (Y[lower_leg]).imag;

    (Y[lower_leg]).real = temp2.real*(w[index]).real

    -temp2.imag*(w[index]).imag;

    (Y[lower_leg]).imag = temp2.real*(w[index]).imag

    +temp2.imag*(w[index]).real;

    (Y[upper_leg]).real = temp1.real;

    (Y[upper_leg]).imag = temp1.imag;

    }

    index += step;

  • 8/9/2019 c6713 Dsp Lab

    49/58

    47

    }

    leg_diff = leg_diff/2;

    step *= 2;

    }

    j = 0;

    for (i = 1; i < (N-1); i++) //bit reversal for

    resequencing data

    {

    k = N/2;

    while (k

  • 8/9/2019 c6713 Dsp Lab

    50/58

    48

    PROCEEDURE:

      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 aseparate 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 byclicking 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. 

    Result:The operation of FFT for the given input is observed practically.

  • 8/9/2019 c6713 Dsp Lab

    51/58

    49

    Graphical representations

    Input:

    Output:

  • 8/9/2019 c6713 Dsp Lab

    52/58

    50

    13. DISCRETE FOURIER TRANSFORM (DFT)

    Aim:

    To perform the DFT operation for the given input sequence.

    Equipment Required:

    1. TMS 320 DSK 6713 Trainer

    2. Power Adopter

    3. USB cable

    4. Code Composer studio software.

    Source Code DFT:

    #include 

    #include 

    #include 

    struct comp 

    float R,I; 

    }; 

    typedef  struct comp cmplx; 

    /* function prototypes used in DFT and IDFT*/ 

    void add_comp_num(cmplx a,cmplx b,cmplx *c); 

    void get_input(cmplx *inp,int sz); 

    void put_data(cmplx *,int ); 

    void mul_comp_num(cmplx a,cmplx b,cmplx *c); 

    void comp_dft(cmplx *,cmplx *,int sz); 

    void put_comp_num(cmplx ); 

    void comp_Idft(cmplx *x1,cmplx *y1,int sz); 

  • 8/9/2019 c6713 Dsp Lab

    53/58

    51

    void main(void) 

    cmplx *x,*y,p,q,r,*ix; 

    int size;

     

    printf  ("\n Enter the size of  input samples :"); 

    scanf("%d",&size); 

    /* allocate memory for input and output variables */ 

    x=(cmplx *) malloc(size* sizeof(cmplx)); 

    y=(cmplx *) malloc(size* sizeof(cmplx)); 

    ix=(cmplx *)

     malloc(size*

     sizeof(cmplx));

     

    /* get the input data from the interactive screen */ 

    get_input(x,size); 

    /* compute DFT and diaplay the out puut */ 

    comp_dft(x,y,size); 

    put_data(y,size); 

    /* compute

     IDFT

     and

     see

     that

     the

     out

     put

     is

     same

     as

     input

     */

     

    comp_Idft(y,ix,size); 

    put_data(ix,size); 

    void comp_Idft(cmplx *x1,cmplx *y1,int sz) 

    int i,j,k,n,N;

     

    float arg; 

    cmplx t,ag,res,p,q; 

    N=sz; 

  • 8/9/2019 c6713 Dsp Lab

    54/58

    52

    for(n=0;nI;

     

    q.R=res.R; 

    q.I=res.I; 

    mul_comp_num(p,ag,&t); 

    /*printf("\n multiplication value"); 

    */ 

    put_comp_num(t); 

    add_comp_num(t,q,&res); 

    /*printf("\n the addition value"); 

    */ 

  • 8/9/2019 c6713 Dsp Lab

    55/58

    53

    /*put_comp_num(res);*/ 

    printf("\n\n iteration %d",k); 

    (y1+n)‐>R=res.R/N;

     

    (y1+n)‐>I=res.I/N; 

    return; 

    void comp_dft(cmplx *x1,cmplx *y1,int sz) 

    int i,j,k,n,N; 

    float arg; 

    cmplx t,ag,res,p,q; 

    N=sz; 

    for(k=0;k

  • 8/9/2019 c6713 Dsp Lab

    56/58

    54

    /*printf("\ the angle value"); 

    */ 

    /*put_comp_num(ag);*/ 

    p.R=(x1+n)‐>R;

     

    p.I=(x1+n)‐>I; 

    q.R=res.R; 

    q.I=res.I; 

    mul_comp_num(p,ag,&t); 

    /*printf("\n multiplication value"); 

    */ 

    put_comp_num(t); 

    add_comp_num(t,q,&res); 

    /*printf("\n the addition value"); 

    */ 

    /*put_comp_num(res);*/ 

    printf("\n\n iteration %d",k); 

    (y1+k)‐>R=res.R; 

    (y1+k)‐>I=res.I; 

    return; 

    void put_data(cmplx *ot,int sz) 

    int i; 

  • 8/9/2019 c6713 Dsp Lab

    57/58

    55

    printf("\n out put data \n"); 

    for(i=0;iR,(ot+i)‐>I); 

    return; 

    void get_input(cmplx *inp,int sz) 

    float re,im; 

    int i; 

    printf("\n Enter

     the

     input

     sample

     of 

     size

     %d",sz);

     

    for(i=0;iR=re;

     

    (inp+i)‐>I=im; 

    return; 

    void add_comp_num(cmplx a,cmplx b,cmplx *c) 

    c‐>R=a.R+b.R; 

    c‐>I=a.I+b.I; 

  • 8/9/2019 c6713 Dsp Lab

    58/58

    56

    void mul_comp_num(cmplx a,cmplx b,cmplx *c) 

    c‐>R=a.R*b.R‐a.I*b.I; 

    c‐>I=a.I*b.R+a.R*b.I;

     

    void put_comp_num(cmplx t) 

    printf("\n %f+j%f",t.R,t.I); 

    return; 

    Result: 

    The DFT operation is performed practically using CC Studio.


Top Related