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
Top Related