28.12.2014 Views

A Block Floating Point Implementation on the TMS320C54x DSP

A Block Floating Point Implementation on the TMS320C54x DSP

A Block Floating Point Implementation on the TMS320C54x DSP

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

SPRA610<br />

ST B,*Q+0% ; DATA<br />

add #N,a<br />

stlm a, ar3 ; ar3 –> DATA+(offset=N)<br />

stm #cos,ar4 ; start of cosine in stage ’stg’<br />

stm #sin,ar5 ; start of sine in stage ’stg’<br />

buttfly N/2<br />

; execute N/2 butterflies<br />

.endm<br />

;*********************************************************************<br />

; macro : stdmacro<br />

;–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

stdmacro .macro stage,l1,l2,idx,sin,cos<br />

; .global STAGE:stage:,end<br />

STAGE:stage: .set $<br />

ld #0, ASM ; Introduced by AC 06/06/99 to bypass autoscaling<br />

; and scale <strong>on</strong>ly when required within <strong>the</strong> file<br />

; cfft64_2.asm<br />

ld *sp(DATA),a<br />

stl a,ar2 ; ar2 –> DATA<br />

add #idx,a ; ar3 –> DATA+(offset=idx)<br />

stlm a,ar3<br />

stm #l1–1,ar1 ; outer loop counter<br />

stm #cos,ar6 ; start of cosine in stage ’stg’<br />

stm #sin,ar7 ; start of sine in stage ’stg’<br />

loop mvmm ar6,ar4<br />

mvmm ar7,ar5<br />

buttfly l2<br />

; start of cosine in stage ’stg’<br />

; start of sine in stage ’stg’<br />

; execute l2 butterflies<br />

mar *+ar2(idx)<br />

banzd loop,*ar1–<br />

32 A <str<strong>on</strong>g>Block</str<strong>on</strong>g> <str<strong>on</strong>g>Floating</str<strong>on</strong>g> <str<strong>on</strong>g>Point</str<strong>on</strong>g> <str<strong>on</strong>g>Implementati<strong>on</strong></str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> <strong>TMS320C54x</strong> <strong>DSP</strong>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!