?? iir16.lst
字號:
TMS320C2000 COFF Assembler PC Version 3.06 Tue Apr 06 19:12:16 2004
Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
iir16.asm PAGE 1
1 ;========================================================================
2 ;
3 ; File Name : iir16.asm
4 ;
5 ; Originator : Advanced Embeeded Control (AEC)
6 ; Texas Instruments Inc.
7 ;
8 ; Description : This file contain source code for 16 bit IIR implementation
9 ;
10 ; Date : 25/12/2001
11 ;======================================================================
12 ;
13 ;
14 ; Routine Name : Generic Function
15 ; Routine Type : C Callable
16 ;
17 ; Description :
18 ; void IIR5BIQ16_calc(IIR5BIQ16_handle)
19 ;
20 ; This routine implements the IIR filter using cacade biquad structure
21 ;======================================================================
22 ;typedef struct {
23 ; void (*init)(void *); /* Ptr to Init funtion */
24 ; void (*calc)(void *); /* Ptr to calc fn */
25 ; int *coeff_ptr; /* Pointer to Filter coefficient */
26 ; int *dbuffer_ptr; /* Delay buffer ptr */
27 ; int nbiq; /* No of biquad */
28 ; int input; /* Latest Input sample */
29 ; int isf; /* Input Scale Factor */
30 ; int qfmat; /* Coefficients Q Format */
31 ; int output; /* Filter Output */
32 ; }IIR5BIQ16;
33 ;=====================================================================
34
35 ; Module definition for external referance
36 .def _IIR5BIQ16_calc
37 .def _IIR5BIQ16_init
38
39 00000000 _IIR5BIQ16_init:
40 00000000 DC06 ADDB XAR4,#6 ; XAR4->dbuffer_ptr
41 00000001 C4C4 MOVL XAR6,*+XAR4[0] ; XAR6=dbuffer_ptr
42 00000002 5603 MOV ACC,*+XAR4[2]<<1; ACC=2*nbiq
00000003 01D4
43 00000004 1901 SUB ACC,#1 ; ACC=(2*nbiq)-1
44 00000005 58A9 MOVZ AR0,AL ; AR0=(2*nbiq)-1
45 00000006 07C4 ADDL ACC,*XAR4 ; ACC=dbuffer_ptr + (2*nbiq) - 1
46 00000007 1EC4 MOVL *XAR4,ACC ; XAR4->dbuffer_ptr,
47 ; dbuffer_ptr=dbuffer_ptr + (2*nbiq) - 1
48
49 00000008 2BDC MOV *+XAR4[3],#0 ; input=0
50 00000009 0210 MOVB ACC,#16
51 0000000a AEEC SUB ACC,*+XAR4[5]
52 0000000b 96EC MOV *+XAR4[5],AL ; qfmat=16-qfmat
53 0000000c 2BF4 MOV *+XAR4[6],#0 ; output=0
54
TMS320C2000 COFF Assembler PC Version 3.06 Tue Apr 06 19:12:16 2004
Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
iir16.asm PAGE 2
55 0000000d F7A0 RPT AR0
56 0000000e 2B86 || MOV *XAR6++,#0
57
58 0000000f 0006 LRETR
59
60
61 00000010 _IIR5BIQ16_calc:
62 00000010 3B03 SETC SXM,OVM
63 00000011 5633 ZAPA ; Zero the ACC, P registers and OVC counter
64
65 00000012 DC04 ADDB XAR4,#4 ; XAR4->coeff_ptr
66 00000013 C584 MOVL XAR7,*XAR4++ ; XAR4->dbuffer_ptr, XAR7=coeff_ptr->a21
67 00000014 C484 MOVL XAR6,*XAR4++ ; XAR4->order, XAR6=dbuffer_ptr->d1(n-2)
68 00000015 5884 MOVZ AR0,*XAR4++ ; XAR4->input, AR0=nbiq
69
70 00000016 2D84 MOV T,*XAR4++ ; XAR4->isf, T=input
71 00000017 1284 MPY ACC,T,*XAR4++ ; XAR4->qfmat, ACC=input*isf
72 00000018 DE01 ADDB XAR6,#1
73 00000019 D881 SUBB XAR0,#1 ; AR0=nbiq-1
74
75 ; kth Biquad Computation, where k=1:nbiq
76 0000001a biqd:
77 0000001a 2D8E MOV T,*--XAR6 ; T=dk(n-2)
78 0000001b 3387 MPY P,T,*XAR7++ ; P= dk(n-2)*a2k
79 0000001c 2D8E MOV T,*--XAR6 ; T=dk(n-1)
80 0000001d 1787 MPYA P,T,*XAR7++ ; ACC=input*isf + dk(n-2)*a2k
81 ; P=dk(n-1)*a1k
82
83 0000001e 2DCE MOV T,*+XAR6[1] ; T=dk(n-2)
84 0000001f 1787 MPYA P,T,*XAR7++ ; ACC=input*isf + dk(n-2)*a2k + dk(n-1)*a1k
85 ; P=dk(n-2)*b2k
86
87 00000020 2DC4 MOV T,*XAR4 ; T=qfmat
88 00000021 563B LSLL ACC,T ; ACC=input*isf + dk(n-2)*a2k + dk(n-1)*a1k (Q15)
89
90 00000022 5DA8 MOVZ AR5,AH ; AR5=dk(n)=input*isf + dk(n-2)*a2k + dk(n-1)*a1k (Q15)
91
92 00000023 FF20 MOV ACC,#0 ; ACC=0
00000024 0000
93 00000025 A7C6 MOVAD T,*XAR6 ; T=dk(n-1), dk(n-2)=dk(n-1), ACC=dk(n-2)*b2k
94 00000026 3387 MPY P,T,*XAR7++ ; P=dk(n-1)*b1k,
95 00000027 2DA5 MOV T,AR5 ; T=dk(n)
96 00000028 1787 MPYA P,T,*XAR7++ ; ACC=dk(n-1)*b1k + dk(n-2)*b2k, P=dk(n)*b0k
97 00000029 07AB ADDL ACC,P
98 0000002a 21C6 MOV *XAR6,T ; dk(n-1)=dk(n)
99 0000002b 0008 BANZ biqd,AR0--
0000002c FFEF
100
101 0000002d 2D84 MOV T,*XAR4++ ; T=qfmat, XAR4->output
102 0000002e 563B LSLL ACC,T
103 0000002f FF52 ROR ACC
104 00000030 97C4 MOV *XAR4,AH ; output=Filtered Output in Q14 format
105 00000031 2902 CLRC OVM
106 00000032 0006 LRETR ; !!!Do not shift it left to store in Q15 format
107 ; If you do so, and if the output is >1, then it will
TMS320C2000 COFF Assembler PC Version 3.06 Tue Apr 06 19:12:16 2004
Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
iir16.asm PAGE 3
108 ; become negative..instead of the most desirable Saturation
109
110
No Assembly Errors, No Assembly Warnings
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -