📄 filter.asm
字号:
.mmregs
.include "ld8a.inc"
.bss tmp,100
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Do the synthesis filtering 1/A(z)
;void Syn_filt(
; Word16 a[], /* (i) Q12 : a[m+1] prediction coefficients (m=10) */
; Word16 x[], /* (i) : input signal */
; Word16 y[], /* (o) : output signal */
; Word16 lg, /* (i) : size of filtering */
; Word16 mem[], /* (i/o) : memory associated with this filtering. */
; Word16 update /* (i) : 0=no update, 1=update of memory. */
;)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Syn_filt:
pshm st0
pshm st1
pshm ar0
pshm ar2
pshm ar3
pshm ar4
pshm ar5
pshm ar6
pshm ar7
frame -6 ;*sp(0)--i,*sp(1)--j,*sp(2)(3)--s,*sp(4)--yy,*sp(5)--a
;*sp(16)--x,*sp(17)--y,*sp(18)--lg,*sp(19)--mem,
;*sp(20)--update
ssbx ovm
ssbx sxm
ssbx frct
stl a,*sp(5)
st #tmp,*sp(4)
stm #tmp,ar2 ;ar2--tmp
mvdk *sp(19),ar3 ;ar3--mem
mvdk *sp(16),ar5 ;ar5--x
rpt #M-1
mvdd *ar3+,*ar2+
addm #M,*sp(4)
ld *ar2-,a
ld *sp(18),a
sub #1,a
stlm a,brc
rptb syn_filt_rep-1
mvdk *sp(5),ar4 ;ar4--a
mpy *ar5+,*ar4+,b
rpt #M-1
mas *ar4+,*ar2-,b
ld b,3,b
add #4000h,1,b
mvdk *sp(4),ar2
sth b,*ar2
addm #1,*sp(4)
syn_filt_rep:
mvdk *sp(17),ar4 ;ar4--y
stm #tmp+M,ar2
ld *sp(18),16,a
sub #1,16,a
sth a,*sp(0)
rpt *sp(0)
mvdd *ar2+,*ar4+
stm #M,ar0
ld *sp(20),a
bc syn_filt_nup,aeq
ld *ar4-0,a ;ar4--y[lg-M]
mvdk *sp(19),ar3 ;ar3--mem
rpt #M-1
mvdd *ar4+,*ar3+
syn_filt_nup:
frame 6
popm ar7
popm ar6
popm ar5
popm ar4
popm ar3
popm ar2
popm ar0
popm st1
popm st0
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;void Residu(
; Word16 a[], /* (i) Q12 : prediction coefficients */
; Word16 x[], /* (i) : speech (values x[-m..-1] are needed */
; Word16 y[], /* (o) : residual signal */
; Word16 lg /* (i) : size of filtering */
;)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
_Residu:
pshm st0
pshm st1
pshm ar0
pshm ar2
pshm ar3
pshm ar4
frame -1 ;*sp(0)--a
;*sp(7)--x,*sp(8)--y,*sp(9)--lg
ssbx sxm
ssbx ovm
ssbx frct
stl a,*sp(0)
mvdk *sp(8),ar4 ;ar4--y
ld *sp(9),a
sub #1,a
stlm a,brc
rptb residu_rep-1
mvdk *sp(7),ar2 ;ar2--&x[i]
mvdk *sp(0),ar3 ;ar3--a
mpy *ar2-,*ar3+,b
rpt #M-1
mac *ar3+,*ar2-,b
ld b,3,b
add #4000h,1,b
sth b,*ar4+
addm #1,*sp(7)
residu_rep:
popm ar4
popm ar3
popm ar2
popm ar0
popm st1
popm st0
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -