fir4 using tms32031 code

12
FIR4 USING TMS32031 CODE

Upload: reya

Post on 05-Jan-2016

19 views

Category:

Documents


0 download

DESCRIPTION

FIR4 USING TMS32031 CODE. FIR4.ASM. DATA. 1 2 3 4 10 0 0 0 HN IN XN LENGTH. AR5---->. HN IN HN_ADDR IN_ADDR XN_ADDR XB_ADDR OUT_ADDR. 809900 809901 809902 809903 809904 809905 809906 809907 809908 809909 80990a 80990b 80990c 80990d. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: FIR4  USING TMS32031 CODE

FIR4 USING TMS32031 CODE

Page 2: FIR4  USING TMS32031 CODE

FIR4.ASM;FIR4.ASM - BACKGROUND FOR FILTER PROGRAM .start ".data",0x809900 ;starting address of data .start ".text",0x809C00 ;starting address of text .data ;data sectionHN .float 1,2,3,4 ;HN valuesIN .float 10,0,0,0 ;4 input valuesHN_ADDR .word HN ;starting address of HN arrayIN_ADDR .word IN ;starting address of IN arrayXN_ADDR .word XN ;starting address of XN bufferXB_ADDR .word XN+LENGTH-1 ;last (bottom) address of XNOUT_ADDR .word 0x809802 ;address of output resultLENGTH .set 4 ;size of circular buffer

Page 3: FIR4  USING TMS32031 CODE

DATA

809900 809901 809902 809903 809904 809905 809906 809907 809908 809909 80990a 80990b 80990c 80990d

00000000 010000000140000002000000 03200000 80000000 80000000 80000000 00809900 00809904 00809910 0080990B 00809802 00000004

12

3 4

10000

HN IN

XN

LENGTH

HN

IN

HN_ADDRIN_ADDRXN_ADDRXB_ADDROUT_ADDR

AR5---->

Page 4: FIR4  USING TMS32031 CODE

809910 809911 809912 809913

Circular Buffer

80000000800000008000000080000000

XN

XN + LENGTH - 1

809802 809803 809804 809805

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

OUT_ADDR

Output

AR2---->

AR1---->

Page 5: FIR4  USING TMS32031 CODE

.text ;text section

.entry BEGIN ;start of codeBEGIN LDP HN_ADDR ;init to data page 128 LDI @IN_ADDR,AR5 ;AR5=starting address of input LDI @XB_ADDR,AR1 ;AR1=bottom address XN buffer LDI @OUT_ADDR,AR2 ;AR2=address of result (output) LDI LENGTH,BK ;BK=4, size of circular buffer LDI LENGTH,R4 ;R4=4, used as loop counterLOOP LDF *AR5++,R3 ;R3=1st input value STF R3,*AR1++% ;store value at bottom of XN buffer LDI @HN_ADDR,AR0 ;AR0=starting address of HN array CALL FILTER ;go to subroutine FILTER FIX R2,R0 ;convert from float to integer STI R0,*AR2++ ;store result to "output" address SUBI 1,R4 ;decrement loop counter R4 BNZ LOOP ;branch back until R4=0WAIT BR WAIT ;wait indefinitely

Page 6: FIR4  USING TMS32031 CODE

809c00 809c01 809c02 809c03 809c04 809c05

INSTRUCTIONS

LDP HN_ADDR LDI @IN_ADDR,AR5LDI @XB_ADDR,AR1LDI @OUT_ADDR,AR2LDI LENGTH,BKLDI LENGTH,R4

Data Page (DP) register

80

AR5

00809904AR1

00809913

AR2

00809802

Block (BK) register

00000004

R4

00000004

Page 7: FIR4  USING TMS32031 CODE

809c06 809c07 809c08 809c09

INSTRUCTIONS

LDF *AR5++,R3 STF R3,*AR1++%LDI @HN_ADDR,AR0CALL FILTER

809904 809905 809906 809907

03200000800000008000000080000000

IN 10 0 0 0

AR5---->

809910 809911 809912 809913

80000000800000008000000003200000

XN

XN + LENGTH - 1AR1---->

03200000

R3AR1---->

809900 809901 809902 809903

00000000010000000140000002000000

HN 1 2 3 4

AR0---->

Page 8: FIR4  USING TMS32031 CODE

809c0F 809c10 809c11 809c12809C13809C14

INSTRUCTIONS

LDF 0,R0 LDF 0,R2RPTS LENGTH - 1MPYF3 *AR0++,*AR1++%,R0ADDF3 R0,R2RETS

FILTER

00000000

R0

00000000

R2

0 1 = 0 0

R0

0

R2

R0 R2

0 2 = 0 0 0

Page 9: FIR4  USING TMS32031 CODE

0 3 = 0 0

R0

0

R2

10 4 = 40 40

R0

0

R2

40

R0

40

R2

ADDF3 R0,R2

Page 10: FIR4  USING TMS32031 CODE

809c06 809c07 809c08 809c09

INSTRUCTIONS

LDF *AR5++,R3 STF R3,*AR1++%LDI @HN_ADDR,AR0CALL FILTER

809904 809905 809906 809907

03200000800000008000000080000000

IN 10 0 0 0

AR5---->

809910 809911 809912 809913

80000000800000008000000003200000

XN

XN - 1

AR1----> 08000000

R3AR1---->

809900 809901 809902 809903

00000000010000000140000002000000

HN 1 2 3 4

AR0---->

Page 11: FIR4  USING TMS32031 CODE

809c06 809c07 809c08 809c09

INSTRUCTIONS

LDF *AR5++,R3 STF R3,*AR1++%LDI @HN_ADDR,AR0CALL FILTER

809904 809905 809906 809907

03200000800000008000000080000000

IN 10 0 0 0

AR5---->

809910 809911 809912 809913

80000000800000008000000003200000

XN - 1XN

XN - 2AR1---->

08000000

R3

AR1---->

809900 809901 809902 809903

00000000010000000140000002000000

HN 1 2 3 4

AR0---->

Page 12: FIR4  USING TMS32031 CODE

809c06 809c07 809c08 809c09

INSTRUCTIONS

LDF *AR5++,R3 STF R3,*AR1++%LDI @HN_ADDR,AR0CALL FILTER

809904 809905 809906 809907

03200000800000008000000080000000

IN 10 0 0 0

AR5---->

809910 809911 809912 809913

80000000800000008000000003200000

XN - 2XN - 1XNXN - 3AR1---->

08000000

R3

AR1---->

809900 809901 809902 809903

00000000010000000140000002000000

HN 1 2 3 4

AR0---->