Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
46
Добавлен:
27.04.2015
Размер:
4.26 Mб
Скачать

do

#ntaps/2,end_lms2

 

; 2

3

 

mac

y0,x0,b

a,x:(r1)+

 

; 1

1

 

move

 

a0,x:(r1)+

 

; 1

1

 

tfr

x0,a

x:(r2)+n,x0

 

; 1

1

 

move

 

 

x:(r3)+,a0

; 1

1

a0=ckl

macr

x0,y1,a

x:(r0)+,y0

x:(r3)+,x0

; 1

1

x0=c(k+1)h

mac

x0,y1,b

a,x:(r1)+

 

; 1

1

 

move

 

a0,x:(r1)+

 

; 1

1

 

tfr

x0,a

x:(r2)+n,x0

 

; 1

1

 

move

 

 

x:(r3)+,a0

; 1

1

 

macr

x0,y0,a

x:(r0)+,y1

x:(r3)+,x0

; 1

1

 

end_lms2

 

 

 

 

 

 

move

 

a,x:(r1)+

 

; 1

1

 

move

 

a0,x:(r1)+

 

; 1

1

 

lea

 

(r0)-

 

; 1

1

 

lea

 

(r0)-

 

; 1

1

 

;

 

 

 

_______

 

;

 

 

Total:

27

5N+18

 

B.1.8 Vector Multiply-Accumulate

This code multiples a vector by a scalar and adds the result to another vector. The Y0 register holds the scalar value. Figure B-6 gives a graphical overview and memory map for the vector multiply-accumulate code.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c1

 

a1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b1

c2

=

a2

+

y0

X

b2

c3

 

a3

 

 

 

 

 

 

 

 

 

 

 

b3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X memory

r0

a1

 

 

a2

 

a3

r3

b1

 

 

b2

 

b3

r1

c1

 

 

c2

 

c3

AA0084

Figure B-6. Vector Multiply-Accumulate

opt

cc

 

 

 

 

move

#ad,r0

; 2

2

point to vec a

move

#bd,r3

;

2

2

point to vec b

move

#cd,r1

;

2

2

point to vec c

B-12

DSP56800 Family Manual

 

clr

a

 

x:(r3)+,x0

; 1

1

move

 

x:(r0)+,a

 

; 1

1

do

#NUM,_vmac

 

 

; 2

3

mac

y0,x0,a

x:(r0)+,y1

x:(r3)+,x0

; 1

1

tfr

y1,a

a,x:(r1)+

 

; 1

1

_vmac

 

 

 

 

 

;

 

 

 

_______

;

 

 

Total:

12

2N+11

B.1.9 Energy in a Signal

This code calculates the energy in a signal by summing together the square of each sample.

opt

cc

 

 

 

 

move

#ad,r0

 

; 2

2

point to signal a

nop

 

 

; 1

1

 

clr

a

x:(r0)+,a

; 1

1

 

do

#NUM,_energy

 

; 2

3

 

mac

y0,y0,a

x:(r0)+,y0

; 1

1

 

_energy

 

 

 

 

 

;

 

 

_______

 

;

 

Total:

7

1N+7

 

 

DSP Benchmarks

B-13

B.1.10 [3x3][1x3] Matrix Multiply

Figure B-7 gives a graphical overview and memory map for a [3x3][1x3] matrix multiply.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X memory

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r3

 

 

a11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a13

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a21

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a22

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a23

 

 

c1

 

a11

a12

a13

 

b1

 

 

 

 

 

 

 

 

 

 

 

a31

 

 

c2

=

a21

a22

a23

X

b2

 

 

 

 

 

 

 

 

 

 

a32

 

 

c3

 

a31

a32

a33

 

b3

 

 

 

 

 

 

 

 

 

 

 

 

a33

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r0

 

 

b1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r2

 

c1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c3

AA0085

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Figure B-7.

[3x3][1x3] Matrix Multiply

 

opt

cc

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

move

#AD,r3

 

 

 

 

 

 

 

 

 

 

; 2

2

point to mat a

move

#bd,r0

 

 

 

 

 

 

 

 

 

 

; 2

2

point to vec b

move

#2,m0

 

 

 

 

 

 

 

 

 

 

; 1

1

addrb mod 3

move

#c,r2

 

 

 

 

 

 

 

 

 

 

; 2

2

point to vec c

move

 

 

 

 

 

x:(r0)+,y0

 

x:(r3)+,x0

; 1

1

y0=a11; x0=b1

mpy

y0,x0,a

 

x:(r0)+,y0

 

x:(r3)+,x0

; 1

1

a11*b1

mac

y0,x0,a

 

x:(r0)+,y0

 

x:(r3)+,x0

; 1

1

+a12*b2

macr

y0,x0,a

 

x:(r0)+,y0

 

x:(r3)+,x0

; 1

1

+a13*b3

move

 

 

 

 

 

a,x:(r2)+

 

 

 

 

 

; 1

1

store c1

mpy

y0,x0,a

 

 

x:(r0)+,y0

 

x:(r3)+,x0

; 1

1

a21*b1

mac

y0,x0,a

 

x:(r0)+,y0

 

x:(r3)+,x0

; 1

1

+a22*b2

macr

y0,x0,a

 

x:(r0)+,y0

 

x:(r3)+,x0

; 1

1

+a23*b3

move

 

 

 

 

 

a,x:(r2)+

 

 

 

 

 

; 1

1

store c2

mpy

y0,x0,a

 

x:(r0)+,y0

 

x:(r3)+,x0

; 1

1

a31*b1

mac

y0,x0,a

 

x:(r0)+,y0

 

x:(r3)+,x0

; 1

1

+a32*b2

macr

y0,x0,a

 

 

 

 

 

 

 

 

 

 

; 1

1

+a33*b3->c3

move

 

 

 

 

 

a,x:(r2)+

 

 

 

 

 

; 1

1

store c3

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

_______

 

;

 

 

 

 

 

 

 

 

 

 

Total:

20

20

 

B-14

DSP56800 Family Manual

 

B.1.11 [NxN][NxN] Matrix Multiply

The matrix multiplications are for square NxN matrices (all elements are in row-major format). Figure B-8 gives a graphical overview and memory map of an [NxN][NxN] matrix multiply.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X memory

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r3

 

a11

 

a11

..

a1k ..

a1N

 

 

 

 

b11 ..

b1k

..

b1N

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

.

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a1k

 

ak1

..

akk ..

akN

 

X

 

 

bk1 ..

bkk

..

bkN

 

 

 

 

 

.

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

aN1

..

aNk ..

aNN

 

 

 

 

bN1 ..

bNk

..

bNN

 

 

 

 

ak1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

aN1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c11 ..

c1k

..

 

c1N

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r0

 

b11

 

 

 

 

 

ck1 ..

ckk

..

 

ckN

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b1k

 

 

 

 

 

cN1 ..

cNk ..

 

cNN

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r2

 

c11

AA0086

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Figure B-8. [NxN][NxN] Matrix Multiply

 

 

 

 

 

opt

cc

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

move

#ad,r0

 

 

 

 

 

 

 

 

 

 

 

 

; 2

2

 

point to A

move

r0,y1

 

 

 

 

 

 

 

 

 

 

 

 

; 1

1

 

point to current column

move

#bd,r3

 

 

 

 

 

 

 

 

 

 

 

 

; 2

2

 

point to B

move

#c,r2

 

 

 

 

 

 

 

 

 

 

 

 

; 2

2

 

output mat C

move

#N,b

 

 

 

 

 

 

 

 

 

 

 

 

; 2

2

 

array size

move

b,n

 

 

 

 

 

 

 

 

 

 

 

 

; 1

1

 

 

 

 

 

 

push

lc

 

 

 

 

 

 

 

 

 

 

 

 

 

; 1

1

 

 

 

 

 

 

push

la

 

 

 

 

 

 

 

 

 

 

 

 

 

; 1

1

 

 

 

 

 

 

do

n,erows

 

 

 

 

 

 

 

 

 

 

 

 

; 2

3

 

do rows

push

lc

 

 

 

 

 

 

 

 

 

 

 

 

 

; 1

1

 

 

 

 

 

 

push

la

 

 

 

 

 

 

 

 

 

 

 

 

 

; 1

1

 

 

 

 

 

 

do

n,ecols

 

 

 

 

 

 

 

 

 

 

 

 

; 2

3

 

do columns

move

y1,r0

 

 

 

 

 

 

 

 

 

 

 

 

; 1

1

 

copy

row A

move

r1,r3

 

 

 

 

 

 

 

 

 

 

 

 

; 1

1

 

copy col B

clr

a

 

 

x:(r0)+,y0

 

 

 

 

 

 

 

; 1

1

 

clr sum & pipe

move

 

 

 

 

 

 

 

 

x:(r3)+n,x0

; 1

1

 

 

 

 

 

 

rep

#N-1

 

 

 

 

 

 

 

 

 

 

 

 

; 1

3

 

sum

 

 

 

mac

y0,x0,a

 

x:(r0)+,y0

 

x:(r3)+n,x0

; 1

1

 

 

 

 

 

 

macr

y0,x0,a

 

 

 

 

 

 

x:(r3)+,y0

; 1

1

 

finish, next col

move

a,x:(r2)+

 

 

 

 

 

 

 

 

 

 

 

 

; 1

1

 

save output

 

DSP Benchmarks

B-15

ecols pop

la

 

; 1

1

 

 

pop

lc

 

; 1

1

 

 

add

y1,b

 

; 1

1

next row A

move

b,y1

 

; 1

1

 

 

move

#bd,r1

 

; 2

2

first element B

erows

 

 

 

 

 

 

pop

la

 

; 1

1

 

 

pop

lc

 

; 1

1

 

 

;

 

 

_______

 

 

;

 

Words:

Cycles:

 

3

2

 

 

 

 

 

;

Total:

30

((9+(N-1))N+10)N+12)= N +8N +10N+17

B-16

DSP56800 Family Manual

 

Соседние файлы в папке DSP568xx