
Lab2_FIR幻灯片.ppt
8页如果与幅度响应相比,相位失真的重要性能是第二位的,则所设计的数字滤波器可以由需要较少存储空间、计算复杂程度较低、从而成本也较低的IIR滤波前来实现 如果在通带中要求线性相位及特定的幅度响应,例如调制解调器(Modem)、希尔伯特变换器、高保真音响系统等场合,则最好是使用有限冲激响应(FIR)滤波器来实现滤波器设计实验,滤波器设计,FIR滤波器的基本原理,上式中x(n)是最近(t=nT)的输入信号,x(n-k)是延时了k个取样周期后的输入信号,h(k)是第k个延时节的加权值(也就是滤波器系数),y(n)是时刻t=nT时的滤波器的输出信号 其中h(k)为滤波器的冲激响应FIR滤波器不断地对输入x样本x(n)延时z-1后,再做乘法累加,最后将滤波结果y(n)输出用线性缓冲区实现Z-1,用线性缓冲区实现N阶FIR滤波器时,需要在数据存储区中开辟一个具有N个单元的缓冲区,存放最新的N个输入样本 DSP计算每一个输出值,都需要读取这N个样本并进行N次乘法和累加 每当DSP读入一个样本后都将此样本向后移动,读完最后一个样本后,最前面的样本被推出缓冲区,输入最新样本至缓冲区顶部顶部,底部,线性缓冲区,,FIR滤波器的定点DSP实现,以下是用TMS320C2xx来编写的FIR滤波器的一个延时节的指令序列。
设是第5个延时节 LT X5 ;第5个样本装入到T寄存器 APAC ;将前一个积加给ACC DMOV X5 ;将样本沿延时线下移 MPY H5 ;乘系数 这个指令序列也可以缩短为 LTD X5 ;装入T寄存器,累加,下移 MPY H5 ;乘系数 这个序列中,LTD指令执行了LT、APAC及DMOV的功能混叠信号生成,f1=500; f2=2000; fs=10000;Ts=1/fs; N=128; fo=fopen('testdata.dat','w'); n=0:N-1; %对模拟信号进行采样,得到序列信号x(n) xn=5*sin(2*pi*f1*n*Ts)+2.5*cos(2*pi*f2*n*Ts); xn=xn.*4096; fprintf(fo,' .word %d\r\n',fix(xn)); fclose(fo);,滤波器系数生成,在 matlab 中设计一个11阶FIR数字低通滤波器(加矩形窗),截止频率为fc=1kHz ,采样频率为fs=10kHz 方法一:用Matlab语言设计FIR低通滤波器,求得其滤波器的系数,将滤波器的各个系数用214进行定标,并将其取整后转换成十六进制数。
这可以在matlab的命令窗口下输入“DH=dec2hex(fix(ha.*(2^14)))”获得,方法二:用FDATool设计FIR低通滤波器,求得其滤波器的系数,File-〉Export -〉Workspace,开始,存放滤波器系数于规定的单元中; 将存放N个样本的线性缓冲区清零,读输入信号的采样点到线性缓冲区顶部,同时将输入数据指针指向下一待处理的数据,x(k) → x(k+1) 即线性缓冲区由底向顶逐个更新,保存滤波结果至输出单元,结束,待滤波的样本点数 (128点)处理完成?,,,,,,,,,,,,否,是,用线性缓冲区实现FIR滤波器程序框图,。












