📄 iir_bwt.asm
字号:
;===========================================================================
; File Name: IIR_BWT.asm
;
; Module Name: IIR_BWT4
;
; Initialization Routine: IIR_BWT4_INIT
;
;
; Description:This is a four_order digital filter
;
; Target dependency: C2xx core only
;
;
;=====================================================================================
; .ref IIR_BWT4, IIR_BWT4_INIT ;function call
; .ref Xin_IIR ;Inputs
; .ref Yout_IIR ;Outputs
;===========================================================================
;Module definitions for external reference.
.def IIR_BWT4, IIR_BWT4_INIT ;function call
.def Xin_IIR ;Inputs
.def Yout_IIR ;Outputs
;===========================================================================
;Global vars
Xin_IIR .usect "IIR_BWT4" ,1
Yout_IIR .usect "IIR_BWT4" ,1
H0 .usect "IIR_BWT4" ,1
H1 .usect "IIR_BWT4" ,1
H2 .usect "IIR_BWT4" ,1
H3 .usect "IIR_BWT4" ,1
H4 .usect "IIR_BWT4" ,1
H5 .usect "IIR_BWT4" ,1
H6 .usect "IIR_BWT4" ,1
H7 .usect "IIR_BWT4" ,1
X0 .usect "IIR_BWT4" ,1
X1 .usect "IIR_BWT4" ,1
X2 .usect "IIR_BWT4" ,1
X3 .usect "IIR_BWT4" ,1
X4 .usect "IIR_BWT4" ,1
X5 .usect "IIR_BWT4" ,1
X6 .usect "IIR_BWT4" ,1
X7 .usect "IIR_BWT4" ,1
X8 .usect "IIR_BWT4" ,1
X9 .usect "IIR_BWT4" ,1
X10 .usect "IIR_BWT4" ,1
X11 .usect "IIR_BWT4" ,1
X12 .usect "IIR_BWT4" ,1
X13 .usect "IIR_BWT4" ,1
X14 .usect "IIR_BWT4" ,1
X15 .usect "IIR_BWT4" ,1
X16 .usect "IIR_BWT4" ,1
WAY .usect "IIR_BWT4" ,1
Y0 .usect "IIR_BWT4" ,1
Y1 .usect "IIR_BWT4" ,1
Y2 .usect "IIR_BWT4" ,1
Y3 .usect "IIR_BWT4" ,1
Y4 .usect "IIR_BWT4" ,1
Y5 .usect "IIR_BWT4" ,1
Y6 .usect "IIR_BWT4" ,1
Y7 .usect "IIR_BWT4" ,1
Y8 .usect "IIR_BWT4" ,1
Y9 .usect "IIR_BWT4" ,1
Y10 .usect "IIR_BWT4" ,1
Y11 .usect "IIR_BWT4" ,1
Y12 .usect "IIR_BWT4" ,1
Y13 .usect "IIR_BWT4" ,1
Y14 .usect "IIR_BWT4" ,1
Y15 .usect "IIR_BWT4" ,1
Y16 .usect "IIR_BWT4" ,1
COUNTERD .usect "IIR_BWT4" ,1
COUNTERQ .usect "IIR_BWT4" ,1
SUMD .usect "IIR_BWT4" ,1
SUMQ .usect "IIR_BWT4" ,1
;===============
IIR_BWT4_INIT:
;===============
LDP #Xin_IIR
SPLK #0,Xin_IIR
SPLK #0,Yout_IIR
SPLK #0,X0
SPLK #0,X1
SPLK #0,X2
SPLK #0,X3
SPLK #0,X4
SPLK #0,X5
SPLK #0,X6
SPLK #0,X7
SPLK #0,X8
SPLK #0,X10
SPLK #0,X11
SPLK #0,X12
SPLK #0,X13
SPLK #0,X14
SPLK #0,X9
SPLK #0,X15
SPLK #0,X16
SPLK #0,Y0
SPLK #0,Y1
SPLK #0,Y2
SPLK #0,Y3
SPLK #0,Y4
SPLK #0,Y5
SPLK #0,Y6
SPLK #0,Y7
SPLK #0,Y8
SPLK #0,Y10
SPLK #0,Y11
SPLK #0,Y12
SPLK #0,Y13
SPLK #0,Y14
SPLK #0,Y9
SPLK #0,Y15
SPLK #0,Y16
SPLK #321,H0
SPLK #478,H1
SPLK #931,H2
SPLK #1593,H3
SPLK #2356,H4
SPLK #3083,H5
SPLK #3654,H6
SPLK #3968,H7
SPLK #0,WAY
SPLK #0,COUNTERD
SPLK #0,COUNTERQ
SPLK #0,SUMD
SPLK #0,SUMQ
RET
;===========================================================================
; Routine Name: IIR_BWT4
;===========================================================================
IIR_BWT4:
SETC SXM ; Sign extension mode
SETC OVM ; Overflow mode
SPM 1 ; SPM set for Q15 multiplication
; SPM 0
LDP #Xin_IIR
LACC WAY
BCND FIR,EQ
SUB #1
SACL WAY ;no product shift, acc = Q30
LACC COUNTERD
SUB #7
BCND DD1,LT
SPLK #0,COUNTERD
LACC Xin_IIR
SACL X0
LACC #0
LT X15
MPY H0
LTD X14
MPY H1
LTD X13
MPY H2
LTD X12
MPY H3
LTD X11
MPY H4
LTD X10
MPY H5
LTD X9
MPY H6
LTD X8
MPY H7
LTD X7
MPY H7
LTD X6
MPY H6
LTD X5
MPY H5
LTD X4
MPY H4
LTD X3
MPY H3
LTD X2
MPY H2
LTD X1
MPY H1
LTD X0
MPY H0
APAC
SACH Yout_IIR
SACH SUMD
RET
DD1 LACC COUNTERD
ADD #1
SACL COUNTERD
LACC SUMD
SACL Yout_IIR
RET
FIR ADD #1
SACL WAY ;no product shift, acc = Q30
LACC COUNTERQ
SUB #7
BCND QQ1,LT
SPLK #0,COUNTERQ
LACC Xin_IIR
SACL Y0
LACC #0
LT Y15
MPY H0
LTD Y14
MPY H1
LTD Y13
MPY H2
LTD Y12
MPY H3
LTD Y11
MPY H4
LTD Y10
MPY H5
LTD Y9
MPY H6
LTD Y8
MPY H7
LTD Y7
MPY H7
LTD Y6
MPY H6
LTD Y5
MPY H5
LTD Y4
MPY H4
LTD Y3
MPY H3
LTD Y2
MPY H2
LTD Y1
MPY H1
LTD Y0
MPY H0
APAC
SACH Yout_IIR
SACH SUMQ
RET
QQ1 LACC COUNTERQ
ADD #1
SACL COUNTERQ
LACC SUMQ
SACL Yout_IIR
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -