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

📄 iir16.lst

📁 TMS320F2812的滤波库及其测试程序
💻 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 + -