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

📄 init-fft.asm

📁 卓氏向量中断程序
💻 ASM
字号:
;
;  file: D:\FFT2X\INIT-FFT.ASM is the same for all 320C2X RADIX complex FFTs
;
;  Update: 10. July 90 / Manfred Christ / Texas Instruments - Freising
;
         .def    divid,N,FFT32,NN,DATAADD
         

         .sect   "init"
          
;
NN	 	 .usect	 ".fftvar",1   	  ; number of fft-points
DATAADD	 .usect	 ".fftvar",1      ; START ADDRESS OF DATA
DATA2	 .usect	 ".fftvar",1      ; DATA+2
DATA4	 .usect	 ".fftvar",1      ; DATA+4
DATA6	 .usect	 ".fftvar",1      ; DATA+6
DATA8	 .usect	 ".fftvar",1      ; DATA+8
DATA16	 .usect	 ".fftvar",1      ; DATA+16
TABINIT: .word   N,DATA,DATA+2,DATA+4,DATA+6,DATA+8,DATA+16

; stage 3 and 4 costants
SINES4   .set    TWID             ; start of sine in stage 4
         .word   5A82h            ; cos(45)=sin(45)
         .word   SINES4,SINES4+4
cos45	 .usect	 ".fftvar",1     ; sine/cosine in stage 3
sin4	 .usect	 ".fftvar",1     ; start of sine in stage    4
cos4	 .usect	 ".fftvar",1     ; start of cosine in stage  4

         .if N>16
         .def    STAGE5,SINES5
SINES5   .set    SINES4+11       ; start of sine in stage 5
         .word   DATA+32,SINES5,SINES5+8
DATA32	 .usect	 ".fftvar",1     ; DATA+32
sin5	 .usect	 ".fftvar",1     ; start of sine in stage    5
cos5	 .usect	 ".fftvar",1     ; start of cosine in stage  5
         .endif



TABEND:  .set    $
;
;  Temp variables
;
sine	 .usect	 ".fftvar",1     ; sine value
cosine	 .usect	 ".fftvar",1     ; cosine value
TEMP	 .usect	 ".fftvar",2     ; used for temporary numbers
;
FFT32:   
         
         LDP     #6              ; use only B2 and mmregs for direct addressing(300H/80H)
         SPM     0               ; no shift from PREG to ALU
         ROVM                    ; disable overflowmode
         SSXM                    ; enable sign extension mode
;
; INIT Block B2
;
         MAR	*,AR0            ;~~~~~~~~~~
         LAR     AR0,#NN         ; arp=ar0
         LACC    #TABINIT
         RPT     #TABEND-TABINIT-1
         TBLR    *+
;
; INIT TWIDDLE FACTORS
;
         LAR     AR0,#TWID       ; arp is already pointing to ar0
         LACC    #TWIDSTRT
         .if     N<256
         RPT     #TWIDLEN-1        ; for N= 16 .. 128
         TBLR    *+
         .else
         LAR     ar1,#TWIDLEN    ; for n = 256 .. 1024 ..
TWIDLOOP tblr    *+,ar1          ; transfer a word
         addk    1               ; accu =+1
         banz    TWIDLOOP,*-,ar0
         .endif

;
; EXECUTE THE FFT
;
         LAR     AR5,#TEMP       ; pointer to 2 temp register
         CALL    FFT,*,AR3       ; ARP=AR3 FOR MACRO COMBO
;
	 RET     		 ; THE SIMULATOR STOPS HERE

⌨️ 快捷键说明

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