📄 mtd8.asm
字号:
#define NGatesNum 1024
#include "TS101_def.h"
.section M1DATA;
.align 4;
.var fft8Result[16]; //order is re,im,re,im...
.var fft8input[16]="fft8input.dat";//order is re,im,re,im...
.section M2DATA;
.align 4;
.var win[16]="win16.dat";//8点积累海明窗有8个数,但后来的yr0=ReTx(0),yr1=ImTx(0)
// xr0=ReTx(1),xr1=ImTx(1)是这样来取,要对一个数的实虚部同时乘以海明系数就不高效了,
//因此就在原本8点的海明系数的每个点后补一点,这一点为原系数后后边的那个系数
//这么补::原来系数0.1.2.3.4.5.6.7///补后成为0.0.1.1.2.2.3.3.4.4.5.5.6.6.7.7
.section M0CODE;
.global _main3;
_main3:
k0=fft8input;;
j0=fft8Result;;
j1=win;;
r1:0=q[k0+=8];r7:6=q[j1+=8];;
r3:2=q[k0+=-4];r9:8=q[j1+=-4];;
r5:4=q[k0+=8];r11:10=q[j1+=8];fr0=r6*r0;; //1st stage begin.
r7:6=q[k0+=0];r13:12=q[j1+=0];fr1=r1*r7;;
////////////////////////////////////////////////
////yr0=ReTx(0),yr1=ImTx(0); xr0=ReTx(1),xr1=ImTx(1).
////yr4=ReTx(2),yr5=ImTx(2); xr4=ReTx(3),xr5=ImTx(3).
////yr2=ReTx(4),yr3=ImTx(4); xr2=ReTx(5),xr3=ImTx(5).
////yr6=ReTx(6),yr7=ImTx(6); xr6=ReTx(7),xr7=ImTx(7).
fr2=r2*r8;;
fr3=r3*r9;;
fr0=r0+r2,fr20=r0-r2;fr4=r4*r10;;
fr2=r1+r3,fr29=r1-r3;fr5=r5*r11;; //each time do 2 butterfly(but only real or imag).
fr6=r6*r12;;
fr7=r7*r13;;
fr4=r4+r6,fr21=r4-r6;;
fr5=r5+r7,fr28=r5-r7;;
// 2nd stage begin.
fr16=r0+r4,fr24=r0-r4;;
fr17=r2+r5,fr25=r2-r5; xr15=0.70710678;; //xr15 can't be destroyed until dzqFFT8Finished.
fr20=r20+r28,fr28=r20-r28; xr18=xr16;; //xr18 used for swap xr16 and yr17.
fr29=r29+r21,fr21=r29-r21; xr16=yr17;;//no Error!!!!
yr17=xr18;;
xfr24=-r24;yr18=yr25;;//yr18 used for swap xr25 and yr25.////
//the 3rd stage begin.
//each time only 1 butterfly,but both real and imag.
fr0=r16+r17,fr4=r16-r17; yr25=xr25;;//XFRe(0)=yr0,XFIm(0)=xr0; XFRe(4)=yr4,
xfr8=r21+r20,fr9=r21-r20; xr25=yr18;; //xfr8=Ib2+Rb2,xfr9=Ib2-Rb2.
xfr10=r28+r29,fr11=r28-r29; xr20=yr21;; //xfr10=Rd2+Id2,xfr11=Rd2-Id2. //now xr20=Ib1.
fr2=r24+r25,fr6=r24-r25; xfr8=r8*r15; L[j0+=8]=r0;; //XFRe(2)=yr2,XFIm(2)=xr2; XFRe(6)=yr6...
xfr21=r9*r15; L[j0+=-4]=r4;;
xfr6=-r6;xfr11=r11*r15;xr28=yr29;;// now XFIm(6)=xr6.
xfr29=r10*r15;yr21=xr8;;
yr29=xr11;;
fr1=r20+r21,fr5=r20-r21; L[j0+=8]=r2;; //XFRe(1)=yr1,XFIm(1)=xr1; XFRe(5)=yr5,XFIm(5)=xr5.
fr7=r28+r29,fr3=r28-r29; L[j0+=-10]=r6;; //XFRe(3)=yr3,XFIm(3)=xr3; XFRe(7)=yr7,XFIm(7)=xr7.
L[j0+=8]=r1;;
L[j0+=4]=r5;;
L[j0+=-8]=r7;;
L[j0+=0]=r3;;
nop;;
nop;;
nop;;
_main3.end:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -