EC1306 Digital Signal Processing Laboratory [REC]

61
RAJALAKSHMI ENGINEERING COLLEGE THANDALAM, CHENNAI- 602105 Department of Electronics and Communication Engineering EC1306 - DIGITAL SIGNAL PROCESSING LABORATORY MANUAL

description

EC1306 DIGITAL SIGNAL PROCESSING LAB USING TMS320C5X1. Study of various addressing modes of DSP using simple programming examples2. Sampling of input signal and display 3. Implementation of FIR filter4. Calculation of FFTUSING MATLAB1. Generation of Signals2. Linear and circular convolution of two sequences3. Sampling and effect of aliasing4. Design of FIR filters5. Design of IIR filters6. Calculation of FFT of a signal Courtesy | REC

Transcript of EC1306 Digital Signal Processing Laboratory [REC]

Page 1: EC1306 Digital Signal Processing Laboratory [REC]

RAJALAKSHMI ENGINEERING COLLEGETHANDALAM, CHENNAI- 602105

Department of Electronics and Communication Engineering

EC1306 - DIGITAL SIGNAL PROCESSING

LABORATORY MANUAL

PREPARED BY

A.ASHA

(2008 – 2009)

Page 2: EC1306 Digital Signal Processing Laboratory [REC]

EC1306 DIGITAL SIGNAL PROCESSING LAB

USING TMS320C5X1. Study of various addressing modes of DSP using simple programming examples2. Sampling of input signal and display 3. Implementation of FIR filter4. Calculation of FFT

USING MATLAB1. Generation of Signals2. Linear and circular convolution of two sequences3. Sampling and effect of aliasing4. Design of FIR filters5. Design of IIR filters6. Calculation of FFT of a signal

Page 3: EC1306 Digital Signal Processing Laboratory [REC]

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 FilterWs = [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 responseplot(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

Page 4: EC1306 Digital Signal Processing Laboratory [REC]

% 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)% - 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)];elsep = [p zeros(1, dlen - plen)];endp = 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 sequencek = 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 sequencessubplot(2,1,1);

Page 5: EC1306 Digital Signal Processing Laboratory [REC]

stem(k,x); axis([0 50 -4 4]);xlabel(’Time index n’); ylabel(’Amplitude’);title(’Input Sequence’);subplot(2,1,2);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]);

Page 6: EC1306 Digital Signal Processing Laboratory [REC]

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

7. Use fir2 to create a bandlimited input sequenceclf;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]); gridxlabel(’\omega/\pi’); ylabel(’Magnitude’);title(’Input Spectrum’);subplot(2,1,2);% Generate the up-sampled sequenceL = 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]); gridxlabel(’\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 sequenceclf;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)); gridxlabel(’\omega/\pi’); ylabel(’Magnitude’);title(’Input Spectrum’);% Generate the down-sampled sequenceM = input(’Type in the down-sampling factor = ’);

Page 7: EC1306 Digital Signal Processing Laboratory [REC]

y = x([1: M: length(x)]);% Evaluate and plot the output spectrum[Yz, w] = freqz(y, 1, 512);subplot(2,1,2);plot(w/pi, abs(Yz)); gridxlabel(’\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;endy=RECTWIN(n1);%bandpass filterwn=[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-->');

Page 8: EC1306 Digital Signal Processing Laboratory [REC]

10. FIR FILTER USING HAMMING WINDOWclc; clear all; close allrp=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;end y=hamming(n1);%LOW -PASS FILTERb=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');

Page 9: EC1306 Digital Signal Processing Laboratory [REC]

11. CIRCULAR CONVOLUTION

clc;clear all;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)];endfor n=1:N y(n)=0; for i=1:N j=n-i+1; if(j<=0) j=N+j; end end y(n)=[y(n)+g(i)*h(j)]; stem(y)end

12. IIR FILTER DESIGN

clc;close all;clear all;rp=input('enter the pass band ripple');rs=input('enter the stop band ripple');wp=input('enter the pass band freq');ws=input('enter the stop band freq');fs=input('enter the sampling feq');w1=2*wp/fs;w2=2*ws/fs;[h,wn]=buttord(w1,w2,rp,rs);[b,a]=butter(h,wn);w=0:.01:pi;[h,om]=freqz(b,a,w);m=20*log10(abs(h));

Page 10: EC1306 Digital Signal Processing Laboratory [REC]

an=angle(h);subplot(2,1,1);plot(om/pi,m);ylabel('gain in db....>');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 07cfhpi .word 0c8chms .word 0mx .word 0CNT .word 256

.text

start LD #con1,DP RSBX INTM

LD #022Bh,0,A STLM A,PMST

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

Page 11: EC1306 Digital Signal Processing Laboratory [REC]

SSBX INTM STM SPCR1,McBSP0_SPSA ;SPCR1 reset STM #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 ;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 ;SRGR1STM #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 ;RCERBSTM #0001h,McBSP0_SPSD

STM RCERA,McBSP0_SPSA ;RCERASTM #0001h,McBSP0_SPSD

STM XCERB,McBSP0_SPSA ;XCERBSTM #0001h,McBSP0_SPSD

Page 12: EC1306 Digital Signal Processing Laboratory [REC]

STM XCERA,McBSP0_SPSA ;XCERASTM #0001h,McBSP0_SPSD

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

NOPNOP

STM SPCR2,McBSP0_SPSASTM #00A1h,McBSP0_SPSD

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

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

NOPNOP

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

STM PCR,McBSP1_SPSA ;PCRSTM #0A00h,McBSP1_SPSD

STM RCR1,McBSP1_SPSA ;RCR1STM #00A0h,McBSP1_SPSD ;32 BITS WORDSIZE

STM RCR2,McBSP1_SPSA ;RCR2STM #0000h,McBSP1_SPSD

STM XCR1,McBSP1_SPSA ;XCR1STM #00A0h,McBSP1_SPSD ;32 BITS WORDSIZE

STM XCR2,McBSP1_SPSA ;XCR2STM #0000h,McBSP1_SPSD

STM SRGR1,McBSP1_SPSA ;SRGR1STM #0002h,McBSP1_SPSD ;--5

STM SRGR2,McBSP1_SPSA ;SRGR2STM #303Bh,McBSP1_SPSD

Page 13: EC1306 Digital Signal Processing Laboratory [REC]

STM MCR1,McBSP1_SPSA ;MCR1STM #0001h,McBSP1_SPSD

STM MCR2,McBSP1_SPSA ;MCR2STM #0000h,McBSP1_SPSD

STM RCERB,McBSP1_SPSA ;RCERBSTM #0001h,McBSP1_SPSD

STM RCERA,McBSP1_SPSA ;RCERA STM #0001h,McBSP1_SPSD

STM XCERB,McBSP1_SPSA ;XCERB STM #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

Page 14: EC1306 Digital Signal Processing Laboratory [REC]

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

;----------------------------------------------------------------------------STM #256,BKSTM #2000h,AR5SSBX SXM

WAIT NOP NOP

LD CNT,A BC WAVE,AEQ NOP B WAIT

_XINT0_ISR

LD *AR5+%,A

STLM A,McBSP0_DXR1 ;o/p for R ChannelSTLM A,McBSP0_DXR2 ;o/p for L Channel

LD CNT,ASUB #1,ASTL A,CNT

RETE

WAVE LD #0,ASTLM A,IMR

LD #con1,DP

STM #1508h,AR2LD fm,TMPY *AR2,A

STM #1506h,AR2RPT #15SUBC *AR2,A

Page 15: EC1306 Digital Signal Processing Laboratory [REC]

STL A,ms

;COSINE APPROX

LD ms,T ;XSTM #1509h,AR2MPY *AR2+,ASFTA A,-5STL A,*AR2 ;X^2

STM #150Ah,AR2MPY *AR2+,A ;X^3SFTA A,-9STL A,*AR2

STM #150Bh,AR2MPY *AR2+,A ;X^4SFTA A,-9STL A,*AR2

STM #150Ch,AR2MPY *AR2+,A ;X^5SFTA A,-9STL A,*AR2

STM #150Dh,AR2MPY *AR2+,A ;X^6SFTA A,-9STL A,*AR2

STM #150Eh,AR2MPY *AR2+,A ;X^7SFTA A,-9STL A,*AR2

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

STM #150Ah,AR2LD con4,TMPY *AR2,ASFTA A,-13LD #1FFFh,BSUB A,B

Page 16: EC1306 Digital Signal Processing Laboratory [REC]

STM #150ch,AR2LD con5,TMPY *AR2,ASFTA A,-13ADD A,B

