⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2-dit-fft.asm

📁 一个DIT-FFT源程序生成器的源程序。采用delphi编写。
💻 ASM
字号:
*
*  TITL   COMPLEX, RADIX-2, FFT
*
*  GENERIC PROGRAM TO DO A RADIX-2 COMPLEX FFT COMPUTATION IN TMS320C30
*
*  THE COMPLEX DATA RESIDE IN INTERNAL MEMORY. THE COMPUTATION IS DONE
*  IN-PLACE,BUT THE RESULT IS MOVED TO ANOTHER MEMORY SECTION TO DEMONSTRATE
*  THE BIT-REVERSED ADDRESSING.
*
*  THE TWIDDLE FACTORS ARE SUPPLIED IN A TABLE PUT IN A .DATA SECTION.
*  THIS DATA IS INCLUDED IN A SEPARATE FILE TO PRESERVE THE GENERIC
*  NATURE OF THE PROGRAM. FOR THE SAME PURPOSE,THE SIZE OF THE FFT N
*  AND LOG2(N) ARE DEFINED IN A .GLOBL DIRECTIVE AND SPECIFIED DURING LINKING.
*
*
         .globl  FFT                 ;  Entry point for execution
         .globl  N                   ;  FFT size
         .globl  M                   ;  LOG2(N)
         .globl  SINE                ;  Address of sine table

INP      .usect  "IN",1024           ;  Memory with input data
         .BSS    OUTP,1024           ;  Memory with output data

         .text

*  INITIALIZE

FFTSIZ   .word   N
LOGFFT   .word   M
SINTAB   .word   SINE
INPUT    .word   INP
OUTPUT   .word   OUTP

FFT:     LDP     FFTSIZ              ;  Command to load data page pointer
         LDI     @FFTSIZ,IR1
         LSH     -2,IR1              ;
         LDI     0,AR6
         LDI     @FFTSIZ,IR0
         LSH     1,IR0
         LDI     @FFTSIZ,R7
         LDI     1,AR7
         LDI     1,AR5

*  OUTER LOOP

LOOP:    NOP     *++AR6(1)           ;  Current FFT stage
         LDI     @INPUT,AR0          ;  AR0 points to X(I)
         ADDI    R7,AR0,AR2          ;  AR2 points to X(L)
         LDI     AR7,RC
         SUBI    1,RC                ;  RC should be one less than desired #

*  FIRST LOOP

         RPTB    BLK1
         ADDF    *AR0,*AR2,R0        ;  R0=X(I)+X(L)
         SUBF    *AR2++,*AR0++,R1
         ADDF    *AR2,*AR0,R2
         SUBF    *AR2,*AR0,R3
         STF     R2,*AR0--
||       STF     R3,*AR2--
BLK1     STF     R0,*AR0++(IR0)
||       STF     R1,*AR2++(IR0)

*


         CMPI    @LOGFFT,AR6
         BZD     END

*  MAIN INNER LOOP

         LDI     2,AR1
         LDI     @SINTAB,AR4
INLOP:   ADDI    AR5,AR4
         LDI     AR1,AR0
         ADDI    2,AR1
         ADDI    @INPUT,AR0
         ADDI    R7,AR0,AR2
         LDI     AR7,RC
         SUBI    1,RC
         LDF     *AR4,R6

*  SECOND LOOP

         RPTB   BLK2
         SUBF   *AR2,*AR0,R2
         SUBF   *+AR2,*+AR0,R1
*
         MPYF   R2,R6,R0
||       ADDF   *+AR2,*+AR0,R3
*
         MPYF   R1,*+AR4(IR1),R3
||       STF    R3,*+AR0
         SUBF   R0,R3,R4
         MPYF   R1,R6,R0
||       ADDF   *AR2,*AR0,R3
         MPYF   R2,*+AR4(IR1),R3
||       STF    R3,*AR0++(IR0)
*
         ADDF   R0,R3,R5
BLK2     STF    R5,*AR2++(IR0)
         STF    R4,*+AR2

         CMPI   R7,AR1
         BNE    INLOP

         LSH    1,AR7

         BRD    LOOP
         LSH    1,AR5
         LDI    R1,IR0
         LSH    -1,R7
*  STORE RESULT OUT USING BIT-REVERSED ADDRESSING

END:     LDI    @FFTSIZ,RC
         SUBI   1,RC
         LDI    @FFTSIZ,IR0
         LDI    2,IR1
         LDI    @INPUT,AR0
         LDI    @OUTPUT,AR1
         RPTB   BITRV
         LDF    *+AR0(1),R0
||       LDF    *AR0++(IR0)B,R1
BITRV    STF    R0,*+AR1(1)
||       STF    R1,*AR1++(IR1)

SELF     BR     SELF
         .end
*
*TITL  TABLE WITH TWIDDLE FACTORS FOR A 128-POINT FFT
*
*  FILE TO BE LINKED WITH THE SOURCE CODE FOR A 128-POINT,RADIX-2 FFT.



         .globl   SINE
         .globl   N
         .globl   M

N        .set     128
M        .set     7

         .data

SINE
         .float   0.000000
         .float   0.049068
         .float   0.098017
         .float   0.146730
         .float   0.195090
         .float   0.242980
         .float   0.290285
         .float   0.336890
         .float   0.382683
         .float   0.427555
         .float   0.471397
         .float   0.514103
         .float   0.555570
         .float   0.595699
         .float   0.634393
         .float   0.671559
         .float   0.707107
         .float   0.740951
         .float   0.773010
         .float   0.803208
         .float   0.831470
         .float   0.857729
         .float   0.881921
         .float   0.903989
         .float   0.923880
         .float   0.941544
         .float   0.956940
         .float   0.970031
         .float   0.980785
         .float   0.989177
         .float   0.995185
         .float   0.998795
COSINE
         .float   0.998795
         .float   1.000000
         .float   0.998795
         .float   0.995185
         .float   0.989177
         .float   0.980785
         .float   0.970031
         .float   0.956940
         .float   0.941544
         .float   0.923880
         .float   0.903989
         .float   0.881921
         .float   0.857729
         .float   0.831470
         .float   0.803208
         .float   0.773010
         .float   0.740951
         .float   0.707107
         .float   0.671559
         .float   0.634393
         .float   0.595699
         .float   0.555570
         .float   0.514103
         .float   0.471397
         .float   0.427555
         .float   0.382683
         .float   0.336890
         .float   0.290285
         .float   0.242980
         .float   0.195090
         .float   0.146730
         .float   0.098017
         .float   0.049068
         .float   -0.000000
         .float   -0.049068
         .float   -0.098017
         .float   -0.146730
         .float   -0.195090
         .float   -0.242980
         .float   -0.290285
         .float   -0.336890
         .float   -0.382683
         .float   -0.427555
         .float   -0.471397
         .float   -0.514103
         .float   -0.555570
         .float   -0.595699
         .float   -0.634393
         .float   -0.671559
         .float   -0.707107
         .float   -0.740951
         .float   -0.773010
         .float   -0.803208
         .float   -0.831470
         .float   -0.857729
         .float   -0.881921
         .float   -0.903989
         .float   -0.923880
         .float   -0.941544
         .float   -0.956940
         .float   -0.970031
         .float   -0.980785
         .float   -0.989177
         .float   -0.995185
         .float   -0.998795
         .float   -1.000000
         .float   -0.998795
         .float   -0.995185
         .float   -0.989177
         .float   -0.980785
         .float   -0.970031
         .float   -0.956940
         .float   -0.941544
         .float   -0.923880
         .float   -0.903989
         .float   -0.881921
         .float   -0.857729
         .float   -0.831470
         .float   -0.803208
         .float   -0.773010
         .float   -0.740951
         .float   -0.707107
         .float   -0.671559
         .float   -0.634393
         .float   -0.595699
         .float   -0.555570
         .float   -0.514103
         .float   -0.471397
         .float   -0.427555
         .float   -0.382683
         .float   -0.336890
         .float   -0.290285
         .float   -0.242980
         .float   -0.195090
         .float   -0.146730
         .float   -0.098017
         .float   -0.049068

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -