基于56F8O13 DSP的FIR滤波器的设计
时间:11-27
来源:互联网
点击:
数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域。滤波的目的。根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。与IIR滤波器相比,FIR滤波器只有零点,除原点外.在z平面上没有极点,因此总是稳定的和可实现的;更重要的是,FIR滤波器在满足一定的对称条件下,可以获得严格的线性相位特性,这一点是IIR滤波器难以实现的。因此。它在高保真的信号处理.如数字音频、图像处理、数据传输、生物医学等领域得到广泛应用。
1 FIR滤波器基本结构
FIR滤波器的数学表达式为:
式中:N为FIR滤波器的抽头数;x(n)为第n时刻的输入样本;h(i)为FIR滤波器第i级抽头系数。
其相应的z变换为:
式中:z-i为N-1阶多项式。
普通的直接型FIR滤波器结构如图1所示。
在自适应处理、数据通信等领域中往往要求信号在传输过程中不能有明显的相位失真,FIR滤波器可以做到线性相位满足此要求。F1R滤波器实质上是一个分节的延迟线,把每一节的输出加权累加,得到滤波器的输出。对于FIR滤波器的单位脉冲响应h(i)只要满足以下2个条件之一,则为线性相位滤波器。
线性相位的FIR滤波器具有中心对称的特性,其对称中心在N/2处。
(2)由性能指标确定窗函数w(n)和窗口长度N
(3)求得实际滤波器的单位脉冲响应h(n)
(4)检验滤波器性能。
设计常用的窗函数有矩形窗、汉宁窗、海明窗、凯撒窗等。其中:海明窗的旁瓣峰值小于主瓣峰值的1%,99.963%的能量集中在主瓣内.且通过海明窗设计的FIR滤波器在较少的阶数下可以得到较小通带纹波,非常适合工程设计,所以本设计选择海明窗实现。
3 利用QEDesign Lite设计FIR滤波器
根据窗函数设计的FIR滤波器的单位脉冲响应.h(n)有多种辅助工具进行求取,如:MATLAB的FDATool、SPTool和NI的Digital Fliter Design Toolkit等,在此.我们使用了FreeScaleDSP开发环境Codewarrior8.O自带的QEDesignlite滤波器设计工具箱进行FIR滤波器单位脉冲响应h(n)的求解。
利用QE Design lite滤波器设计工具箱,可快速进行IIR滤波器、基于窗函数FIR滤波器和等纹波FIR滤波器的低通、高通、带通和带阻设计。并根据设计参数,自动生成滤波器的幅频响应、相频响应、群延时、冲击响应和单位阶跃响应,以及生成单位脉冲响应h(n)的*.h文件和该FIR滤波器使用示例C文件,以方便后续设计。其主要设计步骤如下:
(1)运行程序QEDesign lite,选择菜单项“DesignI FIRWindows Design……”:
(2)在弹出的“FIR(Windows)Design”窗体中,选择“lowpass”选项;
(3)在“Lowpass Filter”窗体中,输入FIR滤波器的设计指标:采样频率=20000 Hz、通带频率=5000 Hz、阻带频率=6000 Hz、通带纹波=O.01 dB和阻带纹波=40 dB.如图2所示;
(4)确定采用的窗函数类型及阶数(本例采用hamming窗.阶数为27阶);
(5)根据设定的FIR滤波器参数,即可得到该FIR滤波器的幅频响应图、对数幅频响应图、相频响应图、群延时图、冲击响应图和单位阶跃响应图,可直观的观察设计是否满足要求.如果不满足设计要求,可重复步骤3)、4),直至满足设计要求为止。本FIR滤波器的幅频响应图、对数幅频响应图见图3、图4;
(6)设计的FIR滤波器满足要求后,选择菜单项“Code-Gen|FreeScale|DPS56800/DPS56800E”,导出基于16位定点数的单位脉冲响应h(n)的*.h文件,用于后续的工程设计。
4 基于56F8013 DSP的设计实现
56F8013是FreeScale推出的基于56F800E内核的低价位、低功耗的16位DSP,它具有I2C、SPI、UART、ADC、QEI等外部接口,具有在片硬件调试接口,可进行32位整数、36位整数加分数运算,配合CodeWarrior开发环境非常适合于嵌入式开发。
Processor Expert(PE)是由捷克UNIS公司开发的针对FreeScale单片机和DSP的嵌入式软件开发包.它集成在CodeWarrior开发环境中。Processor Expert提供了连接、生成嵌入式系统的硬件、接口和算法的驱动,对CPU核、芯片集成接口、虚拟设备和纯算法进行了封装(该封装被称为“Embedded Beans”),并把这些功能变成属性、方法和事件,这与面向对象的程序设计方法是一样的。用户在进行程序设计时,通过调用Processor Expert提供的各种Bean,可以方便的对DSP内核、外部中断、DSP的片上外设及程序所需的各种通用算法进行设置.使用户只需关注整个设计的创造性部分,而不是花费大量时间让芯片正常工作,大大提高了生产率。本文的FIR滤波器的实现,就是基于Processor Expert的“DSP_Func_DFR”Bean和“DSP_MEM”Bean的。现将具体的设计过程描述如下:
进入CodeWarrior开发环境,选中菜单项“Processor Expertl| View| Bean Selector”,在弹出的“Bean Selector”窗口中,选中负责内存管理的“DSP_MEM”Bean和负责数字信号处理的“DSP_Func_DFR”Beafl加入工程文件,将“DSP_Func_DFR”Bean中的“dfrl6FIRCreate”、“dfrl6FIR”和“dfrl6FIRDestroy”方法加入主程序。修改主程序如下:
1 FIR滤波器基本结构
FIR滤波器的数学表达式为:
式中:N为FIR滤波器的抽头数;x(n)为第n时刻的输入样本;h(i)为FIR滤波器第i级抽头系数。
其相应的z变换为:
式中:z-i为N-1阶多项式。
普通的直接型FIR滤波器结构如图1所示。
在自适应处理、数据通信等领域中往往要求信号在传输过程中不能有明显的相位失真,FIR滤波器可以做到线性相位满足此要求。F1R滤波器实质上是一个分节的延迟线,把每一节的输出加权累加,得到滤波器的输出。对于FIR滤波器的单位脉冲响应h(i)只要满足以下2个条件之一,则为线性相位滤波器。
线性相位的FIR滤波器具有中心对称的特性,其对称中心在N/2处。
(2)由性能指标确定窗函数w(n)和窗口长度N
(3)求得实际滤波器的单位脉冲响应h(n)
(4)检验滤波器性能。
设计常用的窗函数有矩形窗、汉宁窗、海明窗、凯撒窗等。其中:海明窗的旁瓣峰值小于主瓣峰值的1%,99.963%的能量集中在主瓣内.且通过海明窗设计的FIR滤波器在较少的阶数下可以得到较小通带纹波,非常适合工程设计,所以本设计选择海明窗实现。
3 利用QEDesign Lite设计FIR滤波器
根据窗函数设计的FIR滤波器的单位脉冲响应.h(n)有多种辅助工具进行求取,如:MATLAB的FDATool、SPTool和NI的Digital Fliter Design Toolkit等,在此.我们使用了FreeScaleDSP开发环境Codewarrior8.O自带的QEDesignlite滤波器设计工具箱进行FIR滤波器单位脉冲响应h(n)的求解。
利用QE Design lite滤波器设计工具箱,可快速进行IIR滤波器、基于窗函数FIR滤波器和等纹波FIR滤波器的低通、高通、带通和带阻设计。并根据设计参数,自动生成滤波器的幅频响应、相频响应、群延时、冲击响应和单位阶跃响应,以及生成单位脉冲响应h(n)的*.h文件和该FIR滤波器使用示例C文件,以方便后续设计。其主要设计步骤如下:
(1)运行程序QEDesign lite,选择菜单项“DesignI FIRWindows Design……”:
(2)在弹出的“FIR(Windows)Design”窗体中,选择“lowpass”选项;
(3)在“Lowpass Filter”窗体中,输入FIR滤波器的设计指标:采样频率=20000 Hz、通带频率=5000 Hz、阻带频率=6000 Hz、通带纹波=O.01 dB和阻带纹波=40 dB.如图2所示;
(4)确定采用的窗函数类型及阶数(本例采用hamming窗.阶数为27阶);
(5)根据设定的FIR滤波器参数,即可得到该FIR滤波器的幅频响应图、对数幅频响应图、相频响应图、群延时图、冲击响应图和单位阶跃响应图,可直观的观察设计是否满足要求.如果不满足设计要求,可重复步骤3)、4),直至满足设计要求为止。本FIR滤波器的幅频响应图、对数幅频响应图见图3、图4;
(6)设计的FIR滤波器满足要求后,选择菜单项“Code-Gen|FreeScale|DPS56800/DPS56800E”,导出基于16位定点数的单位脉冲响应h(n)的*.h文件,用于后续的工程设计。
4 基于56F8013 DSP的设计实现
56F8013是FreeScale推出的基于56F800E内核的低价位、低功耗的16位DSP,它具有I2C、SPI、UART、ADC、QEI等外部接口,具有在片硬件调试接口,可进行32位整数、36位整数加分数运算,配合CodeWarrior开发环境非常适合于嵌入式开发。
Processor Expert(PE)是由捷克UNIS公司开发的针对FreeScale单片机和DSP的嵌入式软件开发包.它集成在CodeWarrior开发环境中。Processor Expert提供了连接、生成嵌入式系统的硬件、接口和算法的驱动,对CPU核、芯片集成接口、虚拟设备和纯算法进行了封装(该封装被称为“Embedded Beans”),并把这些功能变成属性、方法和事件,这与面向对象的程序设计方法是一样的。用户在进行程序设计时,通过调用Processor Expert提供的各种Bean,可以方便的对DSP内核、外部中断、DSP的片上外设及程序所需的各种通用算法进行设置.使用户只需关注整个设计的创造性部分,而不是花费大量时间让芯片正常工作,大大提高了生产率。本文的FIR滤波器的实现,就是基于Processor Expert的“DSP_Func_DFR”Bean和“DSP_MEM”Bean的。现将具体的设计过程描述如下:
进入CodeWarrior开发环境,选中菜单项“Processor Expertl| View| Bean Selector”,在弹出的“Bean Selector”窗口中,选中负责内存管理的“DSP_MEM”Bean和负责数字信号处理的“DSP_Func_DFR”Beafl加入工程文件,将“DSP_Func_DFR”Bean中的“dfrl6FIRCreate”、“dfrl6FIR”和“dfrl6FIRDestroy”方法加入主程序。修改主程序如下:
- 适合单片机实时处理的简单FIR滤波器设计(06-30)
- 基于FPGA的分布式算法FIR滤波器设计(11-12)
- 数字匹配滤波器的优化设计与FPGA实现(11-26)
- 手机中ESD和EMI干扰及其解决方案(07-06)
- 便携式设备的EMC和ESD设计(09-08)
- 基于AVR的数字滤波器滤除工频干扰的快速算法实现(07-17)