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

📄 rfft32m.asm

📁 tms320c2812的示列程序
💻 ASM
字号:
;============================================================================
;
; File Name     : rfft_magc.asm
; 
; Originator    : Advanced Embeeded Control 
;                 Texas Instruments 
; 
; Description   : This file contains source code to compute the magnitude square 
;                 of complex spectral bins for Real FFT modules   
;               
; Date          : 26/2/2002 (dd/mm/yyyy)
;===========================================================================    
; Routine Type  : C Callable        
;
; Description   :
; void FFTR_win(FFTxxxR_handle) 
; This function computes magnitude square of the complex spectral bins, produced by
; the Real FFT modules. Allows in-place and off-place storage of the magnitude square results.
;====================================================================== 
; REAL FFT MODULES
;----------------------------------------------------------------------
;typedef struct {   
;       long *ipcbptr;
;       long *tfptr;               
;       int size;
;       int nrstage;             
;       long *magptr;
;       long *winptr; 
;       long peakmag;
;       int peakfrq;
;       int ratio;     
;       void (*init)(void);
;       void (*calc)(void *);
;       void (*split)(void *);
;       void (*mag)(void *);
;       void (*win)(void *);
;       }FFTxxxR;
;======================================================================

                .def   _RFFT32_mag    ;
            
_RFFT32_mag: 

            SETC    SXM
            
            MOVL    XAR7,*XAR4      ; XAR5=ipcbptr
            MOVL    XAR6,*+XAR4[6]  ; XAR6=magptr
            
            MOVZ    AR0,*+XAR4[4]   ; AR7=size
MAG_LP:     
            ZAPA                    ; ACC=0, P=0
            QMACL   P,*XAR7,*XAR7++ ; Q15*Q15=Q30
            QMACL   P,*XAR7,*XAR7++ ; Q15*Q15+Q30=Q30
            ADDL    ACC,P
            MOVL    *XAR6++,ACC     ; Store in Q30
            BANZ    MAG_LP,AR0--
            
; Find maximum magnitude
            ADDB    XAR4,#4         ; XAR4->size
            MOVB    ACC,#0
            MOVL    *+XAR4[6],ACC   ; peakmag=0
            MOVZ    AR0,*XAR4       ; AR0=size
            MOVL    XAR5,*+XAR4[2]  ; XAR5=magptr

            MOV     ACC,#0

;Find the maximum value among the FFT Magnitudes    
            RPT     AR0
            || MAXL ACC,*XAR5++
            
            MOVL    *+XAR4[6],ACC   ; update peak magnitude
            MOVB    XAR7,#0         ; XAR7=0
            MOVL    XAR5,*+XAR4[2]  ; XAR5=magptr
;Find the spectral bin corresponding to maximum magnitude.  
NEXT_BIN:               
            MAXL    ACC,*XAR5++
            NOP     *XAR7++
            SBF     NEXT_BIN,NEQ    
            
            NOP     *--XAR7
            ADDB    XAR4,#8         ; XAR4->peakfrq
            MOV     *XAR4,AR7       ; update peak magnitude     
            LRETR      


 

⌨️ 快捷键说明

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