You are on page 1of 2

CIRCULAR CONVOLUTION

;---------------------------------------------------------------------------;
CIRCULAR CONVOLUTION (4*4 MATRIX)
;---------------------------------------------------------------------------.mmregs
.text
START:
LDP
LAR
LAR
LAR
LAR

#100H
AR2,#8200H
AR1,#8400H
AR4,#8300H
AR3,#03H

;
;
;
;

X2(n)
Re_arange X2(n)
Output Memory
Count

; Re_Arrange the Data of X2(n):


;-----------------------------MAR
LACC
SACL
LAR
LAR

*,AR2
*,AR1
*+,AR2
AR2,#(8200h+3h)
AR0,#2H

LACC
SACL
BANZ

*-,AR1
*+,AR0
Re_arange,*-,AR2

; X2(N) End of location

Re_arange:

;Multiply & Accumulate:


;---------------------Next_YN:
LAR
LAR
LAR
ZAC
SACL

AR1,#8100H
AR2,#8400H
AR0,#3H

; X1(n)
; Re_arange X2(n)

0H

MAR
LT

*,AR1
*+,AR2

MPY
LTP
ADD
SACL
BANZ

*+,AR1
*+,AR0
0H

Loop_MAC:

LACC
MAR
SACL

0H
Loop_MAC,*-,AR2
0H
*,AR4
*+

; Store O/P Data YN

; Shift X2(n) Values:


;-------------------LAR
LAR
LAR
MAR
LACC
SACL

*1H

LACC
SACL

*+
*0-,AR2

AR1,#(8400h+3h)
AR2,#2H
AR0,#2H
*,AR1

Shift_X2N:

Page 1

; X2(n)
; Index Value 2H

CIRCULAR CONVOLUTION
Shift_X2N,*-,AR1
*+
1H
*,AR3

BANZ
MAR
LACC
SACL

H:

BANZ
NOP
H

Next_YN,*-

;---------------------------------------------------------------------------;
;X1(n) =
;
;
;
;
;X2(n) =
;
;
;

8100
8101
8102
8103

0002
0001
0002
0001

8200
8201
8202
8203

0001
0002
0003
0004

;OUTPUT:
;
8300 - 000E
;
8301 - 0010
;
8302 - 000E
;
8303 - 0010
;
;----------------------------------------------------------------------------

Page 2

You might also like