ec2306 - digital signal processing

Upload: jeslin-antonio

Post on 10-Feb-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/22/2019 Ec2306 - Digital Signal Processing

    1/50

    1www.jprnotes.blogspot.com

    RAJALAKSHMI ENGINEERING COLLEGE

    THANDALAM, CHENNAI- 602105

    Department of Electronics and Communication Engineering

    EC2306 - DIGITAL SIGNAL PROCESSING

    LABORATORY MANUAL

  • 7/22/2019 Ec2306 - Digital Signal Processing

    2/50

    2www.jprnotes.blogspot.com

    EC2306 DIGITAL SIGNAL PROCESSING LAB

    USING TMS320C5X/TMS320C 67XX/ADSP 218X/219X/BS531/532/5611. Study of various addressing modes of DSP using simple programming

    examples2. Implementation of Linear and Circular Convolution3. Sampling of input signal and display4. Waveform generation5. Implementation of FIR filter

    USING MATLAB

    1. Generation of Signals

    2. Linear and circular convolution of twosequences

    3. Sampling and effect of aliasing4. Design of FIR filters5. Design of IIR filters6. Calculation of FFT of a signal7. Decimation by polyphase decomposition.

  • 7/22/2019 Ec2306 - Digital Signal Processing

    3/50

    3www.jprnotes.blogspot.com

    1. MATLAB PROGRAMS

    1. LINEAR CONVOLUTION

    clc;clear all;close all;x=input('ENTER THE FIRST SEQUENCE ');

    h=input('ENTER THE SECOND SEQUENCE ');

    y=conv(x,h);stem(y);

    xlabel('Amplitude---->');

    ylabel('time----->');

    title('LINEAR CONVOLUTION');

    2. Program illustrates the design of a Butterworth bandstop filter.

    % Program P7_1% Design of a Butterworth Bandstop Digital Filter

    Ws = [0.4 0.6]; Wp = [0.3 0.7]; Rp = 0.4; Rs = 50;

    % Estimate the Filter Order[N1, Wn1] = buttord(Wp, Ws, Rp, Rs);

    % Design the Filter

    [num,den] = butter(N1,Wn1,stop);

    % Display the transfer functiondisp(Numerator coefficients are );disp(num);

    disp(Denominator coefficients are );disp(den);% Compute the gain response[g,w] = gain(num,den);

    % Plot the gain response

    plot(w/pi,g);gridaxis([0 1 -60 5]);

    xlabel(\omega /\pi); ylabel(Gain, dB);

    title(Gain Response of a Butterworth Bandstop Filter);

    3. To implement a causal IIR filter implemented in the Direct Form II structure,the function direct2 given below can be employed.

    function [y,sf] = direct2(p,d,x,si);

    % Y = DIRECT2(P,D,X) filters input data vector X with% the filter described by vectors P and D to create the

    % filtered data Y. The filter is a "Direct Form II"

    % implementation of the difference equation:% y(n) = p(1)*x(n) + p(2)*x(n-1) + ... + p(np+1)*x(n-np)

  • 7/22/2019 Ec2306 - Digital Signal Processing

    4/50

    4www.jprnotes.blogspot.com

    % - d(2)*y(n-1) - ... - d(nd+1)*y(n-nd)

    % [Y,SF] = DIRECT2(P,D,X,SI) gives access to initial and

    % final conditions, SI and SF, of the delays.dlen = length(d); plen = length(p);

    N = max(dlen,plen); M = length(x);

    sf = zeros(1,N-1); y = zeros(1,M);if nargin ~= 3,

    sf = si;

    endif dlen < plen,

    d = [d zeros(1,plen - dlen)];

    else

    p = [p zeros(1, dlen - plen)];end

    p = p/d(1); d = d/d(1);

    for n = 1:M;

    wnew = [1 -d(2:N)]*[x(n) sf];K = [wnew sf];

    y(n) = K*p;sf = [wnew sf(1:N-2)];

    end

    4. Program illustrates the design of a causal IIR filter, its simulation in transposed

    Direct Form II, and its application in filtering a signal.

    % Program P8_3

    % Illustration of Filtering by an IIR Filter

    %clf;

    % Generate the input sequence

    k = 0:50;w2 = 0.7*pi;w1 = 0.2*pi;

    x1 = 1.5*cos(w1*k); x2 = 2*cos(w2*k);

    x = x1+x2;

    % Determine the filter transfer function[N, Wn] = ellipord(0.25, 0.55, 0.5, 50);

    [num, den] = ellip(N,0.5, 50,Wn);

    % Generate the output sequencey = filter(num,den,x);

    % Plot the input and the output sequences

    subplot(2,1,1);stem(k,x); axis([0 50 -4 4]);

    xlabel(Time index n); ylabel(Amplitude);

    title(Input Sequence);

    subplot(2,1,2);

  • 7/22/2019 Ec2306 - Digital Signal Processing

    5/50

    5www.jprnotes.blogspot.com

    stem(k,y); axis([0 50 -4 4]);

    xlabel(Time index n); ylabel(Amplitude);

    title(Output Sequence);

    5. Program up-sampler.

    % Illustration of Up-Sampling by an Integer Factor%

    clf;

    n = 0:50;

    x = sin(2*pi*0.12*n);y = zeros(1, 3*length(x));

    y([1: 3: length(y)]) = x;

    subplot(2,1,1)

    stem(n,x);title(Input Sequence);

    xlabel(Time index n);ylabel(Amplitude);subplot(2,1,2)

    stem(n,y(1:length(x)));

    title(Output Sequence);xlabel(Time index n);ylabel(Amplitude);

    6. Illustration of Down-Sampling by an Integer Factor

    clf;

    n = 0: 49;m = 0: 50*3 - 1;

    x = sin(2*pi*0.042*m);

    y = x([1: 3: length(x)]);

    subplot(2,1,1)stem(n, x(1:50)); axis([0 50 -1.2 1.2]);

    title(Input Sequence);

    xlabel(Time index n);ylabel(Amplitude);

    subplot(2,1,2)

    stem(n, y); axis([0 50 -1.2 1.2]);title(Output Sequence);

    xlabel(Time index n);

    ylabel(Amplitude);

  • 7/22/2019 Ec2306 - Digital Signal Processing

    6/50

    6www.jprnotes.blogspot.com

    7. Use fir2 to create a bandlimited input sequence

    clf;

    freq = [0 0.45 0.5 1];

    mag = [0 1 0 0];x = fir2(99, freq, mag);

    % Evaluate and plot the input spectrum

    [Xz, w] = freqz(x, 1, 512, whole);subplot(2,1,1);

    plot(w/pi, abs(Xz)); axis([0 1 0 1]); grid

    xlabel(\omega/\pi); ylabel(Magnitude);

    title(Input Spectrum);subplot(2,1,2);

    % Generate the up-sampled sequence

    L = input(Type in the up-sampling factor = );

    y = zeros(1, L*length(x));y([1: L: length(y)]) = x;

    % Evaluate and plot the output spectrum[Yz, w] = freqz(y, 1, 512, whole);

    plot(w/pi, abs(Yz)); axis([0 1 0 1]); grid

    xlabel(\omega/\pi); ylabel(Magnitude);title(Output Spectrum);

    8. Program P10 4 can be employed to study the frequency-domain properties of the

    downsampler.

    % Program P10_4% Effect of Down-sampling in the Frequency Domain

    % Use fir2 to create a bandlimited input sequence

    clf;freq = [0 0.42 0.48 1]; mag = [0 1 0 0];

    x = fir2(101, freq, mag);

    % Evaluate and plot the input spectrum

    [Xz, w] = freqz(x, 1, 512);subplot(2,1,1);

    plot(w/pi, abs(Xz)); grid

    xlabel(\omega/\pi); ylabel(Magnitude);title(Input Spectrum);

    % Generate the down-sampled sequence

    M = input(Type in the down-sampling factor = );y = x([1: M: length(x)]);

    % Evaluate and plot the output spectrum

    [Yz, w] = freqz(y, 1, 512);

    subplot(2,1,2);

  • 7/22/2019 Ec2306 - Digital Signal Processing

    7/50

    7www.jprnotes.blogspot.com

    plot(w/pi, abs(Yz)); grid

    xlabel(\omega/\pi); ylabel(Magnitude);

    title(Output Spectrum);

    9. FIR FILTER USING RECTANGULAR WINDOW

    clc;close all;clear all;

    rp=input('enter the passband ripple');

    rs=input('enter the stopband ripple');fp=input('enter the passband ripple');

    fs=input('enter the stopband ripple');

    f=input('enter the sampling frequency');

    wp=2*fp/f;ws=2*fs/f;

    num=-20*log10(sqrt(rs*rp))-13;dem=14.6*(fs-fp)/f;

    n=ceil(num/dem);

    if(rem(n,2)~=0)n=n1;

    n=n-1;

    end

    y=RECTWIN(n1);%bandpass filter

    wn=[wp ws];

    b=fir1(n,wn,y);[h,o]=freqz(b,1,256);

    m=20*log10*(abs(h));

    an=angle(h);subplot(2,1,1);

    plot(o/pi,m);

    xlabel('normalised freq-->');

    ylabel('gain in db-->');subplot(2,1,2);

    plot(0/pi,an);

    xlabel('normalised freq-->');ylabel('phase in radians-->');

  • 7/22/2019 Ec2306 - Digital Signal Processing

    8/50

    8www.jprnotes.blogspot.com

    10. FIR FILTER USING HAMMING WINDOW

    clc; clear all; close all

    rp=input('enter the passband ripple');rs=input('enter the stopband ripple');

    fp=input('enter the passband freq');

    fs=input('enter the stopband freq');

    f=input('enter the sampling freq');wp=2*fp/f;ws=2*fs/f;

    num=-20*log10(sqrt(rp*rs))-13;

    dem=14.6*(fs-fp)/f;

    n=ceil(num/dem);n1=n+1;

    if(rem(n,2)~=0);n1=n;

    n=n-1;

    endy=hamming(n1);

    %LOW -PASS FILTER

    b=fir1(n,wp,y);

    [h,o]=freqz(b,1,256);m=20*log10(abs(h));

    subplot(2,2,1);plot(o/pi,m);

    ylabel('gain in db-->');xlabel('(a)normalised frequency-->');

    title('LOW-PASS FILTER');

    %BAND PASS FILTERwn=[wp ws];

    b=fir1(n,wn,y);

    [h,o]=freqz(b,1,256);

    m=20*log10(abs(h));subplot(2,2,3);plot(o/pi,m);

    ylabel('gain in db-->');

    xlabel('(c)normalised frequency-->');title('BAND PASS FILTER');

    11. CIRCULAR CONVOLUTION

    clc;

    clear all;

  • 7/22/2019 Ec2306 - Digital Signal Processing

    9/50

    9www.jprnotes.blogspot.com

    close all;

    g=input('1 sequence');

    h=input('2 sequence');N1=length(g);

    N2=length(h);

    N=max(N1,N2);N3=N1-N2;

    if(N3>=0)

    h=[h,zeros(1,N3)];else

    g=[g,zeros(1,-N3)];

    end

    for n=1:Ny(n)=0;

    for i=1:N

    j=n-i+1;

    if(j

  • 7/22/2019 Ec2306 - Digital Signal Processing

    10/50

    10www.jprnotes.blogspot.com

    xlabel('(a) normalised frequency>');

    subplot(2,1,2);

    plot(om/pi,an);xlabel('(b) normalised frequency');

    ylabel('phase in radian');

    DSP PROGRAMS

    1. Sine Waveform generation

    ;Starting address :1000h

    ;Output address (DSPIK) : 2000h

    .include "5416_iv.asm".def start

    .datacon1 .word 0555h ;1/3!

    con2 .word 0044h ;1/5!

    con3 .word 0001h ;1/7!con4 .word 0fffh ;1/2!

    con5 .word 0155h ;1/4!

    con6 .word 000bh ;1/6!

    fs .word 7d00hfm .word 07cfh

    pi .word 0c8ch

    ms .word 0mx .word 0

    CNT .word 256

    .text

    start LD #con1,DP

    RSBX INTMLD #022Bh,0,A

    STLM A,PMST

    ;------------------------Serial Port Initializations-------------------------

    ;--------------------------McBSP0 Initializations----------------------------

    SSBX INTM

    STM SPCR1,McBSP0_SPSA ;SPCR1 reset

    STM #0090h,McBSP0_SPSD

  • 7/22/2019 Ec2306 - Digital Signal Processing

    11/50

    11www.jprnotes.blogspot.com

    NOP

    NOP

    STM SPCR2,McBSP0_SPSA ;SPCR2 reset

    STM #0020h,McBSP0_SPSD

    STM PCR,McBSP0_SPSA ;PCR

    STM #0A00h,McBSP0_SPSD

    STM RCR1,McBSP0_SPSA ;RCR1

    STM #00A0h,McBSP0_SPSD ;32 BITS WORDSIZE

    STM RCR2,McBSP0_SPSA ;RCR2

    STM #0001h,McBSP0_SPSD

    STM XCR1,McBSP0_SPSA ;XCR1STM #00A0h,McBSP0_SPSD ;32 BITS WORDSIZE

    STM XCR2,McBSP0_SPSA ;XCR2

    STM #0001h,McBSP0_SPSD

    STM SRGR1,McBSP0_SPSA ;SRGR1

    STM #000Bh,McBSP0_SPSD ;--17

    STM SRGR2,McBSP0_SPSA ;SRGR2STM #303Fh,McBSP0_SPSD

    STM MCR1,McBSP0_SPSA ;MCR1STM #0001h,McBSP0_SPSD

    STM MCR2,McBSP0_SPSA ;MCR2STM #0000h,McBSP0_SPSD

    STM RCERB,McBSP0_SPSA ;RCERB

    STM #0001h,McBSP0_SPSD

    STM RCERA,McBSP0_SPSA ;RCERA

    STM #0001h,McBSP0_SPSD

    STM XCERB,McBSP0_SPSA ;XCERB

    STM #0001h,McBSP0_SPSD

    STM XCERA,McBSP0_SPSA ;XCERA

    STM #0001h,McBSP0_SPSD

  • 7/22/2019 Ec2306 - Digital Signal Processing

    12/50

    12www.jprnotes.blogspot.com

    STM SPCR1,McBSP0_SPSA

    STM #0091h,McBSP0_SPSD ;Take 'em out of reset

    NOP

    NOP

    STM SPCR2,McBSP0_SPSA

    STM #00A1h,McBSP0_SPSD

    ;--------------------------McBSP1 Initializations------------------------------

    STM SPCR1,McBSP1_SPSA ;SPCR1 resetSTM #0090h,McBSP1_SPSD

    NOP

    NOP

    STM SPCR2,McBSP1_SPSA ;SPCR2 resetSTM #0020h,McBSP1_SPSD

    STM PCR,McBSP1_SPSA ;PCRSTM #0A00h,McBSP1_SPSD

    STM RCR1,McBSP1_SPSA ;RCR1

    STM #00A0h,McBSP1_SPSD ;32 BITS WORDSIZE

    STM RCR2,McBSP1_SPSA ;RCR2

    STM #0000h,McBSP1_SPSD

    STM XCR1,McBSP1_SPSA ;XCR1

    STM #00A0h,McBSP1_SPSD ;32 BITS WORDSIZE

    STM XCR2,McBSP1_SPSA ;XCR2

    STM #0000h,McBSP1_SPSD

    STM SRGR1,McBSP1_SPSA ;SRGR1

    STM #0002h,McBSP1_SPSD ;--5

    STM SRGR2,McBSP1_SPSA ;SRGR2

    STM #303Bh,McBSP1_SPSD

    STM MCR1,McBSP1_SPSA ;MCR1

    STM #0001h,McBSP1_SPSD

    STM MCR2,McBSP1_SPSA ;MCR2

  • 7/22/2019 Ec2306 - Digital Signal Processing

    13/50

    13www.jprnotes.blogspot.com

    STM #0000h,McBSP1_SPSD

    STM RCERB,McBSP1_SPSA ;RCERBSTM #0001h,McBSP1_SPSD

    STM RCERA,McBSP1_SPSA ;RCERASTM #0001h,McBSP1_SPSD

    STM XCERB,McBSP1_SPSA ;XCERBSTM #0001h,McBSP1_SPSD

    STM XCERA,McBSP1_SPSA ;XCERA

    STM #0001h,McBSP1_SPSD

    STM SPCR1,McBSP1_SPSA

    STM #0091h,McBSP1_SPSD ;Take 'em out of reset

    NOP

    NOP

    STM SPCR2,McBSP1_SPSA

    STM #00A1h,McBSP1_SPSD

    ;--------------------End of Serial Ports Initializations-----------------------

    RSBX INTM

    LD #02Fh,0,A

    STLM A,IMR

    STM #0h,McBSP0_DXR1

    STM #0h,McBSP0_DXR2

    STM #0007h,GPIOCR

    STM #0003h,GPIOSR

    STM #SPCR2,McBSP1_SPSA

    STM #00E1h,McBSP1_SPSD ;Mclk

    NOP

    STM #0007h,GPIOSR

    STM #SPCR2,McBSP0_SPSA

    STM #00E1h,McBSP0_SPSD ;Sclk & Fs

    ;----------------------------------------------------------------------------

  • 7/22/2019 Ec2306 - Digital Signal Processing

    14/50

    14www.jprnotes.blogspot.com

    STM #256,BK

    STM #2000h,AR5

    SSBX SXM

    WAIT NOP

    NOP

    LD CNT,ABC WAVE,AEQ

    NOP

    B WAIT

    _XINT0_ISR

    LD *AR5+%,A

    STLM A,McBSP0_DXR1 ;o/p for R Channel

    STLM A,McBSP0_DXR2 ;o/p for L Channel

    LD CNT,A

    SUB #1,A

    STL A,CNT

    RETE

    WAVE LD #0,A

    STLM A,IMR

    LD #con1,DP

    STM #1508h,AR2LD fm,T

    MPY *AR2,A

    STM #1506h,AR2

    RPT #15

    SUBC *AR2,ASTL A,ms

    ;COSINE APPROX

  • 7/22/2019 Ec2306 - Digital Signal Processing

    15/50

    15www.jprnotes.blogspot.com

    LD ms,T ;XSTM #1509h,AR2

    MPY *AR2+,A

    SFTA A,-5STL A,*AR2 ;X^2

    STM #150Ah,AR2MPY *AR2+,A ;X^3

    SFTA A,-9

    STL A,*AR2

    STM #150Bh,AR2

    MPY *AR2+,A ;X^4

    SFTA A,-9

    STL A,*AR2

    STM #150Ch,AR2MPY *AR2+,A ;X^5

    SFTA A,-9

    STL A,*AR2

    STM #150Dh,AR2

    MPY *AR2+,A ;X^6

    SFTA A,-9STL A,*AR2

    STM #150Eh,AR2

    MPY *AR2+,A ;X^7

    SFTA A,-9STL A,*AR2

    ;cos x = 1 - x 2 / 2! + x^4 / 4! - x^6 / 6! + ....

    STM #150Ah,AR2

    LD con4,T

    MPY *AR2,ASFTA A,-13

    LD #1FFFh,B

    SUB A,B

    STM #150ch,AR2

    LD con5,T

    MPY *AR2,A

  • 7/22/2019 Ec2306 - Digital Signal Processing

    16/50

    16www.jprnotes.blogspot.com

    SFTA A,-13

    ADD A,B

    STM #150eh,AR2

    LD con6,T

    MPY *AR2,ASFTA A,-13

    SUB A,B

    STM #1600h,AR1

    STL B,*AR1+

    LD #0,A

    RPT #1STL A,*AR1+

    ;sin x = x - x 3 / 3! + x^5 / 5! - x^7 / 7! + ....

    STM #150Bh,AR2LD con1,T

    MPY *AR2,A

    SFTA A,-13STM #1509h,AR2

    LD *AR2,4,B

    SUB A,B

    STM #150Dh,AR2

    LD con2,T

    MPY *AR2,ASFTA A,-13

    ADD A,B

    STM #150Fh,AR2

    LD con3,T

    MPY *AR2,A

    SFTA A,-13SUB A,B

    STL B,*AR1

    ;WAVE GENERATION

    STM #2000h,AR7STM #256,BRC

    RPTB wave1

    STM #1602h,AR2

  • 7/22/2019 Ec2306 - Digital Signal Processing

    17/50

    17www.jprnotes.blogspot.com

    STM #1600h,AR3

    MPY *AR2,*AR3,A

    SFTA A,-12

    STM #1602h,AR4

    STM #1601h,AR5MVDD *AR4,*AR5

    STM #1603h,AR6LD *AR6,B

    SUB B,A

    STL A,*AR7+

    STM #1602h,AR6

    STL A,*AR6

    STM #1601h,AR4

    STM #1603h,AR5MVDD *AR4,*AR5

    NOP

    wave1 NOP

    STM #2000h,AR5

    NOP

    NOPLD #256,A

    STL A,CNT

    NOPNOP

    LD #02Fh,0,A

    STLM A,IMR

    NOPNOP

    B WAIT

    2. Square wave generation

    ;Starting address : 1000h

    ;Output address :2000h

    .include "5416_iv.asm"

  • 7/22/2019 Ec2306 - Digital Signal Processing

    18/50

    18www.jprnotes.blogspot.com

    .def start

    .data

    POS .word 30 ;Positive Count valueNEG .word 30 ;Negative Count Value

    P .word 0 ;Dummy 1

    N .word 0 ;Dummy 2.word 07fffh,08001h ;Maximum Positive and Negative Values

    CNT .word 128 ;Total No.of Samples

    E .word 45h ;Display Character 'E'.text

    start LD #POS,DP

    ; Data Page Pointer RSBX INTM

    LD #022Bh,0,A

    STLM A,PMST

    ;------------------------Serial Port Initializations-------------------------;--------------------------McBSP0 Initializations----------------------------

    SSBX INTMSTM SPCR1,McBSP0_SPSA ;SPCR1 reset

    STM #0090h,McBSP0_SPSD

    NOPNOP

    STM SPCR2,McBSP0_SPSA ;SPCR2 resetSTM #0020h,McBSP0_SPSD

    STM PCR,McBSP0_SPSA ;PCRSTM #0A00h,McBSP0_SPSD

    STM RCR1,McBSP0_SPSA ;RCR1

    STM #00A0h,McBSP0_SPSD ;32 BITS WORDSIZE

    STM RCR2,McBSP0_SPSA ;RCR2

    STM #0001h,McBSP0_SPSD

    STM XCR1,McBSP0_SPSA ;XCR1

    STM #00A0h,McBSP0_SPSD ;32 BITS WORDSIZE

    STM XCR2,McBSP0_SPSA ;XCR2

    STM #0001h,McBSP0_SPSD

  • 7/22/2019 Ec2306 - Digital Signal Processing

    19/50

    19www.jprnotes.blogspot.com

    STM SRGR1,McBSP0_SPSA ;SRGR1

    STM #0017h,McBSP0_SPSD ;--17

    STM SRGR2,McBSP0_SPSA ;SRGR2

    STM #303Fh,McBSP0_SPSD

    STM MCR1,McBSP0_SPSA ;MCR1

    STM #0001h,McBSP0_SPSD

    STM MCR2,McBSP0_SPSA ;MCR2

    STM #0000h,McBSP0_SPSD

    STM RCERB,McBSP0_SPSA ;RCERBSTM #0001h,McBSP0_SPSD

    STM RCERA,McBSP0_SPSA ;RCERA

    STM #0001h,McBSP0_SPSD

    STM XCERB,McBSP0_SPSA ;XCERBSTM #0001h,McBSP0_SPSD

    STM XCERA,McBSP0_SPSA ;XCERA

    STM #0001h,McBSP0_SPSD

    STM SPCR1,McBSP0_SPSASTM #0091h,McBSP0_SPSD ;Take 'em out of reset

    NOPNOP

    STM SPCR2,McBSP0_SPSASTM #00A1h,McBSP0_SPSD

    ;--------------------------McBSP2 Initializations------------------------------

    STM SPCR1,McBSP2_SPSA ;SPCR1 reset

    STM #0090h,McBSP2_SPSD

    NOP

    NOP

    STM SPCR2,McBSP2_SPSA ;SPCR2 reset

    STM #0020h,McBSP2_SPSD

    STM PCR,McBSP2_SPSA ;PCR

  • 7/22/2019 Ec2306 - Digital Signal Processing

    20/50

    20www.jprnotes.blogspot.com

    STM #0A00h,McBSP2_SPSD

    STM RCR1,McBSP2_SPSA ;RCR1STM #00A0h,McBSP2_SPSD ;32 BITS WORDSIZE

    STM RCR2,McBSP2_SPSA ;RCR2STM #0000h,McBSP2_SPSD

    STM XCR1,McBSP2_SPSA ;XCR1STM #00A0h,McBSP2_SPSD ;32 BITS WORDSIZE

    STM XCR2,McBSP2_SPSA ;XCR2

    STM #0000h,McBSP2_SPSD

    STM SRGR1,McBSP2_SPSA ;SRGR1

    STM #0005h,McBSP2_SPSD ;--5

    STM SRGR2,McBSP2_SPSA ;SRGR2

    STM #303Bh,McBSP2_SPSD

    STM MCR1,McBSP2_SPSA ;MCR1

    STM #0001h,McBSP2_SPSD

    STM MCR2,McBSP2_SPSA ;MCR2

    STM #0000h,McBSP2_SPSD

    STM RCERB,McBSP2_SPSA ;RCERB

    STM #0001h,McBSP2_SPSD

    STM RCERA,McBSP2_SPSA ;RCERA

    STM #0001h,McBSP2_SPSD

    STM XCERB,McBSP2_SPSA ;XCERB

    STM #0001h,McBSP2_SPSD

    STM XCERA,McBSP2_SPSA ;XCERASTM #0001h,McBSP2_SPSD

    STM SPCR1,McBSP2_SPSASTM #0091h,McBSP2_SPSD ;Take 'em out of reset

    NOPNOP

    STM SPCR2,McBSP2_SPSA

    STM #00A1h,McBSP2_SPSD

  • 7/22/2019 Ec2306 - Digital Signal Processing

    21/50

    21www.jprnotes.blogspot.com

    ;--------------------End of Serial Ports Initializations-----------------------

    RSBX INTM

    LD #027h,0,ASTLM A,IMR

    STM #0h,McBSP0_DXR1STM #0h,McBSP0_DXR2

    STM #0007h,GPIOCR

    STM #0003h,GPIOSR

    STM #SPCR2,McBSP2_SPSA

    STM #00E1h,McBSP2_SPSD ;Mclk

    NOP

    STM #0007h,GPIOSR

    STM #SPCR2,McBSP0_SPSA

    STM #00E1h,McBSP0_SPSD ;Sclk & Fs

    ;----------------------------------------------------------------------------

    ;--------------------------Square Wave Generation Program-------------------

    ;--------------------------Initialisation-------------------------------------------------------

    STM #128,BK

    SSBX SXM

    STM #1504h,AR2 ;Memory location of 7fffh

    STM #1505h,AR3 ;Memory location of 8001h

    STM #2000h,AR4 ;Square Wave Output

    WAIT NOP

    NOP

    LD CNT,BBC WAVE,BEQ ;Jump to WAVE if Count Equals to zero

    NOP

    B WAIT

  • 7/22/2019 Ec2306 - Digital Signal Processing

    22/50

    22www.jprnotes.blogspot.com

    _XINT0_ISR

    NOP

    NOPLD *AR4+%,A ;Transmitting Square Wave Output to

    CODEC

    STLM A,McBSP0_DXR1STLM A,McBSP0_DXR2

    LD CNT,B ;Count=Count-1

    SUB #1h,BSTL B,CNT

    RETE

    WAVE LD #128,A ;Initialization of Count Value (CNT)

    STL A,CNT

    NOP

    NOP

    PORTW E,0

    LD #0h,A ;Disable All the Interrupts (Interrupt Mask Register)

    STLM A,IMR

    STM #1504h,AR2

    STM #1505h,AR3STM #2000h,AR4

    STM #6,BRC

    RPTB L1 ;Loop for 128 Samples

    LD POS,ASTL A,P

    LD NEG,B

    STL B,N

    L2 LD *AR2,A ;Positive Loop (30 Samples)

    STL A,*AR4+

  • 7/22/2019 Ec2306 - Digital Signal Processing

    23/50

    23www.jprnotes.blogspot.com

    LD P,B

    SUB #1h,B

    STL B,P

    BC L2,BNEQ

    L3 LD *AR3,A ;Negative Loop (30 Samples)

    STL A,*AR4+

    LD N,B

    SUB #1,B

    STL B,N

    BC L3,BNEQ

    NOP

    L1 NOP

    LD #027h,A ;Initialization of Interrupts

    STLM A,IMR ;Interrupt Mask Register STM #2000h,AR4 ;Output Memory

    B WAIT ;Branch to Wait Loop

    3. FIR application Program;Filter order 9

    ;Cutoff Frequency 1KHz;--------------------------------------------------------------------------------

    ;Starting address :1000h

    ;Input address : 1600h;Output address : 1700h

    .include "5416_IV.asm"

    .dataCOEFF .word 086eh,0b9eh,0e5fh,1064h,1176h,1064h,0e5fh,0b9eh,086eh

    ;Filter Co-efficients in data ;

    memory.text

    start LD #COEFF,DP ;Variable DeclarationRSBX INTM

  • 7/22/2019 Ec2306 - Digital Signal Processing

    24/50

    24www.jprnotes.blogspot.com

    LD #022Bh,0,A

    STLM A,PMST

    ;------------------------Serial Port Initializations-------------------------

    ;--------------------------McBSP0 Initializations----------------------------

    SSBX INTM

    STM SPCR1,McBSP0_SPSA ;SPCR1 resetSTM #0090h,McBSP0_SPSD

    NOP

    NOP

    STM SPCR2,McBSP0_SPSA ;SPCR2 reset

    STM #0020h,McBSP0_SPSD

    STM PCR,McBSP0_SPSA ;PCR

    STM #0A00h,McBSP0_SPSD

    STM RCR1,McBSP0_SPSA ;RCR1

    STM #00A0h,McBSP0_SPSD ;32 BITS WORDSIZE

    STM RCR2,McBSP0_SPSA ;RCR2

    STM #0001h,McBSP0_SPSD

    STM XCR1,McBSP0_SPSA ;XCR1

    STM #00A0h,McBSP0_SPSD ;32 BITS WORDSIZE

    STM XCR2,McBSP0_SPSA ;XCR2

    STM #0001h,McBSP0_SPSD

    STM SRGR1,McBSP0_SPSA ;SRGR1

    STM #000Bh,McBSP0_SPSD ;--17

    STM SRGR2,McBSP0_SPSA ;SRGR2STM #303Fh,McBSP0_SPSD

    STM MCR1,McBSP0_SPSA ;MCR1STM #0001h,McBSP0_SPSD

    STM MCR2,McBSP0_SPSA ;MCR2STM #0000h,McBSP0_SPSD

    STM RCERB,McBSP0_SPSA ;RCERB

    STM #0001h,McBSP0_SPSD

  • 7/22/2019 Ec2306 - Digital Signal Processing

    25/50

    25www.jprnotes.blogspot.com

    STM RCERA,McBSP0_SPSA ;RCERA

    STM #0001h,McBSP0_SPSD

    STM XCERB,McBSP0_SPSA ;XCERB

    STM #0001h,McBSP0_SPSD

    STM XCERA,McBSP0_SPSA ;XCERASTM #0001h,McBSP0_SPSD

    STM SPCR1,McBSP0_SPSA

    STM #0091h,McBSP0_SPSD ;Take 'em out of reset

    NOP

    NOP

    STM SPCR2,McBSP0_SPSA

    STM #00A1h,McBSP0_SPSD

    ;--------------------------McBSP2 Initializations------------------------------

    STM SPCR1,McBSP2_SPSA ;SPCR1 reset

    STM #0090h,McBSP2_SPSD

    NOPNOP

    STM SPCR2,McBSP2_SPSA ;SPCR2 resetSTM #0020h,McBSP2_SPSD

    STM PCR,McBSP2_SPSA ;PCRSTM #0A00h,McBSP2_SPSD

    STM RCR1,McBSP2_SPSA ;RCR1

    STM #00A0h,McBSP2_SPSD ;32 BITS WORDSIZE

    STM RCR2,McBSP2_SPSA ;RCR2

    STM #0000h,McBSP2_SPSD

    STM XCR1,McBSP2_SPSA ;XCR1

    STM #00A0h,McBSP2_SPSD ;32 BITS WORDSIZE

    STM XCR2,McBSP2_SPSA ;XCR2

    STM #0000h,McBSP2_SPSD

  • 7/22/2019 Ec2306 - Digital Signal Processing

    26/50

    26www.jprnotes.blogspot.com

    STM SRGR1,McBSP2_SPSA ;SRGR1

    STM #0002h,McBSP2_SPSD ;--5

    STM SRGR2,McBSP2_SPSA ;SRGR2

    STM #303Bh,McBSP2_SPSD

    STM MCR1,McBSP2_SPSA ;MCR1

    STM #0001h,McBSP2_SPSD

    STM MCR2,McBSP2_SPSA ;MCR2

    STM #0000h,McBSP2_SPSD

    STM RCERB,McBSP2_SPSA ;RCERBSTM #0001h,McBSP2_SPSD

    STM RCERA,McBSP2_SPSA ;RCERA

    STM #0001h,McBSP2_SPSD

    STM XCERB,McBSP2_SPSA ;XCERBSTM #0001h,McBSP2_SPSD

    STM XCERA,McBSP2_SPSA ;XCERASTM #0001h,McBSP2_SPSD

    STM SPCR1,McBSP2_SPSA

    STM #0091h,McBSP2_SPSD ;Take 'em out of reset

    NOP

    NOP

    STM SPCR2,McBSP2_SPSA

    STM #00A1h,McBSP2_SPSD

    ;--------------------End of Serial Ports Initializations-----------------------

    RSBX INTM

    LD #02Fh,0,A

    STLM A,IMR

    STM #0h,McBSP0_DXR1

    STM #0h,McBSP0_DXR2

    STM #0007h,GPIOCR

    STM #0003h,GPIOSR

  • 7/22/2019 Ec2306 - Digital Signal Processing

    27/50

    27www.jprnotes.blogspot.com

    STM #SPCR2,McBSP2_SPSA

    STM #00E1h,McBSP2_SPSD ;Mclk

    NOP

    STM #0007h,GPIOSR

    STM #SPCR2,McBSP0_SPSA

    STM #00E1h,McBSP0_SPSD ;Sclk & Fs

    ;----------------------------------------------------------------------------

    ;----------------Program Starts -----------------------------------------

    ;------------------------Algorithm-------------------------------------;-----FIR filter needs three buffers for Implementation

    ;-----One Buffer stores Input samples (128)

    ;-----Second Buffer is an Temporary buffer (Initially zero) (Size should be equal to the

    order of the filter);-----Third Buffer Stores the output

    ;------Implementation-------------------------------------------------

    ;------First the Input sample from the CODEC is loaded to an accumulator.

    ;------The accumulator value is loaded to an Input Buffer (1600h Memory Location).;------Initialize the temporary buffer.

    ;------Move the first Input sample to the Temporary buffer from Input buffer.

    ;------Modify the Temporary buffer to point out the last location (In this example the

    modifier is 8 which is the order of ;the filter);-----Implementation of FIR filter is done by Using MACD Instruction

    ;-----Finally the output will be in Higher order. So Shift the output by -15.

    ;-----Store the Lower order value in Output buffer and transmit the output to CODEC.

    SSBX SXM

    RSBX FRCT

    RSBX OVM

    STM #150,BK ;Circular Buffer for Input and Output

    STM #1600h,AR5 ;Input Buffer Starts at 1600h

    STM #1700h,AR6 ;Output Buffer Starts at 1700h

    LD #0h,A

    STM #1900h,AR3 ;Temporary Buffer InitializationRPT #10

    STL A,*AR3+

    STM #1900h,AR3

  • 7/22/2019 Ec2306 - Digital Signal Processing

    28/50

    28www.jprnotes.blogspot.com

    WAIT NOP

    NOP

    B WAIT

    _XINT0_ISR

    LDM McBSP0_DRR1,A ;R Channel (Input Sample From

    CODEC)

    STL A,0,*AR5 ;Loading Input Sample to an Input Buffer

    (1600h)

    STM #1900h,AR3 ;Initialization of Temporary Buffer

    MVDD *AR5,*AR3 ;Moving Input Sample from Input bufferto Temporary Buffer

    RPT #7 ;Modify Temporary buffer

    MAR *AR3+

    RPT #8 ;Implementation of FIR Filter

    y(n)=x(k)*h(n-k)

    MACD *AR3-,COEFF,A

    SFTA A,-15 ;Shifting the output to Lower order

    STLM A,McBSP0_DXR1 ;o/p for R Channel

    STLM A,McBSP0_DXR2 ;o/p for L Channel

    STL A,0,*AR6+% ;Output is stored at 1700h

    MAR *AR5+% ;Modify the Input BufferRETE

    4. FIR FILTER DESIGN

    ;Starting address : 0700h

    ;Input address :1600h;Output address :1700h

    .include "5416_IV.asm"

    .def start

    .data

    bpole .word 97e3h,154fh ;IIR Filter Co-efficientsazero .word 0b4ch,1698h,0b4ch

  • 7/22/2019 Ec2306 - Digital Signal Processing

    29/50

    29www.jprnotes.blogspot.com

    xin .word 0,0

    xout .word 0

    yin .word 0S1 .word 00

    E .word 45h

    .text

    start LD #bpole,DP ;Variable DeclarationRSBX INTM

    LD #022Bh,0,A

    STLM A,PMST

    ;------------------------Serial Port Initializations-------------------------

    ;--------------------------McBSP0 Initializations----------------------------

    SSBX INTM

    STM SPCR1,McBSP0_SPSA ;SPCR1 resetSTM #0090h,McBSP0_SPSD

    NOPNOP

    STM SPCR2,McBSP0_SPSA ;SPCR2 reset

    STM #0020h,McBSP0_SPSD

    STM PCR,McBSP0_SPSA ;PCR

    STM #0A00h,McBSP0_SPSD

    STM RCR1,McBSP0_SPSA ;RCR1

    STM #00A0h,McBSP0_SPSD ;32 BITS WORDSIZE

    STM RCR2,McBSP0_SPSA ;RCR2

    STM #0001h,McBSP0_SPSD

    STM XCR1,McBSP0_SPSA ;XCR1

    STM #00A0h,McBSP0_SPSD ;32 BITS WORDSIZE

    STM XCR2,McBSP0_SPSA ;XCR2

    STM #0001h,McBSP0_SPSD

    STM SRGR1,McBSP0_SPSA ;SRGR1

    STM #000Bh,McBSP0_SPSD ;--17

    STM SRGR2,McBSP0_SPSA ;SRGR2

  • 7/22/2019 Ec2306 - Digital Signal Processing

    30/50

    30www.jprnotes.blogspot.com

    STM #303Fh,McBSP0_SPSD

    STM MCR1,McBSP0_SPSA ;MCR1STM #0001h,McBSP0_SPSD

    STM MCR2,McBSP0_SPSA ;MCR2STM #0000h,McBSP0_SPSD

    STM RCERB,McBSP0_SPSA ;RCERBSTM #0001h,McBSP0_SPSD

    STM RCERA,McBSP0_SPSA ;RCERA

    STM #0001h,McBSP0_SPSD

    STM XCERB,McBSP0_SPSA ;XCERB

    STM #0001h,McBSP0_SPSD

    STM XCERA,McBSP0_SPSA ;XCERASTM #0001h,McBSP0_SPSD

    STM SPCR1,McBSP0_SPSASTM #0091h,McBSP0_SPSD ;Take 'em out of reset

    NOP

    NOP

    STM SPCR2,McBSP0_SPSA

    STM #00A1h,McBSP0_SPSD

    ;--------------------------McBSP2 Initializations------------------------------

    STM SPCR1,McBSP2_SPSA ;SPCR1 reset

    STM #0090h,McBSP2_SPSD

    NOPNOP

    STM SPCR2,McBSP2_SPSA ;SPCR2 resetSTM #0020h,McBSP2_SPSD

    STM PCR,McBSP2_SPSA ;PCRSTM #0A00h,McBSP2_SPSD

    STM RCR1,McBSP2_SPSA ;RCR1

    STM #00A0h,McBSP2_SPSD ;32 BITS WORDSIZE

  • 7/22/2019 Ec2306 - Digital Signal Processing

    31/50

    31www.jprnotes.blogspot.com

    STM RCR2,McBSP2_SPSA ;RCR2

    STM #0000h,McBSP2_SPSD

    STM XCR1,McBSP2_SPSA ;XCR1

    STM #00A0h,McBSP2_SPSD ;32 BITS WORDSIZE

    STM XCR2,McBSP2_SPSA ;XCR2

    STM #0000h,McBSP2_SPSD

    STM SRGR1,McBSP2_SPSA ;SRGR1

    STM #0002h,McBSP2_SPSD ;--5

    STM SRGR2,McBSP2_SPSA ;SRGR2

    STM #303Bh,McBSP2_SPSD

    STM MCR1,McBSP2_SPSA ;MCR1STM #0001h,McBSP2_SPSD

    STM MCR2,McBSP2_SPSA ;MCR2

    STM #0000h,McBSP2_SPSD

    STM RCERB,McBSP2_SPSA ;RCERB

    STM #0001h,McBSP2_SPSD

    STM RCERA,McBSP2_SPSA ;RCERASTM #0001h,McBSP2_SPSD

    STM XCERB,McBSP2_SPSA ;XCERBSTM #0001h,McBSP2_SPSD

    STM XCERA,McBSP2_SPSA ;XCERASTM #0001h,McBSP2_SPSD

    STM SPCR1,McBSP2_SPSA

    STM #0091h,McBSP2_SPSD ;Take 'em out of reset

    NOP

    NOP

    STM SPCR2,McBSP2_SPSA

    STM #00A1h,McBSP2_SPSD

    ;--------------------End of Serial Ports Initializations-----------------------

    RSBX INTM

  • 7/22/2019 Ec2306 - Digital Signal Processing

    32/50

    32www.jprnotes.blogspot.com

    LD #02Fh,0,A

    STLM A,IMR

    STM #0h,McBSP0_DXR1

    STM #0h,McBSP0_DXR2

    STM #0007h,GPIOCR

    STM #0003h,GPIOSR

    STM #SPCR2,McBSP2_SPSA

    STM #00E1h,McBSP2_SPSD ;Mclk

    NOP

    STM #0007h,GPIOSR

    STM #SPCR2,McBSP0_SPSASTM #00E1h,McBSP0_SPSD ;Sclk & Fs

    SSBX SXMRSBX FRCT

    RSBX OVM

    STM #128,BK ;Circular Buffer for Input and OutputSTM #1600h,AR4 ;Input Buffer Starts at 1600h

    STM #1700h,AR1 ;Output Buffer Starts at 1700h

    STM #1400h,AR5 ;IIR Filter OutputSTM #1500h,AR6 ;Zero Output Buffer

    WAIT NOP

    NOPNOP

    NOP

    NOPB WAIT

    _XINT0_ISR

  • 7/22/2019 Ec2306 - Digital Signal Processing

    33/50

    33www.jprnotes.blogspot.com

    LDM McBSP0_DRR1,A ;R Channel (Input Sample From CODEC)

    LDM McBSP0_DRR2,A ;R Channel (Input Sample From CODEC)

    STM #1800h,AR3 ;Pole Temporary Buffer

    STM #1300h,AR7 ;Pole Output Buffer

    STL A,0,xinNOP

    NOP

    LD xin,A

    STL A,0,*AR4+%

    NOP

    NOP

    STM xout,AR2

    RPT #02h ;Multiplication of Input with zerosMACD *AR2-,azero,A

    SFTA A,-15STL A,0,*AR6 ;Zero Output

    MVDD *AR5,*AR3+ ;Transfer IIR Output to Temp Buffer

    LD #bpole,DP

    RPT #01h

    MACD *AR3-,bpole,A ;Multiplication of Output with Poles

    SFTA A,-15STL A,0,*AR7 ;Pole Output

    NOP

    NOP

    LD *AR6,ALD *AR7,B

    SUB B,0,A ;Zero Output - Pole Output

    STL A,0,*AR5

    STL A,0,*AR1+%

    STLM A,McBSP0_DXR1 ;o/p for R Channel

    STLM A,McBSP0_DXR2 ;o/p for L Channel

    RETE

    5. FFT DESIGN

  • 7/22/2019 Ec2306 - Digital Signal Processing

    34/50

    34www.jprnotes.blogspot.com

    ;Starting address: 0700h

    ;Input address: 1000h;Output address: 1800h

    .include "twi.asm".include "twr.asm"

    .include "cos.asm"

    .include "5416_iv.asm"

    .def start

    .data

    R1 .word 0h ;Variables

    I1 .word 0hstages .word 7h

    grp .word 64

    grp1 .word 0h

    but .word 1hbut1 .word 0h

    R .word 0hI .word 0h

    A1 .word 0h

    sizetw .word 40hsizein .word 80h

    bitr .word 40h

    shi .word 7Fh

    CNT .word 128E .word 45h

    .text

    start LD #R1,DP

    RSBX INTM

    LD #022Bh,0,ASTLM A,PMST

    ;------------------------Serial Port Initializations-------------------------;--------------------------McBSP0 Initializations----------------------------

    SSBX INTMSTM SPCR1,McBSP0_SPSA ;SPCR1 reset

    STM #0090h,McBSP0_SPSD

    NOP

    NOP

    STM SPCR2,McBSP0_SPSA ;SPCR2 reset

  • 7/22/2019 Ec2306 - Digital Signal Processing

    35/50

    35www.jprnotes.blogspot.com

    STM #0020h,McBSP0_SPSD

    STM PCR,McBSP0_SPSA ;PCRSTM #0A00h,McBSP0_SPSD

    STM RCR1,McBSP0_SPSA ;RCR1STM #00A0h,McBSP0_SPSD ;32 BITS WORDSIZE

    STM RCR2,McBSP0_SPSA ;RCR2STM #0001h,McBSP0_SPSD

    STM XCR1,McBSP0_SPSA ;XCR1

    STM #00A0h,McBSP0_SPSD ;32 BITS WORDSIZE

    STM XCR2,McBSP0_SPSA ;XCR2

    STM #0001h,McBSP0_SPSD

    STM SRGR1,McBSP0_SPSA ;SRGR1

    STM #0017h,McBSP0_SPSD ;--17

    STM SRGR2,McBSP0_SPSA ;SRGR2

    STM #303Fh,McBSP0_SPSD

    STM MCR1,McBSP0_SPSA ;MCR1

    STM #0001h,McBSP0_SPSD

    STM MCR2,McBSP0_SPSA ;MCR2

    STM #0000h,McBSP0_SPSD

    STM RCERB,McBSP0_SPSA ;RCERB

    STM #0001h,McBSP0_SPSD

    STM RCERA,McBSP0_SPSA ;RCERA

    STM #0001h,McBSP0_SPSD

    STM XCERB,McBSP0_SPSA ;XCERBSTM #0001h,McBSP0_SPSD

    STM XCERA,McBSP0_SPSA ;XCERA

    STM #0001h,McBSP0_SPSD

    STM SPCR1,McBSP0_SPSA

    STM #0091h,McBSP0_SPSD ;Take 'em out of reset

    NOP

  • 7/22/2019 Ec2306 - Digital Signal Processing

    36/50

    36www.jprnotes.blogspot.com

    NOP

    STM SPCR2,McBSP0_SPSASTM #00A1h,McBSP0_SPSD

    ;--------------------------McBSP2 Initializations------------------------------

    STM SPCR1,McBSP2_SPSA ;SPCR1 reset

    STM #0090h,McBSP2_SPSD

    NOP

    NOP

    STM SPCR2,McBSP2_SPSA ;SPCR2 reset

    STM #0020h,McBSP2_SPSD

    STM PCR,McBSP2_SPSA ;PCRSTM #0A00h,McBSP2_SPSD

    STM RCR1,McBSP2_SPSA ;RCR1

    STM #00A0h,McBSP2_SPSD ;32 BITS WORDSIZE

    STM RCR2,McBSP2_SPSA ;RCR2

    STM #0000h,McBSP2_SPSD

    STM XCR1,McBSP2_SPSA ;XCR1STM #00A0h,McBSP2_SPSD ;32 BITS WORDSIZE

    STM XCR2,McBSP2_SPSA ;XCR2STM #0000h,McBSP2_SPSD

    STM SRGR1,McBSP2_SPSA ;SRGR1STM #0005h,McBSP2_SPSD ;--5

    STM SRGR2,McBSP2_SPSA ;SRGR2

    STM #303Bh,McBSP2_SPSD

    STM MCR1,McBSP2_SPSA ;MCR1

    STM #0001h,McBSP2_SPSD

    STM MCR2,McBSP2_SPSA ;MCR2

    STM #0000h,McBSP2_SPSD

    STM RCERB,McBSP2_SPSA ;RCERB

    STM #0001h,McBSP2_SPSD

  • 7/22/2019 Ec2306 - Digital Signal Processing

    37/50

    37www.jprnotes.blogspot.com

    STM RCERA,McBSP2_SPSA ;RCERA

    STM #0001h,McBSP2_SPSD

    STM XCERB,McBSP2_SPSA ;XCERB

    STM #0001h,McBSP2_SPSD

    STM XCERA,McBSP2_SPSA ;XCERA

    STM #0001h,McBSP2_SPSD

    STM SPCR1,McBSP2_SPSA

    STM #0091h,McBSP2_SPSD ;Take 'em out of reset

    NOPNOP

    STM SPCR2,McBSP2_SPSA

    STM #00A1h,McBSP2_SPSD

    ;--------------------End of Serial Ports Initializations-----------------------

    RSBX INTM

    LD #017h,0,A

    STLM A,IMR

    STM #0h,McBSP0_DXR1STM #0h,McBSP0_DXR2

    STM #0007h,GPIOCRSTM #0003h,GPIOSR

    STM #SPCR2,McBSP2_SPSASTM #00E1h,McBSP2_SPSD ;Mclk

    NOP

    STM #0007h,GPIOSR

    STM #SPCR2,McBSP0_SPSA

    STM #00E1h,McBSP0_SPSD ;Sclk & Fs

    ;----------------------------------------------------------------------------

    ;-----------------------------Program Starts----------------------

    STM #1000h,AR6 ;FFT I/p

  • 7/22/2019 Ec2306 - Digital Signal Processing

    38/50

    38www.jprnotes.blogspot.com

    STM #1800h,AR1 ;FFT O/p

    SSBX SXM

    RSBX OVM

    LD #0h,0,A

    RPT #127

    STL A,*AR1+STM #1800h,AR1

    STM #3500h,AR7

    WAIT NOP

    NOPLD CNT,B

    BC FFT,BEQNOP

    NOP

    B WAIT

    _RINT0_ISR

    PSHM ALPSHM AH

    PSHM AG

    PSHM BLPSHM BH

    PSHM BG

    LD *AR6+,0,A

    STLM A,McBSP0_DXR1 ;o/p for R Channel

    STLM A,McBSP0_DXR2 ;o/p for L Channel

    LD CNT,B

    SUB #1h,0,BSTL B,0,CNT

    POPM BGPOPM BH

    POPM BL

    POPM AG

    POPM AH

  • 7/22/2019 Ec2306 - Digital Signal Processing

    39/50

    39www.jprnotes.blogspot.com

    POPM AL

    RETE

    FFT NOPNOP

    LD #0,A

    STLM A,IMR

    STM #1000h,AR6

    STM #1800h,AR1

    STM #2000h,AR4STM #1000h,AR3

    RPT #127

    MVDD *AR4+,*AR3+

    LD #R1,DP

    NOP

    LD #80h,A

    STL A,CNTNOP

    PORTW E,0

    ;------------Bit Reversal-----------------------

    ;------------For 128 pt FFT The Index value is

    128/2=64(40H)-------------------

    STM #0040h,AR0 ;Index

    STM #2400h,AR4 ;Bit reversed o/pNOP

    NOP

    RPT #127

    MVPD #2000h,*AR4+0B ;Bit Reversal

    NOP

  • 7/22/2019 Ec2306 - Digital Signal Processing

    40/50

    40www.jprnotes.blogspot.com

    NOP

    STM #2400h,AR5

    LD #0h,0,A

    STM #2800h,AR3RPT #127

    STL A,0,*AR3+

    STM #3000h,AR3 ;TWIDDLE REAL

    STM #3400h,AR4 ;TWIDDLE IMAG

    STM #40h,BK

    ;--------------------------Butterfly Loop Begins------------------------------------

    SU LD stages,0,A

    LD grp,0,BSTL B,grp1

    LD but,0,ASTM #2400h,AR5

    STM #2800h,AR2

    GU LD #40h,B

    STLM B,BK

    LD but,0,A

    STL A,but1

    LD #0h,0,B

    SUB A,0,B

    STL B,A1

    STM #3000h,AR3STM #3400h,AR4

    BU LD #80h,B

    STLM B,BK

    LD *AR5,0,A

    LD *AR2,0,B

    STL A,0,R

  • 7/22/2019 Ec2306 - Digital Signal Processing

    41/50

    41www.jprnotes.blogspot.com

    STL B,0,I

    LD but,0,A

    STLM A,AR0

    NOPNOP

    MAR *AR5+0%

    MAR *AR2+0%

    MPY *AR3,*AR5,A

    MPY *AR4,*AR2,B

    SUB B,0,ASTH A,R1

    MPY *AR3,*AR2,AMPY *AR4,*AR5,B

    ADD A,0,BSTH B,I1

    LD R,-1,ALD R1,0,B

    SUB B,0,A

    STL A,*AR5

    LD I,-1,A

    LD I1,0,B

    SUB B,0,ASTL A,*AR2

    NOP

    NOPNOP

    LD A1,0,B

    STLM B,AR0

    NOPNOP

    MAR *AR5+0%MAR *AR2+0%

    LD R,-1,ALD R1,0,B

    ADD B,0,A

    STL A,*AR5+

  • 7/22/2019 Ec2306 - Digital Signal Processing

    42/50

    42www.jprnotes.blogspot.com

    LD I,-1,A

    LD I1,0,B

    ADD B,0,ASTL A,*AR2+ ;BUT

    NOPLD #40h,0,B

    STLM B,BK

    LD grp,0,A

    STLM A,AR0

    NOP

    NOPNOP

    NOP

    MAR *AR3+0%

    MAR *AR4+0%

    LD but1,0,BSUB #1h,0,B

    STL B,0,but1

    BC BU,BNEQ ;;;;;Butterfly End

    LD #80h,B

    STLM B,BK

    NOPNOP

    NOP

    LD but,0,BSTLM B,AR0

    NOP

    NOPMAR *AR5+0%

    MAR *AR2+0%

    LD grp1,0,BSUB #1h,0,B

    STL B,grp1

    BC GU,BNEQ ;;;;;;;;Group EndNOP

    LD but,0,BSFTA B,1

    STL B,but

    STL B,but1

  • 7/22/2019 Ec2306 - Digital Signal Processing

    43/50

    43www.jprnotes.blogspot.com

    LD grp,0,B

    SFTA B,-1

    STL B,grpSTL B,grp1

    LD stages,0,ASUB #1h,0,A

    STL A,stages

    BC SU,ANEQ ;;;;;;;;;STAGES

    LD #0h,0,ALD #0h,0,B

    ;-------------------Initialization of Variables-----------------------

    LD #7h,0,BSTL B,stages

    LD #40h,0,ASTL A,grp

    LD #1h,0,B

    STL B,but

    STM #2400h,AR3

    STM #1800h,AR6STM #7Fh,BRC

    RPTB VE

    LD *AR3+,AABS A

    STL A,*AR6+

    NOP

    VE NOPNOP

    STM #1800h,AR6

    LD #0017h,A

    STLM A,IMRNOP

    NOP

    B WAIT

    6. FSK DESIGN

  • 7/22/2019 Ec2306 - Digital Signal Processing

    44/50

    44www.jprnotes.blogspot.com

    ;PROGRAM STARTING ADDRESS 001000;GRAPH STARTING ADDRESS 001700

    ;This program is to generate a sine wave from a look-up-table

    ;There are 16 sine wave samples that represent the 360 degrees of the sine wave startingfrom S1

    .include "5416_IV.asm"

    .data

    CNT .word 40h

    VAR .word 0hVAR2 .word 0h

    .include "1000.asm".include "2000.asm"

    .text

    startRSBX INTM

    LD #022Bh,0,A

    STLM A,PMST

    ;------------------------Serial Port Initializations-------------------------

    ;--------------------------McBSP0 Initializations----------------------------

    SSBX INTM

    STM SPCR1,McBSP0_SPSA ;SPCR1 resetSTM #0090h,McBSP0_SPSD

    NOP

    NOP

    STM SPCR2,McBSP0_SPSA ;SPCR2 reset

    STM #0020h,McBSP0_SPSD

    STM PCR,McBSP0_SPSA ;PCR

    STM #0A00h,McBSP0_SPSD

    STM RCR1,McBSP0_SPSA ;RCR1

    STM #00A0h,McBSP0_SPSD ;32 BITS WORDSIZE

  • 7/22/2019 Ec2306 - Digital Signal Processing

    45/50

    45www.jprnotes.blogspot.com

    STM RCR2,McBSP0_SPSA ;RCR2

    STM #0001h,McBSP0_SPSD

    STM XCR1,McBSP0_SPSA ;XCR1

    STM #00A0h,McBSP0_SPSD ;32 BITS WORDSIZE

    STM XCR2,McBSP0_SPSA ;XCR2

    STM #0001h,McBSP0_SPSD

    STM SRGR1,McBSP0_SPSA ;SRGR1

    STM #0017h,McBSP0_SPSD ;--17

    STM SRGR2,McBSP0_SPSA ;SRGR2STM #303Fh,McBSP0_SPSD

    STM MCR1,McBSP0_SPSA ;MCR1

    STM #0001h,McBSP0_SPSD

    STM MCR2,McBSP0_SPSA ;MCR2STM #0000h,McBSP0_SPSD

    STM RCERB,McBSP0_SPSA ;RCERBSTM #0001h,McBSP0_SPSD

    STM RCERA,McBSP0_SPSA ;RCERA

    STM #0001h,McBSP0_SPSD

    STM XCERB,McBSP0_SPSA ;XCERB

    STM #0001h,McBSP0_SPSD

    STM XCERA,McBSP0_SPSA ;XCERASTM #0001h,McBSP0_SPSD

    STM SPCR1,McBSP0_SPSA

    STM #0091h,McBSP0_SPSD ;Take 'em out of reset

    NOP

    NOP

    STM SPCR2,McBSP0_SPSA

    STM #00A1h,McBSP0_SPSD

    ;--------------------------McBSP2 Initializations------------------------------

    STM SPCR1,McBSP2_SPSA ;SPCR1 reset

  • 7/22/2019 Ec2306 - Digital Signal Processing

    46/50

    46www.jprnotes.blogspot.com

    STM #0090h,McBSP2_SPSD

    NOPNOP

    STM SPCR2,McBSP2_SPSA ;SPCR2 resetSTM #0020h,McBSP2_SPSD

    STM PCR,McBSP2_SPSA ;PCRSTM #0A00h,McBSP2_SPSD

    STM RCR1,McBSP2_SPSA ;RCR1

    STM #00A0h,McBSP2_SPSD ;32 BITS WORDSIZE

    STM RCR2,McBSP2_SPSA ;RCR2

    STM #0000h,McBSP2_SPSD

    STM XCR1,McBSP2_SPSA ;XCR1

    STM #00A0h,McBSP2_SPSD ;32 BITS WORDSIZE

    STM XCR2,McBSP2_SPSA ;XCR2

    STM #0000h,McBSP2_SPSD

    STM SRGR1,McBSP2_SPSA ;SRGR1

    STM #0005h,McBSP2_SPSD ;--5

    STM SRGR2,McBSP2_SPSA ;SRGR2

    STM #303Bh,McBSP2_SPSD

    STM MCR1,McBSP2_SPSA ;MCR1

    STM #0001h,McBSP2_SPSD

    STM MCR2,McBSP2_SPSA ;MCR2

    STM #0000h,McBSP2_SPSD

    STM RCERB,McBSP2_SPSA ;RCERBSTM #0001h,McBSP2_SPSD

    STM RCERA,McBSP2_SPSA ;RCERASTM #0001h,McBSP2_SPSD

    STM XCERB,McBSP2_SPSA ;XCERBSTM #0001h,McBSP2_SPSD

    STM XCERA,McBSP2_SPSA ;XCERA

    STM #0001h,McBSP2_SPSD

  • 7/22/2019 Ec2306 - Digital Signal Processing

    47/50

    47www.jprnotes.blogspot.com

    STM SPCR1,McBSP2_SPSA

    STM #0091h,McBSP2_SPSD ;Take 'em out of reset

    NOP

    NOP

    STM SPCR2,McBSP2_SPSA

    STM #00A1h,McBSP2_SPSD

    ;--------------------End of Serial Ports Initializations-----------------------

    RSBX INTM

    LD #02Fh,0,A

    STLM A,IMR

    STM #0h,McBSP0_DXR1

    STM #0h,McBSP0_DXR2

    STM #0007h,GPIOCR

    STM #0003h,GPIOSR

    STM #SPCR2,McBSP2_SPSA

    STM #00E1h,McBSP2_SPSD ;Mclk

    NOP

    STM #0007h,GPIOSR

    STM #SPCR2,McBSP0_SPSA

    STM #00E1h,McBSP0_SPSD ;Sclk & Fs

    ;----------------------------------------------------------------------------

    STM #64,BK

    STM #1700h,AR6

    STM #1650h,AR7

    LD #0h,A

    RPT #1000hSTL A,*AR7+

    STM #1650h,AR7

    WAIT NOP

  • 7/22/2019 Ec2306 - Digital Signal Processing

    48/50

    48www.jprnotes.blogspot.com

    NOP

    NOP

    LD CNT,ABC FSK,AEQ

    NOP

    NOPB WAIT

    _XINT0_ISR

    LDM McBSP0_DRR1,A ;R Channel

    LDM McBSP0_DRR2,A ;L Channel

    PORTR 0h,VAR

    LD *AR6+%,A

    STLM A,McBSP0_DXR1 ;o/p for R Channel ;current(Y)STLM A,McBSP0_DXR2 ;o/p for L Channel ;voltage(R)

    LD CNT,ASUB #1h,A

    STL A,CNT

    RETE

    FSK LD #40h,A

    STL A,CNT

    STM #1650h,AR1STM #1700h,AR2 ;OUTPUT

    STM #1600h,AR3 ;1000Hz

    STM #1610h,AR4 ;2000Hz

    LD VAR,A

    AND #00FFh,ANOP

    NOP

    STL A,VARSTL A,VAR2

    LD #8h,B;

    HAI SUB #1h,B;

  • 7/22/2019 Ec2306 - Digital Signal Processing

    49/50

    49www.jprnotes.blogspot.com

    LD VAR2,A

    AND #0001h,ASTL A,*AR1+

    LD VAR2,B

    SFTA B,-1STL B,VAR2

    BC HAI,BNEQ;

    ;--------------------------------------------------------------------------------------------------------

    STM #1650h,AR1

    STM #1700h,AR2 ;OUTPUTSTM #1658h,AR5

    LD #8h,B

    L5 LD *AR1+,A

    BC ZERO,AEQ

    ONE STM #1600h,AR3

    RPT #7

    MVDD *AR3+,*AR2+B STAT

    ZERO STM #1610h,AR4

    RPT #7

    MVDD *AR4+,*AR2+

    STAT SUB #1h,BBC L5,BGT

    PORTW VAR,0h

    B WAIT

  • 7/22/2019 Ec2306 - Digital Signal Processing

    50/50

    50www.jprnotes.blogspot.com