




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于dsp的fir滤波器的设计与实现摘 要dsp技术一般指将dsp 处理器用于完成数字信号处理的方法与技术。目前的dsp芯片以其强大的数据处理功能在通信和其他信号处理领域得到广泛注意并已成为开发应用的热点技术。许多领域对于数字信号处理器的应用都是围绕美国德州仪器所开发的dsp处理器来进行的。dsp芯片是一种特别适合于进行数字信号处理运算的微处理器。主要应用是实时快速的实现各种数字信号处理算法,如卷积及各种变换等。其中利用dsp来实现数字滤波器就是很重要的一种应用,本文深入研究基于美国德州仪器公司(ti)tms320c5410 dsp芯片的滤波器系统软件实现方法,用窗口设计法实现fir滤波器,给
2、出了matlab仿真结果,并在以ti tms320c5410为微处理器的dsk上实现,实验结果表明滤波结果效果良好,达到了预期的性能指标,用时间抽取法实现的fft/ ifft算法,介绍了自适应滤波器的基本原理及应用,并对lms算法进行了深入的研究。 关键词:dsp;tms320c5410;fir滤波器;fft/ifft;自适应滤波器目 录1绪 论31.1引言31.2课题背景及研究意义41.2.1课题背景41.2.2研究意义41.3国内外相关领域的研究51.4主要研究内容62dsp及其开发环境72.1.1dsp系统的构成72.1.3 dsp系统硬件电路图82.2ti dsp介绍92.3ccs开发
3、环境102.3.1 ccs集成开发环境113fir滤波器的设计133.1fir滤波器的基本理论133.1.1fir滤波器的特点133.2fir滤波器的常规设计方法143.2.1窗函数法143.2.3chebyshev逼近法163.3fir滤波器的matlab实现173.3.1 带通滤波器的matlab实现173.3.2 低通滤波器的matlab实现194fir滤波器的应用及其dsp实现214.1fft/ifft算法程序及应用214.1.1fft设计方法21 4.1.2fft算法的实现224.1.3fft算法的仿真和测试结果244.2fir滤波器的dsp的实现254.2.1fir滤波器的实现方法
4、254.2.2fir滤波器的软件设计及其调试26参考文献31附录a matlab程序32附录b fft的dsp实现程序351绪 论1.1引言随着信息时代和数字世界的到来,数字信号处理已成为如今一门极其重要的学科和技术领域。数字信号处理在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。数字信号处理(dsp)包括两重含义:数字信号处理技术(digital signal processing)和数字信号处理器(digital signal processor)。数字信号处理(dsp)是利用计算机或专用处理设备,以数值计算的方法、对信号进行采集、滤波、增强、
5、压缩、估值和识别等加工处理,借以达到提取信息和便于应用的目的,其应用范围涉及几乎所有的工程技术领域。在数字信号处理的应用中,数字滤波器很重要而且得到了广泛的应用。按照数字滤波器的特性,它可以被分为线性与非线性、因果与非因果、无限长冲击响应(iir)与有限长冲击响应(fir)等等。其中,线性时不变的数字滤波器是最基本的类型;而由于数字系统可以对延时器加以利用,因此可以引入一定程度的非因果性,获得比传统的因果滤波器更灵活强大的特性;iir 滤波器的特征是具有无限持续时间冲激响应,这种滤波器一般需要用递归模型来实现,因而有时也称之为递归滤波器,而fir滤波器的冲激响应只能延续一定时间,在工程实际中可
6、以采用递归的方式实现,也可以采用非递归的方式实现,但其结构主要还是是非递归结构,没有输出到输入的反馈,并且fir滤波器很容易获得严格的线性相位特性,避免被处理信号产生相位失真,而线性相位体现在时域中仅仅是h(n)在时间上的延迟,这个特点在图像信号处理、数据传输等波形传递系统中是非常重要的,且不会发生阻塞现象,能避免强信号淹没弱信号,因此特别适合信号强弱相差悬殊的情况。相对于iir滤波器,fir滤波器有着易于实现和系统绝对稳定的优势,因此得到广泛的应用;对于时变系统滤波器的研究则导致了以卡尔曼滤波为代表的自适应滤波理论的产生。自适应滤波即利用前一时刻已获得的滤波器参数等结果,自动地调节(更新)现
7、时刻的滤波器参数,以适应信号和噪声未知的统计特性,或者随时间变化的统计特性,从而实现最优滤波。几种主要的自适应滤波器为:最小均方(lms)自适应滤波器、递推最小二乘(rls)自适应滤波器、格型自适应滤波器、无限冲击响应(iir)自适应滤波器。而自适应去噪电路是信号处理领域一个简单应用,一个被噪声污染的信号借助于相关噪声可以把信号提取出来,而噪声不断变化,为了得到较清晰的语音信号必须采用自适应去噪技术,随噪声变化进行自适应滤波.滤波器自动调整它们的系数。 目前fir滤波器的实现方法大致可分为三种:利用单片通用数字滤波器集成电路、dsp器件和可编程逻辑器件实现。单片通用数字滤波器使用方便,但由于字
8、长和阶数的规格较少,不能完全满足实际需要,使用以串行运算为主导的通用dsp芯片实现要简单,是一种实时、快速、特别适合于实现各种数字信号处理运算的微处理器,借助于通用数字计算机按滤波器的设计算法编出程序进行数字滤波计算。由于它具有丰富的硬件资源、改进的哈佛结构、高速数据处理能力和强大的指令系统而在通信、航空、航天、雷达、工业控制、网络及家用电器等各个领域得到广泛应用。1.2课题背景及研究意义1.2.1课题背景数字信号处理就是用数字信号处理器(dsp)来实现各种算法,由于具有精度高、灵活性强等优点,已广泛应用在数字图像处理、数字通信、数字音响、声纳、雷达等领域。数字滤波技术又是进行数字信号处理的最
9、基本手段之一,它是对数字输人信号进行运算,产数字输出信号,以改善信号品质,提取有用信息,或者把组合在一起的多个信号分量分离开来为目的。在信号处理领域中,对于信号处理的实时性、快速性的要求越来越高,因此在许多信息处理过程中,如对信号的过滤、检测、预测等,都要广泛地用到滤波器。其中数字滤波器具有稳定性高、精度高、设计灵活、实现方便等许多突出的优点,避免了模拟滤波器所无法克服的电压漂移、温度漂移和噪声等问题,因而随着数字技术的发展,用数字技术实现滤波器的功能越来越受到人们的注意和广泛的应用。而有限冲激响应(fir)滤波器能在设计任意幅频特性的同时保证严格的线性相位特性,在示否音、数据传输中应用非常广
10、泛。1.2.2研究意义用可编程dsp芯片实现数字滤波可通过修改滤波器的参数十分方便地改变滤波器的特性。因此,我们有必要对滤波器的设计方法进行研究,理解其工作原理,优化设计方法,设计开发稳定性好的滤波器系统。我们将通过dsp设计平台,实现较为重要的fir和自适应滤波器系统。从而通过本课题的研究,掌握滤波器的设计技术,为通信、信号处理等领域实用化数字滤波器设计提供技术准备。本科题的研究,将为今后设计以dsp为核心部件的嵌入式系统集成提供技术准备,这不仅具有重要的理论意义,同时还具有重要的实际意义。1.3国内外相关领域的研究20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而
11、生,并得到了迅猛的发展。当时还没有dsp,数字信号处理只能依靠mpu来完成。但mpu(微处理器)的速度无法满足高速实时的要求。因此数字信号处理技术多是停留在理论上,得不到广泛的应用,但这为dsp的诞生打下了基础。70年代至80年代初是dsp发展的第二阶段。70年代初,有人提出了dsp的理论和算法基础。但是直到1978,世界上第一个世界上第一枚dsp才诞生,它是由1978ami公司发布的s2811。1979年美国intel公司发布的商用可编程器件2920是dsp芯片的一个主要里程碑;1980年nec公司推出的pd7720是第一个具有乘法器的商用dsp芯片。美国德州仪器公司texas instru
12、ments也于1982年推出了其第一代dsp芯片tms32010及其系列产品,它们都是基于nmos工艺。此时的dsp运行速度较以前的mpu有了较大的提高,但由于制造工艺所限,体积和功耗都比较大,内部资源较少,且价格昂贵。80年代中期直到现在是dsp得到了蓬勃发展并广泛应用的时期。80年代中期,随着大规模集成电路技术尤其是cmos技术的发展,基于cmos工艺的dsp应运而生,体积功耗都大大减少,而存储容量和运算速度都得到成倍提高,成为语音处理、图像硬件处理技术的基础;80年代后期,dsp运算速度进一步提高,应用范围逐步扩大到通信、计算机领域。90年代直到现在,dsp发展最快,此时的dsp集成度极
13、高,体积、功耗进一步减少,内部资源更是成倍增加,而价格却进一步下降。此时,dsp芯片不仅在通信、计算机领域大显身手,而且已扩大到人们的学习、工作和生活的各个方面。生产dsp 器件的公司也不断壮大,目前,市场占有率前四名依次为:texas instruments、 lucent 、analog device、motorola。在所有生产dsp的公司中,ti可谓一枝独秀,它是世界上最大的dsp供应商,ti系列的dsp也是公认的最成功的dsp。其dsp市场份额占全世界份额近50%。其产品覆盖了高、中、低端几乎所以市场,广泛应用于各种领域。自从在1982年成功推出了其第一代dsp tms32010及其
14、系列产品tms32011、tms320c10/c14/c15等,ti相继推出了第二代dsp tms32020、tms320c25/c26/c28,第三代dsp tms320c30/c31/c32,第四代dsp tms320c40/c44,第五代dsp tms3205x/c54x/c55x及目前速度最快的第六代dsp tms320c62x/c67x等等。dsp器件应用面从起初的局限于军工,航空航天等军事领域,扩展到今天的诸多电子行业及消费类电子产品中。在ti公司的 dsp 产品中c1x、c2x、c2xx、c5xx、c54x、c62x等系列是定点运算指令系统的dsp;c3x、c4x、c67x等系列
15、是浮点运算指令系统的dsp;av7100、av7110等系列是用于视频、音频领域的专用数字压缩产品。1.4主要研究内容本课题是基于ti公司近年推出的高性能定点dsp tms320c5410设计滤波器系统,如:有限冲击响应滤波器(fir)。本次课题的主要任务,就是掌握dsp芯片开发技术,完成如下工作:1、用窗函数法实现fir滤波器,通过调用四种窗口函数,截取不同的带通与低通滤波原型,满足以下性能要求:带通滤波器:下阻带边缘:,;下通带边缘:,上通带边缘:,;上阻带边缘:, 低通滤波器:,;,2、用时间抽取法实现fft/ifft算法,通过此算法,对信号进行频域分析、频域处理;3、自适应滤波器是目前
16、数字滤波器领域中最为活跃的分支,讨论采用经过改进的lms(最小圴方误差)算法实现自适应滤波器。 4、研究dsp的结构特点,了解ti公司的tms3205410 dsp器件,掌握dsp系统的构成及软硬件设计方法和ccs软件的调试方法;并以ti公司的tms3205410 dsp为核心处理器,在dsk上实现fir滤波器系统。 本论文共分为五个部分,第一章为绪论部分,介绍dsp及其滤波器的发展现状;第二章详细介绍dsp的特点、性能指标、软件开发工具、指令系统及硬件结构;第三章介绍了fir滤波器的设计方法,并详细阐述了用窗口设计方法设计fir滤波器及matlab实现;第四章介绍fir滤波器的应用及其实现;
17、第五章介绍自适应滤波器基本理论、算法及其应用。其中,三、四章是本论文的核心部分。2dsp及其开发环境2.1dsp系统2.1.1dsp系统的构成一个典型的 dsp 系统如图2.1示。图2.1 典型的dsp系统图2.1是一个用dsp做信号处理的典型框图。由于dsp是用来对数字信号进行处理的,所以首先必须将输入的模拟信号变换为数字信号。于是先对输入模拟信号进行调整,输出的模拟信号经过a/d变换后变成dsp可以处理的数字信号,dsp根据实际需要对其进行相应的处理,如fft、卷积等;处理得到的结果仍然是数字信号,可以直接通过相应通信接口将它传输出去,或者对它进行d/a变换将其转换为模拟采样值,最后再经过
18、内插和平滑滤波就得到了连续的模拟波形模拟信号。当然,图中的有些环节并不是必需的。如a/d转换,如果输入的是数字信号,就可以直接交给dsp进行运算。2.1.2dsp系统的特点及设计过程由于数字信号处理系统是以数字信号处理理论为基础,所以具有数字信号处理的全部优点:(1)接口方便 dsp 系统与其它以数字技术为基础的系统或设备都是相互兼容的,比模拟系统与这些系统接口要容易的多。(2)编程方便 dsp 系统中的可编程dsp芯片可以使设计人员在开发过程中灵活方便的进行修改和升级,可以将c语言与汇编语言结合使用。(3)具有高速性 dsp系统的运行较高,最新的dsp芯片运行速度高达10gmips以上。(4
19、)稳定性好dsp 系统以数字处理为基础, 受周围环境,如噪声、温度等的影响小、可靠性高;(5)精度高 例如16位数字系统可以达到10-5的精度;(6)可重复性好 模拟系统的性能受元件参数性能变化影响大,而数字系统基本不受影响,更便于测试、调试和大规模生产。(7)集成方便 dsp系统中的数字部件有高度的规范性,便于大规模生产。当然dsp也存在一定的缺点。例如,对于一些简单的信号处理任务,如与模拟交换线的电话接口,若采用dsp则使成本增加。另外,dsp 系统中的高速时钟通常在几十兆赫,可能带来高频干扰和电磁泄漏等问题, 而且dsp 的功率消耗在系统中也是较大的。此外,dsp技术发展得很快,数学知识
20、要求多,开发和调试工具还很不完善。虽然dsp系统还存在一些缺点,但是随着近两年来 dsp 技术突飞猛进的发展,成本的下降,很多问题都得到了缓解。其突出的优点已经使其在通信、语音、图像、雷达、生物医学、工业控制、仪器仪表等许多领域得到越来越广泛的应用。一般来说dsp的设计过程应遵循一定的设计流程,如图2.2示。dsp应用定义系统性能指标硬件调试选择dsp芯片软件编程硬件设计系统集成软件调试系统测试和调试图2.2 dsp基本设计流程2.1.3 dsp系统硬件电路图根据使用dsp芯片的相关原则,以及芯片手册具体决定未用端子是接上拉电阻还是悬空。可以得出dsp数字滤波器的整体硬件电路连线图,如图2.3
21、所示 图2.3 dsp系统硬件电路图2.2ti dsp介绍ti公司dsp种类多,品种齐全,适合各种需要。目前,使用较为广泛的主要有三个系列:c2000,c5000和c6000。其他系列产品应用较少或已经淘汰。每个系列又有多种dsp可供选择。同一系列的dsp具有相同的内核、相同或兼容的汇编指令集;它们之间的差别是具有不同大小的片内存储器、不同的片内外设和外部接口等,工作电压和速度也有所区别。以上3大系列dsp实现功能的侧重点不同,也就是说应用领域有所不同:(1)c2000系列是16位定点dsp。它是一个控制器系列,主要应用于工业控制领域,它除了具有一个dsp内核外,还有大量的片内外设资源,如a/
22、d、定时器、各种同步和异步串口、看门狗、can总线接口等;加上其价格低廉,速度更高,可靠性更强,可以取代传统单片机。内部具有flash,方便固化程序,而其他系列dsp都没有内部flash。(2)c5000系列dsp是16位定点低功耗dsp,性价比极高,主要应用于无线通信系统及手持式通讯产品,如手机,pda和gps等。c5000又分为c54x和c55x两个系列。相对c2000系列来说,其内部存储更大,运行速度更快,更适合执行较为复杂的数字信号处理任务,但控制功能相对较弱。一般由核心电压和i/o电压两种电压供电。核心电压较低,所以功耗很低,且体积很小,方便集成。(3)c6000系列是32位的dsp
23、系列。在ti的所有系列dsp中运行速度最快。其中c62xx是定点dsp,而c64xx和c67xx是浮点dsp,它主要应用于需要大量快速运算的场合,如数字视频处理、无线基站等。由于速度很高,所以功耗也很大。2.2.1c54x芯片在本设计中使用的dsp是tms320vc5410。它属于ti c5000系列中的c54x系列,正如前面所说,同一系列的dsp具有相同的内核、相同或兼容的汇编指令集,差别仅在于内存储器的大小,片内外设等等,所以就首先介绍一下c54系列dsp普遍具有的特点和性能。54x具有改进的哈佛结构,使其处理能力达到最大。分开的程序空间和地址空间提供了高度的并行性,可以同时访问程序指令和
24、数据,例如三次读操作和一次写操作可以在一个周期内完成。带并行存储的指令和具有特殊应用的指令充分利用了这种结构。这种并行性支持一套强大的算术运算、逻辑运算和位操作运算,所以使得这些运算可以在单个机器周期内完成。而且54x的运行机制还支持中断处理、重复操作和函数调用等等。对于任意通用可编程芯片来说,一般都具备以下几个部分:(1)内部存储器:主要用来存储程序、执行程序、存储数据等;(2)中央处理单元(cpu):用来实现各种运算功能;(3)片内外设:用来实现一些特定功能,如时钟发生器、硬件定时器等等;(4)外部总线接口:用来和其他芯片接口,协同工作;(5)通信接口:用来从外围芯片获得数据或者将处理完的
25、数据传输出去;(6)内部总线:用来连接芯片中不同的单元。也就是说,以上各个部分的通信是通过内部总县来完成的。2.3.ccs开发环境本节将介绍ccs code composer studio 的基本开发环境、软件开发过程、ccs组件。ccs 提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,能够加速开发进程,提高工作效率。2.3.1 ccs概述ccs 全称是 code composer studio 它提供了基本的代码生成工具,具有一定的调试、分析能力,在ccs下的程序开发过程如图2.4示。图2.4程序开发过程ccs 包括:1、ccs代码生成工具2、ccs
26、集成开发环境ide3、dsp/bios插件程序和api rtdx插件,主机接口和api等。下面将着重介绍前两项。2.3.1 ccs集成开发环境调试dsp目标程序,它主要由几个主要的窗口组成:工程组显示窗口、程序内容显示窗口、编辑信息提示窗口和主要工具栏。另外,在编辑过程中 还可以显示诸如存储器观察窗口、变量监视框、图形显示框等调试界面,他们为程序编写调试提供多种手段为软件开发提供了极大的方便。图 2.5 就是基本编辑界面。图2.5 ccs基本编辑界面在利用ccs编程的过程中,不可避免的要遇到如何将程序变量分配到内存中去的问题。因为,即使 dsp 的存储空间比较大,速度也十分快,但是如果内存空间
27、分配不当的话,还是会出现空间不够行速度下降,甚至程序跑飞的情况,这样会时程序调试起来十分麻烦。所以,一定要分配好内存空间ccs提供了两种分配空间的方法:利用cmd文件或rcp文件分配空间,其中cmd 文件是纯文本格式的描述性的空间分配方式, 它的优点是程序员对空间的可控制性较高,可以将不同的块分配到指定的地址,并规定长度。但它对于初学者来说,要求对c5410的内存空间的分配有较清楚的认识,否则容易将数据分配到不该分配的地方,引起程序运行的冲突,甚至程序跑飞。所以,一般在编程过程中,使用 rcp 文件对程序进行内存分rcp文件全称是 recipe 文件,这是一种图形化界面的内存分配文件。对于一个
28、新生成的工程组rcp文件的生成方法是:选择ccs菜单上的tools项,选择linker configuration项,将分配方式改为use the visual linker之后直接编译,编译信息提示窗口中会显示出错信息,提示找不到rcp文件,双击提示ccs会自动弹出rcp生成向导,按照要求选择rcp模板,就会生成这个工程对应的rcp文件,双击生成的rcp文件,通过visual linker连接器可以打开这个文件。当程序中新增加了变量后,在rcp文件中会出现not yet placed项,只要将其下的文件夹,根据类型拖动到run_view下的相应的数据存储器或程序存储器即可。还可以选择用何种类
29、型的存储器空间装载,通过观察存储空间以使用的状况自行分配空间,所以十分灵活,并且不会出现空间重叠的现象,避免了程序跑飞。3fir滤波器的设计3.1fir滤波器的基本理论3.1.1fir滤波器的特点数字滤波器的功能,就是把输入序列通过一定的运算变换成输出序列。可以用两种方法来实现数字滤波器:种方法是采用通用计算机,利用计算机的存储器、运算器和控制器把滤波器所要完成的运算编成程序通过计算机来执行,也就是采用计算机软件来实现;另一种方法是设计专用的数字硬件(通常称之为数字信号处理器)。数字滤波器的实现方法是多种多样的,其中比较常用到的是无限长脉冲响应滤波器 iir和有限长脉冲响应滤波器fir两种,另
30、外还有维纳滤波器、自适应滤波器等,但是在一般通信领域,尤其是信号传输领域,在一个信号的发送与接收端都是发出或接收一路信号。所以,前两种滤波器还是现在滤波器设计的主要方面,例如在线谱分析、基音检测、线性预测编码等方面都有着广泛的应用。 本来在计算量相等的情况下,iir数字滤波器比fir滤波器的幅频特性优越,频率选择性也好,但是,它有着致命的缺点,相位特性不好控制。它的相位特性f(w) = argh()是使频率产生严重的非线性的原因,这种与的非线性关系,使数字滤波器与模拟滤波器在响应与频率的对应关系上发生了畸变。如果需要线性相位,就必须用全通网络进行复杂的相位校正,但是,在对程序运行周期数要求十分
31、严格的dsp处理中加上一个全通均衡器是十分浪费资源的。另外,即使加上全通均衡器,对于因果的iir滤波器,仍将得不到线性的相位。在现代电子系统中,如图像处理、数据传输等波形传递系统中都越来越多的要求信道具有线性的相位特性。在这方面 fir滤波器具有独到的优点,它可以在幅度特性随意设计的同时,保证精确、严格的线性相位,因此这类滤波器应用很广泛。3.1.2fir滤波器的基本结构 数字滤波是将输入的信号序列,按规定的算法进行处理,从而得到所期望的输出序列。一个线性位移不变系统的输出序列y(n)和输入x(n)之间的关系,应满足常系数线性差分方程,见公式3.1, (3.1)其中,x(n)为输入序列,y(n
32、)为输出序列,为滤波器系数,n是滤波器的阶数。若上式中所有的均为零,则有fir滤波器的差分方程为: (3.2)对上式进行z变换得到fir滤波器的传递函数为: (3.3)由上式可以看出,h(z)是的n-1次多项式,它在z平面内有n-1个零点,同时在原点处有n-1个重极点。n阶滤波器通常采用n个延迟单元、n个加法器与n+1个乘法器,取图3-1 中(a)、(b)两种结构。图3.1 fir滤波器的一般结构因为fir滤波器的单位抽样响应是有限长的,所以它永远是稳定的。另外,若对 h(n)提出一些约束条件,那么可以很容易地使 h(z)具有线性相位,这在信号处理的很多领域是非常重要的。fir滤波器的设计任务
33、,是要决定一个转移函数h(z),使它的频率响应满足给定的要求。这里所说的要求,除了通带频率、阻带频率及两个带上的最大和最小衰减和外,很重要的一条是保证h(z)具有线性相位。3.2fir滤波器的常规设计方法fir滤波器的设计任务就是给定要求的频率特性,按一定的最佳逼近准则,选取滤波器转移函数h(z)中的各个参数h(n),即滤波器的单位抽样响应及阶数n,使得频率特性满足设计要求。通常fir滤波器的设计方法主要有三种:窗函数法、频率抽样法和切比雪夫等波纹逼近法。其中窗函数法可以应用比较现成的窗函数,因而设计简单,在指标要求不高的场合使用方便灵活。下面我们来简单介绍一下这三种设计方法。3.2.1窗函数
34、法窗函数法也称为傅立叶级数法。理想的数字滤波器频率特性是无法实现的, fir的设计就是要寻找一个可以得到的频率特性=来逼近,这相当于用一个可实现的单位脉冲响应 h(n)去逼近一个理想单位脉冲响应。可由理想频率特性 通过傅氏反变换得到, (3.4)一般来说,这样得到的理想单位脉冲响应序列是个无限长序列,因而是非因果的。设有一个截止频率为的理想线性相位低通,延时为,其频率特性是: (3.5)得到: (3.6)这是一个以为中心偶对称的无限长非因果序列,要想用一个有限长的因果序列去逼近它,最简单的方法是截取从0到n-1的一段来表示它,即 h(n)= ;其他n:h(n)=0。同时,为了保证线性相位,还要
35、满足偶对称h(n)=h(n-1-n)。这就好像通过一个窗口观看到的一段,因此h(n)就表示成和一个窗口函数的乘积,这样对h(n)的求解就变为h(n)*,这里的就称为窗口函数, 既然一个频域上的标准的矩形窗口对应于时域是一个无限长的序列, 那么在时域上截取一段势必造成频域的矩形窗口的失真。结果就是截取出的信号也相应失真,为了补偿这种失真,只有改变原来窗口的形状,修正经过时域截取后的窗口失真。窗函数设计方法的基本步骤是:(1) 把展成fs,得;(2) 对自然截短到所需的长度,如2m+1;(3) 将截短后的右移m个采样间隔,得h(n);(4) 将h(n)乘以合适的窗口,即得所要滤波器的冲击响应,窗函
36、数以n=m对称。利用所求得的单位抽样响应,即可用硬件构成滤波器的转移函数h(z),也可利用h(n)在计算机上用软件来实现滤波。3.2.2频率抽样法窗函数法是从时域出发,用窗函数截取理想的得到h(n),以此有限长的h(n)近似,这样得到的频率响应逼近于理想的频响。频率抽样法是从频率出发, 将给定的理想频响加以等间隔抽样。 (3.7)然后以此作为fir滤波器的频率响应抽样值h(k),再根据dft(离散付氏变换)定义由频域这n个抽样值来唯一确定一个有限长序列h(n),同样也可以算出fir滤波器的系统函数h(z)及频率响应,可以推出频率响应是频率抽样值h(k)与线性相位因子及如下内插函数s(, k)
37、的线性组合。s(, k)= (3.8)所以,在各频率取样点上,实际滤波器的频响是严格地和所要求的滤波器的频响一致的,逼近误差为零,但在抽样点之间的频响是各取样点的内插函数的延伸叠加而成,有一定的逼近误差,误差大小取决于频率响应曲线的圆滑程度和抽样点的密度 为了减少误差 就要增加抽样点数目即增大采样频率,抽样点之间的理想频率特性变化越陡,则逼近误差越大,在理想频率特性的不连续点附近会产生肩峰和纹波。频率抽样法的优点是可以直接在频域设计,适于利用最优化方法,而且这种方法特别适用于窄带选频滤波器, 但频率抽样法的抽样频率只能是2/ n 的整数倍或2/ n 的整数倍加上/ n不能保证截止频率c的准确取
38、值,要实现精确的c就必须取n大,相应的计算量也大。此外,它的阻带最大衰减一般,也只有30-50db左右, 很难满足频域特性要求较高的场合。 3.2.3chebyshev逼近法窗函数法和频率采样法设计出的滤波器的频率特性都是在不同意义上对所给理想频率特性的逼近。由数值逼近理论可知,对某个函数f(x)的逼近一般有以下三种方法:插值法(interpolating way)最小平方逼近法(least square approaching way)一致逼近法(consistent approaching way)切比雪夫最佳一致逼近的基本思想是,对于给定区间a,b上的连续函数,在所有n次多项式的集合中,
39、寻找一个多项式 p (x),使它在a,b上对的偏差和其它一切属于的多项式 p(x)对f(x)的偏差相比是最小的,即 (3.9)切比雪夫逼近理论,这样的多项式是存在的,且是唯一的,并指出了构造这种最佳一致逼近多项式的方法,就是有名的“交错点组定理”。切比雪夫逼近理论解决了p(x)的存在性、唯一性和如何构造等问题。j.h.mcclellan、t.w.parks、l.r.rabiner 等人应用切比雪夫逼近理论提出了一种设计fir滤波器的计算机辅助算法。这种算法由于是在一致意义上对作最佳逼近,因而获得了较好的通带和阻带性能,并能准确地指定通带和阻带的边缘。但它的效率依赖于初始极值频率点的估计,且通带
40、和阻带内波纹数较多,这是chebyshev方法的两个主要缺点。3.3fir滤波器的matlab实现matlab信号处理工具箱提供了基于窗函数法的fir滤波器的设计函数fir1。fir1是采用经典窗函数法设计线性相位fir数字滤波器,且具有标准低通、带通、高通和带阻等类型。语法格式:b=fir1(n,)b=fir1(n, ,ftype)b=fir1(n, ,window)b=fir1(n, ,ftype,window)其中,n为fir滤波器的阶数,对于高通、带阻滤波器n取偶数。为滤波器截止频率,取值范围为01。对于带通、带阻滤波器,=,且。ftype为滤波器类型。缺省时为低通或带通滤波器,为hi
41、gh时是高通滤波器,为stop时是带阻滤波器。window为窗函数,列向量,其长度为n+1;缺省时,自动取hamming窗。输出参数b为fir滤波器系数向量,长度为n+1。3.3.1 带通滤波器的matlab实现使用矩形窗、hanning窗、hamming窗、布莱克曼窗四种窗对带通原型进行截取。带通滤波器的指标性能给出如下:下阻带边缘:,下通带边缘:,上通带边缘:,上阻带边缘:,设计结果如3.8、3.9、3.10、3.11所示。图3.8 矩形窗设计图3.9hanning窗设计图3.10 hamming 窗设计图3.11 布莱克曼窗设计3.3.2 低通滤波器的matlab实现用窗函数法设计fir
42、低通滤波器,其技术指标如下:khz,khz,khz,通带最大衰减,阻带最小衰减。将其换算成数字域的性能指标如下:通带截止频率,通带最大衰减;阻带截止频率,阻带最小衰减。根据窗函数法的设计原则,由表3.1可知,海明窗(hamming)可提供大于50db的衰减。要求滤波器的过渡带为:由表3.1可知,利用海明窗设计的滤波器的过渡带,所以低通滤波器单位脉冲响应的长度为:,取n=101。通过fir1函数设计出滤波器的单位冲激响应序列,用它来作为在下一章中dsp设计程序中的系数。其设计结果如图3.12示。 (a)幅度响应 (b)相位响应图 3.12 hamming窗滤波器的幅度响应与相位响应4fir滤波器
43、的应用及其dsp实现4.1fft/ifft算法程序及应用4.1.1fft设计方法fft是dft的一个快速算法,是为减少dft计算次数的一种快速有效的算法。它是将dft分解开来进行运算,理论上是一致的,只是通过分解dft运算来达到减少运算量的目的。其突出的优点在于能快速高效地和比较精确地完成dft的计算。利用一定的运算结构变换,将n点的dft 转化成多个小的点数 dft 的运算,再利用的周期性和对称性,就能大大减少计算量。fft 算法将长序列的 dft分解为短序列dft,n 点的dft先分解为2个n/2点的dft,每个n/2点的dft又分解为n/4点的dft,如此这般。这里最小的变换点数即所谓的
44、基数(radix),因此,基数为2的fft算法的最小变换或称蝶形变换就是2点dft,是最基本的运算单位,一般n点fft对应于n个输入样值,有n个频域样值与之对应。dft 分解法基本上分为两类:一类是将时间序列x(n) (n为时间标号)进行逐次分解,由此得到的fft算法称为按时间抽取(decimation-in-time)算法,另一类是将傅立叶变换序列x(k)(k为频率标号)进行分解,叫做按频率抽取(decimation-in-frequency)算法。对这两种算法,库利图基和桑德图基进行了理论的推导,故又称为库利图基(cooleytukey)算法和桑德图基(sandetukey)算法。dit
45、fft算法是在时域内将每一级输入序列依次按奇/偶分成2个短序列进行计算,而dif fft算法是在频域内将每一级输入序列依次按奇/偶分成2个短序列进行计算。两者的区别是旋转因子出现的位置不同,但算法是一样的。对每一算法,按基本的蝶形运算的构成又可分为基2、基4、基8以及任意因子等的fft算法。不同基的fft算法所需的计算量略有差异。之所以说略有差异是指并无数量级的差别,甚至无成倍的差别。只是某种基的算法比另一种省几分之几而已。就目前来说,基2和基4算法是使用最广泛的算法。n点fft总共有(n/2)*log2n个蝶形运算。设蝶形的输入分别为p和q,输出分别为和,则有: (4.1) 在时间抽取fft
46、算法过程中,输入序列是码位倒置或称比特反转的,也就是说,如果将序列的下标用二进制表示,那么这个序列是按照二进制数的相反方向排列。所以 fft算法由两部分组成:码位倒置和2点的dft运算。 下面讨论一下如何利用fft算法计算反fft。反fft可以表示为下式: n=0,1,2,n-1 (4.2)式中,x(k)是时域信号,x(n)的傅里叶变换,通过下面的修改可以用fft算法来实现反fft 运算 。1、增加一个归一化因子1/n;2、将用其复共轭代替,可见求x(k)的反fft可以分为以下3个步骤:(1)取x(k) 的共轭得(k);(2)求x(k)的fft得n(n);(3)取x(n)的共轭, 并除以n,
47、就得到了x(n)。采用这种方法,可以完全不用修改fft程序就计算出反fft。4.1.2fft算法的实现dsp芯片的出现使fft的实现方法变得更为方便。由于大多数dsp芯片都具有在单指令周期内完成乘法-累加操作,并且提供了专门的fft指令,使得fft算法在dsp芯片实现的速度更快。用tms3205410的汇编程序实现fft算法主要分为四步:(1)实现输入数据的比特反转输入数据的比特反转实际上就是将输入数据进行位码倒置,以便在整个运算后的输出序列是一个自然序列。在用汇编指令进行位码倒置时,使用位码倒置寻址可以大大提高程序执行速度和使用存储器的效率。在这种寻址方式下,ar0存放的整数n是fft点的一
48、半,一个辅助寄存器指向一个数据存放的单元。当使用位码倒置寻址将ar0加到辅助寄存器时,地址将以位码倒置的方式产生。(2)实现n点复数fft n点复数fft算法的实现可以分为三个功能模块,即第一级蝶形运算、第二级蝶形运算、第三级至级蝶形运算。(3)功率谱的计算用fft计算x(n)的频谱,即计算 (4.3) x(k)一般是由实部和虚部组成的复数,即 (4.4)因此,计算功率谱时只需将fft变换好的数据,按照实部和虚部求它们的平方和,然后对平方和进行开平方运算。但是考虑到编程的难度,对于求fft变换后数据的最大值,不开平方也可以找到最大值,并对功率谱的结果没有影响,所以在实际的dsp编程中省去了开平
49、方的运算。(4)输出fft结果fft 算法的基本流程如图4.1所示: 返 回输 出 部 分位反转程序部分将输入数据调入片内ramar1-inputar3-inputiw-系数增量变量初始化ar1-tab将系数调入内存定义输出数据存放地址input定义fft运算时输入数据的地址indat定义系数表在内存的地址tab进行内部存储器的定义,设置变量fft计算的点数nfft计算的级数m系数起始地址wkad循环计数标志cycle1.cycle2程 序 入 口蝶形运算是否结束ny图4.1 fft算法的基本流程图4.1.3fft算法的仿真和测试结果 (a)matlab仿真波形 (b)dsp测试波形图4.2
50、仿真和测试波形4.2fir滤波器的dsp的实现4.2.1fir滤波器的实现方法在数字信号处理系统中,常常要用到fir数字滤波器,这是因为用fir滤波器可以逼近任意幅频特性的滤波器,并获得很好的性能,在本论文中介绍fir低通滤波器的dsp实现。tms3205410是16位的定点处理器,所以在进行汇编程序设计时,fir滤波器系数要采用q15格式,即必须将上述系数转化为q15格式,这只要将滤波器各系数乘以2即可。用dsp实现z算法是十分方便的,常用的方法有两种:线性缓冲区法和循环缓冲区法。在本文中采用的是循环缓冲法,循环缓冲区法的特点是:(1) 对于n阶的fir滤波器,在数据存储器中开辟一个也称为滑
51、窗的n个单元的缓冲区,滑窗中存放最新的n个输入样本;(2) 每次移入新的样本时,以新样本改写滑窗中老的数据,而滑窗中的其他数据不需要移动;(3) 利用片内bk(循环缓冲区长度)寄存器对滑窗进行间接寻址,循环缓冲区地址首尾相邻。fir滤波器的核心算法是计算输入信号与滤波器系数的卷积。设x(n)为输入信号,h(n)为fir滤波器的冲击响应,n=0,n-1,则fir滤波器的输出y(n)就是x(n)与h(n)的卷积,即: (4.5)由于卷积是数字信号处理中最常用到的算法,因此几乎所有的dsp芯片中都设有专门的指令支持卷积运算。在tms3205410中可以用macd指令完成卷积。macd指令的形式如下:
52、macd(smem,pmad,src);在macd指令中,smem是间接寻址参数,它是指令中指向数据存储器的单地址。pmad是表示程序存储器地址的16位常数。src表示累加器,可以是a累加器或是b累加器。这条指令在执行时,先把指令中的pmad常数送到程序地址寄存器的par中,然后将smem地址中的数据用par地址在程序存储器中读取的数据相乘,并将乘积结果累加到由src指定的累加器中。在指令执行时,smem地址中的内容被同时复制到t寄存器和smem低中之后的下一个地址单元中。若采用repeat指令重复执行macd指令,则在执行指令的最后,par寄存器自动加1,这样当macd再次执行时就直接用pa
53、r中的地址读取程序存储器中的数据。通常情况下,macd指令执行时需要三个周期。但是若用repeat指令执行macd,进入流水线后只要一个周期就可以执行一次macd指令。由此可见,该指令同时完成了乘累加和数据延迟(移位)的功能,这正是卷积算法所要求的。对于输入序列,它在两个循环缓冲器里的存储情况如下,要建立缓冲区首先将循环缓冲区大小寄存器的值设为n/2辅助寄存器ar4指到缓冲区1(bufferl)的顶部 ar5指到缓冲区2(buffer2)的底部,新来一个样本存储到缓冲区1中时,应先将缓冲区1顶部的数据移到缓冲区2底部,处理器然后进行乘加运算,滤波程序每步运算后ar4 指向数据移到的下一个窗口,
54、而 ar5则指向下一个输入数据,对于下一步运算ar4指向地址1,ar5指向地址n/2。如图4.3示。图4.3 fir系数存储格式示意图考虑到在执行macd指令时是将低地址的数据复制到高地址来完成延迟功能,所以在用macd指令计算卷积时,先计算x(n-n+1)与h(n-1)的乘积,最后才计算x(n)与h(0)的乘积。因此在程序中,fir滤波器的系数在程序存储器中按倒序存储。4.2.2fir滤波器的软件设计及其调试本设计中采用c语言和汇编语言混合编程的方式进行的,程序主体由c语言编写,而核心的fir滤波算法则由汇编语言编写。用c语言开发dsp程序不仅使dsp开发的速度大大加快,而且开发出来的dsp
55、程序的可读性和可移植性也大大增加,程序修改也很方便。采用c编译器的优化功能可以增加c代码的效率,在某些情况下,c代码的效率甚至接近手工代码的效率。用c语言开发dsp程序,在dsp芯片的运算能力不是十分紧张时是非常适合的。虽然c编译器的优化功能可以使c代码的效率大大增加,但是在某些情况下,c代码的效率还是无法与手工编写的汇编代码的效率相比,比如fir滤波器程序。这是因为,即使最佳的c编译器,也无法在所有的情况下都能够最佳地利用dsp芯片所提供的各种资源。用c语言编写的中断程序虽然可读性很好,但由于进入中断程序以后,有时不管程序中是否用到,中断程序都将寄存器进行保护,从而大大降低中断程序的效率。如
56、果中断程序频繁被调用,那么即使一条指令也是至关重要的。此外,用c语言实现dsp芯片的某些硬件控制也不如汇编程序方便,有些甚至无法用c语言实现。因此,在很多情况下,dsp应用程序往往需要用c语言和汇编语言的混合编程方法来实现,以达到最佳利用dsp芯片软硬件资源的目的。用c语言和汇编语言混合编程的方法主要有以下三种:(1) 独立编写c程序和汇编程序,分开编译和汇编,形成各自的目标代码模块,然后用链接器将c模块和汇编模块链接起来。例如,fir滤波程序用汇编语言编写,对fir程序用汇编器进行汇编,形成目标代码模块,与c模块链接就可以在c程序中调用fir程序。(2) 直接在c语言程序的相应位置嵌入汇编语句。(3) 对c程序进行编译.生成相应的汇编程序,然后对汇编程序进行手工优化和
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《机器学习技术应用》课件-pro1-1-1 校园消费数据分析流程的设计
- 《行业会计实务》课件-项目四 4.4.2 周转房的核算
- 吻合口溃疡的临床护理
- 组织新质生产力活动
- 2025年二手车交易合同范本
- 2025年监理工程师之合同管理综合检测试卷B卷含答案
- 2025年一级建造师之一建矿业工程实务押题练习试题A卷含答案
- 2025年房地产经纪人之业务操作基础试题库和答案要点
- 2025中外合作企业合同及章程详解
- 顺向型房室折返性心动过速的临床护理
- 医院浅层地热能评估报告
- GB/T 14975-2012结构用不锈钢无缝钢管
- DB21-T3683-2022医疗卫生机构医疗废物卫生管理规范
- GB 17957-2021凿岩机械与气动工具安全要求
- 部编版六年级语文下册期末专项复习:修辞手法
- 中药学-七版教材
- 红军五次反围剿课件
- ISO9001注册审核员专业划分小类
- 五年级道德与法治上册课件 -保家卫国 独立自主 部编版 (共48张PPT)
- 安徽省历年中考数学试卷,2014-2021年安徽中考数学近八年真题汇总(含答案解析)
- 利益冲突申报表
评论
0/150
提交评论