fir.asm

来自「DSP TMS320C55x 汇编程序 FIR滤波汇编源程序 64点 直接调用」· 汇编 代码 · 共 42 行

ASM
42
字号
;
;   fir.asm - FIR filter
;
;   prototype: extern void fir(int *,int *,int *,unsigned int)                           
;
;   Entry:  arg0: AR0 - (in)    FIR filter input buffer pointer   
;           arg1: AR1 - (out)   FIR filter output buffer pointer
;           arg2: AR2 - (coeff) FIR coefficients array pointer     
;           arg3: T0  - (L)     FIR filter order
;
;   Return: T0 = signal buffer index
;
    .def  _fir
    	
_fir         
    pshm  ST1_55             ; Save ST1, ST2, and ST3
    pshm  ST2_55
    pshm  ST3_55
		
    or    #0x340,mmap(ST1_55); Set FRCT,SXMD,SATD
    bset  SMUL               ; Set SMUL
    mov   mmap(AR0),BSA01    ; AR1=base address for input 
    mov   mmap(AR2),BSA23    ; AR1=base address for coeff
    mov   mmap(T0),BK03	     ; Set coefficient array size     
    or    #0x5,mmap(ST2_55)  ; AR0 & AR2 as circular pointers    
    mov   #0,AR0             ; Start from zero offset
    mov   #0,AR2             ; Start from zero offset    
    sub   #3,T0        
    mov   T0,CSR            ; Init loop L-2 times    

    mpym  *AR0+,*AR2+,AC0    ; Do the 1st operation
||  rpt   CSR                ; Start loop
    macm  *AR0+,*AR2+,AC0
    macmr *AR0,*AR2+,AC0     ; Do the last operation 	
    mov   hi(AC0),T0         ; Save Q15 filtered value

    popm  ST3_55             ; Restore ST1, ST2, and ST3
    popm  ST2_55 
    popm  ST1_55        
    ret
    .end

⌨️ 快捷键说明

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