版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于DSP的FIR滤波器的设计与实现PAGEPAGE17/view/e6e44f4c2e3f/view/157f7f35eefdc8d376ee325f基于DSP的FIR滤波器的设计和实现摘要:DSP技术一般指将DSP处理器用于完成数字信号处理的方法与技术。目前的DSP芯片以其强大的数据处理功能在通信和其他信号处理领域得到广泛注意并已成为开发应用的热点技术。许多领域对于数字信号处理器的应用都是围绕美国德州仪器所开发的DSP处理器来进行的。DSP芯片是一种特别适合于进行数字信号处理运算的微处理器。主要应用是实时快速的实现各种数字信号处理算法,如卷积及各种变换等。其中利用DSP来实现数字滤波器就是很重要的一种应用,本文深入研究基于美国德州仪器公司(TI)TMS320C5410DSP芯片的滤波器系统软件实现方法,用窗口设计法实现FIR滤波器,给出了MATLAB仿真结果,并在以TITMS320C5410为微处理器的DSK上实现,实验结果表明滤波结果效果良好,达到了预期的性能指标,用时间抽取法实现的FFT/IFFT算法,介绍了自适应滤波器的基本原理及应用,并对LMS算法进行了深入的研究。关键词:DSP;TMS320C5410;FIR滤波器;FFT/IFFT;自适应滤波器TheDesignandImplementionofFIRFilterBasedonDSP’sAbstract:DSPtechnologymeansthetechnologytoaccomplishdigitalsignalprocessing.NowadaysDSP’aregettingmoreandmoreattentionsintheinformationfield,duetoitspowerfulsignalprocessingability,becomingahot-pointtechniqueincommunicationandotherrelatingsignalprocessingareas.DSPchipisespeciallyfitfordigitalsignalprocessing,itsmainapplicationisrealizingallkindsofdigitalsignalprocessingarithmeticsuchasclovehitchcorrelation、allkindsoftransformsetc.RealizingdigitalfilterswithDSPisanimportantapplication.Thepaperdiscussesthefilter’ssoftwarerealizationbasedonTMS320C5410andfinishedthehardwaresystemofnoise-restraining.ThearithmeticsystemwascompiledwithCandassemblelanguage,Themainworksaccomplishedareasfollowing:realizationofFIRfilterwithwindowfunction,andtoreachthesimulationresultthroughMATLAB,alsorealizationonTMS320C5410chip,theresultofexperimenttomakeclearthattheeffectisfine.realizationofFFT/IFFTarithmeticwithtime-drawing.Thepaperbeginswiththeprincipleofadptivefilter.Basedontheprinciple,LeastMeanSquareisresearcheddeeply.Keywords:DSP;TMS320C5410;FIRFilter;FFT/IFFT;AdaptiveFiltering第1章绪论1.1引言随着信息时代和数字世界的到来,数字信号处理已成为如今一门极其重要的学科和技术领域。数字信号处理在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。数字信号处理(DSP)包括两重含义:数字信号处理技术(DigitalSignalProcessing)和数字信号处理器(DigitalSignalProcessor)。数字信号处理(DSP)是利用计算机或专用处理设备,以数值计算的方法、对信号进行采集、滤波、增强、压缩、估值和识别等加工处理,借以达到提取信息和便于应用的目的,其应用范围涉及几乎所有的工程技术领域。在数字信号处理的应用中,数字滤波器很重要而且得到了广泛的应用。按照数字滤波器的特性,它可以被分为线性与非线性、因果与非因果、无限长冲击响应(IIR)与有限长冲击响应(FIR)等等。其中,线性时不变的数字滤波器是最基本的类型;而由于数字系统可以对延时器加以利用,因此可以引入一定程度的非因果性,获得比传统的因果滤波器更灵活强大的特性;IIR滤波器的特征是具有无限持续时间冲激响应,这种滤波器一般需要用递归模型来实现,因而有时也称之为递归滤波器,而FIR滤波器的冲激响应只能延续一定时间,在工程实际中可以采用递归的方式实现,也可以采用非递归的方式实现,但其结构主要还是是非递归结构,没有输出到输入的反馈,并且FIR滤波器很容易获得严格的线性相位特性,避免被处理信号产生相位失真,而线性相位体现在时域中仅仅是h(n)在时间上的延迟,这个特点在图像信号处理、数据传输等波形传递系统中是非常重要的,且不会发生阻塞现象,能避免强信号淹没弱信号,因此特别适合信号强弱相差悬殊的情况。相对于IIR滤波器,FIR滤波器有着易于实现和系统绝对稳定的优势,因此得到广泛的应用;对于时变系统滤波器的研究则导致了以卡尔曼滤波为代表的自适应滤波理论的产生。自适应滤波即利用前一时刻已获得的滤波器参数等结果,自动地调节(更新)现时刻的滤波器参数,以适应信号和噪声未知的统计特性,或者随时间变化的统计特性,从而实现最优滤波。几种主要的自适应滤波器为:最小均方(LMS)自适应滤波器、递推最小二乘(RLS)自适应滤波器、格型自适应滤波器、无限冲击响应(IIR)自适应滤波器。而自适应去噪电路是信号处理领域一个简单应用,一个被噪声污染的信号借助于相关噪声可以把信号提取出来,而噪声不断变化,为了得到较清晰的语音信号必须采用自适应去噪技术,随噪声变化进行自适应滤波.滤波器自动调整它们的系数。近些年,线性滤波方法,如Wiener滤波、Kalman滤波和自适应滤波得到了广泛的研究和应用,同时一些非线性滤波方法,如小波滤波、同态滤波、中值滤波、形态滤波等都是现代信号处理的前沿课题,不但有重要的理论意义,而且有广阔的应用前景。Wiener滤波是最早提出的一种滤波方法,当信号混有白噪声时,可以在最小均方误差条件下得到信号的最佳估计。但是,由于求解Wiener-Hof方程的复杂性,使得Wiener滤波实际应用起来很困难,不过Wiener滤波在理论上的意义是非常重要的,利用Wiener滤波的纯一步预测,可以求解信号的模型参数,进而获得著名的Levinson算法。Kalman滤波是20世纪60年代初提出的一种滤波方法。与Wiener滤波相似,它同样可以在最小均方误差条件下给出信号的最佳估计。所不同的是,这种滤波技术在时域中采用递推方式进行,因此速度快,便于实时处理,从而得到了广泛的应用。Kalman滤波推广到二维,可以用于图像的去噪。当假设Wiener滤波器的单位脉冲响应为有限长时,可以采用自适应滤波的方法得到滤波器的最佳响应。由于它避开了求解Wiener-Hof方程,为某些问题的解决带来了极大的方便。小波滤波就是利用信号和噪声在各自尺度下的小波变换系数有所不同的特点,来对它们进行分离,从而达到去除噪声的目的。同态滤波主要用于解决信号和噪声之间不是相加而是相乘关系时的滤波问题。另外当信号和噪声之间为卷积关系的时候在一定条件下可以利用同态滤波把信号有效地分离出来,由同态滤波理论引伸出的复时谱也成为现代信号处理中极为重要的概念。Wiener滤波、Kalman滤波和自适应滤波都是线性滤波,线性滤波的最大缺点就是在消除噪声的同时,会造成信号边缘的模糊。中值滤波是20世纪70年代提出的一种非线性滤波方法,它可以在最小绝对误差条件下,给出信号的最佳估计。这种滤波方法的优点,就是能够保持信号的边缘不模糊。另外它对脉冲噪声也有良好的清除作用。形态滤波是建立在集合运算上的一种非线性滤波方法,它除了用于滤除信号中的噪声以外,还在图像分析中发挥了重要的作用。目前FIR滤波器的实现方法大致可分为三种:利用单片通用数字滤波器集成电路、DSP器件和可编程逻辑器件实现。单片通用数字滤波器使用方便,但由于字长和阶数的规格较少,不能完全满足实际需要,使用以串行运算为主导的通用DSP芯片实现要简单,是一种实时、快速、特别适合于实现各种数字信号处理运算的微处理器,借助于通用数字计算机按滤波器的设计算法编出程序进行数字滤波计算。由于它具有丰富的硬件资源、改进的哈佛结构、高速数据处理能力和强大的指令系统而在通信、航空、航天、雷达、工业控制、网络及家用电器等各个领域得到广泛应用。1.2课题背景及研究意义1.2.1数字信号处理就是用数字信号处理器(DSP)来实现各种算法,由于具有精度高、灵活性强等优点,已广泛应用在数字图像处理、数字通信、数字音响、声纳、雷达等领域。数字滤波技术又是进行数字信号处理的最基本手段之一,它是对数字输人信号进行运算,产数字输出信号,以改善信号品质,提取有用信息,或者把组合在一起的多个信号分量分离开来为目的。在信号处理领域中,对于信号处理的实时性、快速性的要求越来越高,因此在许多信息处理过程中,如对信号的过滤、检测、预测等,都要广泛地用到滤波器。其中数字滤波器具有稳定性高、精度高、设计灵活、实现方便等许多突出的优点,避免了模拟滤波器所无法克服的电压漂移、温度漂移和噪声等问题,因而随着数字技术的发展,用数字技术实现滤波器的功能越来越受到人们的注意和广泛的应用。而有限冲激响应(FIR)滤波器能在设计任意幅频特性的同时保证严格的线性相位特性,在示否音、数据传输中应用非常广泛。1.2.2用可编程DSP芯片实现数字滤波可通过修改滤波器的参数十分方便地改变滤波器的特性。因此,我们有必要对滤波器的设计方法进行研究,理解其工作原理,优化设计方法,设计开发稳定性好的滤波器系统。我们将通过DSP设计平台,实现较为重要的FIR和自适应滤波器系统。从而通过本课题的研究,掌握滤波器的设计技术,为通信、信号处理等领域实用化数字滤波器设计提供技术准备。本科题的研究,将为今后设计以DSP为核心部件的嵌入式系统集成提供技术准备,这不仅具有重要的理论意义,同时还具有重要的实际意义。1.3国内外相关领域的研究20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生,并得到了迅猛的发展。当时还没有DSP,数字信号处理只能依靠MPU来完成。但MPU(微处理器)的速度无法满足高速实时的要求。因此数字信号处理技术多是停留在理论上,得不到广泛的应用,但这为DSP的诞生打下了基础。70年代至80年代初是DSP发展的第二阶段。70年代初,有人提出了DSP的理论和算法基础。但是直到1978,世界上第一个世界上第一枚DSP才诞生,它是由1978AMI公司发布的S2811。1979年美国Intel公司发布的商用可编程器件2920是DSP芯片的一个主要里程碑;1980年NEC公司推出的PD7720是第一个具有乘法器的商用DSP芯片。美国德州仪器公司TexasInstruments也于1982年推出了其第一代DSP芯片TMS32010及其系列产品,它们都是基于NMOS工艺。此时的DSP运行速度较以前的MPU有了较大的提高,但由于制造工艺所限,体积和功耗都比较大,内部资源较少,且价格昂贵。80年代中期直到现在是DSP得到了蓬勃发展并广泛应用的时期。80年代中期,随着大规模集成电路技术尤其是CMOS技术的发展,基于CMOS工艺的DSP应运而生,体积功耗都大大减少,而存储容量和运算速度都得到成倍提高,成为语音处理、图像硬件处理技术的基础;80年代后期,DSP运算速度进一步提高,应用范围逐步扩大到通信、计算机领域。90年代直到现在,DSP发展最快,此时的DSP集成度极高,体积、功耗进一步减少,内部资源更是成倍增加,而价格却进一步下降。此时,DSP芯片不仅在通信、计算机领域大显身手,而且已扩大到人们的学习、工作和生活的各个方面。生产DSP器件的公司也不断壮大,目前,市场占有率前四名依次为:TexasInstruments、Lucent、AnalogDevice、Motorola。在所有生产DSP的公司中,TI可谓一枝独秀,它是世界上最大的DSP供应商,TI系列的DSP也是公认的最成功的DSP。其DSP市场份额占全世界份额近50%。其产品覆盖了高、中、低端几乎所以市场,广泛应用于各种领域。自从在1982年成功推出了其第一代DSPTMS32010及其系列产品TMS32011、TMS320C10/C14/C15等,TI相继推出了第二代DSPTMS32020、TMS320C25/C26/C28,第三代DSPTMS320C30/C31/C32,第四代DSPTMS320C40/C44,第五代DSPTMS3205X/C54X/C55X及目前速度最快的第六代DSPTMS320C62X/C67X等等。DSP器件应用面从起初的局限于军工,航空航天等军事领域,扩展到今天的诸多电子行业及消费类电子产品中。在TI公司的DSP产品中C1X、C2X、C2XX、C5XX、C54X、C62X等系列是定点运算指令系统的DSP;C3X、C4X、C67X等系列是浮点运算指令系统的DSP;AV7100、AV7110等系列是用于视频、音频领域的专用数字压缩产品。1.3主要研究内容本课题是基于TI公司近年推出的高性能定点DSPTMS320C5410设计滤波器系统,如:有限冲击响应滤波器(FIR)。本次课题的主要任务,就是掌握DSP芯片开发技术,完成如下工作:1、用窗函数法实现FIR滤波器,通过调用四种窗口函数,截取不同的带通与低通滤波原型,满足以下性能要求:带通滤波器:下阻带边缘:,;下通带边缘:,上通带边缘:,;上阻带边缘:,低通滤波器:,;,2、用时间抽取法实现FFT/IFFT算法,通过此算法,对信号进行频域分析、频域处理;3、自适应滤波器是目前数字滤波器领域中最为活跃的分支,讨论采用经过改进的LMS(最小圴方误差)算法实现自适应滤波器。4、研究DSP的结构特点,了解TI公司的TMS3205410DSP器件,掌握DSP系统的构成及软硬件设计方法和CCS软件的调试方法;并以TI公司的TMS3205410DSP为核心处理器,在DSK上实现FIR滤波器系统。本论文共分为五个部分,第一章为绪论部分,介绍DSP及其滤波器的发展现状;第二章详细介绍DSP的特点、性能指标、软件开发工具、指令系统及硬件结构;第三章介绍了FIR滤波器的设计方法,并详细阐述了用窗口设计方法设计FIR滤波器及MATLAB实现;第四章介绍FIR滤波器的应用及其实现;第五章介绍自适应滤波器基本理论、算法及其应用。其中,三、四章是本论文的核心部分。第2章DSP及其开发环境2.1DSP系统2.1.1DSP系统的构成一个典型的DSP系统如图2.1示。图2.1典型的DSP系统图2.1是一个用DSP做信号处理的典型框图。由于DSP是用来对数字信号进行处理的,所以首先必须将输入的模拟信号变换为数字信号。于是先对输入模拟信号进行调整,输出的模拟信号经过A/D变换后变成DSP可以处理的数字信号,DSP根据实际需要对其进行相应的处理,如FFT、卷积等;处理得到的结果仍然是数字信号,可以直接通过相应通信接口将它传输出去,或者对它进行D/A变换将其转换为模拟采样值,最后再经过内插和平滑滤波就得到了连续的模拟波形模拟信号。当然,图中的有些环节并不是必需的。如A/D转换,如果输入的是数字信号,就可以直接交给DSP进行运算。2.1.2DSP系统的特点及设计过程由于数字信号处理系统是以数字信号处理理论为基础,所以具有数字信号处理的全部优点:(1)接口方便DSP系统与其它以数字技术为基础的系统或设备都是相互兼容的,比模拟系统与这些系统接口要容易的多。(2)编程方便DSP系统中的可编程DSP芯片可以使设计人员在开发过程中灵活方便的进行修改和升级,可以将C语言与汇编语言结合使用。(3)具有高速性DSP系统的运行较高,最新的DSP芯片运行速度高达10GMIPS以上。(4)稳定性好DSP系统以数字处理为基础,受周围环境,如噪声、温度等的影响小、可靠性高;(5)精度高例如16位数字系统可以达到10-5的精度;(6)可重复性好模拟系统的性能受元件参数性能变化影响大,而数字系统基本不受影响,更便于测试、调试和大规模生产。(7)集成方便DSP系统中的数字部件有高度的规范性,便于大规模生产。当然DSP也存在一定的缺点。例如,对于一些简单的信号处理任务,如与模拟交换线的电话接口,若采用DSP则使成本增加。另外,DSP系统中的高速时钟通常在几十兆赫,可能带来高频干扰和电磁泄漏等问题,而且DSP的功率消耗在系统中也是较大的。此外,DSP技术发展得很快,数学知识要求多,开发和调试工具还很不完善。虽然DSP系统还存在一些缺点,但是随着近两年来DSP技术突飞猛进的发展,成本的下降,很多问题都得到了缓解。其突出的优点已经使其在通信、语音、图像、雷达、生物医学、工业控制、仪器仪表等许多领域得到越来越广泛的应用。一般来说DSP的设计过程应遵循一定的设计流程,如图2.2示。DSP应用DSP应用定义系统性能指标硬件调试选择DSP芯片软件编程硬件设计系统集成软件调试系统测试和调试图2.2DSP基本设计流程2.2TIDSP介绍TI公司DSP种类多,品种齐全,适合各种需要。目前,使用较为广泛的主要有三个系列:C2000,C5000和C6000。其他系列产品应用较少或已经淘汰。每个系列又有多种DSP可供选择。同一系列的DSP具有相同的内核、相同或兼容的汇编指令集;它们之间的差别是具有不同大小的片内存储器、不同的片内外设和外部接口等,工作电压和速度也有所区别。以上3大系列DSP实现功能的侧重点不同,也就是说应用领域有所不同:(1)C2000系列是16位定点DSP。它是一个控制器系列,主要应用于工业控制领域,它除了具有一个DSP内核外,还有大量的片内外设资源,如A/D、定时器、各种同步和异步串口、看门狗、CAN总线接口等;加上其价格低廉,速度更高,可靠性更强,可以取代传统单片机。内部具有Flash,方便固化程序,而其他系列DSP都没有内部Flash。(2)C5000系列DSP是16位定点低功耗DSP,性价比极高,主要应用于无线通信系统及手持式通讯产品,如手机,PDA和GPS等。C5000又分为C54X和C55X两个系列。相对C2000系列来说,其内部存储更大,运行速度更快,更适合执行较为复杂的数字信号处理任务,但控制功能相对较弱。一般由核心电压和I/O电压两种电压供电。核心电压较低,所以功耗很低,且体积很小,方便集成。(3)C6000系列是32位的DSP系列。在TI的所有系列DSP中运行速度最快。其中C62XX是定点DSP,而C64XX和C67XX是浮点DSP,它主要应用于需要大量快速运算的场合,如数字视频处理、无线基站等。由于速度很高,所以功耗也很大。2.2.1在本设计中使用的DSP是TMS320VC5410。它属于TIC5000系列中的C54X系列,正如前面所说,同一系列的DSP具有相同的内核、相同或兼容的汇编指令集,差别仅在于内存储器的大小,片内外设等等,所以就首先介绍一下C54系列DSP普遍具有的特点和性能。54X具有改进的哈佛结构,使其处理能力达到最大。分开的程序空间和地址空间提供了高度的并行性,可以同时访问程序指令和数据,例如三次读操作和一次写操作可以在一个周期内完成。带并行存储的指令和具有特殊应用的指令充分利用了这种结构。这种并行性支持一套强大的算术运算、逻辑运算和位操作运算,所以使得这些运算可以在单个机器周期内完成。而且54X的运行机制还支持中断处理、重复操作和函数调用等等。对于任意通用可编程芯片来说,一般都具备以下几个部分:(1)内部存储器:主要用来存储程序、执行程序、存储数据等;(2)中央处理单元(CPU):用来实现各种运算功能;(3)片内外设:用来实现一些特定功能,如时钟发生器、硬件定时器等等;(4)外部总线接口:用来和其他芯片接口,协同工作;(5)通信接口:用来从外围芯片获得数据或者将处理完的数据传输出去;(6)内部总线:用来连接芯片中不同的单元。也就是说,以上各个部分的通信是通过内部总县来完成的。2.2.2C5410体系结构总线结构5410体系结构由8条主要的16位总线、4条程序/数据总线和4条地址总线构成。其中程序总线PB从程序存储器装载指令码和立即操作数3条数据总线CB、DB、EB负责将片上的各个不同的部分相互连接。例如,CPU数据地址产生逻辑、程序地址产生逻辑、片上外设和数据存储器,其中CB和DB从数据存储器读取操作数,EB把操作数写到数据存储器4条地址总线PAB、CAB、DAB、EAB负责装载指令执行所需要的地址。PB能加载保存于程序存储空间的操作数(如系数表)到乘法器和加法器进行乘-加操作或利用数据移动指令(MVPD和READA)把操作数移动到数据存储空间的目的地址中。这种性能与双操作数读取的特性一起使54x支持单周期三操作数指令。54x还有一条双向的片上总线用于访问片上外设,这条总线轮流使用DB和EB与CPU连接。内部存储器5410存储器被组织成三个独立的可选择的空间:程序存储空间、数据存储空间和I/O空间,大小都是64K,总共是192K。大小包括随机存储器RAM和只读存储器ROM。其中5410采用的RAM双存取访问RAM(DARAM)。片上双存取访问RAM(DARAM)被组织在一些块上,因为每个DARAM块能够在每个机器周期中被访问两次,结合并行的体系结构,使得5410得以在指定的周期内完成四个并发的存储器操作。一个取指操作、两个数据读操作和一个数据写操作,DARAM总是被映射到数据存储空间上,也可被映射进程序存储空间用于保存程序代码5410的26个CPU寄存器和片上外设寄存器被映射在数据存储空间。C5410提供了三个控制位用于在存储空间中配置片上存储器,利用这三个控制位可以设置片上存储器怎样配置到不同存储空间,指定是配置到程序存储空间还是数据存储空间。以上通过设置处理器模式状态寄存器PMST中的状态位可以进行调整。(1)P/MC:当此位是1时,禁止片上ROM配置到5410存储空间中,即微处理器模式。当此位是0时,允许片上ROM配置到5410的程序存储空间中,即微计算机模式;(2)OVLY:当OVLY=1时片上RAM配置到程序和数据存储空间中,当OVLY=0时,片上RAM仅配置到数据存储空间;(3)DROM:当DROM=1时,片上ROM配置到程序和数据存储空间;当DROM=0时,片上ROM不配置到数据存储空间,DROM与MP/MC状态无关。1、程序存储空间当芯片复位时,复位、中断和陷阱矢量分配在FF80h开始的程序存储空间5410允许中断向量表重定位到任意一个128字的边界上,这让使用者可以把中断向量表放到程序存储器的其他位置,并从程序存储空间中删除片上ROM片上ROM中有128个字用于保存检测设备,应用代码要避开这段存储器FF00h-FF7Fh在5410片上的ROM中固化有以下内容。其中片上ROM中固化的Sine表在程序中有着更广泛的应用价值,C5410利用页扩展的方式可以扩展程序存储器最多达1MB,为了实现页扩展,C5410提供了一些增强的特性:(1)20条地址线;(2)额外的存储器映射寄存器,扩展程序计数器XPC;(3)六条额外的指令用于寻址扩展的程序存储空间,C5410有16页存储空间,每页64K当片上RAM配置到程序存储空间后扩展程序存储器的所有被分为两个部分:共享部分和独立部分。共享部分在任何一页都可以访问,独立部分则仅在特定页中访问。当片上ROM可以访问时ROM配置到程序空间的第0页,在其他页中不能访问片上,ROM芯片通过XPC的值来访问程序存储器的各个页。XPC作为存储器映射寄存器被放到数据存储器的001Eh处。2、数据存储空间C5410可以寻址64K的数据存储空间片上的ROM,双存取RAM(DARAM)可以通过软件配置到数据存储空间中,芯片在访问存储器时会自动访问这些单元。当DAGEN数据地址产生器产生了不在片上存储器的地址时会自动产生一个外部总线操作。一般将片上ROM配置到数据存储空间,需要修改PMST寄存器的DROM位,来允许将片上ROM当作数据存储器来访问。C5410的数据存储器第0页的0000h-007Fh存放着寄存器映射寄存器内容包括:(1)无等待状态访问的CPU寄存器共26个(2)片上外设的控制和数据寄存器存放在0020h-005Fh的地址中(3)用于补充的32个字的DARAM,这就不必将较大的RAM块分成小碎片下面重点介绍几个重要的寄存器:(1)中断寄存器IMRIFR地址0h和1h其中中断屏蔽寄存器IMR可以个别的禁止或允许指定的可屏蔽中断,中断标志寄存器IFR可以指定当前的中断状态;(2)状态寄存器ST0ST1地址6h和7h状态寄存器包含C5410的不同的状态和模式,其中ST0包括了算术运算和位操作使用的状态位OVA、OVBC和TC及DP字段ARP字段,ST1反映了处理器和指令执行所依赖的模式和状态;(3)辅助寄存器AR0~AR7地址10h到17h共有8个16位的辅助寄存器可被CPU和辅助寄存器算术单元ARAus修改。主要作用是产生16位的数据存储空间地址或作通用目的寄存器或保存变量;(4)处理器模式状态寄存器PMST地址1Dh用于控制存储器的配置;(5)扩展程序计数器XPC地址1Eh高7位指定当前程序存储器的页,低位指定当前程序存储器的地址。3、I/O空间C5410提供了64K的I/O空间,寻址范围是0000H-0FFFFH,作用是与片外设备连结PORTR和PORTW两条指令可以访问这段存储空间。它适用于访问映射到I/O空间的设备而不是存储器。中央处理器CPUC5410与其它的54x芯片使用相同的CPU它包括:(1)40位算术逻辑单元(ALU)(2)两个40位的累加器(3)桶形移位器(4)17*17位的乘法器(5)40位加法器(6)比较、选择和存储单元(CSSU)(7)数据地址产生器DAGEN和程序地址产生器(PAGEN)另外,还包括了指数译码器等特殊应用硬件元件,通过这些硬件极大的提高了C5410在作算术运算时的能力。数据存储器寻址C5410提供了七种基本的寻址方式,如表2.1示。表2.1TMS320C54X的寻址方式程序存储器寻址PC寄存器一般用于程序存储器寻址。由程序存储器地址产生逻辑PAGEN加载,一般PAGEN在取指之后连续增加PC值。但当遇到非顺序的操作,如跳转,调用返回条件操作指令重复复位和中断时PC值产生非连续的变化。流水线操作C5410的流水线一共有6级,流水线的每一级都是独立运行的,一个周期可以由六条指令处于流水线上的不同阶段。当PC值出现非连续的变化时,如跳转调用和返回一条或多条流水线上的指令会被放弃。片上外设C54x包含有相同的CPU,但是CPU连结不同的片上外设C5410包括的外设有:(1)通用目的输出引脚BIO和XF(2)软件等待状态发生器(2)可编程存储器切换逻辑(2)并行口(2)硬件定时器(2)串行口,主要是多通道缓冲串行口外部总线接口C5410能寻址64K的数据存储器,64K的程序存储可外部扩展和64K的I/O空间,任何对外部存储器或I/O设备的访问都要使用外部总线接口,外部总线接口的READY引脚和片上的软件等待状态发生器保证处理器能够与各种速度不同的外部设备连接。外部总线接口的HOLD方式允许其他设备占用54x的外部总线。这样,外部设备就可以访问54x的程序存储器、数据存储器和I/O空间上的资源。IEEE1149.1标准的逻辑扫描电路片上的JTAG接口符合IEEE1149.1标准,这个接口用于硬件仿真和测试,所应用的TI公司提供的开发套件中就包含了一个硬件仿真器,使用硬件仿真器可以缩短工程开发周期,提高工作效率。2.3DSP的开发环境DSP的开发系统包括硬件和软件两个方面。其中硬件包括一套DSK开发板和仿真器;软件包括CCS开发环境。DSP的开发主要是围绕着这两方面进行的。2.3.1DSK的全称是DSPStarterKit,即DSP初学者套件。DSK为用户提供了一个开发DSP的方便的平台。由于DSK板上提供了基本的硬件支持,结合适当的软件开发工具,简化了开发工作,缩短了开发周期,在DSK板上主要包括如下资源:100MHzVC5402DSP芯片64K字外部扩展的SRAM64K*16256K字的FLASH存储器256K*16仿真器JTAG测试总线控制器SN74ACT8990JTAGTBC及与主机相连接的并行接口模/数转换器TITLC320AD50A/Dconverter两个电话接口(DAA)麦克风/扬声器接口并行口RS-232串行口扩展子板接口LED*4其中三个可供程序运行时点亮提示DSK板上提供的丰富的硬件资源,使得开发过程中硬件方面可以节省大量的工作。DSK板上提供了一个八位跳线开关,可以通过它申请外部中断,实现不同的功能。另外,板上还提供了诸如14针的外部JTAG接头,10针的CPLD的JTAG接头,25针的符合IEEE-1284的为JTAG/HPI接入提供的并口等外部接口,通过JTAG接头可以与计算机内运行的CCSCodeComposerStudio进行实时数据交换RTDX提高编程调试的效率通过JTAG接头与主机进行实时数据交换的过程可见图2.3示。图2.3实时数据交换的过程JTAG接口符合IEEE1149.1标准边界扫描逻辑测试技术规范,这一技术规范是80年代由联合测试行动组JTAGJointTestActionGroup开发的,这个边界扫描测试BST结构提供了有效的测试,引线间隔致密的电路板上零部件的能力,通过BST结构测试引脚连结而不必使用物理测试探针,可以在器件正常工作时,获功能数据。器件的边界扫描单元能够迫使逻辑追踪引脚信号或是从引脚或器件核心逻辑信号中捕获数据,强行加入的测试数据串行移入边界扫描单元捕获的数据串行移出并在器件外部同预期的结果进行比较。通过扩展可以将多个器件连成菊花链,一次进行统一的输入与读出操作。TI提供的增强型JTAG连接,是一种可与任意DSP系统相连的低侵扰式的连接,使得CCS能够控制程序的执行,实时监视程序运行。通过主机和DSPAPIs提供主机和DSP之间的双向实时数据交换,能够使开发者实时连续的观察到DSP应用的实际工作方式,仿真接口提供主机一侧的JTAG连接,如TIXSD510。2.3.2本节将介绍CCSCodeComposerStudio的基本开发环境、软件开发过程、CCS组件。CCS提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,能够加速开发进程,提高工作效率。CCS概述CCS全称是CodeComposerStudio它提供了基本的代码生成工具,具有一定的调试、分析能力,在CCS下的程序开发过程如图2.4示。图2.4程序开发过程CCS包括:1、CCS代码生成工具2、CCS集成开发环境IDE3、DSP/BIOS插件程序和APIRTDX插件,主机接口和API等。下面将着重介绍前两项。代码生成工具代码生成工具奠定CCS所提供的开发环境的基础,典型的软件开发流程如图2.5示。编辑源文件和命令文件编辑源文件和命令文件汇编使用编辑器生成目标文件链接使用链接器生成可执行代码Flash或EPROM编程软件调试器硬件调试器目标格式转换C5XX目标系统图2.5典型的软件开发流程主要应用到的工具包括:1、C编译器(Ccompiler)产生汇编源代码;2、汇编器(assembler)把汇编语言源文件翻译成机器语言目标文件;3、连接器(linker),把多个目标文件组合成单个可执行目标模块;4、归档器(Archiver)可以把一组文件收集到一个归档文件中,这在长时间的调试时是十分有用的,运行支持库run_time_supportlibraries,包括C编译器所支持的ANSI标准运行函数、编译器公用程序函数、浮点运算函数和C编译器支持的I/O函数;5、十六进制转换公用程序(haxconversionutility)可以把COFF目标,文件转换成TI-Tagged、ASCII-hexIntel、Motorola-S、Tektronix等目标格式之后把转换好的文件下载到EPROM编程器中。CCS集成开发环境调试DSP目标程序,它主要由几个主要的窗口组成:工程组显示窗口、程序内容显示窗口、编辑信息提示窗口和主要工具栏。另外,在编辑过程中还可以显示诸如存储器观察窗口、变量监视框、图形显示框等调试界面,他们为程序编写调试提供多种手段为软件开发提供了极大的方便。图2.5就是基本编辑界面。图2.5CCS基本编辑界面在利用CCS编程的过程中,不可避免的要遇到如何将程序变量分配到内存中去的问题。因为,即使DSP的存储空间比较大,速度也十分快,但是如果内存空间分配不当的话,还是会出现空间不够行速度下降,甚至程序跑飞的情况,这样会时程序调试起来十分麻烦。所以,一定要分配好内存空间CCS提供了两种分配空间的方法:利用cmd文件或rcp文件分配空间,其中cmd文件是纯文本格式的描述性的空间分配方式,它的优点是程序员对空间的可控制性较高,可以将不同的块分配到指定的地址,并规定长度。但它对于初学者来说,要求对C5410的内存空间的分配有较清楚的认识,否则容易将数据分配到不该分配的地方,引起程序运行的冲突,甚至程序跑飞。所以,一般在编程过程中,使用rcp文件对程序进行内存分rcp文件全称是recipe文件,这是一种图形化界面的内存分配文件。对于一个新生成的工程组rcp文件的生成方法是:选择CCS菜单上的Tools项,选择linkerconfiguration项,将分配方式改为usethevisuallinker之后直接编译,编译信息提示窗口中会显示出错信息,提示找不到rcp文件,双击提示CCS会自动弹出rcp生成向导,按照要求选择rcp模板,就会生成这个工程对应的rcp文件,双击生成的rcp文件,通过visuallinker连接器可以打开这个文件。当程序中新增加了变量后,在rcp文件中会出现Notyetplaced项,只要将其下的文件夹,根据类型拖动到run_view下的相应的数据存储器或程序存储器即可。还可以选择用何种类型的存储器空间装载,通过观察存储空间以使用的状况自行分配空间,所以十分灵活,并且不会出现空间重叠的现象,避免了程序跑飞。第3章FIR滤波器的设计3.1FIR滤波器的基本理论:3.1.1FIR滤波器的特点数字滤波器的功能,就是把输入序列通过一定的运算变换成输出序列。可以用两种方法来实现数字滤波器:—种方法是采用通用计算机,利用计算机的存储器、运算器和控制器把滤波器所要完成的运算编成程序通过计算机来执行,也就是采用计算机软件来实现;另一种方法是设计专用的数字硬件(通常称之为数字信号处理器)。数字滤波器的实现方法是多种多样的,其中比较常用到的是无限长脉冲响应滤波器IIR和有限长脉冲响应滤波器FIR两种,另外还有维纳滤波器、自适应滤波器等,但是在一般通信领域,尤其是信号传输领域,在一个信号的发送与接收端都是发出或接收一路信号。所以,前两种滤波器还是现在滤波器设计的主要方面,例如在线谱分析、基音检测、线性预测编码等方面都有着广泛的应用。本来在计算量相等的情况下,IIR数字滤波器比FIR滤波器的幅频特性优越,频率选择性也好,但是,它有着致命的缺点,相位特性不好控制。它的相位特性f(w)argH()是使频率产生严重的非线性的原因,这种‘与’的非线性关系,使数字滤波器与模拟滤波器在响应与频率的对应关系上发生了畸变。如果需要线性相位,就必须用全通网络进行复杂的相位校正,但是,在对程序运行周期数要求十分严格的DSP处理中加上一个全通均衡器是十分浪费资源的。另外,即使加上全通均衡器,对于因果的IIR滤波器,仍将得不到线性的相位。在现代电子系统中,如图像处理、数据传输等波形传递系统中都越来越多的要求信道具有线性的相位特性。在这方面FIR滤波器具有独到的优点,它可以在幅度特性随意设计的同时,保证精确、严格的线性相位,因此这类滤波器应用很广泛。3.1.2FIR滤波器的基本结构数字滤波是将输入的信号序列,按规定的算法进行处理,从而得到所期望的输出序列。一个线性位移不变系统的输出序列y(n)和输入x(n)之间的关系,应满足常系数线性差分方程,见公式3.1,(3.1)其中,x(n)为输入序列,y(n)为输出序列,为滤波器系数,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.1FIR滤波器的一般结构因为FIR滤波器的单位抽样响应是有限长的,所以它永远是稳定的。另外,若对h(n)提出一些约束条件,那么可以很容易地使H(z)具有线性相位,这在信号处理的很多领域是非常重要的。FIR滤波器的设计任务,是要决定一个转移函数H(z),使它的频率响应满足给定的要求。这里所说的要求,除了通带频率、阻带频率及两个带上的最大和最小衰减和外,很重要的一条是保证H(z)具有线性相位。3.2FIR滤波器的常规设计方法FIR滤波器的设计任务就是给定要求的频率特性,按一定的最佳逼近准则,选取滤波器转移函数H(z)中的各个参数h(n),即滤波器的单位抽样响应及阶数N,使得频率特性满足设计要求。通常FIR滤波器的设计方法主要有三种:窗函数法、频率抽样法和切比雪夫等波纹逼近法。其中窗函数法可以应用比较现成的窗函数,因而设计简单,在指标要求不高的场合使用方便灵活。下面我们来简单介绍一下这三种设计方法。3.2.1窗函数法窗函数法也称为傅立叶级数法。理想的数字滤波器频率特性是无法实现的,FIR的设计就是要寻找一个可以得到的频率特性=来逼近,这相当于用一个可实现的单位脉冲响应h(n)去逼近一个理想单位脉冲响应。可由理想频率特性通过傅氏反变换得到,(3.4)一般来说,这样得到的理想单位脉冲响应序列是个无限长序列,因而是非因果的。设有一个截止频率为的理想线性相位低通,延时为τ,其频率特性是:(3.5)得到:=(3.6)这是一个以n=τ为中心偶对称的无限长非因果序列,要想用一个有限长的因果序列去逼近它,最简单的方法是截取n从0到N-1的一段来表示它,即h(n)=;其他N:h(n)=0。同时,为了保证线性相位,还要满足偶对称h(n)=h(N-1-n)。这就好像通过一个窗口观看到的一段,因此h(n)就表示成和一个窗口函数的乘积,这样对h(n)的求解就变为h(n)=*,这里的就称为窗口函数,既然一个频域上的标准的矩形窗口对应于时域是一个无限长的序列,那么在时域上截取一段势必造成频域的矩形窗口的失真。结果就是截取出的信号也相应失真,为了补偿这种失真,只有改变原来窗口的形状,修正经过时域截取后的窗口失真。窗函数设计方法的基本步骤是:(1)把展成FS,得;(2)对自然截短到所需的长度,如2M+1;(3)将截短后的右移M个采样间隔,得h(n);(4)将h(n)乘以合适的窗口,即得所要滤波器的冲击响应,窗函数以n=M对称。利用所求得的单位抽样响应,即可用硬件构成滤波器的转移函数H(z),也可利用h(n)在计算机上用软件来实现滤波。3.2.1频率抽样法窗函数法是从时域出发,用窗函数截取理想的得到h(n),以此有限长的h(n)近似,这样得到的频率响应逼近于理想的频响。频率抽样法是从频率出发,将给定的理想频响加以等间隔抽样。(3.7)然后以此作为FIR滤波器的频率响应抽样值H(k),再根据DFT(离散付氏变换)定义由频域这N个抽样值来唯一确定一个有限长序列h(n),同样也可以算出FIR滤波器的系统函数H(z)及频率响应,可以推出频率响应是频率抽样值H(k)与线性相位因子及如下内插函数S(ω,k)的线性组合。S(ω,k)=(3.8)所以,在各频率取样点上,实际滤波器的频响是严格地和所要求的滤波器的频响一致的,逼近误差为零,但在抽样点之间的频响是各取样点的内插函数的延伸叠加而成,有一定的逼近误差,误差大小取决于频率响应曲线的圆滑程度和抽样点的密度为了减少误差就要增加抽样点数目即增大采样频率,抽样点之间的理想频率特性变化越陡,则逼近误差越大,在理想频率特性的不连续点附近会产生肩峰和纹波。频率抽样法的优点是可以直接在频域设计,适于利用最优化方法,而且这种方法特别适用于窄带选频滤波器,但频率抽样法的抽样频率只能是2π/N的整数倍或2π/N的整数倍加上π/N不能保证截止频率ωc的准确取值,要实现精确的ωc就必须取N大,相应的计算量也大。此外,它的阻带最大衰减一般,也只有30-50dB左右,很难满足频域特性要求较高的场合。3.2.3Chebyshev逼近法窗函数法和频率采样法设计出的滤波器的频率特性都是在不同意义上对所给理想频率特性的逼近。由数值逼近理论可知,对某个函数f(x)的逼近一般有以下三种方法:插值法(InterpolatingWay)最小平方逼近法(LeastSquareApproachingWay)一致逼近法(ConsistentApproachingWay)切比雪夫最佳一致逼近的基本思想是,对于给定区间[a,b]上的连续函数,在所有n次多项式的集合中,寻找一个多项式p(x),使它在[a,b]上对的偏差和其它一切属于的多项式p(x)对f(x)的偏差相比是最小的,即(3.9)切比雪夫逼近理论,这样的多项式是存在的,且是唯一的,并指出了构造这种最佳一致逼近多项式的方法,就是有名的“交错点组定理”。切比雪夫逼近理论解决了p(x)的存在性、唯一性和如何构造等问题。J.H.McClellan、T.W.Parks、L.R.Rabiner等人应用切比雪夫逼近理论提出了一种设计FIR滤波器的计算机辅助算法。这种算法由于是在一致意义上对作最佳逼近,因而获得了较好的通带和阻带性能,并能准确地指定通带和阻带的边缘。但它的效率依赖于初始极值频率点的估计,且通带和阻带内波纹数较多,这是Chebyshev方法的两个主要缺点。3.3窗函数法设计FIR滤波器在前面我们介绍了三种设计FIR滤波器的方法,介于窗函数法的简单灵活,在本设计采用了窗函数法来设计。3.3.1典型窗口函数介绍数据窗在FIR滤波器的窗函数设计中起着重要的作用,它的性能的好坏直接影响着滤波器的过渡带宽度和衰减的大小。对窗函数总的要求,是希望它的频谱中的主瓣尽量窄,边瓣幅度尽量得小,也即它频域的能量主要集中在主瓣内。此外,窗函数还应该满足下列要求以便可以定量地比较各函数的性能。w(n)应是非负的实偶函数,为了使滤波器获得较大的主旁瓣能量比,从对称中心开始w(n)应是非递增的;为了保证滤波器的通带增益为1,应有:(3.10)为了保证滤波器的相位特性不因加窗而改变,一般要求是恒正的;这里给出如下三个频域指标作为窗函数性能的性能参数:(1)3dB带宽B,它是主瓣归一化幅度()下降到-3dB时的带宽。当数据长度为N时,最大可能的频率分辨率是,则B的单位可以是;(2)最大旁瓣峰值A(dB)。A越小,由旁瓣引起的振荡幅度越小;(3)旁瓣峰值渐进衰减速度D(dB/oct)。矩形窗(RectangleWindow)由于矩形窗是将理想的通带所对应的时域部分,无限长截断到有限长。,n=0,1,……N-1(3.11)它的波形及其幅频响应曲线如3.2所示。(a)矩形窗波形(b)幅频响应曲线图3.2矩形窗波形及其幅频响应曲线(N=21)它的窗口形式是=1*,这样在转换成频域时,理想的矩形通带就会产生畸变畸变情况可见图3.3示。图3.3经矩形窗截短后的畸变由上图可见,原本十分理想的矩形的传递函数现在畸变成了目前的形状。通过观察可以发现,相对于来说,产生了如下变化:(1)在通带内出现了两个尖峰,即通带内不平滑;(2)阻带中出现了泄漏,即出现了波动。以上两点的产生,主要取决于窗口频谱的旁瓣,旁瓣越多,余振越多;旁瓣相对值越大,波动越强;(3)过渡带变宽了,理想的矩形通带应当过渡带为0,即下降沿十分陡,现在却变成了从ω=ωc-到这样长的过渡带。过渡带的宽度取决于窗口频谱的主瓣度。三角窗它的窗的形式为:n=,…-1,0,1,…(3.12)幅频特性为:(3.13)它的波形及其幅频响应曲线如3.4所示。(a)三角窗波形(b)幅频响应曲线图3-4三角窗的波形及其幅频响应曲线(N=21)汉宁窗(HanningWindow)它的窗的形式是:(3.14)利用傅氏变换的调制特性(),可以得到用矩形窗的幅频特性表示的升余弦窗的幅频特性:(3.15)它的波形及其幅频响应曲线如3.5所示。(a)汉宁窗波形(b)幅频响应曲线图3.5汉宁窗的波形及其幅频响应曲线(N=21)由得到的频谱图,就会发现旁瓣大大的降低了,从而使能量集中在主瓣中但是主瓣的宽度加大了一倍。海明窗(HammingWindow)海明窗(hamming)也称为改进升余弦窗,如果对海明窗再做一些调整就可以得到使旁瓣最小的窗函数:(3-16)同样也可以得到它的幅频特性:(3-17)它的波形及其幅频响应曲线如3.6所示。(a)海明窗波形(b)幅频响应曲线图3.6海明窗的波形及其幅频响应曲线(N=21)这将使99.96%的能量集中在主瓣内。这样,在与升余弦窗相等的主瓣宽度下获得了更好的旁瓣抑制效果。布莱克曼窗(BlackmanWindow)它的窗的形式为:(3.18)幅频响应为:(3.19)它的波形及其幅频响应曲线如图3.7所示。(a)布莱克曼窗波形(b)幅频响应曲线图3.7布莱克曼窗的波形及其幅频响应曲线(N=21)比较各个窗口可以看到,矩形窗函数具有最窄的主瓣B,但也有最大的旁瓣峰值A和最慢的衰减速度D。汉宁窗的主瓣宽度稍宽,但有着较小的旁瓣和较大的衰减速度,因而是窗函数设计法中比较好的选择。将上述各种窗的指标列于下表3.1中。表3.1五种窗的比较3.3.2FIR滤波器的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取偶数。为滤波器截止频率,取值范围为0~1。对于带通、带阻滤波器,=[,],且<。’ftype’为滤波器类型。缺省时为低通或带通滤波器,为‘high’时是高通滤波器,为‘stop’时是带阻滤波器。Window为窗函数,列向量,其长度为n+1;缺省时,自动取hamming窗。输出参数B为FIR滤波器系数向量,长度为n+1。带通滤波器的MATLAB实现使用矩形窗、Hanning窗、Hamming窗、布莱克曼窗四种窗对带通原型进行截取。带通滤波器的指标性能给出如下:下阻带边缘:,下通带边缘:,上通带边缘:,上阻带边缘:,设计结果如3.8、3.9、3.10、3.11所示。图3.8矩形窗设计图3.9hanning窗设计图3.10hamming窗设计图3.11布莱克曼窗设计低通滤波器的MATLAB实现用窗函数法设计FIR低通滤波器,其技术指标如下:kHz,kHz,kHz,通带最大衰减,阻带最小衰减。将其换算成数字域的性能指标如下:通带截止频率,通带最大衰减;阻带截止频率,阻带最小衰减。根据窗函数法的设计原则,由表3.1可知,海明窗(hamming)可提供大于50dB的衰减。要求滤波器的过渡带为:由表3.1可知,利用海明窗设计的滤波器的过渡带,所以低通滤波器单位脉冲响应的长度为:,取N=101。通过FIR1函数设计出滤波器的单位冲激响应序列,用它来作为在下一章中DSP设计程序中的系数。其设计结果如图3.12示。(a)幅度响应(b)相位响应图3.12hamming窗滤波器的幅度响应与相位响应第4章FIR滤波器的应用及其DSP实现4.1FFT/IFFT算法程序及应用4.1.1应用领域FFT/IFFT在数字信号处理中是一种非常重要的算法,在很多的应用领域,如xDSL调制器、数字电视、手持无线接收装置中。在通信系统中,常常要用到频域分析FFT的应用主要是两个方面:1、它可以直接用来分析信号的频谱,频谱分析在信号处理中的应用极广,如语音通讯的频带压缩需要对语音信号进行频谱分析。在军事中,声纳系统对目标的分析,以及雷达系统对运动目标的测定等都需要特定的频谱分析。在各种测量仪器中,频谱分析有着更多的应用;2、利用快速卷积求解FIR滤波器的输出。正是由于FFT有着以上的用途,考虑到对滤波器参数的判定,以及今后继续开发其他通讯软件时的应用,编写了FFT子程序,这样既可以直接演示信号频谱,也可以把子程序嵌入到主程序之中,进行频谱分析与计算。4.1.2FFT设计方法FFT是DFT的一个快速算法,是为减少DFT计算次数的一种快速有效的算法。它是将DFT分解开来进行运算,理论上是一致的,只是通过分解DFT运算来达到减少运算量的目的。其突出的优点在于能快速高效地和比较精确地完成DFT的计算。利用一定的运算结构变换,将N点的DFT转化成多个小的点数DFT的运算,再利用的周期性和对称性,就能大大减少计算量。FFT算法将长序列的DFT分解为短序列DFT,N点的DFT先分解为2个N/2点的DFT,每个N/2点的DFT又分解为N/4点的DFT,如此这般。这里最小的变换点数即所谓的基数(radix),因此,基数为2的FFT算法的最小变换或称蝶形变换就是2点DFT,是最基本的运算单位,一般N点FFT对应于N个输入样值,有N个频域样值与之对应。DFT分解法基本上分为两类:一类是将时间序列x(n)(n为时间标号)进行逐次分解,由此得到的FFT算法称为按时间抽取(Decimation-in-time)算法,另一类是将傅立叶变换序列X(k)(k为频率标号)进行分解,叫做按频率抽取(Decimation-in-frequency)算法。对这两种算法,库利—图基和桑德-图基进行了理论的推导,故又称为库利—图基(Cooley-Tukey)算法和桑德—图基(Sande-Tukey)算法。DITFFT算法是在时域内将每一级输入序列依次按奇/偶分成2个短序列进行计算,而DIFFFT算法是在频域内将每一级输入序列依次按奇/偶分成2个短序列进行计算。两者的区别是旋转因子出现的位置不同,但算法是一样的。对每一算法,按基本的蝶形运算的构成又可分为基2、基4、基8以及任意因子等的FFT算法。不同基的FFT算法所需的计算量略有差异。之所以说略有差异是指并无数量级的差别,甚至无成倍的差别。只是某种基的算法比另一种省几分之几而已。就目前来说,基2和基4算法是使用最广泛的算法。N点FFT总共有(N/2)*log2n个蝶形运算。设蝶形的输入分别为P和Q,输出分别为和,则有:(4.1)在时间抽取FFT算法过程中,输入序列是码位倒置或称比特反转的,也就是说,如果将序列的下标用二进制表示,那么这个序列是按照二进制数的相反方向排列。所以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得Nx(n);(3)取X(n)的共轭,并除以N,就得到了x(n)。采用这种方法,可以完全不用修改FFT程序就计算出反FFT。4.1.3FFT算法的实现DSP芯片的出现使FFT的实现方法变得更为方便。由于大多数DSP芯片都具有在单指令周期内完成乘法-累加操作,并且提供了专门的FFT指令,使得FFT算法在DSP芯片实现的速度更快。用TMS3205410的汇编程序实现FFT算法主要分为四步:(1)实现输入数据的比特反转输入数据的比特反转实际上就是将输入数据进行位码倒置,以便在整个运算后的输出序列是一个自然序列。在用汇编指令进行位码倒置时,使用位码倒置寻址可以大大提高程序执行速度和使用存储器的效率。在这种寻址方式下,AR0存放的整数N是FFT点的一半,一个辅助寄存器指向一个数据存放的单元。当使用位码倒置寻址将AR0加到辅助寄存器时,地址将以位码倒置的方式产生。(2)实现N点复数FFTN点复数FFT算法的实现可以分为三个功能模块,即第一级蝶形运算、第二级蝶形运算、第三级至级蝶形运算。(3)功率谱的计算用FFT计算x(n)的频谱,即计算(4.3)X(k)一般是由实部和虚部组成的复数,即(4.4)因此,计算功率谱时只需将FFT变换好的数据,按照实部和虚部求它们的平方和,然后对平方和进行开平方运算。但是考虑到编程的难度,对于求FFT变换后数据的最大值,不开平方也可以找到最大值,并对功率谱的结果没有影响,所以在实际的DSP编程中省去了开平方的运算。(4)输出FFT结果FFT算法的基本流程如图4.1所示:返回返回输出部分位反转程序部分将输入数据调入片内RAMAR1<-INPUTAR3<-INPUTIW<-系数增量变量初始化AR1<-TAB将系数调入内存定义输出数据存放地址INPUT定义FFT运算时输入数据的地址INDAT定义系数表在内存的地址TAB进行内部存储器的定义,设置变量FFT计算的点数NFFT计算的级数M系数起始地址WKAD循环计数标志cycle1.cycle2程序入口蝶形运算是否结束NY图4.1FFT算法的基本流程图4.1.4FFT算法的仿真和测试结果(a)MATLAB仿真波形(b)DSP测试波形图4.2仿真和测试波形4.2FIR滤波器的DSP的实现4.2.1FIR滤波器的实现方法在数字信号处理系统中,常常要用到FIR数字滤波器,这是因为用FIR滤波器可以逼近任意幅频特性的滤波器,并获得很好的性能,在本论文中介绍FIR低通滤波器的DSP实现。TMS3205410是16位的定点处理器,所以在进行汇编程序设计时,FIR滤波器系数要采用Q15格式,即必须将上述系数转化为Q15格式,这只要将滤波器各系数乘以2即可。用DSP实现Z算法是十分方便的,常用的方法有两种:线性缓冲区法和循环缓冲区法。在本文中采用的是循环缓冲法,循环缓冲区法的特点是:(1)对于N阶的FIR滤波器,在数据存储器中开辟一个也称为滑窗的N个单元的缓冲区,滑窗中存放最新的N个输入样本;(2)每次移入新的样本时,以新样本改写滑窗中老的数据,而滑窗中的其他数据不需要移动;利用片内BK(循环缓冲区长度)寄存器对滑窗进行间接寻址,循环缓冲区地址首尾相邻。FIR滤波器的核心算法是计算输入信号与滤波器系数的卷积。设x(n)为输入信号,h(n)为FIR滤波器的冲击响应,n=0,…,N-1,则FIR滤波器的输出y(n)就是x(n)与h(n)的卷积,即:(4.5)由于卷积是数字信号处理中最常用到的算法,因此几乎所有的DSP芯片中都设有专门的指令支持卷积运算。在TMS3205410中可以用macd指令完成卷积。macd指令的形式如下:macd(Smem,pmad,src);在macd指令中,Smem是间接寻址参数,它是指令中指向数据存储器的单地址。Pmad是表示程序存储器地址的16位常数。Src表示累加器,可以是A累加器或是B累加器。这条指令在执行时,先把指令中的pmad常数送到程序地址寄存器的PAR中,然后将Smem地址中的数据用PAR地址在程序存储器中读取的数据相乘,并将乘积结果累加到由Src指定的累加器中。在指令执行时,Smem地址中的内容被同时复制到T寄存器和Smem低中之后的下一个地址单元中。若采用repeat指令重复执行macd指令,则在执行指令的最后,PAR寄存器自动加1,这样当macd再次执行时就直接用PAR中的地址读取程序存储器中的数据。通常情况下,macd指令执行时需要三个周期。但是若用repeat指令执行macd,进入流水线后只要一个周期就可以执行一次macd指令。由此可见,该指令同时完成了乘累加和数据延迟(移位)的功能,这正是卷积算法所要求的。对于输入序列,它在两个循环缓冲器里的存储情况如下,要建立缓冲区首先将循环缓冲区大小寄存器的值设为N/2辅助寄存器AR4指到缓冲区1(Bufferl)的顶部AR5指到缓冲区2(Buffer2)的底部,新来一个样本存储到缓冲区1中时,应先将缓冲区1顶部的数据移到缓冲区2底部,处理器然后进行乘加运算,滤波程序每步运算后AR4指向数据移到的下一个窗口,而AR5则指向下一个输入数据,对于下一步运算AR4指向地址1,AR5指向地址N/2。如图4.3示。图4.3FIR系数存储格式示意图考虑到在执行macd指令时是将低地址的数据复制到高地址来完成延迟功能,所以在用macd指令计算卷积时,先计算x(n-N+1)与h(N-1)的乘积,最后才计算x(n)与h(0)的乘积。因此在程序中,FIR滤波器的系数在程序存储器中按倒序存储。4.2.2FIR滤波器的软件设计及其调试本设计中采用C语言和汇编语言混合编程的方式进行的,程序主体由C语言编写,而核心的FIR滤波算法则由汇编语言编写。用C语言开发DSP程序不仅使DSP开发的速度大大加快,而且开发出来的DSP程序的可读性和可移植性也大大增加,程序修改也很方便。采用C编译器的优化功能可以增加C代码的效率,在某些情况下,C代码的效率甚至接近手工代码的效率。用C语言开发DSP程序,在DSP芯片的运算能力不是十分紧张时是非常适合的。虽然C编译器的优化功能可以使C代码的效率大大增加,但是在某些情况下,C代码的效率还是无法与手工编写的汇编代码的效率相比,比如FIR滤波器程序。这是因为,即使最佳的C编译器,也无法在所有的情况下都能够最佳地利用DSP芯片所提供的各种资源。用C语言编写的中断程序虽然可读性很好,但由于进入中断程序以后,有时不管程序中是否用到,中断程序都将寄存器进行保护,从而大大降低中断程序的效率。如果中断程序频繁被调用,那么即使一条指令也是至关重要的。此外,用C语言实现DSP芯片的某些硬件控制也不如汇编程序方便,有些甚至无法用c语言实现。因此,在很多情况下,DSP应用程序往往需要用c语言和汇编语言的混合编程方法来实现,以达到最佳利用DSP芯片软硬件资源的目的。用C语言和汇编语言混合编程的方法主要有以下三种:(1)独立编写C程序和汇编程序,分开编译和汇编,形成各自的目标代码模块,然后用链接器将c模块和汇编模块链接起来。例如,FIR滤波程序用汇编语言编写,对FIR程序用汇编器进行汇编,形成目标代码模块,与C模块链接就可以在C程序中调用FIR程序。(2)直接在C语言程序的相应位置嵌入汇编语句。 (3)对c程序进行编译.生成相应的汇编程序,然后对汇编程序进行手工优化和修改。上面的例子采用的是第一种方法,这是一种常用的C语言和汇编语言接口方法,采用这种方法最重要的是必须遵守c编译器所定义的函数调用规则和寄存器使用规则。遵循这两个规则就可以保证所编写的汇编模块不破坏C语言的运行环境。C模块和汇编模块可以相互访问各自定义的函数或变量。在编写独立的汇编程序时,必须注意以下几点:(1)不论是用c语言编写的函数还是用汇编编写的函数,都必须遵循寄存器使用规则。(2)必须保护函数要用到的几个特定寄存器,在TMS320C54X的的c编译中,这些特定的寄存器包括:ARD(FP),ARI(SP),AR6和AR70其中,如果SP正常使用,则不必明确加以保护。换句话说,只要汇编函数在函数返回时弹出压入的对象,实际上就已经保护了SP,因而ARl可以自由地使用。其它寄存器是可以自由使用的。函数返回时ARP必须为to(3),中断程序必须保护所有用到的寄存器。(4)从汇编程序调用C函数时,以逆序方式压入堆栈,调用时再将参数弹出。(5)调用C函数时,C函数只保护几个特定的寄存器,而对于其它寄存器C函数是自由使用的。(6)长整型和浮点数在存储器中存放的顺序是低位字在低地址,高位字在高地址。(7)如果函数有返回值,则返回值存放在累加器ACC中。(8)汇编模块不能改变由C程序产生的.cinit块,如果改变其内容则会引起不可预测的后果。(9)编译器在所有的标识符(函数名、变量名)前要加一下划杠“_”。因此,编写汇编语言程序时,必须在C程序可以访问的所有对象前加“_”。例如,在C程序中定义了变量x,如果要在汇编程序使用,既标记为“x",如果仅在汇编中使用,则只要不加下划杠,即使与C程序中定义的对象名相同,也不会造成冲突。(10)任何在汇编中定义的对象或函数,如果需要在C程序中访问或调用,则必须用汇编指令.global定义。同样,如果在C程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 评审专家协议书
- 试验检验协议书
- 小丑演出协议合同
- 就业保证合同范本
- 家装返修协议合同
- 房租补贴合同范本
- 资质转让协议书
- 农业合同种植协议
- 小区通气协议书
- 运输废物协议书
- 2025天津大学管理岗位集中招聘15人模拟笔试试题及答案解析
- 2025江苏南通轨道交通集团有限公司运营分公司招聘40人备考笔试题库及答案解析
- 2025年医生卫健委三基三严考试题库(附答案)
- 2025年-《中华民族共同体概论》课后习题答案-新版
- 数据库应用技术-第三次形考作业(第10章~第11章)-国开-参考资料
- DL∕T 5097-2014 火力发电厂贮灰场岩土工程勘测技术规程
- 兼职医生劳务协议
- 达托霉素完整版本
- 科研方法论智慧树知到期末考试答案章节答案2024年南开大学
- 拒绝脏话文明用语(课件)-小学生主题班会
- 中医热敏灸疗法课件
评论
0/150
提交评论