Sei sulla pagina 1di 18

CODING FOR CONVOLUTION:

.mmregs
.text
start:
zap
ldp #0002h
lar 3,#8300h
lar 4,#0007
lar 1,#8100h
loop:
mar *,1
lacc *+
sacl 050h
lar 2,#0153h
mar *,2
zap
rpt #0003h
macd 0c100h,*-
apac
mar *,3
sacl *+
zap
mar *,4
banz loop,*-
.end
CODING FOR GENERATION OF SIGNALS:

SAWTOOTH WAVEFORM:

amplitude .set 20
freq .set 255
temp .set 80
temp1 .set 0
.mmregs
.text
start:
ldp #100h
splk #0,temp
lar ar2,#freq
cont:
out temp,4
lacc temp;
add #amplitude
sacl temp
mar *,ar2
banz cont,*-
splk #0,temp1
out temp1,4
mar *,ar2
b cont
.end
SQUARE WAVEFORM:

amplitude .set 20
freq .set 255
temp .set 80
temp1 .set 0
.mmregs
.text
start:
ldp #100h
splk #0,temp
lar ar2,#freq
cont:
out temp,4
lacc temp;
add #amplitude
sacl temp
mar *,ar2
banz cont,*-
splk #0,temp1
out temp1,4
mar *,ar2
b cont
.end
TRIANGULAR WAVEFORM:

amplitude .set 20
freq .set 100
temp .set 0
.mmregs
.text
start:
ldp #100h
splk #0,temp
cont1:
lar ar2,#freq
cont:
out temp,4
lacc temp
add #amplitude
sacl temp
mar *,ar2
banz cont,*-
lar ar2,#freq
contx:
out temp,4
lacc temp
sub #amplitude
sacl temp
mar *,ar2
banz contx
b cont1
.end
CODING F0R FIR FILTERS:

* Approximation type: Window design - Blackmann Window


* Filter type: Lowpass filter
* Filter Order: 52

* Cutoff frequency in KHz = 3.000000


.mmregs
.text
B START
CTABLE:
.word 0FFE7H
.word 0FFD3H
.word 0FFC6H
.word 0FFC4H
.word 0FFD0H
.word 0FFECH
.word 018H
.word 051H
.word 08CH
.word 0B9H
.word 0C2H
.word 092H
.word 01AH
.word 0FF5FH
.word 0FE78H
.word 0FD9AH
.word 0FD10H
.word 0FD30H
.word 0FE42H
.word 071H
.word 03B5H
.word 07CAH
.word 0C34H
.word 01054H
.word 01387H
.word 01547H
.word 01547H
.word 01387H
.word 01054H
.word 0C34H
.word 07CAH
.word 03B5H
.word 071H
.word 0FE42H
.word 0FD30H
.word 0FD10H
.word 0FD9AH
.word 0FE78H
.word 0FF5FH
.word 01AH
.word 092H
.word 0C2H
.word 0B9H
.word 08CH
.word 051H
.word 018H
.word 0FFECH
.word 0FFD0H
.word 0FFC4H
.word 0FFC6H
.word 0FFD3H
.word 0FFE7H
*
* Move the Filter coefficients
* from program memory to data memory
*
START:
MAR *,AR0
LAR AR0,#0200H
RPT #33H
BLKPCTABLE,*+
SETC CNF
*
* Input data and perform convolution
*
ISR: LDP #0AH
LACC #0
SACL0
OUT 0,05 ;pulse to find sampling frequency
IN 0,06H
LAR AR7,#0 ;change value to modify sampling freq.
MAR *,AR7
BACK: BANZ BACK,*-
IN 0,4
NOP
NOP
NOP
NOP
MAR *,AR1
LAR AR1,#0300H
LACC 0
AND #0FFFH
SUB #800H
SACL*
LAR AR1,#333H
MPY #0
ZAC
RPT #33H
MACD 0FF00H,*-
APAC
LAR AR1,#0300H
SACH * ;give as sach *,1 incase of overflow
LACC *
ADD #800h
SACL*
OUT *,4
LACC #0FFH
SACL0
OUT 0,05
NOP
B ISR
.end
CODING FOR IIR FILTER:

.MMREGS
.TEXT
TEMP .SET 0
INPUT .SET 1
T1 .SET 2
T2 .SET 3
T3 .SET 4
;
K .SET 315eh
M .SET 4e9fh

;cut-off freq is 1Khz. = Fc


;sampling frequency is 100 æs (ie) 0.1ms.
; a = 2 * (355/113) * 1000 = 6283.18/1000 = 6.28 ;; divide by 1000 for secs
; K = aT/(1+aT) = 6.28*0.1 / (6.28*0.1+1) = 0.3857
; M = 1/(1+aT) = 1 / (6.28*0.1+1) = 0.61425
;convert to Q15 format
; K = K * 32767 = 12638.23 = 315Eh
; M = M * 32767 = 20127.12 = 4E9Fh

;Sampling Rate is 100 æs & Cut off Frequency is 1 Khz

LDP #100H
LACC #0
SACL T1
SACL T2
SACL TEMP
OUT TEMP,4 ;CLEAR DAC BEFORE START TO WORK
LOOP:
LACC #0
SACL TEMP
OUT TEMP,5 ;OUTPUT LOW TO DAC2 TO CALCULATE
TIMING
;
IN TEMP,06 ;SOC
;
LAR AR7,#30h ;CHANGE VALUE TO MODIFY SAMPLING
FREQ.
;sampling rate 100 æs.
MAR *,AR7
BACK: BANZ BACK,*-
;
IN INPUT,4 ;INPUT DATA FROM ADC1
NOP
NOP
;
LACC INPUT
AND #0FFFH
SUB #800h
SACL INPUT
;
LT INPUT
MPY #K
PAC
SACH T1,1
;;;CALL MULT ----MULTIPLICATION TO BE DONE WITH K
;;RESULT OF MULT IN T1
;
LT T2 ;PREVIOUS RESULT IN T2
MPY #M
PAC
SACH T3 ,1
;;;CALL MULT ----MULTIPLICATION TO BE DONE WITH M
;;RESULT OF MULT IN T3+
;
LACC T1
ADD T3
SACL T2
ADD #800h
SACL TEMP
OUT TEMP,4 ;OUTPUT FILTER DATA TO DAC1
;
LACC #0FFH
SACL TEMP
OUT TEMP,5 ;OUTPUT HIGH TO DAC2 TO CALCULATE
TIMING
;
B LOOP
CODIING FOR FAST FOURIER TRANSFORM(4 POINT):
IN .set 8010H
BITREV .set 8020H
REAL .set 8040H
IMG .set 8050H
.MMREGS
.TEXT
LDP #100H
LAR AR1,#IN
LAR AR2,#BITREV
SPLK #2H,05H
LMMR INDX,#8005H
MAR *,AR2
RPT #3H
BLDD #IN,*BR0+

LAR AR2,#BITREV
LAR AR3,#8030H
LAR AR0,#1H
FFT1: MAR *,AR2
LACC *+
SACB
LT *+
MPY #1H
APAC
MAR *,AR3
SACL *+
LACB
SPAC
SACL *+,AR0
BANZ FFT1,*-

LAR AR3,#8030H
LAR AR4,#REAL
LAR AR5,#IMG
MAR *,AR3
LACC *
SACB
ADRK #2H
LT *-
MPY #1H
APAC
MAR *,AR4
SACL *
ADRK #2H
LACC #0H
MAR *,AR5
SACL *
ADRK #2H
LACB
SPAC
MAR *,AR4
SACL *-
LACC #0H
MAR *,AR5
SACL *-,AR3
LACC *,AR4
SACL *
ADRK #2H
SACL *,AR3
ADRK #2H
LT *
MPY #0FFFFH
MAR *,AR5
SPL *,AR3
LT *
MPY #1H
MAR *,AR5
ADRK #2H
SPL *
H: B H

;INPUT:
; 8010-0001
; 8011-0001
; 8012-0000
; 8013-0000
;BIT_REV:
; 8020-0001
; 8021-0000
; 8022-0001
; 8023-0000
;FFT1:
; 8030-0001
; 8031-0001
; 8032-0001
; 8033-0001
;REAL:
; 8040-0002
; 8041-0001
; 8042-0000
; 8043-0001
;IMG:
; 8050-0000
; 8051-FFFF
; 8052-0000
; 8053-0001
CODING FOR ARITHMETIC OPERATION:

ADDITION:

X0 .SET0
X1 .SET1
X2 .SET2
X3 .SET3
Y0 .SET4
Y1 .SET5
Y2 .SET6
Y3 .SET7
W0 .SET8
W1 .SET9
W2 .SET10
W3 .SET11
.TEXT
.MMREGS

START
LDP #100H
LACC X1,16
ADDS X0
ADDS Y0
ADDS Y1
SACL W0
SACH W1
LACC X3,16
ADDC X2
ADDS Y2
ADDH Y3
SACL W2
SACH W3
.END

SUBTRACTION:

X0 .SET0
X1 . SET1
X2 .SET2
X3 .SET3
Y0 .SET4
Y1 .SET5
Y2 .SET6
Y3 .SET7
Z0 .SET8
Z1 .SET9
Z2 .SET10
Z3 .SET11
.TEXT
.MMREGS

START
LDP #100H
LACC X1,16
ADDS X0
SUBS Y0
SUBH Y1
SACL Z0
SACH Z1
LACC X3,16
ADDS X2
SUBB Y2
SACL Z2
SACH Z3
.END

MULTIPICATION:

op1 .set 0
op2 .set 1
res1 .set 2
res2 .set 3

.MMREGS
.TEXT
start:
ldp #100h
lt op1
mpy op2
pac
sacl res1
sach res2
.end

Potrebbero piacerti anche