📄 wdf_ex3_asm.s43
字号:
/******************************************************************************
; Lattice Wave Digital Filter to perform Band-pass filtering
;
; Description: This code implements a 14th order Lattice Wave Digital Filter on
; the MSP430FG439. The filter response is Band-pass with the
; following specifications.
; Sampling frequency = 8000 Hz
; Lower stop-band edge frequency = 700 Hz
; Lower pass-band edge frequency = 950 Hz
; Lower pass-band ripple = 0.5 dB
; Lower stop-band attenuation = 50 dB
; Higher pass-band edge frequency = 1500 Hz
; Higher stop-band edge frequency = 1850 Hz
; Higher pass-band ripple = 0.5 dB
; Higher stop-band attenuation = 50 dB
; Filter type = Elliptic
;
;
; K. Venkat
; Texas Instruments Inc.
; August 2006
; Built with IAR Embedded Workbench Version: 3.41A
;*******************************************************************************/
public wdf_ex3
RSEG CODE
EXTERN delay0,delay1,delay2,delay3,delay4,delay5,delay6,delay7,delay8,
EXTERN delay11,delay12,delay13,output1, delay9,delay10,output2
wdf_ex3
; Filter 1 High Pass LWDF
; Top part of Filter 1
; Adaptor 0 Type 1 Alpha0=0.214536989729
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
sub.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
rra.w R13
sub.w R12,R13 ; X4=X3*2^-3-X
rra.w R13
rra.w R13
rra.w R13
add.w R12,R13 ; X5=X4*2^-3+X
rra.w R13
rra.w R13 ; Final output=X5*2^-2
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.124645154211
mov.w &delay3,R12
sub.w &delay4,R12 ; R12=P14
mov.w R12,R13
rra.w R13
rra.w R13
sub.w R12,R13 ; X1=X*2^-2-X
rra.w R13
rra.w R13
rra.w R13
rra.w R13
rra.w R13
rra.w R13
rra.w R13
rra.w R13
add.w R12,R13 ; X2=X1*2^-8+X
rra.w R13
rra.w R13
rra.w R13 ; Final output=X2*2^-3
add.w &delay4,R13
mov.w R13, &delay4 ; Delay4 updated with OUTP24
sub.w R12, R13 ; R13=OUTP14
mov.w R13, R14 ; R14=OUTP14
; Adaptor 3 Type 4 Alpha3=0.148774228233
sub.w R15,R13 ; R13=P13
mov.w R13,R12
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
add.w R12,R13 ; X4=X3*2^-2+X
rra.w R13
rra.w R13
add.w R12,R13 ; X5=X4*2^-2+X
rra.w R13
rra.w R13
rra.w R13 ; Final output=X5*2^-3
sub.w R14,R13 ; R13=OUTP23
mov.w R13, &delay3 ; Delay3 updated with OUTP23
sub.w R12, R13 ; R13=OUTP13
mov.w R13, R15 ; R15=OUTP13
rra.w R13 ; Divided by 2 as part of WDF algo
mov.w R13, &output1 ; Top section output sample stored in Output1
; Bottom part of Filter 1
; Adaptor 2 Type 1 Alpha2=0.067783504612
sub.w &delay2, &delay1
mov.w &delay1, R12 ; R12=P12
mov.w R12, R13
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
sub.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
rra.w R13
add.w R12,R13 ; X5=X4*2^-3+X
rra.w R13
rra.w R13
rra.w R13
rra.w R13 ; Final output=X5*2^-4
add.w &delay2, R13 ; R13=OUTP22
mov.w R13, &delay2 ; Delay2 updated with OUTP22
sub.w R12, R13 ; R13=OUTP12
mov.w R13, R15 ; R15=OUTP12
; Adaptor 1 Type 4 Alpha1=0.297020251677
sub.w R11, R13 ; R13=P11
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
rra.w R13
rra.w R13
rra.w R13
rra.w R13
rra.w R13
sub.w R12,R13 ; X2=X1*2^-7-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 ; Final output=X4*2^-2
sub.w R15, R13 ; R13=OUTP21
mov.w R13, &delay1 ; Delay1 updated with OUTP21
sub.w R12, R13 ; R13=OUTP11
mov.w R13, R14 ; R14=OUTP11
; Adaptor 6 Type 1 Alpha6=0.152259485819
mov.w &delay5, R13
mov.w &delay6, R12
sub.w R12, R13 ; R13=P16
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
rra.w R13
rra.w R13
rra.w R13
sub.w R12,R13 ; X2=X1*2^-5-X
rra.w R13
rra.w R13
rra.w R13
add.w R12,R13 ; X3=X2*2^-3+X
rra.w R13
rra.w R13
add.w R12,R13 ; X4=X3*2^-2+X
rra.w R13
rra.w R13
rra.w R13 ; Final output=X4*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.041755258515
sub.w R14, R13 ; R13=P15
mov.w R13, R12
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
sub.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
add.w R12,R13 ; X4=X3*2^-2+X
rra.w R13
rra.w R13
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -