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
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>