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

📄 wdf_ex2_asm.s43

📁 Wave Digital Filtering Using the MSP430
💻 S43
字号:
/******************************************************************************
;   Lattice Wave Digital Filter to perform High Pass filtering
;
;   Description: This code implements a 11th order Lattice Wave Digital Filter on 
;                the MSP430FG439. The filter response is Low Pass with the 
;                following specifications. 
;                Sampling frequency       = 8000 Hz
;                Pass-band edge frequency = 1100 Hz
;	         Stop-band edge frequency = 600 Hz
;	         Pass-band ripple         = 1 dB
;	         Stop-band attenuation    = 50 dB
;	         Filter type 		  = Butterworth
;
;   K. Venkat
;   Texas Instruments Inc.
;   August 2006
;   Built with IAR Embedded Workbench Version: 3.41A
;*******************************************************************************/
        public wdf_ex2
        
	RSEG CODE
        EXTERN  delay0,delay1,delay2,delay3,delay4,delay5,delay6,delay7,delay8,
        EXTERN  output, delay9,delay10
wdf_ex2
        ; Adaptor 0     Type 1      Alpha0=0.418147516
        
        mov.w     R12, R11          ; R11=Input sample
        sub.w     &delay0,R12       ; R12=P10
        mov.w     R12,R13
        inv.w     R13
        add.w     #1, R13
        rra.w     R13
        rra.w     R13
        sub.w     R12,R13           ; X1=-X*2^-2-X
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X2=X1*2^-2+X
        rra.w     R13
        rra.w     R13
        rra.w     R13
        rra.w     R13
        sub.w     R12,R13           ; X3=X2*2^-4-X
        rra.w     R13
        rra.w     R13
        sub.w     R12,R13           ; X4=X3*2^-2-X
        rra.w     R13
        rra.w     R13
        sub.w     R12,R13           ; X5=X4*2^-2-X
        rra.w     R13
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X6=X5*2^-3+X
        rra.w     R13               ; Final output=X6*2^-1 
        add.w     &delay0,R13
        mov.w     R13, &delay0      ; delay0 updated with OUTP20
        sub.w     R12,R13             
        mov.w     R13,R15           ; R15=OUTP10
        
        ; Adaptor 4     Type 1      Alpha4=0.130624215
    
        mov.w     &delay3,R12
        sub.w     &delay4,R12       ; R12=P14
        mov.w     R12,R13   
        inv.w     R13
        add.w     #1, R13
        rra.w     R13
        rra.w     R13
        rra.w     R13
        sub.w     R12,R13           ; X1=-X*2^-3-X
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X2=X1*2^-2+X
        rra.w     R13
        rra.w     R13
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X3=X2*2^-4+X
        rra.w     R13
        rra.w     R13
        rra.w     R13               ; Final output=X3*2^-3 
        add.w     &delay4,R13         
        mov.w     R13, &delay4      ; delay0 updated with OUTP24
        sub.w     R12, R13          ; R13=OUTP14
        mov.w     R13, R14          ; R14=OUTP14
        
        ; Adaptor 3   Type 3        Alpha3=0.412721971
        
        mov.w     R15,R12
        
        sub.w     R14,R12           ; R12=P13
        mov.w     R12,R13
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X1=X*2^-2+X
        rra.w     R13
        rra.w     R13
        sub.w     R12,R13           ; X2=X1*2^-2-X
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X3=X2*2^-2+X
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X4=X3*2^-2+X
        rra.w     R13
        rra.w     R13
        sub.w     R12,R13           ; X5=X4*2^-2-X
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X6=X5*2^-2+X
        rra.w     R13               ; Final output=X6*2^-1 
        mov.w     R13,R12
        sub.w     R15,R13           ; R13=OUTP23
        mov.w     R13, &delay3      ; delay3 updated with OUTP23
        sub.w     R14,R12           ; R12=OUTP13
        mov.w     R12,R15           ; R15=OUTP13
        
        ; Adaptor 8   Type 1        Alpha8=0.130624215
        
        mov.w     &delay7, R12
        sub.w     &delay8, R12      ; R12=P18
        mov.w     R12,R13           
        inv.w     R13
        add.w     #1, R13
        rra.w     R13
        rra.w     R13
        rra.w     R13
        sub.w     R12,R13           ; X1=-X*2^-3-X
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X2=X1*2^-2+X
        rra.w     R13
        rra.w     R13
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X3=X2*2^-4+X
        rra.w     R13
        rra.w     R13
        rra.w     R13               ; Final output=X3*2^-3 
        add.w     &delay8, R13
        mov.w     R13, &delay8      ; delay8 updated with OUTP28
        sub.w     R12, R13
        mov.w     R13, R14
       
        
        ; Adaptor 7   Type 4        Alpha7=0.340631744
        
        sub.w     R15,R13           ; R13=P17
        mov.w     R13, R12
        inv.w     R13
        add.w     #1, R13
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X1=-X*2^-2+X
        rra.w     R13
        rra.w     R13
        sub.w     R12,R13           ; X2=X1*2^-2-X
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X3=X2*2^-2+X
        rra.w     R13
        rra.w     R13
        sub.w     R12,R13           ; X4=X3*2^-2-X
        rra.w     R13
        rra.w     R13
        rra.w     R13
        sub.w     R12,R13           ; X5=X4*2^-3-X
        rra.w     R13
        rra.w     R13
        sub.w     R12,R13           ; X6=X5*2^-2-X
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X7=X6*2^-2+X  
        rra.w     R13               ; Final output=X7*2^-1 
        sub.w     R14, R13          ; R13=OUTP27
        mov.w     R13, &delay7      ; delay7 updated with OUTP27
        sub.w     R12, R13          ; R13=OUTP17
        rra.w     R13               ; Divided by 2 as part of WDF algo
        mov.w     R13, &output      ; Top section sample stored in Output 
        
        ; Adaptor 2   Type 1        Alpha2=0.130624215
        
        sub.w     &delay2, &delay1
        mov.w     &delay1, R12      ; R12=P12
        mov.w     R12, R13
        inv.w     R13
        add.w     #1, R13
        rra.w     R13
        rra.w     R13
        rra.w     R13
        sub.w     R12,R13           ; X1=-X*2^-3-X  
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X2=X1*2^-2+X
        rra.w     R13
        rra.w     R13
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X3=X2*2^-4+X
        rra.w     R13
        rra.w     R13
        rra.w     R13               ; Final output=X3*2^-3 
        add.w     &delay2, R13      ; R13=OUTP22
        mov.w     R13, &delay2      ; delay2 updated with OUTP22
        sub.w     R12, R13          ; R13=OUTP12
        
        ; Adaptor 1   Type 3        Alpha1=0.356727908
        
        mov.w     R11, R12
        mov.w     R13, R14
        sub.w     R13, R12          ; R12=P11
        mov.w     R12, R13        
        rra.w     R13
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X1=X*2^-3+X
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X2=X1*2^-2+X
        rra.w     R13
        rra.w     R13
        sub.w     R12,R13           ; X3=X2*2^-2-X
        rra.w     R13
        rra.w     R13
        sub.w     R12,R13           ; X4=X3*2^-2-X
        rra.w     R13
        rra.w     R13
        rra.w     R13
        sub.w     R12,R13           ; X5=X4*2^-3-X
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X6=X5*2^-2+X
        rra.w     R13               ; Final output=X6*2^-1 
        mov.w     R13, R12
        sub.w     R11, R13          ; R13=OUTP21
        mov.w     R13, &delay1      ; delay1 updated with OUTP21
        sub.w     R14, R12          ; R12=OUTP11
        mov.w     R12, R14          ; R14=OUTP11
        
        ; Adaptor 6   Type 1        Alpha6=0.130624215
        
        mov.w     &delay5, R13  
        mov.w     &delay6, R12       
        sub.w     R12, R13          ; R13=P16
        mov.w     R13, R12
        inv.w     R13
        add.w     #1, R13
        rra.w     R13
        rra.w     R13
        rra.w     R13
        sub.w     R12,R13           ; X1=-X*2^-3-X
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X2=X1*2^-2+X
        rra.w     R13
        rra.w     R13
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X3=X2*2^-4+X
        rra.w     R13
        rra.w     R13
        rra.w     R13               ; Final output=X3*2^-3 
        
        add.w     &delay6, R13      ; R13=OUTP26
        mov.w     R13, &delay6      ; delay6 updated with OUTP26
        sub.w     R12, R13          ; R13=OUTP16
        mov.w     R13,R15           ; R15=OUTP16  
        
        ; Adaptor 5   Type 4        Alpha5=0.488969979
    
        sub.w     R14, R13          ; R13=P15
        mov.w     R13, R12
        rra.w     R13
        rra.w     R13
        sub.w     R12,R13           ; X1=X*2^-2-X
        rra.w     R13
        rra.w     R13
        sub.w     R12,R13           ; X2=X1*2^-2-X
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X3=X2*2^-2+X
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X4=X3*2^-2+X
        rra.w     R13
        rra.w     R13
        sub.w     R12,R13           ; X5=X4*2^-2-X
        rra.w     R13
        rra.w     R13
        rra.w     R13
        rra.w     R13
        rra.w     R13               
        add.w     R12,R13           ; X6=X5*2^-5+X
        rra.w     R13               ; Final output=X6*2^-1 
        sub.w     R15, R13          ; R13=OUTP25
        mov.w     R13, &delay5      ; delay5 updated with OUTP25
        sub.w     R12, R13          ; R13=OUTP15
        mov.w     R13, R14          ; R14=OUTP15
        
        
        ; Adaptor 10   Type 1       Alpha10=0.130624215
        
        mov.w     &delay9, R13   
        mov.w     &delay10, R12       
        sub.w     R12, R13          ; R13=P110
        mov.w     R13, R12
        inv.w     R13
        add.w     #1, R13 
        rra.w     R13
        rra.w     R13
        rra.w     R13
        sub.w     R12,R13           ; X1=-X*2^-3-X
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X2=X1*2^-2+X
        rra.w     R13
        rra.w     R13
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X3=X2*2^-4+X
        rra.w     R13
        rra.w     R13 
        rra.w     R13               ; Final output=X3*2^-3 
        add.w     &delay10, R13     ; R13=OUTP210
        mov.w     R13, &delay10     ; delay10 updated with OUTP210
        sub.w     R12, R13          ; R13=OUTP110
        mov.w     R13,R15           ; R15=OUTP110 
        
        ; Adaptor 9   Type 4        Alpha9=0.131408852
        
        sub.w     R14, R13          ; R13=P19
        mov.w     R13, R12
        rra.w     R13
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X1=X*2^-3+X
        rra.w     R13
        rra.w     R13
        sub.w     R12,R13           ; X2=X1*2^-2-X
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X3=X2*2^-2+X
        rra.w     R13
        rra.w     R13
        rra.w     R13
        rra.w     R13
        add.w     R12,R13           ; X4=X3*2^-4+X
        rra.w     R13
        rra.w     R13
        rra.w     R13               ; Final output=X3*2^-3 
        
        sub.w     R15, R13          ; R13=OUTP29
        mov.w     R13, &delay9      ; delay9 updated with OUTP29
        sub.w     R12, R13          ; R13=OUTP19
        rra.w     R13               ; Divided by 2 as part of WDF algo
        ; add.w     R13, &output    ; Enable this line for LPF, disable otherwise
        sub.w     R13, &output      ; Enable this line if HPF is desired, disable 
                                    ; otherwise
        ret
        
      end 

⌨️ 快捷键说明

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