Академический Документы
Профессиональный Документы
Культура Документы
.MMREGS
.TEXT
START:
LDP #120H
LACC #0H ;change lower amplitude
SACL 0
LOOP: LACC 0
OUT 0,04H
ADD #05h ;change frequency
SACL 0
SUB #0FFFh ;change upper amplitude
BCND LOOP,LEQ
B START
.END
SINE WAVEFORM GENERATION
.mmregs
.text
START:
LDP #100H
SPLK #TABLE,TEMP ;load start address of table
lar AR2,#( (LENGTH/INCFREQ)+(LENGTH*DECFREQ) )-1
lar ar3,#DECFREQ ;repeat counter for reducing frequency
CONT:
CALL DELAY
LACC TEMP ;load address of sine value
TBLR TEMP1 ;read sine data to TEMP1
LT TEMP1
MPY #AMPLITUDE
PAC
SACL TEMP1
mar *,ar3
banz repeat,*-
lar ar3,#DECFREQ ;repeat counter for reducing frequency
LACC TEMP
ADD #INCFREQ ;increase table value
repeat:
SACL TEMP ;store it
OUT TEMP1,4 ;send sine data to DAC
MAR *,AR2
BANZ CONT,*-
b START
DELAY:
lar ar7,#delay
mar *,ar7
back: banz back,*-
ret
TABLE
.mmregs
.text
start:
ldp #100h
lacc #0fffh ;change this value for amplitude.
loop: sacl 0
rpt #0ffh ;change this value for frequency.
out 0,04 ;address for dac.
cmpl
b loop
.end
TRIANGULAR WAVEFORM GENERATION
AMPLITUDE .SET 4
FREQ .SET 350
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
FFT
.mmregs
.text
START:
lar ar0,#0A200h
lar ar1,#3
ldp #140h
lar ar0,#2
lar ar1,#3
lar ar3,#0A200h
lar ar4,#8100h
loop1:
mar *,ar3
lacc *BR0+
mar *,ar4
sacl *+,ar1
banz loop1,*-
lar ar1,#3
lar ar4,#8100h
lar ar5,#0b000h
loop2:
mar *,ar4
lacc *+,ar5
sacl *+
lacc #0
sacl *+,ar1
banz loop2,*-
; fft operation starts here
lar ar1,#08100h ; twiddle
mar *,ar1
lacc #twiddle
rpt #5
tblr *+
lar ar1,#08100h ; twiddle
lar ar6,#0d000h
lar ar7,#0b000h
lar ar5,#1h
next:
lar ar2,#03h
lar ar0,#08000h
incop:
mar *,ar7
lacc *+,ar0
sacl *+,ar2
banz incop,*-
call butterfly
mar *,ar5
banz next,*-
lar ar6,#0d000h
lar ar7,#0b000h
lar ar2,#07h
incop1:
mar *,ar6
lacc *+,ar7
sacl *+,ar2
banz incop1,*-
lar ar1,#08100h ; twiddle
mar *,ar1
adrk #02
lar ar6,#0d000h
lar ar7,#0b000h
lar ar5,#1h
lar ar2,#1h
lar ar0,#08000h
incop2:
mar *,ar7
lacc *+,ar0
sacl *+,ar2
banz incop2,*-
mar *,ar7
adrk #2
lacc *+,ar0
sacl *+
lacc *+,ar0
sacl *+
call butterfly
lar ar2,#0d000h
lar ar0,#0e000h
mar *,ar2
lacc *+,ar0
sacl *+,ar2
lacc *+,ar0
sacl *+
adrk #2
mar *,ar2
lacc *+,ar0
sacl *+,ar2
lacc *+,ar0
sacl *+,ar2
; second stage 2 : 1
lar ar1,#08100h ; twiddle
mar *,ar1
adrk #04
lar ar6,#0d000h
lar ar7,#0b000h
lar ar0,#08000h
mar *,ar7
adrk #2
lacc *+,ar0
sacl *+,ar7
lacc *+,ar0
sacl *+,ar7
mar *,ar7
adrk #2
lacc *+,ar0
sacl *+
lacc *+,ar0
sacl *+
call butterfly
lar ar2,#0d000h
lar ar0,#0e000h
mar *,ar0
adrk #2
mar *,ar2
lacc *+,ar0
sacl *+,ar2
lacc *+,ar0
sacl *+
adrk #2
mar *,ar2
lacc *+,ar0
sacl *+,ar2
lacc *+,ar0
sacl *+,ar2
hlt b hlt
butterfly:
lar ar0,#08000h ; input
lar ar2,#08200h ; temp
lar ar3,#08300h ; output
ldp #140h
mar *,ar0
adrk #2
lt *+,ar1 ; c
mpy *+,ar2 ; tr
pac
sacl *+,ar0 ; ctr
lt *+,ar1 ; d
mpy *+,ar2 ; ti
pac
sacl *+,ar0 ; dti
sbrk #2
mar *,ar1
sbrk #2
mar *,ar0
lt *+,ar1 ; c
adrk #1
mpy *-,ar2 ; ti
pac
sacl *+,ar0 ; cti
lt *+,ar1 ; d
mpy *,ar2 ; tr
pac
sacl *+,ar0 ; dtr
sbrk #4 ; points to a
mar *,ar2
sbrk #4 ; points to ct array
lacc *+ ; ctr
sub *+ ; dti
sacl 0 ; ctr - dti
lacc *+ ; cti
add *+ ; dtr
sacl 1 ; cti + dtr
sbrk #4 ; points to ct array
lacc *+ ; ctr
sub *+ ; dti
sacl 2 ; ctr - dti
lacc *+ ; cti
add *+ ; dtr
sacl 3 ; cti + dtr
lar ar0,#08000h ; input
mar *,ar0
lacc *+,ar3 ; a
add 0 ;0
sacl *+,ar0 ; a + 0
lacc *+,ar3 ; b
add 1 ;1
sacl *+,ar0 ; b + 1
sbrk #2
lacc *+,ar3 ; a
sub 2 ;2
sacl *+,ar0 ; a - 2
lacc *+,ar3
sub 3
sacl *+
lar ar3,#08300h
lar ar4,#03
copy:
mar *,ar3
lacc *+,ar6
sacl *+,ar4
banz copy,*-
ret
twiddle:
.word 1
.word 0
.word 1
.word 0
.word 0
.word 0ffffh
INPUT:
; A200 - 0000
; A201 - 0001
; A202 - 0002
; A203 - 0003
;
OUTPUT:
; E000 - 0006
; E001 - 0000
; E002 - FFFE
; E003 - 0002
; E004 - FFFE
; E005 - 0000
; E006 - FFFE
; E007 - FFFE
FIR
BAND PASS
.mmregs
.text
B START
CTABLE:
.word 024AH
.word 010FH
.word 0FH
.word 0FFECH
.word 0C6H
.word 0220H
.word 0312H
.word 02D3H
.word 012FH
.word 0FEBDH
.word 0FC97H
.word 0FBCBH
.word 0FCB0H
.word 0FE9EH
.word 029H
.word 0FFDCH
.word 0FD11H
.word 0F884H
.word 0F436H
.word 0F2A0H
.word 0F58AH
.word 0FD12H
.word 075FH
.word 01135H
.word 01732H
.word 01732H
.word 01135H
.word 075FH
.word 0FD12H
.word 0F58AH
.word 0F2A0H
.word 0F436H
.word 0F884H
.word 0FD11H
.word 0FFDCH
.word 029H
.word 0FE9EH
.word 0FCB0H
.word 0FBCBH
.word 0FC97H
.word 0FEBDH
.word 012FH
.word 02D3H
.word 0312H
.word 0220H
.word 0C6H
.word 0FFECH
.word 0FH
.word 010FH
.word 024AH
START:
MAR *,AR0
LAR AR0,#0200H
RPT #33H
BLKP CTABLE,*+
SETC CNF
ISR: LDP #0AH
LACC #0
SACL 0
OUT 0,05
IN 0,06H
LAR AR7,#0
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 *
LACC *
ADD #800H
SACL *
OUT *,4
LACC #0FFH
SACL 0
OUT 0,05
NOP
B ISR
.end
BAND REJECT
.mmregs
.text
B START
CTABLE:
.word 0FEB9H
.word 14EH
.word 0FDA1H
.word 155H
.word 0FE1BH
.word 282H
.word 0FEAFH
.word 2ACH
.word 0FD35H
.word 8DH
.word 0F9D9H
.word 0FE07H
.word 0F7CCH
.word 0FEE2H
.word 0FA2FH
.word 4BAH
.word 1AH
.word 25CH
.word 420H
.word 1008H
.word 89H
.word 0D61H
.word 0F3F2H
.word 0AF9H
.word 0DB7EH
.word 045DFH
.word 045DFH
.word 0DB7EH
.word 0AF9H
.word 0F3F2H
.word 0D61H
.word 89H
.word 1008H
.word 420H
.word 25CH
.word 1AH
.word 4BAH
.word 0FA2FH
.word 0FEE2H
.word 0F7CCH
.word 0FE07H
.word 0F9D9H
.word 8DH
.word 0FD35H
.word 2ACH
.word 0FEAFH
.word 282H
.word 0FE1BH
.word 155H
.word 0FDA1H
.word 14EH
.word 0FEB9H
START:
MAR *,AR0
LAR AR0,#0200H
RPT #33H
BLKP CTABLE,*+
SETC CNF
ISR: LDP #0AH
LACC #0
SACL 0
OUT 0,05
IN 0,06H
LAR AR7,#0
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
LACC
ADD #800H
SACL *
OUT *,4
LACC #0FFH
SACL 0
OUT 0,05
NOP
B ISR
.end
HIGH PASS
.mmregs
.text
B START
CTABLE:
.word 0FCD3H
.word 05H
.word 0FCB9H
.word 087H
.word 0FD3FH
.word 01ADH
.word 0FE3DH
.word 0333H
.word 0FF52H
.word 04ABH
.word 0FFF8H
.word 0595H
.word 0FFACH
.word 0590H
.word 0FE11H
.word 047CH
.word 0FB0BH
.word 029DH
.word 0F6BAH
.word 0AEH
.word 0F147H
.word 01CH
.word 0E9FDH
.word 04C5H
.word 0D882H
.word 044BCH
.word 044BCH
.word 0D882H
.word 04C5H
.word 0E9FDH
.word 01CH
.word 0F147H
.word 0AEH
.word 0F6BAH
.Word 029DH
.word 0FB0BH
.word 047CH
.word 0FE11H
.word 0590H
.word 0FFACH
.word 0595H
.word 0FFF8H
.word 04ABH
.word 0FF52H
.word 0333H
.word 0FE3DH
.word 01ADH
.word 0FD3FH
.word 087H
.word 0FCB9H
.word 05H
.word 0FCD3H
START:
MAR *,AR0
LAR AR0,#0200H
RPT #33H
BLKP CTABLE,*+
SETC CNF
ISR: LDP #0AH
LACC #0
SACL 0
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 *
LACC *
ADD #800H
SACL *
OUT *,4
LACC #0FFH
SACL 0
OUT 0,05
NOP
B ISR
.end
LOW PASS
.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
START:
MAR *,AR0
LAR AR0,#0200H
RPT #33H
BLKP CTABLE,*+
SETC CNF
ISR: LDP #0AH
LACC #0
SACL 0
OUT 0,05
IN 0,06H
LAR AR7,#0
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 *
LACC *
ADD #800h
SACL *
OUT *,4
LACC #0FFH
SACL 0
OUT 0,05
NOP
B ISR
.end
LINEAR CONVOLUTION
.mmregs
.text
START:
LDP #100H
LAR AR1,#(8100H+4H) ; x(n)
Input Location (8100h)
ZAC
MAR *,AR1
RPT #2H
SACL *+
LAR AR1,#(8200H+4H)
ZAC
MAR *,AR1
RPT #2H
SACL *+
LAR AR3,#(8300H+6H)
LAR AR4,#06H
Next_YN:
LAR AR1,#8100H
LAR AR2,#(8200H+6H)
LAR AR0,#06H
ZAC
SACL 0H
MAR *,AR1
LT *+,AR2
Loop_MAC:
MPY *-,AR1
LTP *+,AR0
ADD 0H
SACL 0H
BANZ Loop_MAC,*-,AR2
LACC 0H
MAR *,AR3
SACL *-
LAR AR1,#(8100H+6H) ; x(n)
LAR AR2,#5H
LAR AR0,#2H
MAR *,AR1
LACC *-
SACL 1H
Shift_XN:
LACC *+
SACL *0-,AR2
BANZ Shift_XN,*-,AR1
MAR *+
LACC 1H
SACL *,AR4
BANZ Next_YN,*-
NOP
H1: B H1
;INPUT ( x(n) )
; 8100 -1
; 8101 -3
; 8102 -1
; 8103 -3
;INPUT ( y(n) )
; 8200 -1
; 8201 -2
; 8202 -1
; 8203 -0
;OUTPUT ( xy(n) )
; 8300 -1
; 8301 -5
; 8302 -8
; 8303 -8
; 8304 -7
; 8305 -3
; 8306 -0
;---------------------------------------------------
--------------------
; 4 Point FFT
;---------------------------------------------------
--------------------
.mmregs
.text
START:
lar ar0,#0A200h
lar ar1,#3
; fft orgination
ldp #140h
lar ar0,#2
lar ar1,#3
lar ar3,#0A200h
lar ar4,#8100h
loop1:
mar *,ar3
lacc *BR0+
mar *,ar4
sacl *+,ar1
banz loop1,*-
; padding zeros
lar ar1,#3
lar ar4,#8100h
lar ar5,#0b000h
loop2:
mar *,ar4
lacc *+,ar5
sacl *+
lacc #0
sacl *+,ar1
banz loop2,*-
lar ar6,#0d000h
lar ar7,#0b000h
lar ar5,#1h
next:
lar ar2,#03h
lar ar0,#08000h
incop:
mar *,ar7
lacc *+,ar0
sacl *+,ar2
banz incop,*-
call butterfly
mar *,ar5
banz next,*-
;---------------------------------------------------
--------
lar ar6,#0d000h
lar ar7,#0b000h
lar ar2,#07h
incop1:
mar *,ar6
lacc *+,ar7
sacl *+,ar2
banz incop1,*-
;---------------------------------------------------
--------
; second stage twiddle
adrk #02
lar ar6,#0d000h
lar ar7,#0b000h
lar ar5,#1h
lar ar2,#1h
lar ar0,#08000h
incop2:
mar *,ar7
lacc *+,ar0
sacl *+,ar2
banz incop2,*-
mar *,ar7
adrk #2
lacc *+,ar0
sacl *+
lacc *+,ar0
sacl *+
call butterfly
lar ar2,#0d000h
lar ar0,#0e000h
mar *,ar2
lacc *+,ar0
sacl *+,ar2
lacc *+,ar0
sacl *+
adrk #2
mar *,ar2
lacc *+,ar0
sacl *+,ar2
lacc *+,ar0
sacl *+,ar2
; second stage 2 : 1
lar ar6,#0d000h
lar ar7,#0b000h
lar ar0,#08000h
mar *,ar7
adrk #2
lacc *+,ar0
sacl *+,ar7
lacc *+,ar0
sacl *+,ar7
mar *,ar7
adrk #2
lacc *+,ar0
sacl *+
lacc *+,ar0
sacl *+
call butterfly
lar ar2,#0d000h
lar ar0,#0e000h
mar *,ar0
adrk #2
mar *,ar2
lacc *+,ar0
sacl *+,ar2
lacc *+,ar0
sacl *+
adrk #2
mar *,ar2
lacc *+,ar0
sacl *+,ar2
lacc *+,ar0
sacl *+,ar2
hlt b hlt
;---------------------------------------------------
--------
butterfly:
ldp #140h
mar *,ar0
adrk #2
lt *+,ar1 ; c
mpy *+,ar2 ; tr
pac
sacl *+,ar0 ; ctr
lt *+,ar1 ; d
mpy *+,ar2 ; ti
pac
sacl *+,ar0 ; dti
sbrk #2
mar *,ar1
sbrk #2
mar *,ar0
lt *+,ar1 ; c
adrk #1
mpy *-,ar2 ; ti
pac
sacl *+,ar0 ; cti
lt *+,ar1 ; d
mpy *,ar2 ; tr
pac
sacl *+,ar0 ; dtr
;---------------------------------------------------
--------
sbrk #4 ; points to a
mar *,ar2
sbrk #4 ; points to ct array
lacc *+ ; ctr
sub *+ ; dti
sacl 0 ; ctr - dti
lacc *+ ; cti
add *+ ; dtr
sacl 1 ; cti + dtr
lacc *+ ; ctr
sub *+ ; dti
sacl 2 ; ctr - dti
lacc *+ ; cti
add *+ ; dtr
sacl 3 ; cti + dtr
;---------------------------------------------------
--------
lacc *+,ar3 ; a
add 0 ; 0
sacl *+,ar0 ; a + 0
lacc *+,ar3 ; b
add 1 ; 1
sacl *+,ar0 ; b + 1
sbrk #2
lacc *+,ar3 ; a
sub 2 ; 2
sacl *+,ar0 ; a - 2
lacc *+,ar3
sub 3
sacl *+
lar ar3,#08300h
lar ar4,#03
copy:
mar *,ar3
lacc *+,ar6
sacl *+,ar4
banz copy,*-
ret
twiddle:
.word 1
.word 0
.word 1
.word 0
.word 0
.word 0ffffh
;---------------------------------------------------
--------------------
;INPUT:
;------
; A200 - 0000
; A201 - 0001
; A202 - 0002
; A203 - 0003
;
;OUTPUT:
;-------
; E000 - 0006
; E001 - 0000
; E002 - FFFE
; E003 - 0002
; E004 - FFFE
; E005 - 0000
; E006 - FFFE
; E007 - FFFE
;
;---------------------------------------------------
--------------------