《FIR滤波器程序设计》由会员分享,可在线阅读,更多相关《FIR滤波器程序设计(16页珍藏版)》请在金锄头文库上搜索。
1、中文摘要21世纪是数字化的时代,随着信息处理技术的飞速发展,DSP(数字信号处理 器)技术逐渐发展成为一门主流技术, 它在电子信息、通信、软件无线电、自动 控制、仪表技术、信息家电等高科技领域得到了越来越广泛的应用。相对于模 拟滤波器,数字滤波器没有漂移,能够处理低频信号,频率响应特性可做成非常 接近于理想的特性,且精度可以达到很高,容易集成等,这些优势决定了数字滤 波器的应用越来越广泛,工程上常用它来做信号处理、数据传送和抑制干扰等。 同时 DSP 的出现和迅速发展也促进了数字滤波器的发展,并为数字滤波器的硬 件实现提供了更多的选择。本课题主要应用MATLAB软件设计FIR数字滤波器,并对所
2、设计的滤波器进 行仿真;应用DSP集成开发环境一CCS调试汇编程序,用TMS320C5402来实现了 FIR数字滤波。具体工作包括:对FIR数字滤波器的基本理论进行了分析和探讨; 采用 MATLAB 软件来学习数字滤波器的基本知识, 计算数字滤波器的系数,研究 算法的可行性,对FIR低通数字滤波器进行前期的设计和仿真;系统介绍了 TI公 司TMS320C54X系列数字信号处理器的硬件结构、性能特点和DSP的集成开发环 境CCS;应用DSP集成开发环境一CCS调试汇编程序,用TMS320C5402来实现了 FIR数字滤波。关键词:频率抽样,FIR滤波器,Matlab,TMS320C5402,CC
3、S,仿真1 设计任务和目的1.1 设计题目FIR 滤波器程序设计1.2 设计目的1)掌握DSP编程的过程和指令的使用;2)熟悉运用CCS集成开发环境进行仿真和TMS320C5402的基本功能和使用 方法;3)熟悉 FIR 滤波器的实现方法和设计过程。2 设计思路DSP 是一种实时、快速、特别适合于实现各种数字信号处理运算的 微处理器。由于它由具有丰富的硬件资源、改进的哈佛结构、高速数 据处理能力和强大的指令系统。数字滤波器的设计可分为5个独立的阶段:滤波器技术规范、系数计算、 实现结构、误差分析和滤波器实现。滤波器技术规范与应用有关,且应该包括 振幅和相位特性的规范。系数计算本质上就是求出满足
4、所期望的规范的h(n)值。计算FIR滤波器系 数最常用的方法有三种:窗口方法,频率抽样方法,最佳方法。窗口方法是最 容易的,但是缺乏灵活性,特别是当通带波纹和阻带波纹不同时更是如此。频 率抽样方法非常适合FIR滤波器的递归实现,频率抽样法也适合那些除了要求 标准频率选择性滤波器(低通、高通、带通和带阻)之外的滤波器。最佳方法 是最高效和灵活的一种设计方法。三中最常用的FIR滤波器结构是横向结构、 频率抽样结构和快速卷积结构。横向结构包含一个使用滤波器系数的直接卷积; 频率抽样结构直接同系数计算的频率抽样方法相联系。结构的选择与具体的应 用有关。此处选择横向结构。长字长的或者高阻带衰减的 FIR
5、 滤波器的性能可能会受到有限字长的影 响。例如,系数量化后他们的频率响应可能会发生变化。因而应当对这些滤波 器的特性进行检查以确保允许的合适的字长。在完成好前四步后,通常要考虑实现问题,以及考虑软件编程或选择结构的硬件实现。而我们主要考虑软件的实现过程。3 FIR滤波器设计步骤流程图开始停止重新设计结构重新计算重新制定规范硬件、软件的工程 实现+测试有限字长效应分析 和解决方法实现结构滤波器系数计算 *性能规范*图 2-1 FIR 滤波器设计步骤流程图4 软件流程图图 4-1 qgf.asm 程序流程5 设计部分5.1 硬件的整体设计和规划CPU选择TI公司的16位定点DSP,具体型号为TMS
6、320C5402是为实现低功 耗、高性能而专门设计的定点DSP芯片,其主要应用时无限通信系统等。TMS320C5X的主要特点包括:运算速度快,内部有一个算术逻辑单元,2个 累加器、 2个加法器、 1个乘法器、 1个桶形移位器、 4条内部总线和2个地址 产生器。内部还集成了维特比加速器,用于提高维特比编译码的速度。它是低 功耗方式,可以在3.3V或2.7V电压下工作,3个低功耗方式可以节省DSP的 功耗, TMS320C5402 特别适合于无线移动设备。5.2 FIR 滤波器的特点数字滤波器是由一系列滤波器系数定义的方程。这些方程构成数字滤波程 序部分,滤波程序接收原始数据,并且输出滤波后的数据
7、。这种程序的最大优 点在于滤波器的再设计不需要硬件方面的更改,只要简单地改变滤波器的系数 表即可完成滤波器特性的修改。数字滤波程序可在任何处理器上实现,但最有 效的是在专门设计用来进行高速滤波或其他DSP处理的硬件上实现。DSP硬件 可使非常复杂的任务在极短的时间内完成,因此它经常作为大计算量的系统核 心。DSP 具的有较大灵活性,可以进行编程或再编程来执行许多功能而不需要 修改硬件,这或许是DSP系统最主要的特征,同时拥有优良的性能,DSP可以 执行许多模拟系统不可能完成的性能,例如可以实现线性相位响应,复杂的自 适应滤波算法可以利用DSP技术来实现。5.2 FIR 滤波器的结构选择首先对其
8、结构进行选择,结构的选择取决于多种因素和折中考虑,其中包 含实现的容易程度,也就是软件和硬件的复杂度,求冲击响应或传递函数系数 的难易程度,以及它们对系数量化的相对敏感度。在实际中,系数描述的精度 受限于所用处理器的字长。使用有限的位数来表示描述每个系数趋向于将零从 期望的位置移出,这会导致频率响应上的偏差。响应中偏差的大小取决于位数 和所用的结构。横向结构非常易于编程,且可由大多数 DSP 芯片有效的实现,因为这些芯 片有针对横向FIR滤波器的指令。直接构造是实现非递归滤波器的最常用方法, 它的最主要的优点是其简单性,要求的器件最少,且数据的存储不复杂。串联 结构对系统误差和量化噪声不敏感,
9、但是系数值需要做更大的努力才能求出, 且程序设计不适合 DSP 芯片的结构。快速卷积结构能提供出比他方法更好的计 算优势,但需要有效的 FFT。对于窄带频率选择滤波器来说,频率抽样结构比等价的横向结构计算更有 效,在此滤波器中,仅有相对少量的频率抽样值不为零,因此每输出一个值仅 需非常少的乘法。然而,频率抽样结构可能要求更为复杂的编程,因为在其差 分方程中固有的对数据的复杂索引。为了避免稳定问题,频率抽样结构的零点 和极点应该位于单位圆稍内一点。当要求 FIR 滤波器递归实现时,这种结构是 一种自然的选择。这种结构易于模块化,并有利于并行处理。总之,除非规范 要求采用频率抽样结构,或者需要计算
10、数据的谱采用快速卷积,那么采用横向 结构不失为一个好的选择。采用横向结构,对于这种结构,滤波器的输入x(n)与输出y(n)之间的关系 如下:下面两个公式刻画出基本的FIR滤波器N 1y(n)=h(i)x(n 一 i)(51)i=0对式(4-1)进行Z变换,整理后可以得到FIR滤波器的传递函数为:5-2)Y( z)X (z)图 5-1 FIR 滤波器结构图式中h(i)(i=O丄,N-1),是滤波器的冲击响应系数。符号z-1代表一个抽样 延迟或单位时间延迟。对于横向结构,每一个输出抽样值y(n)的计算要求:N-1 个存储位置来保存N-1个输入抽样值;N个存储位置来保存N个系数;N个乘法 器;N-1
11、个加法器。H(z)是滤波器的传递函数,N是滤波器长度,即滤波器系数 的数目。式(5-1 )是FIR时域差分方程,它使用非递归形式描述了 FIR滤波器:当前 输出信号y(n)只是过去和当前的输入值x(n)的函数。那么做x(n-1)到x(n-N) 的加权和。当FIR滤波器利用这种形式实现时,即直接根据(5-1)式进行计算, 那么滤波器总是稳定的。式(5-2)是滤波器的传递函数,它提供了分析滤波器的一种方法,例如评估 频率响应。 FIR 滤波算法实际上是一种乘法累加运算。它不断输入样本,经延 时z -1,作乘法累加,再输出滤波结果y(n)。系统的单位冲激响应h(n)在有限 个n值处不为零;系统函数H
12、(z )在|z|0处收敛,在|z|0处只有零点,有限z 平面只有零点,而全部极点都在 z=0 处。、结构主要是非递归结构,FIR滤波器最主要的特点是没有反馈回路,因此 它是无条件稳定系统。它的单位脉冲响应h(n)是一个有限长序列,脉冲响应顾 名思义,滤波器的脉冲响应就是滤波器对脉冲输入的响应;换句话讲,当滤波 器的输入为单位脉冲时,滤波器的输出就是单位脉冲响应。脉冲响应反映了滤 波器的基本特性,由于所有的数字信号可以由脉冲函数构成,所以脉冲响应可 用来求各种输入时的输出。如果h(n)是实数,且满足偶对称或奇对称的条件, 即 h(n)=h(N-1-n) 或 h(n)=-h(N-1-n) ,则滤波
13、器具有线性相位特性的充要条件。 对于非递归FIR滤波器,系数的存储空间和算术运算次数几乎减少了 2倍,对 于递归滤波器系数转变为简单整数,提高了处理速度。在线性相位滤波器中, 所有频率分量通过滤波器时会遇到同样大小的延迟,即没有相位失真。5.3 FIR 滤波器的延迟用线性缓冲区法实现在这里用线性缓冲区法实现z-1,它的优点是新老数据在存储器中存放的 位置直接明了,算法便于理解,以幅度特性随意设计的同时,保证精确、严格 的线性相位,由于FIR滤波器的单位脉冲响应h(n)是有限长序列,因此FIR滤 波器没有不稳定问题,FIR滤波器一般为非递归结构,因此在有限精度运算下, 不会出现递归型结构中的极限
14、震荡等不稳定现象,误差较小,可以用 FFT 实现 过滤信号,可大大提高运算效率。其特点是:对于N级的FIR滤波器,在数据 存储区中开辟一个称之为滑窗的 N 个单元的缓冲区,存放最新的 N 个输入样 本。 从最老的样本开始,每读一个样本后,将此样本向下移位。读完最后一个 样本后,输入最新样本至缓冲区的顶部。以上过程,可以用N=6的线性缓冲区存储器图来说明,如图5-2所示。图 中线性缓冲区顶部是存储器的低地址单元,底部为高地址单元。参看图 5-2(a), 当第一次执行y(n)=工h(i)x(n - i)时,由ARx指向线性缓冲区的底部,并开 始取数、运算。每次乘法累加运算之后,还要将该数据向下(高
15、地址)移位。求 得y(n)以后,从I/O 口输入一个新数据x(n+1)至线性缓冲区的顶部单元,再将5ARx指向底部单元,开始第二次执行y(n + 1) = Y h(i)x(n - i),如图5-2(b) 所示。之后,再计算y(n+2)依次循环下去J数据存储数据存储器数据存储器(a)(b)(c)图 5-2 N=6 的线性缓冲区存储器图5.4 误差问题因 为在 用定 点 DSP 实现 时, 所有 的数 据都 是定 长的 ,运 算也 都是 定点运算,因而会产生有限字长效应。所产生的误差主要包括:系数 量化引起的误差以及运算过程中的舍入误差,还有溢出误差。任何一 种近似方法得到得滤波器系数通常精确到小
16、数点的几位。系统量化误差:为了实现滤波器,滤波器系数必须有固定的位数 表示并且这个固定的位数常常是由使用的处理器的字长决定的。滤波 器 中我 们使 用 16 位 DSP 处理 机,则滤 波器 系数 就由 16 位 字长 来表 示 然而这样做会自动的引入误差,这种误差使得有限字长滤波器的频率 响应偏离期望的响应。在某些情况下,这种偏离意味着初始的规范不 再满足。系数量化在本质上将未量化的滤波器变换成一套新的规范, 由于它会使阻带或通带波纹衰减,然后用新规范来求系数。这种变换 必须是系数量化后仍满足原来的规范。舍 入 误 差 :滤 波 器 的 输 出 是 由 h(i) 和 x(n-i) 的 乘 积 和 得 到 的。每 一个相乘后,积包