Analog Devices adsp-2100 Manual page 320

Adsp-2100 family programmable single-chip microprocessors
Table of Contents

Advertisement

{———— LAST STAGE —————}
I0=^inplacereal;
I1=^inplacereal+nover2;
I2=^inplaceimag;
I3=^inplaceimag+nover2;
CNTR=nover2;
M2=DM(node_space);
M4=1;
I4=^twid_real;
I5=^twid_imag;
MY0=PM(I4,M4),MX0=DM(I1,M0);
MY1=PM(I5,M4),MX1=DM(I3,M0);
DO bfly_lp UNTIL CE;
MR=MX0*MY1(SS),AX0=DM(I0,M0);
MR=MR+MX1*MY0(RND),AX1=DM(I2,M0);
AY1=MR1,MR=MX0*MY0(SS);
MR=MR-MX1*MY1(RND);
AY0=MR1,AR=AX1-AY1;
SB=EXPADJ AR,DM(I3,M1)=AR;
AR=AX0-AY0,MX1=DM(I3,M0),MY1=PM(I5,M4);
SB=EXPADJ AR,DM(I1,M1)=AR;
AR=AX0+AY0,MX0=DM(I1,M0),MY0=PM(I4,M4);
SB=EXPADJ AR,DM(I0,M1)=AR;
AR=AX1+AY1;
bfly_lp:
SB=EXPADJ AR,DM(I2,M1)=AR;
CALL bfp_adj;
RTS;
.ENDMOD;
Listing 14.6 Radix-2 DIT FFT Routine, Conditional Block Floating-Point
Software Examples
{bflys_per_group=bflys_per_group / 2}
{AY0=x1(C)-y1(-S), AR=y0-[y1(C)+x1(-S)]}
{Check for bit growth, y1=y0-[y1(C)+x1(-S)]}
{AR=x0-[x1(C)-y1(-S)], MX1=next y1,MY1=next (-S)}
{Check for bit growth, x1=x0-[x1(C)-y1(-S)]}
{AR=x0+[x1(C)-y1(-S)], MX0=next x1,MY0=next C}
{Check for bit growth, x0=x0+[x1(C)-y1(-S)]}
{MY0=C,MX0=x1}
{MY1=-S,MX1=y1}
{MR=x1(-S),AX0=x0}
{MR=(y1(C)+x1(-S)),AX1=y0}
{AY1=y1(C)+x1(-S),MR=x1(C)}
{MR=x1(C)-y1(-S)}
{AR=y0+[y1(C)+x1(-S)]}
{Check for bit growth}
14
14 – 17

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents