📄 iir_fixpt_dsplib32.c
字号:
/*********************************************************************
* iir_fixpt_dsplib32.c- C program for IIR filtering (direct-form II)
* using C5400 DSP Lib in Section 7.7.7
**********************************************************************
* System configuration:
*
* in(n) |----------------| out(n)
* ---->| Bandpass filter|----->
* |----------------|
*
*********************************************************************/
#include "math.h"
#include "stdio.h"
#include "tms320.h"
#include "dsplib.h"
#include "input3a.h" // for using iircas4
short i;
short oflag; // overflow flag
DATA gain=17;
DATA x1[300];
void main(void)
{
asm(" STM #0, SWWSR");
/* clear */
for (i=0;i<NX;i++) r[i] =0; // clear output buffer (optional)
for (i=0; i<3*NBIQ; i++) dbuffer[i] = 0; // clear delay buffer (a must)
for (i=0;i<NX;i++) x1[i] = (DATA)(((long)(DATA)x[i]*(long)(DATA)gain)>>15);
/* compute */
/* (i)300 samples/block
oflag=iir32(x1,h,r,&dp,NBIQ, NX); */
/* (ii)75 samples/block
if (NX >= 4)
{
oflag=iir32(x1,h,r,&dp,NBIQ,NX/4);
oflag=iir32(&x1[NX/4],h,&r[NX/4],&dp,NBIQ,NX/4);
oflag=iir32(&x1[NX/2],h,&r[NX/2],&dp,NBIQ,NX/4);
oflag=iir32(&x1[(3*NX)/4],h,&r[(3*NX)/4],&dp,NBIQ,NX/4);
} */
/* (iii) sample mode */
for (i=0; i<NX; i++)
{
oflag=iir32(&x1[i],h,&r[i],&dp,NBIQ,1);
}
for (i=0;i<NX;i++) r[i] = r[i]*8;
/*
if (oflag != 0)
{
exit(-1);
} */
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -