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

📄 iir6bpcr.c

📁 "DIGITAL SIGNAL PROCESSING WITH C AND THE TMS32 0C30"一书的附带程序
💻 C
字号:
/*IIR6BPCR.C-REAL-TIME IIR BANDPASS FILTER IN C   */
#include "aiccom.c"    /*include AIC comm routines*/
#include "iir6coef.h"  /*coefficients file        */
#define VEC_ADDR (volatile int *) 0x00

float DLY[STAGES][2] = {0}; /*delay samples       */
int AICSEC[4] = {0x1428,0x1,0x4A96,0x67}; /*AIC config data*/
int data_in, data_out;

float IIR(int *IO_in, int *IO_out, int n, int len)
{
  int i, loop = 0;
  float dly, yn, input;

  while (loop < len)
  {
    asm("    IDLE   ");
    ++loop;
    input = *IO_in;   
    for (i = 0; i < n; i++)
      {
      dly = input - B[i][0] * DLY[i][0] - B[i][1] * DLY[i][1];
      yn = A[i][2] * DLY[i][1] + A[i][1] * DLY[i][0] + A[i][0] * dly;
      DLY[i][1] = DLY[i][0];
      DLY[i][0] = dly;
      input = yn;
      }
    *IO_out = yn;
  }
}

void c_int05()
{
  PBASE[0x48] = data_out << 2;
  data_in = PBASE[0x4C] << 16 >> 18;
}

main()
{
  #define length 345
  volatile int *INTVEC = VEC_ADDR;
  int *IO_OUTPUT, *IO_INPUT;
  IO_INPUT = &data_in;
  IO_OUTPUT = &data_out;
  INTVEC[5] = (volatile int) c_int05;
  AICSET_I();
  for (;;)  
    IIR((int *)IO_INPUT, (int *)IO_OUTPUT, STAGES, length);
}        
   

⌨️ 快捷键说明

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