FIR数字滤波器的算法实现与习题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

FIR数字滤波器的算法实现与习题

[例3] 窗函数设计法实现一个低通数字滤波器,要求通带截止频率10kHz,阻带截止频率22kHz,阻带衰减大于75dB,采样频率f s=75kHz。

过渡带宽度=通带截止频率+过渡带宽度/2=10kHz+12/2kHz=16 kHz

数字截止频率

Ω1=2π×f1/ f s=2π×16/50=0.64π

理想低通滤波器单位脉冲响应

h1(n)=sin(nΩ1)/n/π=sin(0.64πn)/n/π

选择布莱克曼窗,滤波器长度为

N=5.98 f s过渡带宽度=5.98×50/12=24.9

取N=25,布莱克曼窗函数为

w(n)=0.42-0.5cos(2πn/24)+0.08cos(4πn/24)

滤波器单位脉冲响应为

h(n)= h1(n)w(n) n≤N-1

h(n)=0 n< N-1

根据上式计算出,然后将单位脉冲响应移位为因果序列,完成的滤波器差分方程为y(n)=0.001x(n-2) -0.002x(n-3) -0.002x(n-4)+0.01x(n-5)-0.009x(n-6)-0.018x(n-7)+0.049x(n-8) -0.02x(n-10)+0.11x(n-11)+0.28x(n-11)+0.64x(n-13)+0.28x(n-14)-0.11x(n-15)-0.02x(n-16)-0.049x( n-17)-0.018x(n-18)-0.009x(n-19)+0.01x(n-20)-0.002x(n-21)-0.002x(n-22)+0.001x(n-23) 数字滤波器程序如下:

#include “math.h”//数学函数头文件

#define N 25 //FIR阶数N

#define PI 3.1415926

float InputWave( );//输入波形

float FIR();// FIR滤波函数声明

float fHn[N]={0.0,0.0,0.001,-0.002,-0.002,0.01,-0.009,//滤波器系数-0.018,0.049,-0.02,0.11,0.28,0.64,0.28,

-0.11,-0.02,0.049,-0.018,-0.009,0.01,

-0.002,-0.002,0.001,0.0,0.0};

float fXn[N]={0.0};

float fInput,fOutput;

float fSignal1,fSignal2;

float fStepSignal1,fStepSignal2;

float f2PI;//2*PI

int i;

float FIN[256],FOUT[256];//输入信号与输出信号

i int nIn,nOut;

main(void)

{

nIn=0;nOut=0;

f2PI =2*PI;

fSignal1=0.0;

fSignal2=PI*0.1;

fStepSignal1=2*PI/30;

fStepSignal2=2*PI*1.4;

while(1)

{

fInput=InputWave();

FIN[nIn]= fInput;

nIn++;nIn%=256;

fOutput=FIR();//调用HR滤波函数

FOUT[nOut]= fOutput;

nOut++;

if( nOut>=256) nOut=0;

}

}

float InputWave() //输入波形函数

{

for(i=N-1;i>0;i--) fXn[i]=fXn[i-1];

fXn[0]=sin(fSignal1)+cos(fSignal2)/6.0;

fSignal1+ = fStepSignal1;

if( fSignal1>=f2PI) fSignal1- = f2PI;

fSignal2+ = fStepSignal2;

if( fSignal2>=f2PI) fSignal2- = f2PI;

retum( fXn[0] );

float FIR( ) //FIR滤波函数

{

float fSum;

fSum=0;

for( i=0;i

return(fSum);

}

思考题与习题

1.DSP芯片有哪些主要特点?

2.简述典型DSP应用系统的构成。

3.简述DSP应用系统的一般设计开发过程。如何选择DSP芯片? 4.常用的DSP芯片有哪些?

5.DSP控制器的应用领域有哪些?

6.哈佛结构与冯·诺依曼结构计算机存储器的组成有何不同? 7.5416 DSP引脚可以分为哪几类?其中的XMP/MC引脚有什么作用? 8.简述5416 DSP的内部结构主要部分的功能。

9.简述5416 DSP的片内存储器的组成、地址与用途。

10.如何由外部晶振或外部时钟频率确定CPU时钟频率?

11.什么是DSP的低功耗模式?

12.如何使用看门狗定时器?

13.C54x DSP的通用I/O接口有哪些引脚?有哪些功能?如何使用?

14.片内外设寄存器的地址是如何安排的?如何访问?

15.C54x DSP的中断是如何组织的?有哪些中断源?

16.响应中断后,如何找到中断服务程序入口地址?

17.DSP复位后从哪里开始执行程序?

18.辅助寄存器有哪些?其作用是什么?

19.状态寄存器ST0、ST1的作用是什么?

20.C54x DSP有哪些寻址方式?

21.直接寻址方式中,数据存储单元的地址是如何形成的?

22.访问片内外设寄存器可以采用哪些寻址方式?

23.C54x DSP有哪些类型的指令?

24.DSP应用系统的软件开发流程是什么?

25.采用CCS集成开发环境进行软件开发调试的步骤是什么?

26.说明.text段、.data段、.bss段分别包含什么内容?

27.链接命令文件包括哪些主要内容?如何编写?

28.DSP C语言有哪些特点?

29.如何访问片内外设寄存器的某些位?

30.如何直接访问存储器单元?

31.C语言与汇编语言混合编程有哪些方法?

32.DSP的硬件仿真器(Emulator)和软件仿真器(Simulator)有什么异同点? 33.C54x DSP的串行通信接口有哪些特点?

34.异步串行通信的数据格式有哪些?如何设置?

35.如何设置异步串行通信的波特率?

36.如何设计DSP与PC串行通信的硬件电路与软件?

37.C54xDSP的最小系统包括哪些具体电路?

38.如何设计DSP的复位电路?

39.如何设计DSP的时钟电路?

40.如何用DSP C语言编程实现常用的FFT与FIR信号处理算法?

相关文档
最新文档