📄 exp6d.c
字号:
/*
exp6d.c - Direct form II - IIR function in TMS320C55x assembly
*/
#define M 128 /* Number of samples per block */
#define Ns 2 /* Number of 2nd order sections */
#pragma DATA_SECTION(C, "iir_coef");
#pragma DATA_SECTION(w, "iir_data");
#pragma DATA_SECTION(out, "iir_out");
#pragma DATA_SECTION(in, "iir_in");
#pragma CODE_SECTION(main, "iir_code");
/* Low-pass IIR filter coefficients in Q14 format */
int C[Ns*5]={ /* i=section number */
/* A[i][1],A[i][2],B[i][2],B[i][0],B[i][1] */
-14187, 3505, 1624, 1624, 3249,
-18430, 9454, 1624, 1624, 3249};
/* IIR filter delay line:
w[]=w[i][n-1],w[i+1][n-1],...,w[i][n-2],w[i+1][n-2],... */
int w[Ns*2];
int out[M];
int in[M];
/* IIR filter function */
extern void iirform2(int*, unsigned int, int *, int *, unsigned int , int *);
/* Software signal generator */
extern void signal_gen2(int *, unsigned int, int);
void main(void)
{
unsigned int i;
int *ptr=&w[0];
/* Initialize IIR filter delay line and signal generator */
for (i=Ns*2; i>0; i--)
*ptr++ = 0;
signal_gen2(in,M,1);
/* IIR filter experiment start */
for (;;)
{
signal_gen2(in,M,0); /* Generate a block of samples */
iirform2(in,M,out,C,Ns,w); /* Filter a block of samples */
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -