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 + -
显示快捷键?