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

📄 filter.asm

📁 G.729在54X上的定点实现源代码.C++编程,可以直接下载运行,并且优化
💻 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 + -