STM #150eh,AR2LD con6,TMPY *AR2,ASFTA A,-13SUB A,B

STM #1600h,AR1STL B,*AR1+LD #0,ARPT #1STL A,*AR1+

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

STM #150Bh,AR2LD con1,TMPY *AR2,ASFTA A,-13STM #1509h,AR2LD *AR2,4,BSUB A,B

STM #150Dh,AR2LD con2,TMPY *AR2,ASFTA A,-13ADD A,B

STM #150Fh,AR2LD con3,TMPY *AR2,ASFTA A,-13SUB A,BSTL B,*AR1

;WAVE GENERATION

STM #2000h,AR7

Page 17: EC1306 Digital Signal Processing Laboratory [REC]

STM #256,BRCRPTB wave1

STM #1602h,AR2STM #1600h,AR3MPY *AR2,*AR3,ASFTA A,-12

STM #1602h,AR4STM #1601h,AR5MVDD *AR4,*AR5

STM #1603h,AR6LD *AR6,BSUB B,ASTL A,*AR7+

STM #1602h,AR6STL A,*AR6

STM #1601h,AR4STM #1603h,AR5MVDD *AR4,*AR5

NOPwave1 NOP

STM #2000h,AR5

NOPNOPLD #256,ASTL A,CNTNOPNOP

LD #02Fh,0,A STLM A,IMR

NOPNOPB WAIT

2. Square wave generation

Page 18: EC1306 Digital Signal Processing Laboratory [REC]

;Starting address : 1000h;Output address :2000h

.include "5416_iv.asm" .def start

.dataPOS .word 30 ;Positive Count valueNEG .word 30 ;Negative Count ValueP .word 0 ;Dummy 1N .word 0 ;Dummy 2

.word 07fffh,08001h ;Maximum Positive and Negative ValuesCNT .word 128 ;Total No.of SamplesE .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 INTM STM SPCR1,McBSP0_SPSA ;SPCR1 reset STM #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

Page 19: EC1306 Digital Signal Processing Laboratory [REC]

STM XCR2,McBSP0_SPSA ;XCR2

STM #0001h,McBSP0_SPSD

STM SRGR1,McBSP0_SPSA ;SRGR1STM #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 ;XCERB STM #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 NOP

STM SPCR2,McBSP0_SPSA STM #00A1h,McBSP0_SPSD

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

STM SPCR1,McBSP2_SPSA ;SPCR1 resetSTM #0090h,McBSP2_SPSD

NOP NOP

Page 20: EC1306 Digital Signal Processing Laboratory [REC]

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

STM PCR,McBSP2_SPSA ;PCRSTM #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 ;XCR2STM #0000h,McBSP2_SPSD

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

STM SRGR2,McBSP2_SPSA ;SRGR2STM #303Bh,McBSP2_SPSD

STM MCR1,McBSP2_SPSA ;MCR1STM #0001h,McBSP2_SPSD

STM MCR2,McBSP2_SPSA ;MCR2STM #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 ;XCERASTM #0001h,McBSP2_SPSD

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

NOP

Page 21: EC1306 Digital Signal Processing Laboratory [REC]

NOP

STM SPCR2,McBSP2_SPSASTM #00A1h,McBSP2_SPSD

;--------------------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_SPSASTM #00E1h,McBSP2_SPSD ;Mclk

NOPSTM #0007h,GPIOSR

STM #SPCR2,McBSP0_SPSASTM #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 NOPNOPLD CNT,B

Page 22: EC1306 Digital Signal Processing Laboratory [REC]

BC WAVE,BEQ ;Jump to WAVE if Count Equals to zeroNOPB WAIT

_XINT0_ISR

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

CODECSTLM A,McBSP0_DXR1STLM A,McBSP0_DXR2

LD CNT,B ;Count=Count-1SUB #1h,BSTL B,CNT

RETE

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

NOPNOPPORTW E,0

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

STM #1504h,AR2STM #1505h,AR3STM #2000h,AR4

STM #6,BRC

RPTB L1 ;Loop for 128 Samples

LD POS,ASTL A,PLD NEG,BSTL B,N

Page 23: EC1306 Digital Signal Processing Laboratory [REC]

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

LD P,BSUB #1h,BSTL B,P

BC L2,BNEQ

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

LD N,BSUB #1,BSTL B,NBC L3,BNEQ

NOPL1 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".data

