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

📄 filter.c

📁 DSP系統設計和BIOS編程及應用實例-書籍光碟範例-第10章
💻 C
字号:
#include <stdlib.h>
#include "sine.h"
#include "coeff.cof"

#include "filter.h"

short mem1[COEFF],mem2[COEFF];

void ProcBlock(volatile short *input, volatile short *output, int size)
{
	short *buff;
	buff = (short *) malloc(size*sizeof(short));
	
	filter(input, buff,size,mem1,coeff,COEFF);
	MultSine(buff,size);
	filter(buff,output,size,mem2,coeff,COEFF);
	free(buff);
} 


void filter(volatile short *inp, volatile short *outp,int size, short *mem,const short *coef, const short order)
{
	int i,j;
	long acc;
	
 	for (i = 0; i < size; i++)
	{
		mem[order-1] = inp[i];
		acc = mem[0] * coef[0];
		
		for (j = 1; j < order; j++)
		{
			acc += mem[j] * coef[j];
			mem[j-1] = mem[j];
		}
		
		outp[i] = ((acc)>>16) & 0xfffe;
	}                  	 
} 


void MultSine(volatile short *buffer,int size)
{
    static int j;
    int i;
    for(i=0; i< size; i++)
    {
    	buffer[i] = (buffer[i] * sine[j++]) >> 12;
    	if(j>=80) j = 0; 
    }
}

⌨️ 快捷键说明

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