基于DSP的带阻滤波器设计毕业设计论文_第1页
基于DSP的带阻滤波器设计毕业设计论文_第2页
基于DSP的带阻滤波器设计毕业设计论文_第3页
基于DSP的带阻滤波器设计毕业设计论文_第4页
基于DSP的带阻滤波器设计毕业设计论文_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科毕业设计任务书题目基于DSP的带阻滤波器设计专业电子信息工程学号姓名主要内容、基本要求、主要参考资料等:主要内容工频干扰是工业现场的常见干扰源,它的存在对工业现场小信号的提取造成了较大的困难,课题要求采用DSP设计一个通用,滤波参数可以调节的带阻式滤波器,以满足对工业现场小信号提取的要求。基本要求学习滤波器的工作原理。学习DSP的相关知识。选取适合的DSP处理器,设计硬件电路。编写程序实现带阻滤波器。设计人机交互接口。要求能够方便地修改滤波参数。要求设计硬件原理图。编写相关程序编译仿真通过。如果进度可行,试制实际电路系统。毕业设计完成后,要求提交论文,包括详细的设计说明、图纸等技术资料。翻译英文资料一份。主要参考资料《DSP处理器及应用》,邹彦《数字信号处理》,(美)海因斯(Hayes,M.H.),2002《有源滤波器精确设计手册》,(美)D.E.约翰逊,1984《高性能数字信号处理器与高速实时信号处理》,苏涛等编著,1999完成期限:2012.02.13~2012.06.01指导教师签章:专业负责人签章:2012年2月13日基于DSP的带阻滤波器设计PAGE46基于DSP的带阻滤波器设计基于DSP的带阻滤波器设计摘要在工业现场信号处理的过程中,有来自外界的各种噪声干扰,其中尤以工频干扰是最常见的干扰源。当被检测的信号比较弱,并且频率也比较接近50Hz时,工频对被测信号的干扰就越加突出,对工业现场小信号的提取造成了很大的困难。课题拟利用数字滤波器去除工业现场小信号中工频干扰的影响。首先依据工业现场信号的特点,采用MATLAB仿真计算带阻滤波器的性能指标,得到能满足现场提取信号要求的滤波器系数表。之后依据估计运算量选择相应的DSP处理器芯片,并根据转换精度来选择A/D与D/A转换器芯片,以及由于处理器内存不足进行FLASH、SRAM与PRAM的外部存储器扩展来设计一个DSP应用系统,并设定其中参数。最后在CCS开发环境下用软件编写程序来实现本课题中所需设计的带阻滤波器。关键词带阻滤波器工频干扰DSPTMS320VC5402BASED-ONDSPDESIGNOFBAND-STOPFILTERABSTRACTIntheindustrialfieldofsignalprocessing,thereareallkindsofnoisefromoutside,especiallyinthefrequencyinterferenceisthemostcommonsourcesofinterference.Whenthedetectionsignalisrelativelyweak,andthefrequencycloseto50Hz,thefrequencythemoreprominentofthemeasuredsignalinterferenceandcausedgreatdifficultiestothesmall-signalextractionoftheindustrialfield.Thesubjectintendstotakeadvantageofthedigitalfiltertoremovetheimpactoftheindustrialfieldsignalfrequencyinterference.Firstly,onthebasisofindustryscenesignalcharacteristics,usingMATLABsimulationoftheband-stopfilterperformanceindexcanmeettherequirementsofthesceneofthesignalfiltercoefficienttable.Then,basedontheestimatedoperationcorrespondingtotheselectedDSPprocessorchip,andaccordingtotheconversionaccuracytochooseA/DandD/Aconverterchip,andbecausetheprocessormemoryforFLASH,SRAMandPRAMexternalmemoryexpansiontodesignaDSPapplicationsystem,andsettheparametersofthem.Finally,intheCCSdevelopmentenvironmenttousesoftwareprogrammingtoachievetherequireddesignofband-stopfilter.KEYWORDSBand-stopfiltersFrequencyinterferenceDSPTMS320VC5402基于DSP的带阻滤波器设计基于DSP的带阻滤波器设计目录摘要 IABSTRACT II1绪论 11.1课题背景 11.2研究意义 21.3主要研究内容 22DSP数字滤波器关键指标分析与方案设计 43DSP系统的硬件电路设计 73.1DSP与A/D和D/A转换器的接口 73.1.1DSP与A/D转换器的接口 73.1.2DSP与D/A转换器的接口 93.2DSP存储器的扩展 113.2.1FLASH的扩展 113.2.2SRAM的扩展 123.2.3PRAM的扩展 133.3DSP系统的外围电路设计 143.3.1电源电路的设计 143.3.2复位电路的设计 163.3.3时钟电路的设计 173.4JTAG仿真接口电路的设计 194带阻滤波器的DSP实现 224.1FFT/IFFT算法程序及应用 22基于DSP的带阻滤波器设计基于DSP的带阻滤波器设计4.1.1FFT设计方法 224.1.2FFT算法的实现 234.2CCS开发环境 244.3带阻滤波器的软件设计 264.3.1带阻滤波器的程序流程 264.3.2带阻滤波器的实现 28结束语 30致谢 31参考文献 32附录 33基于DSP的带阻滤波器设计基于DSP的带阻滤波器设计PAGE11绪论1.1课题背景目前,各种干扰在各类工业现场中均存在,所以仪表及控制系统的可靠性直接影响到现代化工业生产装置安全、稳定运行,系统的抗干扰能力是关系到整个系统可靠运行的关键。并且工频干扰广泛存在各种工业现场中,其产生的途径主要包括输电馈线、照明设备、发动机以及各种电子仪器设备等,工频干扰的存在对于工业现场中小信号的提取造成了较大的困难。也就是说当我们在工业现场中提取有用信号时,如果此信号比较弱,频率比较接近50Hz时,工频干扰就越加突出,那么它对于我们提取有用信号就会造成很大困难,致使我们可能很艰难地做一些工业现场中与此有关的操作,这也会给我们造成很大的麻烦和损失。因此,我们要设计数字滤波器来滤除此工频干扰,来解决它在工业现场中造成的困难。并且数字滤波技术也是进行数字信号处理的最基本手段之一,它是对数字输人信号进行运算,产生数字输出信号,以改善信号品质、提取有用信息、或者把组合在一起的多个信号分量分离开来为目的。在信号处理领域中,对于信号处理的实时性、快速性的要求越来越高。因此,在许多信息处理过程中,如对信号的过滤、检测、预测等,都要广泛地用到滤波器。其中数字滤波器具有稳定性高、精度高、设计灵活、实现方便等许多突出的优点,避免了模拟滤波器所无法克服的电压漂移、温度漂移和噪声等问题。因而随着数字技术的发展,用数字技术实现滤波器的功能越来越受到人们的注意和广泛的应用。数字滤波器的实现方法大致可以分为三种:利用单片通用数字滤波器集成电路、DSP器件和可编程逻辑器件来实现。单片通用数字滤波器使用方便,但是由于字长和阶数的规格较少,不能完全满足实际需要。使用以串行运算为主的通用DSP芯片实现要简单,它是一种实时、快速、适合于实现各种数字信号处理运算的微处理器,借助于通用数字计算机,按滤波器的设计算法编出程序进行数字滤波。由于它具有丰富的硬件资源、改进的哈佛结构、高速数据处理能力和强大的指令系统,使得它在通信、航空、航天、雷达、工业控制、网络及家用电器等各个领域得到了广泛应用。用可编程DSP芯片实现数字滤波时,可通过修改滤波器的参数十分方便地改变滤波器的特性。因此,我们有必要对滤波器的设计方法进行研究,理解其工作原理,优化其设计方法,并设计开发出稳定性好的滤波器系统。我们将通过DSP设计平台,实现较为重要的数字滤波器系统,从而通过本课题的研究,掌握滤波器的设计技术,为通信、信号处理等领域实用化数字滤波器的设计提供技术基础。本课题的研究,也将为今后设计以DSP芯片为核心部件的嵌入式系统提供技术基础,这不仅具有重要的理论意义,同时还具有重要的实际意义。1.2研究意义随着信息时代和数字世界的到来,数字信号处理已经成为当今一门极其重要的学科。数字信号处理(DSP)包括两重含义:数字信号处理技术(DigitalSignalProcessing)和数字信号处理器(DigitalSignalProcessor)。数字信号处理是利用计算机或专用处理设备,以数值计算的方法,对信号进行采集、滤波、增强、压缩、估值和识别等加工处理,借以达到提取信息和便于应用的目的,数字信号处理主要是研究有关数字滤波技术、离散变换快速算法和谱分析方法。作为数字信息处理分支之一的数字滤波器,也受到了人们越来越多的关注,它是通信、语言、图像、自动控制、雷达、航空航天、生物医学信号处理等领域中的一种基本处理部件,具有稳定性好、精度高、灵活性大等突出优点。在数字信号处理的应用中,数字滤波器很重要并且得到了广泛的应用。按照数字滤波器的特性,它可以被分为线性与非线性、时变与时不变、因果与非因果、无限长单位脉冲响应(IIR)与有限长单位脉冲响应(FIR)等等。IIR滤波器的特征是具有无限持续时间冲激响应,这种滤波器一般需要用递归模型来实现,因而有时也称之为递归滤波器;而FIR滤波器的时间冲激响应只能延续一定时间,在工程实际中可以采用递归的方式实现,也可以采用非递归的方式实现,但其结构主要还是非递归结构,并且FIR滤波器很容易获得严格的线性相位特性,避免被处理信号产生相位失真,而其线性相位体现在时域中仅仅是在时间上的延迟,这个特点在图像信号处理、数据传输等波形传递系统中是非常重要的。相对于IIR滤波器,FIR滤波器有着易于实现和系统绝对稳定的优势,因此得到了广泛的应用。1.3主要研究内容由于在上节已说过,工频干扰是工业现场中的常见干扰源,它的存在对于工业现场中小信号的提取造成了较大的困难,那么本课题需采用TMS320VC5402DSP芯片设计一个通用且滤波参数可以调节的带阻式滤波器系统,如有限长单位脉冲响应(FIR)滤波器,以满足对工业现场中小信号提取的要求。本次课题的主要任务,就是用MATLAB中的窗函数设计法来确定所要设计的带阻滤波器的指标和性能以及掌握DSP芯片的开发技术,需要完成如下工作。(1)用MATLAB中的窗函数设计法来实现FIR带阻滤波器:通过调用MATLAB中的窗口函数,来截取带阻滤波器原型,以此来确定所要设计的带阻滤波器的性能指标,其性能指标如下:带阻滤波器:下通带边缘:,上通带边缘:,;下阻带边缘:,上阻带边缘:,。(2)用时间抽取法实现FFT/IFFT算法:通过此算法,对信号进行频域分析、频域处理。(3)研究DSP的结构特点:了解TI公司的TMS320VC5402DSP芯片,掌握DSP系统的构成及软硬件的设计方法和CCS软件的调试方法;并以TI公司的TMS320VC5402DSP芯片为核心处理器,在DSK上实现所要设计的FIR带阻滤波器系统。本论文共分为四个部分,第一章为绪论部分,介绍了课题背景、DSP及其滤波器的发展现状;第二章介绍了DSP系统的框图设计以及DSP芯片的选择;第三章详细介绍了DSP系统的硬件电路设计,说明了DSP系统有哪几部分组成;第四章详细介绍了课题中所要设计的带阻滤波器的软件实现方法。其中,三、四章是本论文的核心部分。2DSP数字滤波器关键指标分析与方案设计一个典型的DSP系统框图如图2-1所示。由于DSP芯片是对数字信号进行处理的,所以应先对输入的模拟信号进行调整,之后再让输出的模拟信号经过A/D变换后变成DSP芯片可以处理的数字信号,然后输入DSP芯片,DSP芯片根据实际需要对其进行相应的处理,处理得到的结果仍然是数字信号,可以直接通过相应的通信接口将它传输出去,或者对它进行D/A变换将其转换为模拟采样值,最后再经过内插和平滑滤波就得到了连续的模拟信号。当然,图中的有些环节并不是必需的,如A/D转换,如果输入的就是数字信号,那么就可以直接交给DSP芯片进行处理。入出图2-1典型的DSP系统框图由于DSP系统是以数字信号处理理论为基础的,所以其具有数字信号处理器的优点:接口方便,DSP系统与其它以数字技术为基础的系统或设备都是相互兼容的,比模拟系统与这些系统接口要容易的多。编程方便,DSP系统中的可编程DSP芯片可以使设计人员在开发过程中灵活方便的进行修改和升级,并且还可以将C语言与汇编语言结合使用。具有高速性,DSP系统的运行速度较高,最新的DSP芯片运行速度高达10GMIPS以上。稳定性好,DSP系统以数字处理为基础,受周围环境如噪声、温度等的影响小,所以其可靠性高、稳定性好。精度高,如16位数字系统可以达到10-5的精度。可重复性好,模拟系统的性能受元件参数性能的变化影响大,而数字系统基本不受影响,更便于测试、调试和大规模生产。集成方便,DSP系统中的数字部件有高度的规范性,便于大规模生产。当然,DSP系统也存在一些缺点,例如对于一些简单的信号处理任务,若采用DSP芯片则使成本增加;另外,DSP系统中的高速时钟通常在几十兆赫,可能带来高频干扰和电磁泄漏等问题;此外,DSP技术发展得很快,但是开发和调试工具还很不完善。虽然DSP系统存在这些缺点,但是随着近两年来DSP技术突飞猛进的发展,很多问题都得到了缓解。一般来说,DSP系统的设计过程应遵循一定的设计流程如图2-2所示。DSPDSP应用定义系统性能指标硬件调试选择DSP芯片软件编程硬件设计系统集成软件调试系统测试和调试图2-2DSP系统的基本设计流程基于第一章所述,工频干扰是工业现场中的常见干扰源,它的存在对于工业现场中小信号的提取造成了较大的困难,因此课题要求采用DSP芯片设计一个通用且滤波参数可以调节的带阻式滤波器,以满足对于工业现场中小信号提取的要求。并且所设计的带阻滤波器的性能指标为下通带边缘:,上通带边缘:,;下阻带边缘:,上阻带边缘:,;采样频率:;点数:。TI公司的2000系列和5000系列的DSP芯片都是通用型的芯片,但考虑到2000系列的DSP芯片大多用于控制方面,5000系列的DSP芯片较2000系列的DSP芯片具有更高的时钟频率、更加强大的运算功能和更低的价格。并且5000系列的DSP芯片具有灵活的指令系统和操作性能,又采用改进的哈佛结构,计算和处理速度很高,系统单指令周期可达到10ns。并且TMS320VC5402DSP芯片是一种特殊结构的微处理器,为了快速地实现数字信号处理运算,采用了流水线指令执行结构和相应的并行处理结构,可在一个周期内对数据进行高速的算术运算和逻辑运算,TMS320VC5402DSP芯片还提供了McBSP串口和DAM数据传送方式极大地方便了它在通信领域的应用和开发。所以在数字滤波器系统的设计中,采用了TI公司的这款高性能、低功耗的定点DSP芯片:TMS320VC5402DSP芯片。该DSP芯片具有较快的运行速度,并且采用了低功耗的设计方式:内核电压为1.8V,I/O电压为3.3V。数字滤波器系统的具体框图如图2-3所示。TMS320VC5402TMS320VC5402FLASHSRAMPRAMJTAGADCDAC复位时钟电源图2-3数字滤波器系统的框图通常的设计中会采用5V供电且并行的ADC(模数转换器)和DAC(数模转换器)芯片与DSP芯片连接,那么传输数据过程中会占用总线的时间,并且需要采用多片电平转换器件将5V电平转换为3.3V的逻辑电平。但考虑到TMS320VC5402DSP芯片的片上包含两个McBSP(多通道缓冲串行口)接口,可以将这两个通道模仿实现SPI的时序,那么ADC芯片可采用TLV2544,实现将需要的滤波信号从模拟信号转换到数字信号;DAC芯片可采用TLV5608,实现滤波后的信号从数字信号恢复为所需要的模拟信号;JTAG接口供DSP芯片下载程序进行调试。3DSP系统的硬件电路设计基于第一章和第二章所述,可知所要设计的带阻滤波器的性能指标为下通带边缘:,上通带边缘:,;下阻带边缘:,上阻带边缘:,;采样频率:。指标已确定,以下应该先设计DSP系统的硬件电路,DSP系统的硬件设计又称为目标板设计,是在考虑算法需求、成本、体积和功耗核算的基础上完成的,主要包括DSP芯片及DSP基本系统、存储器、数/模和模/数转换器、控制接口和电源处理等。那么我们就基于此来设计DSP系统。3.1DSP与A/D和D/A转换器的接口在由DSP芯片组成的信号处理系统中,A/D和D/A转换器是非常重要的器件。首先输入信号经过滤波,然后进行A/D转换将模拟信号变换成数字信号,再由DSP芯片对数字信号进行某种形式的处理,如进行一系列的乘法-累加运算。经过处理后的数字信号由D/A转换器变换成模拟信号,之后再进行平滑滤波,得到连续的模拟波形。从上述的信号处理过程可以看出A/D和D/A转换器的作用。本节主要介绍DSP与A/D和D/A转换器的接口电路。3.1.1DSP与A/D转换器的接口模拟信号的采集过程是将模拟信号转换成数字信号,从而进行数字信号的处理。这要用到A/D转换器,它对数字信号处理系统的设计和技术指标的保证起着重要作用。基于不同的应用,可选用不同性能指标和价位的芯片。对于A/D转换器的选择,主要考虑以下几方面的因素。采样频率。一般系统处理的信号是数字信号,而输入的信号大多是模拟信号,那么就要对输入的模拟信号进行抽样,来转换成数字信号。这就要先确定采样频率,之后根据此采样频率来选择所要用到的A/D转换器。转换精度。一般系统要求对信号做一些处理,如FFT变换。因为DSP芯片的数据是16位,所以最理想的精度为12位,留出四位做算法的溢出保护位。转换时间。DSP的指令周期为ns级,运算速度极快,能进行信号的实时处理。为了体现它的优势,其外围设备的数据处理速度就要满足DSP的要求。同时,转换时间也决定了它对信号的处理能力。器件价格。转换器的价格也是选择A/D的一个重要因素。鉴于以上因素,所设计的系统的采样频率为10KHz,用到的DSP芯片为TMS320VC5402,为16位数据。而TI公司生产的TLV2544芯片,它是一种高性能、低功耗、高速(3.6μs)、12位四通道串行CMOS模数转换器,并且最高采样速率为200KSPS,采用2.7~5.5V单电源工作,能够进行信号的实时抽样处理,其满足系统的要求,所以在DSP与A/D转换器的接口电路中选择了TI公司的TLV2544芯片。并且该芯片为用户提供了三个输入端(片选、串行时钟SCLK和串行数据输入SDI)和一个三态输出端(串行数据输出SDO)的串行端口,可为流行的微处理器SPI串行端口提供了方便的4线接口。当与DSP芯片连接时,可用一个帧同步信号FS来控制一个串行数据帧的开始。TLV2544器件除了具有高速模数转换和多种控制功能外,还具有片内模数多路选择器,可选择任意通道模拟电压作为外部模拟输入,也可从三个内部自测试电压中任选一个作为输入。TLV2544设有内置转换时钟(OSC)和电压基准,可以采用外部SCLK作为转换时钟源以获得更高的转换速度,并有两种不同的内部基准电压可供选择。TLV2544工作周期的开始有两种模式:一种是不使用FS模式(在的下降沿,FS=1)。在这种模式下,的下降沿为周期的开始,输入数据在SCLK的上升沿移入,输出数据在其下降沿改变。这种模式可用于DSP系统,但一般用于SPI。另一种模式是使用FS模式(FS来自DSP的有效信号),常用于TMS320系列的DSP。FS的下降沿为周期的开始,输入数据在SCLK的下降沿移入,输出数据在其上升沿改变。TMS320VC5402芯片提供的高速、双向、多通道带缓冲串行端口McBSP,可用来与串行A/D转换器直接连接。每个BSP口可工作在SPI方式和I/O方式。在I/O方式下,通过位操作可以实现任何串行操作,但操作过程始终占用CPU且编程较复杂。在SPI方式下,BSP口可方便地与满足SPI/TM协议的串行设备相连。与TLV2544接口时,TMS320VC5402芯片作为SPI主设备向TLV2544提供串行时钟、命令和片选信号,实现无缝连接,不需要附加逻辑电路。图3-1为TMS320VC5402与TLV2544连接示意图。在模拟信号输入A/D转换器之前,要把此信号先经过防混叠滤波器,防止输入的模拟信号混叠。基于前面所要设计的带阻滤波器,我们来确定此防混叠滤波器的截止频率,并且我们用RC滤波器来实现此滤波器,假定RC滤波器中的电容,又RC滤波器的截止频率,进而可以得出RC滤波器中的电阻。然后将经过防混叠滤波器的模拟信号从A1送入A/D转换器转换成数字信号。图3-1TMS320VC5402与A/DTLV2544的接口电路TLV2544采用正常的采样方式,通过软件启动A/D转换,和接电源电压。该电路使用内部基准电压,REFP和REFM之间接入C17和C18两个去耦电容。A/D转换电路的工作是由DSP芯片的多通道缓冲串口BSP0来控制,BSP0通过串行输出口BDX0发送控制字到TLV2544的SDI口,来决定其工作发送。TLV2544按DSP发出的控制字进行转换,当转换结果产生后(如FIFO堆栈满),发出信号通知DSP接收。DSP接收到信号后,经BDR0口读入已转换好的串行数据。3.1.2DSP与D/A转换器的接口模数接口是DSP处理系统中的一个重要组成部分,主要完成模拟量与数字量之间的转换,这要用到D/A转换器。D/A转换器应根据信号频率、精度以及是否要求自带基准电源、多路选择器、输出运放等因素来选择。基于以上因素,由于TI公司生产的TLV5608芯片,其在2.7~5.5V单电源工作条件下是低功耗、10位串行数据D/A转换器,内部参考电源可编程设定,设定时间在快速模式下为1μs,在慢速模式下为3μs,并且SPI接口与C54x系列DSP芯片兼容。所以在DSP与D/A转换器的接口电路中选择了TI公司的TLV5608芯片。图3-2为TMS320VC5402与TLV5608连接示意图。在信号经过D/A转换器转换成模拟信号从OUTA输出之后,此信号还需要再经过平滑滤波器使其波形平滑,才可输出到其他设备。基于前面要求用DSP芯片来设计带阻滤波器,并且用到的采样频率,那么平滑滤波器的截止频率,并且我们用RC滤波器来实现此滤波器,假定RC滤波器中的电容,又RC滤波器的截止频率,进而可以得出RC滤波器中的电阻。然后将经过平滑滤波器的平滑模拟信号输出到其他设备。图3-2TMS320VC5402与D/ATLV5608的接口电路通过软件启动D/A转换,DVDD和AVDD引脚接电源电压。该电路使用内部基准电压,MODE引脚接地。D/A转换电路的工作是由DSP芯片的多通道缓冲串口BSP1来控制,BSP1通过串行输出口BDX1发送控制字到TLV5608的DIN口,来决定其工作接收。TLV5608按DSP发出的控制字进行转换,当转换结果产生后(如FIFO堆栈满),发出DOUT信号通知DSP转换结束。DSP接收到DOUT信号后,经BDR1口读出需要转换的串行数据。3.2DSP存储器的扩展随着电子技术的发展,使得大容量、低成本、小体积、低功耗、高速存取的存储器得到了广泛地应用。对于数据运算量和存储容量要求较高的系统,在应用DSP芯片作为核心器件时,由于芯片自身的内存资源有限,往往需要存储器的扩展。在进行DSP外部存储器扩展之前,必须了解DSP片上存储资源,并根据应用需求来扩展存储空间。当片上存储资源不能满足系统设计的要求时,就需要进行外部存储器扩展。本节主要介绍下FLSAH、SRAM和PRAM的外部存储器扩展。3.2.1FLASH的扩展大部分的DSP芯片程序存储器空间都采用了分页扩展存储器的方式,这样允许访问多达1M的程序存储器空间。XPC是程序计数器扩展寄存器,映射到数据空间的001E地址,它的值决定页号。在硬件复位时,XPC被初始设置为0,TMS320VC5402芯片的程序存储器被设置为128页,每一页为64K字。当片内RAM映射到程序空间时(OVLY=1),程序存储器的每一页由两部分组成,为最多32K字的公共块和32K字的私有块,公共块被所有的页共享,私有块只能通过它所在的页来访问。目前,市场上的EPROM工作电压一般为5V,与3.3V的DSP芯片连接时需要考虑电平转换的问题,而且体积都很大。FLASH存储器与EPROM相比,具有更高的性能价格比,而且体积小、功耗低、可电擦写、使用方便,并且3.3V的FLASH可以直接与DSP芯片连接。因此,采用FLASH作为程序存储器存储程序和固定数据是一种比较好的选择。并且TMS320VC5402芯片为ROM型DSP芯片,用户的运行程序和数据在掉电后不能保存,因此,DSP芯片需要扩展FLASH存储器来保存系统运行的程序和数据。基于以上原因,并且AM29LV400B芯片支持单电源工作,可以直接与3.3V的DSP芯片连接,简化了系统地接口电路。因此,本课题设计中采用的FLASH存储芯片是AM29LV400B芯片。图3-3为TMS320VC5402与AM29LV400B的程序存储器扩展电路。AM29LV400B作为DSP芯片的外部程序存储器,地址总线和数据总线接至DSP芯片的外部总线,片选信号接至DSP芯片的外部程序存储器的片选信号,编程写信号接至DSP芯片的读/写信号,复位信号接至DSP芯片的复位信号,而输出使能信号接至DSP芯片的外部存储器选通信号。图3-3FLASHAM29LV400B与DSP的连接当=0时,=0、=0,选中FLASH存储器,可进行读操作;当=1时,=1,FLASH存储器挂起,地址线和数据线呈现高阻。3.2.2SRAM的扩展C54x系列的数据存储器最多包含64K字,除了双存取RAM(DARAM)和单存取RAM(SARAM)以外,C54x系列器件片内ROM还可以用软件映射成数据ROM(DROM)。但是,这样DSP芯片中的数据存储器还是不够用,因此我们要扩展外部数据存储器。当访问的地址属于片内存储器时,就可以进行RAM或者数据ROM(在其有效地情况下)的访问。当数据地址产生器产生一个超出片内存储器范围的地址时,器件会自动产生一个外部访问。基于以上所述原因,并且IS61LV6416芯片是一种高速数据存储器,其容量为64K×16,分别有16位地址线和数据线,控制线包括片选信号、写允许信号、读选通信号、高位字节选通信号和低位字节选通信号,电源电压为3.3V,与C54x系列外设电压相同。因此,本课题设计中采用的SRAM存储器扩展芯片是IS61LV6416芯片。TMS320VC5402与IS61LV6416扩展的SRAM连接如图3-4所示。地址线和数据线对应相连,由于是数据存储器扩展,存储器的片选信号与DSP芯片的数据存储器的片选信号连接,以选通外部数据存储器,而存储器的写允许端与DSP芯片的读/写控制端相连,以实现数据的读/写操作,并且读选通信号、高位字节选通信号和低位字节选通信号引脚接地。图3-4SRAMIS61LV6416与DSP的连接3.2.3PRAM的扩展虽然前面已经扩展了FLASH外部存储器作为外部程序存储器,但是由于前面扩展的FLASH外部存储器的运行速度较慢,有可能跟不上DSP芯片的处理速度,而扩展的PRAM外部存储器的运行速度却能跟上DSP芯片的处理速度,因此我们要在DSP系统中扩展一个PRAM外部存储器,使得扩展的FLASH外部存储器跟上DSP芯片的处理速度。基于此,我们选择IS61LV6416芯片作为我们扩展PRAM外部存储器的芯片。TMS320VC5402与IS61LV6416扩展的PRAM连接如图3-5所示。地址线和数据线对应相连,由于是程序存储器扩展,存储器的片选信号与DSP芯片的数据存储器的片选信号连接,以选通外部程序存储器,而存储器的写允许端与DSP芯片的读/写控制端相连,以实现数据的读操作,并且读选通信号、高位字节选通信号和低位字节选通信号引脚接地。图3-5PRAMIS61LV6416与DSP的连接3.3DSP系统的外围电路设计一个完整的DSP系统通常是由DSP芯片和其他相应的外围器件构成的。本节主要说明了DSP硬件系统的外围电路设计,包括电源电路、复位电路、时钟电路等。3.3.1电源电路的设计为了降低芯片功耗,TMS320C54x系列芯片大部分都采用低电压设计,并且采用双电源供电,即内核电源CVDD和I/O电源DVDD。通常I/O电源采用3.3V供电,而内核电源采用3.3V、2.5V或更低的1.8V电源。TMS320VC5402芯片的内核电压为1.8V。下面介绍TMS320VC5402芯片的电源电路设计。TMS320VC5402芯片采用了双电源供电机制,以获得更好的电源性能,其工作电压分别为3.3V和1.8V。其中3.3V为I/O电源DVDD,主要供I/O接口使用,通常情况下可直接与外部低压器件进行接口,而不需要额外的电平变换电路。1.8V为内核电源CVDD,主要为芯片的内部逻辑提供电压,包括CPU、时钟电路和其他所有的外设逻辑。与3.3V电源相比,1.8V电源可以大大降低芯片功耗。由于TMS320VC5402芯片采用双电源供电,使用时需要考虑它们的加电次序。理想情况下,DSP芯片上的两个电源应同时加电,但在有些场合很难做到。若不能做到同时加电,应先对DVDD加电,然后再对CVDD加电,同时要求DVDD电压不超过CVDD电压2V。这个加电次序主要依赖于芯片内部的静电保护电路。TMS320VC5402芯片的电流消耗主要取决于器件的激活度,而内核电源CVDD所消耗的电流主要取决于CPU的激活度,外设消耗的电流取决于正在工作的外设及其运行速度。与CPU相比,外设消耗的电流通常是比较小的。时钟电路也需要消耗一小部分电流,且这部分电流是恒定的,与CPU和外设的激活程度无关。内核电源CVDD为器件的所有内部逻辑提供电流,包括CPU、时钟电路和所有外设。I/O电源DVDD只为外设接口引脚提供电压,消耗的电流取决于外部输出的速度,数量以及在这些输出口上的负载电容。DSP芯片采用哪种供电机制,主要取决于应用系统中提供的电源。目前,生产电源的芯片很多,如Maxim公司的MAX604,TI公司的TPS73xx系列等。这些芯片可分为线性芯片和开关芯片两种,在设计中要根据实际的需要来选择。如果系统对功耗要求不高时,可使用线性稳压芯片,其特点是使用方法简单,电源纹波电压较低,对系统的干扰较小。若系统对功耗要求较苛刻时,应使用开关电源芯片。通常情况下开关电源芯片的效率可以达到90%以上,但开关电源所产生的纹波电压较高,且开关振荡频率在几千赫兹到几百千赫兹的范围,易对系统产生干扰。基于以上原因,在电源电路的设计中选择了TI公司的TPS73HD318芯片,此芯片提供了两路输出电源,输出电压分别为3.3V和1.8V,每路电源的最大输出电流为750mA,并且提供两个宽度为200ms的低电平复位脉冲,可以满足TMS320VC5402DSP系统的需要。电源电路如图3-6所示。图3-6双电源电路3.3.2复位电路的设计TMS320VC5402芯片的复位输入引脚()为处理器提供了硬件初始化的方法,它是一种不可屏蔽的外部中断,可在任何时候对TMS320VC5402芯片进行复位。这个引脚上电平后可以使程序从指定的存储地址FF80H开始运行。当时钟电路工作后,只要在引脚上出现两个外部时钟周期以上的低电平,则芯片始终处于复位状态。对于一个DSP系统而言,上电复位电路虽然只占很小的一部分,但它的好坏将直接影响整个系统工作的稳定性。由于实际的DSP系统需要较高频率的时钟信号,在运行过程中极容易发生干扰现象,严重时可能会造成系统死机,导致系统无法正常工作。为了解决这种问题,除了在软件设计中加入一些保护措施外,硬件设计也必须做出相应的处理。目前,最有效的硬件保护措施是采用具有监视功能的自动复位电路。自动复位电路除了具有上电复位功能外,还能监视系统运行,当系统发生故障或死机时可通过该电路对系统进行自动复位。根据以上所述,可以使用与常用的器件设计相应的自动复位电路,如用555定时器和计数器组成。除此之外,也可以采用专用的自动复位集成电路,如Maxim公司的MAX706、MAX706S芯片。其中,MAX706S是一种能与具有3.3V工作电压的DSP芯片相匹配的自动复位电路。因此在复位电路的设计中选择了Maxim公司的MAX706S芯片。又由于DSP芯片要求在复位信号从低到高之前,时钟必须已经稳定工作了若干时间(毫秒级),同时对复位信号低电平的宽度也有要求,而且复位信号上不应有毛刺出现,因此采用了图3-7所示的复位电路。引脚6为系统提供的监视信号,来自DSP芯片的输出端TOUT0,是一个通过程序产生的周期不小于10Hz的脉冲信号。引脚7为低电平复位输出信号,是一个不小于1.6s的复位脉冲,用来对DSP芯片复位。图3-7复位电路当DSP处于不正常工作时,由程序所产生的周期脉冲将会消失,自动复位电路将无法接收到监视信号,MAX706S芯片将通过引脚7产生复位信号,使系统复位,程序重新开始运行,强迫系统恢复正常工作。3.3.3时钟电路的设计时钟电路用来为TMS320VC5402芯片提供时钟信号,由一个内部振荡器和一个锁相环PLL组成,可通过晶振或者外部的时钟驱动。TMS320VC5402芯片提供了两个时钟管脚X2和X1。其中,X2又称CLKIN,是一个输入管脚,而X1是一个输出管脚,其时钟发生器允许设计者选择时钟源。为DSP芯片提供的时钟一般有两种方法:一种是使用外部时钟源的时钟信号,将外部时钟信号直接加到DSP芯片的X2/CLKIN引脚,而X1引脚悬空。外部时钟源可以采用频率稳定的晶体振荡器,具有使用方便,价格便宜,因而得到广泛应用。另一种方法是利用DSP芯片内部的振荡器构成时钟电路,也就是在X1和X2/CLKIN引脚之间接入一个晶体来启动DSP芯片内部振荡器,如图3-8所示。选用的晶振Y为10MHz。图3-8时钟电路DSP芯片内部设计的时钟和分频电路,可以直接对内部和外部的时钟进行分频,作为DSP芯片的系统时钟,这种模式称为DIV模式。另外,DSP芯片内部设计具有锁相环PLL电路,锁相环PLL电路具有频率放大和时钟信号提纯的作用,利用锁相环PLL电路的锁定特性可以对时钟频率进行锁定,为芯片提供高稳定频率的时钟信号。除此之外,锁相环还可以对外部时钟频率进行倍频,使外部时钟源的频率低于CPU的机器周期,以降低因高速开关时钟所引起的高频噪声。当外部时钟输入后,通过内部锁相环PLL电路可以倍频到所需要的工作频率。锁相环PLL电路的启动有两种方式:(1)硬件控制,可以通过DSP芯片的CLKMD1、CLKMD2、CLKMD3三个引脚来设置,DSP芯片上电复位时,根据此三个引脚的电平来设定锁相环PLL的工作状态,并启动锁相环PLL工作。(2)软件编程控制,通过读写DSP芯片内部的时钟模式寄存器(CLKMD)可以完成锁相环PLL电路的设定。要改变锁相环PLL的倍率,必须先把时钟模式从PLL模式切换到DIV模式,然后再切换到新的倍率的PLL模式,不允许从一种PLL倍率直接切换到另一种PLL倍率。表3-1为TMS320VC5402芯片时钟模式设定。表3-1时钟模式设定CLKMD1CLKMD2CLKMD3CLKMDRESETVALUECLOCKMODE0000000H1/2(PLLdisabled)0019007HPLL×100104007HPLL×51001007HPLL×2110F007HPLL×11110000H1/2(PLLdisabled)101F000H1/2(PLLdisabled)011Rserved(Bypassmode)3.4JTAG仿真接口电路的设计对于大部分处理器而言,JTAG接口共提供了7个信号,即TCK、TDI、TDO、TMS、TRST、EMU0和EMU1。其中,TCK是仿真器发向目标板的时钟信号;TDI为数据输入,即数据由仿真器端传向目标板;TDO为数据输出,其方向与TDI相反,即数据由目标板传向仿真器端;TMS为测试模式选择,信号由仿真器发起,目标板为接收端;TRST是仿真器发起的复位信号,用于JTAG仿真模式的复位;EMU0和EMU1用于对多处理器的目标板进行仿真。由于TMS320VC5402提供了片上JTAG接口,方便了仿真调试,只需将DSP芯片上的TCK、TDI、TDO、TMS、、EMU0、EMU1共7个引脚接出,做成一个标准的14针插座,就可以供仿真器调试目标板。JTAG仿真接口电路如图3-9所示。图3-9JTAG仿真接口电路我们所设计的DSP系统用到的DSP芯片为TMS320VC5402。为了保证该芯片能够正常稳定工作,需要对它的引脚进行配置。所谓引脚的配置,是将相应的引脚按照正确的逻辑状态进行设置,即用10K电阻上拉到高电位,使引脚置为逻辑1;或将引脚直接接地,置为逻辑0。TMS320VC5402引脚配置主要有:为了保证用户编写的程序能够从外部FLASH引导到DSP芯片内存储器中,DSP芯片应设置为计算机模式,引脚应下拉接地,设置为逻辑0。为了避免DSP芯片在程序运行中出现不正确的跳转,应将~和上拉为1,设置为逻辑1。为了防止DSP芯片出现意外停止响应和额外插入等待周期,应将和READY引脚上拉为1,设置为逻辑1。时钟电路采用内部时钟源,时钟模式设置为2。时钟模式引脚CLKMD1上拉为1,设置为逻辑1,CLKMD2和CLKMD3下拉为0,设置为逻辑0,而时钟引脚X1和X2/CLKIN外接晶体。综上所述,TMS320VC5402的基本引脚连接如图3-10所示。图3-10TMS320VC5402的基本引脚连接4带阻滤波器的DSP实现基于前面几章所述,我们所设计的带阻滤波器的性能指标为下通带边缘:,上通带边缘:,;下阻带边缘:,上阻带边缘:,;采样频率:。并且上一章已经介绍了实现带阻滤波器的DSP系统的硬件电路设计,进而这一章我们来介绍实现带阻滤波器的CCS软件设计。4.1FFT/IFFT算法程序及应用FFT/IFFT在数字信号处理中是一种非常重要的算法,在很多的应用领域,如xDSL调制器、数字电视、手持无线接收装置中都有用到。它可以直接用来分析信号的频谱;利用快速卷积求解FIR滤波器的输出。正是由于FFT有着这些用途,并考虑到对滤波器参数的判定,以及今后继续开发其他通讯软件时的应用,编写了FFT子程序,这样既可以直接演示信号频谱,也可以把子程序嵌入到主程序之中,进行频谱分析与计算。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,如此这般下去就可以了。这里最小的变换点数就是基数,因此,基数为2的FFT算法的最小变换或称蝶形变换就是2点的DFT,是最基本的运算单位。一般N点FFT对应于N个输入样值,有N个频域样值与之对应。DFT分解法基本上分为两类:一类是将时间序列(n为时间标号)进行逐次分解,由此得到的FFT算法称为按时间抽取(Decimation-in-time)算法;另一类是将傅立叶变换序列(k为频率标号)进行分解,叫做按频率抽取(Decimation-in-frequency)算法。对这两种算法,库利—图基和桑德-图基进行了理论的推导,故又称为库利—图基(Cooley-Tukey)算法和桑德—图基(Sande-Tukey)算法。DITFFT算法是在时域内将每一级输入序列依次按奇/偶分成2个短序列进行计算的,而DIFFFT算法是在频域内将每一级输入序列依次按奇/偶分成2个短序列进行计算的。两者的区别是旋转因子出现的位置不同,但算法是一样的。对每一算法,按基本的蝶形运算的构成又可分为基2、基4、基8以及任意因子等的FFT算法。不同基的FFT算法所需的计算量略有差异,之所以说略有差异是指并无数量级的差别,甚至无成倍的差别,只是某种基的算法比另一种省几分之几而已。就目前来说,基2和基4算法是使用最广泛的算法。N点FFT总共有(N/2)*个蝶形运算。设蝶形的输入分别为P和Q,输出分别为和,则有:(4.1)在时间抽取FFT算法过程中,输入序列是码位倒置或称比特反转的,也就是说,如果将序列的下标用二进制表示,那么这个序列是按照二进制数的相反方向排列的。所以FFT算法由两部分组成:码位倒置和2点的DFT运算。4.1.2FFT算法的实现DSP芯片的出现使FFT的实现方法变得更为方便。由于大多数DSP芯片都具有在单指令周期内完成乘法-累加操作,并且提供了专门的FFT指令,使得FFT算法在DSP芯片实现的速度更快。用TMS320VC5402芯片的汇编程序实现FFT算法主要分为四步:(1)实现输入数据的比特反转:输入数据的比特反转实际上就是将输入数据进行位码倒置,以便在整个运算后的输出序列是一个自然序列。在用汇编指令进行位码倒置时,使用位码倒置寻址可以大大提高程序执行速度和使用存储器的效率。在这种寻址方式下,AR0存放的整数N是FFT点的一半,一个辅助寄存器指向一个数据存放的单元。当使用位码倒置寻址将AR0加到辅助寄存器时,地址将以位码倒置的方式产生。(2)实现N点复数FFT:N点复数FFT算法的实现可以分为三个功能模块,即第一级蝶形运算、第二级蝶形运算、第三级至级蝶形运算。(3)功率谱的计算:用FFT计算的频谱,即计算(4.2)一般是由实部和虚部组成的复数,即(4.3)因此,计算功率谱时只需将FFT变换好的数据,按照实部和虚部求它们的平方和,然后对平方和进行开平方运算就可以了。但是考虑到编程的难度,并且对于求FFT变换后数据的最大值时,不开平方也可以找到最大值,并对功率谱的结果没有影响,所以在实际的DSP编程中省去了开平方的运算。(4)输出FFT结果。4.2CCS开发环境本节将介绍CCS(CodeComposerStudio)的基本开发环境、软件开发过程和CCS组件。CCS提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,能够加速开发进程,提高工作效率。CCS全称是CodeComposerStudio,它提供了基本的代码生成工具,具有一定的调试、分析能力,在CCS下的程序开发过程如图4-1所示。编程和编译编程和编译调试分析设计图4-1程序开发过程CCS包括CCS代码生成工具;CCS集成开发环境;DSP/BIOS插件程序、APIRTDX插件程序和主机接口等。代码生成工具CCS奠定了CCS所提供的开发环境的基础,典型的软件开发流程如图4-2所示。主要应用到的工具包括:C编译器(CCompiler)产生汇编源代码。汇编器(Assembler)把汇编语言源文件翻译成机器语言目标文件。链接器(Linker)把多个目标文件组合成单个可执行目标文件。归档器(Archiver)可以把一组文件收集到一个归档文件中,这在长时间的调试时是十分有用的。运行支持库run_time_supportlibraries:包括C编译器所支持的ANSI标准运行函数、编译器公用程序函数、浮点运算函数和C编译器支持的I/O函数。十六进制转换公用程序(HaxConversionUtility)可以把COFF目标文件转换成TI-Tagged、ASCII-hexIntel、Motorola-S、Tektronix等目标格式之后,再把转换好的文件下载到EPROM编程器中。汇编使用编辑器生成目标文件汇编使用编辑器生成目标文件链接使用链接器生成可执行代码Flash或EPROM编程软件调试器硬件调试器目标格式转换C54x目标系统编辑源文件和命令文件图4-2典型的软件开发流程集成开发环境CCS是一种集成代码调试工具,可以使开发设计人员不必在DOS窗口键入大量的命令及参数,CCS集成的调试工具使调试程序一目了然,大量的观察窗口使程序编写与修改得心应手。CCS的引入,大大缩短了DSP的开发进程,开发成本也降低了很多。CCS的主要特点如下:硬件配置:支持多CPU、save/load多个配置文件,设置方便。可视化的工程管理:文件管理方便。IDE编辑环境:C语言和汇编语言可以混合编程、可高亮显示程序语句、可设置断点、有查找替代功能、在线HELP功能、快捷键功能、书签功能、EDIT功能。实时功能的配置:最高的存储库利用率、自动增加、实时功能、中断向量的定义、存储器的映射、定义线程、增加组件,并且编译过程中能智能检测到程序错误;编译效率:集成代码调试工具、TI高效率的代码编译技术、图形化的选项功能,用C语言编写程序,从而能节省开发者大量时间。数字信号的输入与输出:探针功能,数字信号可直接存入文件中,便于I/O。手工和自动检测功能:基于C描述语言、易于掌握和学习、易于控制DSP应用程序、支持多个功能模块、快速定做GUI、增加菜单项、创建对话框、自动测试功能、自动重复功能。虚拟的数据环境:用常用的格式观察数据,通过改变一些变量来观察效果,多种图形观察方式、Time/frequency、FFT、Eyediagram、Constellationploto。第三方的嵌入模块:方框图和原始代码生成器、信号分析工具,通过扩展的应用程序产生相关的控制,快速保护功能、滤波器、应用程序的配置、自动的S/W测试工具、软件配置工具。调试DSP目标程序,它主要由几个主要的窗口组成:工程组显示窗口、程序内容显示窗口、编辑信息提示窗口和主要工具栏。另外,在编辑过程中还可以显示诸如存储器观察窗口、变量监视框、图形显示框等调试界面,它们为程序编写调试提供多种手段,为软件开发提供了极大的方便。在利用CCS编程的过程中,我们不可避免的要遇到如何将程序变量分配到内存中去的问题。这是因为即使DSP的存储空间比较大、速度也十分快,但是如果内存空间分配不当的话,还是会出现空间不够、运行速度下降,甚至导致程序跑飞的情况,这样会使程序调试起来十分麻烦,因此我们一定要分配好内存空间,防止程序跑飞的情况的发生。4.3带阻滤波器的软件设计由于上面所要设计的带阻滤波器的性能指标为下通带边缘:,上通带边缘:,;下阻带边缘:,上阻带边缘:,;采样频率:。那么下面我们就介绍一下它的软件设计。4.3.1带阻滤波器的程序流程对输入的模拟信号经过A/D进行抽样,即将模拟信号转换为数字信号,DSP读取每一次的抽样值,并对每一次的抽样值进行卷积运算(FIR数字滤波),然后将运算结果(滤波后的数字信号)送至D/A转换成模拟信号输出。主程序流程如下:(1)对DSP进行初始化,定义所需的向量和工作模式,对用到的寄存器进行配置。(2)为数字滤波做准备,将预先设计好的有N个抽头的FIR滤波器的冲击响应序列中的N个数值放入存储单元。(3)开始进行抽样并读取抽样值,放入适当的存储单元。(4)将抽样值进行运算处理,包含:将累加器清零,设置两个相乘的存储单元、的初始值为、;将第个抽样值与第个冲激响应序列的值相乘,并将乘积送入累加器进行累加;将第个抽样值放入,此时中的原数值被覆盖;重复以上两步直到完成次乘法操作。(5)输出处理结果,重复(3)、(4)、(5)。主程序流程图如图4-3所示。开始开始初始化McBSP初始化A/D、D/A开中断并设置接收数据缓存软件等待数据接收是否完毕NY送入DSP芯片后进行处理开中断并设置发送数据缓存软件等待数据发送是否完毕NY图4-3主程序流程图参数初始化完成以后需要启动数据进行A/D转换以及如何将DSP处理的数据经D/A转换输出,程序设计中还要完善这一点。4.3.2带阻滤波器的实现本设计中采用C语言和汇编语言混合编程的方式进行的,程序主体由C语言编写,而核心的FIR滤波算法则由汇编语言编写。用C语言开发DSP程序不仅使DSP开发的速度大大加快,而且开发出来的DSP程序的可读性和可移植性也大大增加,程序修改也很方便。用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模块和汇编模块可以相互访问各自定义的函数或变量。在编写独立的汇编程序时,必须注意以下几点:不论是用C语言编写的函数还是用汇编编写的函数,都必须遵循寄存器使用规则。必须保护函数要用到的几个特定寄存器,在TMS320C54X的C编译中,这些特定的寄存器包括:ARD(FP)、ARI(SP)、AR6和AR7。其中,如果SP正常使用,则不必明确加以保护。从汇编程序调用C函数时,以逆序方式压入堆栈,调用时再将参数弹出。调用C函数时,C函数只保护几个特定的寄存器,而对于其它寄存器C函数是自由使用的。长整型和浮点数在存储器中存放的顺序是低位字在低地址,高位字在高地址。如果函数有返回值,则返回值存放在累加器ACC中。汇编模块不能改变由C程序产生的.cinit块,如果改变其内容则会引起不可预测的后果。编译器在所有的标识符(函数名、变量名)前要加一下划杠“_”。因此,编写汇编语言程序时,必须在C程序可以访问的所有对象前加“_”。任何在汇编中定义的对象或函数,如果需要在C程序中访问或调用,则必须用汇编指令.global定义。同样,如果在C程序中定义的对象或函数,需要在汇编程序中访问或调用,在汇编程序中也必须用.global定义。汇编程序调试首先在CCS中建立新的工程,然后将汇编语言源文件以及中断向量文件、位文件添加到工程中。如果是C语言程序则还要添加“stdio.h”、“math.h”、“rts.lib”,编译通过后生成.out文件,可以直接下载到实验板上。之后将整个带阻滤波器项目成功地下载到目标系统板,带阻滤波器程序就可以在EVM板上运行。结束语本论文的主要工作是设计能实现带阻滤波器的DSP系统,包括确定带阻滤波器的性能指标,DSP芯片的选择,系统的硬件电路设计和软件设计。通过查阅资料确定了所要设计的带阻式滤波器系统,并通过MATLAB工具确定了所要设计的带阻滤波器的性能指标。据此设计了DSP系统的硬件电路,包括DSP系统的外围电路,A/D与D/A接口电路,外部存储器扩展电路。经过这段的摸索也得出一整套DSP芯片开发的方法与调试技巧,包括熟悉了TI公司的TMS320C54x的硬件结构,CCS开发环境下程序开发的方法,调试工具的使用等方面。开发出的可演示的算法程序,包括窗函数法设计的可调整参数的FIR带阻滤波器,用于频域分析的FFT/IFFT算法程序。通过对算法的深入分析,结合DSP芯片的特点,进行了算法的优化设计,最后通过与MATLAB的仿真对比,证明其实现了预定设计指标。展望与设想:(1)在本论文编程过程中如能注意有效指令的使用,则可优化程序,减少代码量;(2)以上的算法都已通过验证,但还有待改进,如能对编译后生成的代码进行手工优化,则可进一步提高处理速度;(3)DSK板的资源丰富,还有较大的开发空间。致谢首先,我要感谢我的导师,他严谨细致、一丝不苟的作风一直是我学习、工作中的榜样;其次,我要感谢同组同学对我的帮助和指点,没有他们的帮助和提供的资料,这次毕业设计就不会如此顺利地进行和完成。此次毕业设计历时三个多月,是我大学学习中遇到过的时段最长、涉及内容最广、工作量最大的一次设计,我忘不了在此期间我导师给我的指导。当每次遇到不懂的问题时,我都会第一时间记在本子上面,然后等答疑的时候问我导师,导师对于我提出来的问题都一一解答,从来都不会因为我的问题稍过简单而加以责备,而是一再的告诫我做设计时该注意的地方。在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,在这之间有我导师的帮助,也有我同学的帮助,在这里请接受我诚挚的谢意!最后我还要感谢电气信息工程学院和我的母校郑州轻工业学院四年来对我的栽培。参考文献[1]潘松,黄继业,王国栋编著.现代DSP技术.西安:西安电子科技大学出版社,2003.[2]赵刚,黄建明,隋燕等编著.基于数字滤波器设计的讨论[J].天津:南开大学学报(自然科学版),2003.26(3):15218.[3]张雄伟,徐亮编著.DSP集成开发与应用实例.北京:电子工业出版社,2002,28-33.[4]程佩青编著.数字信号处理教程[M].北京:清华大学出版社,2000,3~15.[5]余成波,杨菁,杨如民编著.数字信号处理及MATLAB实现.北京:清华大学出版社,2005,90~127.[6]李正周编著.MATLAB数字信号处理与应用.北京:清华大学出版社,2008,93~119.[7]孙宗瀛编著.DSP原理设计与应用[M].北京:清华大学出版社,2002.[8]邹彦编著.DSP原理及应用.北京:电子工业出版社,2004,40~43,279~330.[9]张雄伟,陈亮,徐光辉编著.DSP集成开发与应用实例[M].北京:电子工业出版社,2002.[10]清源科技编著.DSP应用开发教程系列TMS32054xDSP硬件开发教程.北京:机械工业出版社,2003,132-155.[11]TMS320C54XDSPREFERRENCESETVOL.3:AlgebraicInstructionSet.TexasInstrumentsIncorporated.2001.[12]程佩青编著.数字滤波与快速傅里叶变换.北京:清华大学出版社,1988.[13]胡广书编著.数字信号处理理论、算法与实现.北京:清华大学出版社,1997.[14]TMS320C54xCodeComposerStudioTutorial.TexasInstrumentsIncorporated.2000.[15]张雄伟,曹铁勇编著.DSP芯片的原理与开发应用.北京:电子工业出版社,2000.[16]周霖编著.DSP算法设计与系统方案.北京:国防工业出版社,2004,7.附录附录1:原理图附录2:MATLAB程序clearall;fpl=20;fph=80;fsl=40;fsh=60;Fs=10000;Wpl=2*pi*fpl/FsWph=2*pi*fph/FsWsl=2*pi*fsl/FsWsh=2*pi*fsh/Fstr_width=min((Wsl-Wpl),(Wph-Wsh));%过渡带宽度N=ceil(6.2*pi/tr_width)%滤波器长度n=0:1:N-1;Wcl=(Wsl+Wpl)/2;%理想低通滤波器的截止长度Wch=(Wsh+Wph)/2;alpha=(N-1)/2;m=n-alpha+eps;hd=[sin(Wcl*m)+sin(pi*m)-sin(Wch*m)]./(pi*m);w_han=(hanning(N))';%汉宁窗h=hd.*w_han;%截取得到实际的单位脉冲响应[H,w]=freqz(h,[1],1000,'whole');H=(H(1:1:501))';w=(w(1:1:501))';mag=abs(H);%绝对幅值响应db=20*log10((mag+eps)/max(mag));%相对幅值响应pha=angle(H);%相位响应delta_w=2*pi/1000;Ap=-(min(db(1:1:Wpl/delta_w+1)))%实际通带波纹As=-round(max(db(Wsl/delta_w+1:1:Wsh/delta_w+1)))%实际阻带波纹subplot(211)plot(w/pi,db)title('汉宁窗幅度响应(dB)')axis([0,0.5,-50,10])subplot(212)plot(w/pi,pha/pi)title('汉宁窗相位响应')axis([0,1,-5,5])附录3:CCS程序#pragmaCODE_SECTION(vect,"vect")#include"stdio.h"#include"math.h"#definepi3.1415927#defineIMR*(pmem+0x0000)#defineIFR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论