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

📄 fir2.c

📁 基于恩智浦dsp芯片的fir滤波源码
💻 C
字号:
#include <ops/custom_defs.h>

#define NROF_SAMPLES	400

void
initialize( char *a, char *b )
{
	int	i;
	
	for(i = 0; i < 8; i++)
		b[i] = i - 4;

	for(i = 0; i < 8; i++)
		a[i] = 0;                /* Prepend zeros */
		
	for(i = 8; i < NROF_SAMPLES; i++)
		a[i] = i - 24;           /* Actual data   */
		
	for(i = NROF_SAMPLES; i < NROF_SAMPLES + 8; i++)
		a[i] = 0;                /* Append zeros  */
}

void
unrolled_direct_convolution( char *a, char *b, int *c )
{
	int        k, j;

	for(k = 0; k < NROF_SAMPLES; k += 4) {
    
		c[0] = b[0]*a[0]  + b[1]*a[-1] + b[2]*a[-2] + b[3]*a[-3]
		     + b[4]*a[-4] + b[5]*a[-5] + b[6]*a[-6] + b[7]*a[-7];
		c[1] = b[0]*a[1]  + b[1]*a[0]  + b[2]*a[-1] + b[3]*a[-2]
		     + b[4]*a[-3] + b[5]*a[-4] + b[6]*a[-5] + b[7]*a[-6];
		c[2] = b[0]*a[2]  + b[1]*a[1]  + b[2]*a[0]  + b[3]*a[-1]
		     + b[4]*a[-2] + b[5]*a[-3] + b[6]*a[-4] + b[7]*a[-5];
		c[3] = b[0]*a[3]  + b[1]*a[2]  + b[2]*a[1]  + b[3]*a[0]
		     + b[4]*a[-1] + b[5]*a[-2] + b[6]*a[-3] + b[7]*a[-4];
		a += 4;
		c += 4;
	}
}

int 
main( void )
{
	char	a[8+NROF_SAMPLES], b[8];
	int 	c[NROF_SAMPLES];

	initialize( a, b );

	unrolled_direct_convolution( a + 8, b, c );  

	return 0;
}

⌨️ 快捷键说明

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