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

📄 c2cx0032.asm

📁 卓氏向量中断程序
💻 ASM
字号:
;*************************************************************
; File Name  :	C2cx0032.asm
; Originator :	Texas Instrument-Chongqing University DSPs Lab.
; Description:	LF2407 DSK 32 Points FFT Algorithms Test Program
; Author     :  Zhuo Qingfeng
; Last Update:	7-14-2001
;**************************************************************
; INPUT     : ADCHANN(0x0a01): One of the 0--15 AD channels
; OUTPUT    : FFT result in 0x300-0x33f
; USED REGS.: ACC,DP,AR0,AR1,AR3,ST0,ST1 
;**************************************************************

         .file      "c2cx0032.asm"
         .title     "0032 point DIT Radix-2, Complex FFT"
         .width     120
N        .set       32   ; NUMBER OF POINTS FOR FFT

         .include C2CXRAD2.MAC
         .include DIVID.ASM
;
         
         .def    TWIDLEN,FFTLEN,TWIDSTRT,FFT,DATA	 
         .def    STAGE1,STAGE3,STAGE4,SINES4,STAGE5,SINES5  
         .ref    ADRESULT,ADCHANN
;
         .sect "twiddles"
; table of twiddle factors for the FFT
TWIDSTRT .set    $
         .include twiddles.q15
TWIDLEN  .set    $-TWIDSTRT

;
;INPUT    .usect  "input",N*2    ; input data array
TWID     .usect  "twid",TWIDLEN ; reserve space for twiddles

DATA	 .usect ".data1",N*2	
;DATA     .set	 $
;         .space  N*2*16         ; working data array
;
         .include init-fft.asm
;
         .sect    "fftprog"
;
;    FFT CODE WITH BIT-REVERSED INPUT SAMPLES / ARP=AR3 / DP=6
;
FFT:  	
     		LAR  	AR3,DATAADD  	; AR3 <= DATAADD start address 
     		ZAC                 	; ACC <= 0
     		RPT  	#03Fh           ; set repeat counter for 1fh+1=20h or 32 loops
        	SACL 	*+             	; write zeros to DATA		
	 		LAR     ar3,DATAADD     ; TRANSFER 2*N WORDS FROM 'input' to 'data'
         	LAR     ar0,NN          ; indexregister = N
		    
		    LAR		AR1,#ADCHANN
		    MAR		*,AR1
		    LACL	*,AR3
		    BCND	FFTA,NEQ
		    
         	RPT     #N-1  	       
         	BLDD    #ADRESULT,*BR0+   
         	B       STAGE1
         	
FFTA:       SUB		#1
         	BCND	FFTB,NEQ		    
         	RPT     #N-1  	       
         	BLDD    #ADRESULT+32,*BR0+   
         	B       STAGE1
         	
FFTB:       SUB		#1
         	BCND	FFTC,NEQ		    
         	RPT     #N-1  	       
         	BLDD    #ADRESULT+64,*BR0+   
         	B       STAGE1
         	
FFTC:       SUB		#1
         	BCND	FFTD,NEQ		    
         	RPT     #N-1  	       
         	BLDD    #ADRESULT+96,*BR0+   
         	B       STAGE1
       
FFTD:       SUB		#1
         	BCND	FFTE,NEQ		    
         	RPT     #N-1  	       
         	BLDD    #ADRESULT+128,*BR0+   
         	B       STAGE1
      
FFTE:       SUB		#1
         	BCND	FFTF,NEQ		    
         	RPT     #N-1  	       
         	BLDD    #ADRESULT+160,*BR0+   
         	B       STAGE1
         	
FFTF:       SUB		#1
         	BCND	FFTG,NEQ		    
         	RPT     #N-1  	       
         	BLDD    #ADRESULT+192,*BR0+   
         	B       STAGE1
         	
FFTG:       SUB		#1
         	BCND	FFTH,NEQ		    
         	RPT     #N-1  	       
         	BLDD    #ADRESULT+224,*BR0+   
         	B       STAGE1
         	
FFTH:       SUB		#1
         	BCND	FFTI,NEQ		    
         	RPT     #N-1  	       
         	BLDD    #ADRESULT+256,*BR0+   
         	B       STAGE1
         	
FFTI:       SUB		#1
         	BCND	FFTJ,NEQ		    
         	RPT     #N-1  	       
         	BLDD    #ADRESULT+288,*BR0+   
         	B       STAGE1
         	
FFTJ:       SUB		#1
         	BCND	FFTK,NEQ		    
         	RPT     #N-1  	       
         	BLDD    #ADRESULT+320,*BR0+   
         	B       STAGE1
         	
FFTK:       SUB		#1
         	BCND	FFTL,NEQ		    
         	RPT     #N-1  	       
         	BLDD    #ADRESULT+352,*BR0+   
         	B       STAGE1
         	
FFTL:       SUB		#1
         	BCND	FFTM,NEQ		    
         	RPT     #N-1  	       
         	BLDD    #ADRESULT+384,*BR0+   
         	B       STAGE1
         	
FFTM:       SUB		#1
         	BCND	FFTN,NEQ		    
         	RPT     #N-1  	       
         	BLDD    #ADRESULT+416,*BR0+   
         	B       STAGE1
         	
FFTN:       SUB		#1
         	BCND	FFTO,NEQ		    
         	RPT     #N-1  	       
         	BLDD    #ADRESULT+448,*BR0+   
         	B       STAGE1
         	
FFTO:       SUB		#1
         	BCND	FFTB,NEQ		    
         	RPT     #N-1  	       
         	BLDD    #ADRESULT+480,*BR0+   
         	         	
;    FFT CODE for STAGES 1 and 2 / ARP=AR3
;
STAGE1:  
         LDP	 #6
	 lar     ar0,#7        ; indexregister = 7
         lar     ar1,DATAADD   ; pointer to DATA       r1,i1
         lar     ar2,DATA2     ; pointer to DATA + 2   r2,i2
         lar     ar3,DATA4     ; pointer to DATA + 4   r3,i3
         lar     ar4,DATA6     ; pointer to DATA + 6   r4,i4
         COMBO2X 8             ; repeat 8 times
;
;    FFT CODE FOR STAGE 3  /  ARP=AR2
;
STAGE3:  lar     ar0,#9        ; index register = 9
         lar     ar1,DATAADD   ; ar1 -> DATA
         lar     ar2,DATA8     ; ar2 -> DATA+8
         stage3l 4             ; repeat 4 times
;
;    FFT CODE FOR STAGE 4  / ARP=AR2
;
STAGE4:  lar     ar0,#16       ; index register = 16
         sar     ar0,TEMP+1    ; save index register
         lar     ar1,DATAADD   ; ar1 -> DATA
         lar     ar2,DATA16    ; ar2 -> DATA+16
         lar     ar6,#1        ; loopcounter = 1
;
loop4:   lar     ar3,cos4      ; start of cosine in stage 4
         lar     ar4,sin4      ; start of sine in stage   4
         do_btfly 8            ; setup for 8 butterflies
         banz    loop4,*-,ar2
;
;    FFT CODE FOR STAGE 5  / ARP=AR2
;
STAGE5:  lar     ar1,DATAADD   ; ar1 -> DATA
         lar     ar2,DATA32    ; ar2 -> DATA+32
;
         lar     ar3,cos5      ; start of cosine in stage 5
         lar     ar4,sin5      ; start of sine in stage   5
         do_loops 16           ; setup for 16 butterflies
         ex_btfly              ; execute the butterflies

	 RET

FFTLEN   .set    $-FFT
         .end

⌨️ 快捷键说明

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