COEFF .word 086eh,0b9eh,0e5fh,1064h,1176h,1064h,0e5fh,0b9eh,086eh ;Filter Co-efficients in

Page 24: EC1306 Digital Signal Processing Laboratory [REC]

data ; memory .text

start LD #COEFF,DP ;Variable DeclarationRSBX INTMLD #022Bh,0,ASTLM A,PMST

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

SSBX INTMSTM SPCR1,McBSP0_SPSA ;SPCR1 resetSTM #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 ;RCR1STM #00A0h,McBSP0_SPSD ;32 BITS WORDSIZE

STM RCR2,McBSP0_SPSA ;RCR2STM #0001h,McBSP0_SPSD

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

STM XCR2,McBSP0_SPSA ;XCR2STM #0001h,McBSP0_SPSD

STM SRGR1,McBSP0_SPSA ;SRGR1STM #000Bh,McBSP0_SPSD ;--17

STM SRGR2,McBSP0_SPSA ;SRGR2STM #303Fh,McBSP0_SPSD

STM MCR1,McBSP0_SPSA ;MCR1STM #0001h,McBSP0_SPSD

Page 25: EC1306 Digital Signal Processing Laboratory [REC]

STM MCR2,McBSP0_SPSA ;MCR2STM #0000h,McBSP0_SPSD

STM RCERB,McBSP0_SPSA ;RCERBSTM #0001h,McBSP0_SPSD

STM RCERA,McBSP0_SPSA ;RCERASTM #0001h,McBSP0_SPSD

STM XCERB,McBSP0_SPSA ;XCERBSTM #0001h,McBSP0_SPSD

STM XCERA,McBSP0_SPSA ;XCERASTM #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 resetSTM #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 ;RCR1STM #00A0h,McBSP2_SPSD ;32 BITS WORDSIZE

STM RCR2,McBSP2_SPSA ;RCR2STM #0000h,McBSP2_SPSD

Page 26: EC1306 Digital Signal Processing Laboratory [REC]

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

STM XCR2,McBSP2_SPSA ;XCR2STM #0000h,McBSP2_SPSD

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

STM SRGR2,McBSP2_SPSA ;SRGR2STM #303Bh,McBSP2_SPSD

STM MCR1,McBSP2_SPSA ;MCR1STM #0001h,McBSP2_SPSD

STM MCR2,McBSP2_SPSA ;MCR2STM #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 ;XCERASTM #0001h,McBSP2_SPSD

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

NOPNOP

STM SPCR2,McBSP2_SPSASTM #00A1h,McBSP2_SPSD

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

RSBX INTM

LD #02Fh,0,ASTLM A,IMR

Page 27: EC1306 Digital Signal Processing Laboratory [REC]

STM #0h,McBSP0_DXR1STM #0h,McBSP0_DXR2

STM #0007h,GPIOCRSTM #0003h,GPIOSR

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

NOPSTM #0007h,GPIOSR

STM #SPCR2,McBSP0_SPSASTM #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 SXMRSBX FRCTRSBX OVM

STM #150,BK ;Circular Buffer for Input and OutputSTM #1600h,AR5 ;Input Buffer Starts at 1600hSTM #1700h,AR6 ;Output Buffer Starts at 1700h

Page 28: EC1306 Digital Signal Processing Laboratory [REC]

LD #0h,ASTM #1900h,AR3 ;Temporary Buffer InitializationRPT #10STL A,*AR3+STM #1900h,AR3

WAIT NOPNOPB 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 BufferMVDD *AR5,*AR3 ;Moving Input Sample from Input buffer

to 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 ChannelSTLM A,McBSP0_DXR2 ;o/p for L Channel

STL A,0,*AR6+% ;Output is stored at 1700hMAR *AR5+% ;Modify the Input Buffer RETE

4. FIR FILTER DESIGN

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

Page 29: EC1306 Digital Signal Processing Laboratory [REC]

.include "5416_IV.asm"

.def start

.databpole .word 97e3h,154fh ;IIR Filter Co-efficientsazero .word 0b4ch,1698h,0b4chxin .word 0,0xout .word 0yin .word 0S1 .word 00E .word 45h

.text

start LD #bpole,DP ;Variable DeclarationRSBX INTMLD #022Bh,0,ASTLM A,PMST

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

SSBX INTMSTM SPCR1,McBSP0_SPSA ;SPCR1 resetSTM #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 ;RCR1STM #00A0h,McBSP0_SPSD ;32 BITS WORDSIZE

STM RCR2,McBSP0_SPSA ;RCR2STM #0001h,McBSP0_SPSD

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

STM XCR2,McBSP0_SPSA ;XCR2

Page 30: EC1306 Digital Signal Processing Laboratory [REC]

STM #0001h,McBSP0_SPSD

STM SRGR1,McBSP0_SPSA ;SRGR1STM #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 ;RCERBSTM #0001h,McBSP0_SPSD

STM RCERA,McBSP0_SPSA ;RCERASTM #0001h,McBSP0_SPSD

STM XCERB,McBSP0_SPSA ;XCERBSTM #0001h,McBSP0_SPSD

STM XCERA,McBSP0_SPSA ;XCERASTM #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 resetSTM #0090h,McBSP2_SPSD

NOPNOP

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

Page 31: EC1306 Digital Signal Processing Laboratory [REC]

STM PCR,McBSP2_SPSA ;PCRSTM #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 ;XCR2STM #0000h,McBSP2_SPSD

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

STM SRGR2,McBSP2_SPSA ;SRGR2STM #303Bh,McBSP2_SPSD

STM MCR1,McBSP2_SPSA ;MCR1STM #0001h,McBSP2_SPSD

STM MCR2,McBSP2_SPSA ;MCR2STM #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 ;XCERASTM #0001h,McBSP2_SPSD

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

NOPNOP

Page 32: EC1306 Digital Signal Processing Laboratory [REC]

STM SPCR2,McBSP2_SPSASTM #00A1h,McBSP2_SPSD

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

RSBX INTM

LD #02Fh,0,ASTLM A,IMR

STM #0h,McBSP0_DXR1STM #0h,McBSP0_DXR2

STM #0007h,GPIOCRSTM #0003h,GPIOSR

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

NOPSTM #0007h,GPIOSR

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

SSBX SXMRSBX FRCTRSBX OVM

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

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

WAIT NOPNOPNOPNOPNOPB WAIT

Page 33: EC1306 Digital Signal Processing Laboratory [REC]

_XINT0_ISR

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,xin NOP NOP LD xin,A STL A,0,*AR4+%

NOP NOP STM xout,AR2

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

SFTA A,-15 STL 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,-15 STL A,0,*AR7 ;Pole Output NOP

NOP LD *AR6,A LD *AR7,B SUB B,0,A ;Zero Output - Pole Output STL A,0,*AR5

Page 34: EC1306 Digital Signal Processing Laboratory [REC]

STL A,0,*AR1+%

STLM A,McBSP0_DXR1 ;o/p for R Channel STLM A,McBSP0_DXR2 ;o/p for L Channel

RETE5. FFT DESIGN

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

.include "twi.asm"

.include "twr.asm"

.include "cos.asm"

.include "5416_iv.asm"

.def start

.dataR1 .word 0h ;Variables I1 .word 0hstages .word 7hgrp .word 64grp1 .word 0hbut .word 1hbut1 .word 0hR .word 0hI .word 0hA1 .word 0hsizetw .word 40hsizein .word 80hbitr .word 40hshi .word 7FhCNT .word 128E .word 45h

.text

start LD #R1,DPRSBX INTM

LD #022Bh,0,ASTLM A,PMST

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

SSBX INTM STM SPCR1,McBSP0_SPSA ;SPCR1 reset

Page 35: EC1306 Digital Signal Processing Laboratory [REC]

STM #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 ;SRGR1STM #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 ;XCERB STM #0001h,McBSP0_SPSD

STM XCERA,McBSP0_SPSA ;XCERA

Page 36: EC1306 Digital Signal Processing Laboratory [REC]

STM #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 resetSTM #0090h,McBSP2_SPSD

NOP NOP

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

STM PCR,McBSP2_SPSA ;PCRSTM #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 ;XCR2STM #0000h,McBSP2_SPSD

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

STM SRGR2,McBSP2_SPSA ;SRGR2STM #303Bh,McBSP2_SPSD

STM MCR1,McBSP2_SPSA ;MCR1STM #0001h,McBSP2_SPSD

Page 37: EC1306 Digital Signal Processing Laboratory [REC]

STM MCR2,McBSP2_SPSA ;MCR2STM #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 ;XCERASTM #0001h,McBSP2_SPSD

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

NOP NOP

STM SPCR2,McBSP2_SPSASTM #00A1h,McBSP2_SPSD

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

RSBX INTM

LD #017h,0,ASTLM A,IMR

STM #0h,McBSP0_DXR1STM #0h,McBSP0_DXR2

STM #0007h,GPIOCR STM #0003h,GPIOSR

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

NOPSTM #0007h,GPIOSR

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

Page 38: EC1306 Digital Signal Processing Laboratory [REC]

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

STM #1000h,AR6 ;FFT I/pSTM #1800h,AR1 ;FFT O/p

SSBX SXMRSBX OVM

LD #0h,0,ARPT #127STL A,*AR1+STM #1800h,AR1

STM #3500h,AR7

WAIT NOPNOPLD CNT,BBC FFT,BEQNOPNOPB WAIT

_RINT0_ISRPSHM ALPSHM AHPSHM AGPSHM BLPSHM BHPSHM BG

LD *AR6+,0,ASTLM A,McBSP0_DXR1 ;o/p for R ChannelSTLM A,McBSP0_DXR2 ;o/p for L Channel

LD CNT,BSUB #1h,0,BSTL B,0,CNT

Page 39: EC1306 Digital Signal Processing Laboratory [REC]

POPM BGPOPM BHPOPM BLPOPM AGPOPM AHPOPM AL

RETE

FFT NOPNOPLD #0,ASTLM A,IMR

STM #1000h,AR6STM #1800h,AR1

STM #2000h,AR4STM #1000h,AR3

RPT #127MVDD *AR4+,*AR3+

LD #R1,DP

NOPLD #80h,ASTL A,CNTNOP

PORTW E,0

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

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

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

Page 40: EC1306 Digital Signal Processing Laboratory [REC]

NOP

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

NOPNOP

STM #2400h,AR5

LD #0h,0,ASTM #2800h,AR3RPT #127STL A,0,*AR3+

STM #3000h,AR3 ;TWIDDLE REALSTM #3400h,AR4 ;TWIDDLE IMAGSTM #40h,BK

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

SU LD stages,0,ALD grp,0,BSTL B,grp1

LD but,0,ASTM #2400h,AR5STM #2800h,AR2

GU LD #40h,BSTLM B,BK

LD but,0,ASTL A,but1

LD #0h,0,BSUB A,0,BSTL B,A1STM #3000h,AR3STM #3400h,AR4

Page 41: EC1306 Digital Signal Processing Laboratory [REC]

BU LD #80h,BSTLM B,BK

LD *AR5,0,ALD *AR2,0,BSTL A,0,RSTL B,0,I

LD but,0,ASTLM A,AR0NOPNOPMAR *AR5+0%MAR *AR2+0%

MPY *AR3,*AR5,AMPY *AR4,*AR2,BSUB B,0,ASTH A,R1

MPY *AR3,*AR2,AMPY *AR4,*AR5,BADD A,0,BSTH B,I1

LD R,-1,ALD R1,0,BSUB B,0,ASTL A,*AR5

LD I,-1,ALD I1,0,BSUB B,0,ASTL A,*AR2NOPNOPNOPLD A1,0,BSTLM B,AR0NOPNOP

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

Page 42: EC1306 Digital Signal Processing Laboratory [REC]

LD R,-1,ALD R1,0,BADD B,0,ASTL A,*AR5+

LD I,-1,ALD I1,0,BADD B,0,ASTL A,*AR2+ ;BUT

NOPLD #40h,0,BSTLM B,BK

LD grp,0,ASTLM A,AR0NOPNOPNOPNOPMAR *AR3+0%MAR *AR4+0%

LD but1,0,BSUB #1h,0,BSTL B,0,but1BC BU,BNEQ ;;;;;Butterfly End

LD #80h,BSTLM B,BKNOPNOPNOPLD but,0,BSTLM B,AR0NOPNOPMAR *AR5+0%MAR *AR2+0%

LD grp1,0,BSUB #1h,0,BSTL B,grp1BC GU,BNEQ ;;;;;;;;Group EndNOP

Page 43: EC1306 Digital Signal Processing Laboratory [REC]

LD but,0,BSFTA B,1STL B,butSTL B,but1

LD grp,0,BSFTA B,-1STL B,grpSTL B,grp1

LD stages,0,ASUB #1h,0,ASTL A,stagesBC 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,BSTL B,but

STM #2400h,AR3STM #1800h,AR6STM #7Fh,BRCRPTB VELD *AR3+,AABS ASTL A,*AR6+NOP

VE NOPNOPSTM #1800h,AR6

Page 44: EC1306 Digital Signal Processing Laboratory [REC]

LD #0017h,ASTLM A,IMRNOPNOPB WAIT

6. FSK DESIGN

;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 starting from S1

.include "5416_IV.asm"

.dataCNT .word 40hVAR .word 0hVAR2 .word 0h

.include "1000.asm"

.include "2000.asm"

.textstart RSBX INTM

LD #022Bh,0,A STLM A,PMST

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

SSBX INTM STM SPCR1,McBSP0_SPSA ;SPCR1 reset STM #0090h,McBSP0_SPSD

NOP NOP

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

Page 45: EC1306 Digital Signal Processing Laboratory [REC]

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 ;SRGR1STM #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 ;XCERB STM #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 NOP

Page 46: EC1306 Digital Signal Processing Laboratory [REC]

STM SPCR2,McBSP0_SPSA STM #00A1h,McBSP0_SPSD

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

STM SPCR1,McBSP2_SPSA ;SPCR1 resetSTM #0090h,McBSP2_SPSD

NOP NOP

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

STM PCR,McBSP2_SPSA ;PCRSTM #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 ;XCR2STM #0000h,McBSP2_SPSD

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

STM SRGR2,McBSP2_SPSA ;SRGR2STM #303Bh,McBSP2_SPSD

STM MCR1,McBSP2_SPSA ;MCR1STM #0001h,McBSP2_SPSD

STM MCR2,McBSP2_SPSA ;MCR2STM #0000h,McBSP2_SPSD

STM RCERB,McBSP2_SPSA ;RCERBSTM #0001h,McBSP2_SPSD

STM RCERA,McBSP2_SPSA ;RCERASTM #0001h,McBSP2_SPSD

Page 47: EC1306 Digital Signal Processing Laboratory [REC]

STM XCERB,McBSP2_SPSA ;XCERBSTM #0001h,McBSP2_SPSD

STM XCERA,McBSP2_SPSA ;XCERASTM #0001h,McBSP2_SPSD

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

NOP NOP

STM SPCR2,McBSP2_SPSASTM #00A1h,McBSP2_SPSD

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

RSBX INTM

LD #02Fh,0,ASTLM A,IMR

STM #0h,McBSP0_DXR1STM #0h,McBSP0_DXR2

STM #0007h,GPIOCR STM #0003h,GPIOSR

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

NOPSTM #0007h,GPIOSR

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

;----------------------------------------------------------------------------STM #64,BKSTM #1700h,AR6

STM #1650h,AR7LD #0h,ARPT #1000hSTL A,*AR7+

Page 48: EC1306 Digital Signal Processing Laboratory [REC]

STM #1650h,AR7

WAIT NOPNOPNOPLD CNT,ABC FSK,AEQNOPNOPB WAIT

_XINT0_ISRLDM McBSP0_DRR1,A ;R ChannelLDM McBSP0_DRR2,A ;L Channel

PORTR 0h,VARLD *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,ASTL A,CNT

RETE

FSK LD #40h,ASTL A,CNT

STM #1650h,AR1STM #1700h,AR2 ;OUTPUTSTM #1600h,AR3 ;1000HzSTM #1610h,AR4 ;2000Hz

LD VAR,AAND #00FFh,ANOP

Page 49: EC1306 Digital Signal Processing Laboratory [REC]

NOPSTL A,VARSTL A,VAR2

LD #8h,B;HAI SUB #1h,B;

LD VAR2,AAND #0001h,ASTL A,*AR1+LD VAR2,BSFTA B,-1STL B,VAR2

BC HAI,BNEQ;

;--------------------------------------------------------------------------------------------------------STM #1650h,AR1STM #1700h,AR2 ;OUTPUTSTM #1658h,AR5

LD #8h,B

L5 LD *AR1+,A

BC ZERO,AEQ

ONE STM #1600h,AR3RPT #7MVDD *AR3+,*AR2+B STAT

ZERO STM #1610h,AR4RPT #7MVDD *AR4+,*AR2+

STAT SUB #1h,BBC L5,BGT

PORTW VAR,0h

Page 50: EC1306 Digital Signal Processing Laboratory [REC]

B WAIT