section 7 - Index of

section 7 - Index of section 7 - Index of

11.07.2015 Views

countountcountcountorg y:coefset 0dup points/4dc @cos(@cvf(count)*freq)set count+ 1endmorg x:coefset 0dup points/4dc @sin(@cvf(count)*freq)set count+ 1endmendm;end of bergsincos macrobergorder macro points,bergtable,offsetbergorder ident 1,3;bergorder generates bergland order tablegeneratedmove #>4,amove #points,r4;points=number of points of bergtable to bemove #>points/4,b;nitial pointermove #bergtable,rO ;table resides inmove b,nO ;init offsetmove #>O,xOmove xO,x:(rO)+nO ;seedsmove #>2,xOmove xO,x:(rO)+nOmove #>1,xOmove xO,x:(rO)+nOmove #>3,xOmove xO,x:(rO)move #bergtable,nO;Iocation of bergtabledo #@cvi(@log(points/4)/@log(2)),_endlmove b,xO;xO=i+iIsr b ;b=imove b,rO ;rO=inopmove a,x:(rO+nO);k-> bergtablelsi a;k=k*2move a,y1;save A contentmove r4,a;r4=# of pointscmp xO,a;xO=j, if j< points, contFigure B-5 Real Input FFT Based on Glenn Bergland Algorithm (Sheet 3 of 8)

jle -'oopmove xO,rOmove y1,amove x:(rO+nO),yOsub yO,amove b,x1move rO,yOadd yO,bmove b,rOnopmove a,x:(rO+nO)add x1,bmove b,xOmove x1,bjmp _star-'oop move y1,a_endlmove #>offset,amove #bergtable,rOdo #points,_add_offsetmove x:(rO),Badd A,Bmove B,x:(rO)+_add_offsetendm ;end of sincos macro;rO=i+i=j,b=i;recover A=k;yO=bergtabl[j];k-bergtablU];save b, x1 =i;yO=j=i+i;b=j+i;rO=j+i;store bergtablU+i];b=j+i+i;save b;recover b=i;recover a;offset is the location of output data or twiddle;convert normal order to berg lang ordernorm2berg macro points,bergtable,twiddle;points is actual size of table to be convertingmove #bergtable,rOmove #twiddle,r2move r2,r6do #points,data_tempmove x:(rO)+,r3move r3,r7move x:(r3),amove y:(r7),bmove a,x:(r2)+ b,y:(r6)+;rO=pointer of bergland table;r2=twiddle pointer for X;r6=twiddle pointer for Y;get index;get value;write backendmFigure B-5 Real Input FFT Based on Glenn Bergland Algorithm (Sheet 4 of 8)

countountcountcountorg y:coefset 0dup points/4dc @cos(@cvf(count)*freq)set count+ 1endmorg x:coefset 0dup points/4dc @sin(@cvf(count)*freq)set count+ 1endmendm;end <strong>of</strong> bergsincos macrobergorder macro points,bergtable,<strong>of</strong>fsetbergorder ident 1,3;bergorder generates bergland order tablegeneratedmove #>4,amove #points,r4;points=number <strong>of</strong> points <strong>of</strong> bergtable to bemove #>points/4,b;nitial pointermove #bergtable,rO ;table resides inmove b,nO ;init <strong>of</strong>fsetmove #>O,xOmove xO,x:(rO)+nO ;seedsmove #>2,xOmove xO,x:(rO)+nOmove #>1,xOmove xO,x:(rO)+nOmove #>3,xOmove xO,x:(rO)move #bergtable,nO;Iocation <strong>of</strong> bergtabledo #@cvi(@log(points/4)/@log(2)),_endlmove b,xO;xO=i+iIsr b ;b=imove b,rO ;rO=inopmove a,x:(rO+nO);k-> bergtablelsi a;k=k*2move a,y1;save A contentmove r4,a;r4=# <strong>of</strong> pointscmp xO,a;xO=j, if j< points, contFigure B-5 Real Input FFT Based on Glenn Bergland Algorithm (Sheet 3 <strong>of</strong> 8)

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

Saved successfully!

Ooh no, something went wrong!