已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于TMS320VC5410芯片的FIR数字滤波器的设计学生姓名: 指导老师:摘 要:DSP技术一般指将DSP 处理器用于完成数字信号处理的方法与技术。目前的DSP芯片以其强大的数据处理功能在通信和其他信号处理领域得到广泛注意并已成为开发应用的热点技术。许多领域对于数字信号处理器的应用都是围绕美国德州仪器所开发的DSP处理器来进行的。DSP芯片是一种特别适合于进行数字信号处理运算的微处理器。其中利用DSP来实现数字滤波器就是很重要的一种应用,本文深入研究基于美国德州仪器公司(TI)TMS320C5410 DSP芯片的滤波器系统软件实现方法,用窗口设计法实现FIR滤波器,给出了MATLAB仿真结果,并在以TI TMS320C5410为微处理器的DSK上实现,实验结果表明滤波结果效果良好,达到了预期的性能指标。 关键词:DSP;TMS320C5410;FIR滤波器;FFT/IFFT;自适应滤波器The Design and Implemention of FIR Filter Based on DSPsAbstract:DSP technology means the technology to accomplish digital signal processing.Nowadays DSP are getting more and more attentions in the information field, due to its powerful signal processing ability, becoming a hot-point technique in communication and other relating signal processing areas. DSP chip is especially fit for digital signal processing, Realizing digital filters with DSP is an important application.The paper discusses the filters software realization based on TMS320C5410 and finished the hardware system of noise-restraining. The arithmetic system was compiled with C and assemble language, The main works accomplished are as following: realization of FIR filter with window function, and to reach the simulation result through MATLAB, also realization on TMS320C5410 chip,the result of experiment to make clear that the effect is fine. Keywords: DSP; TMS320C5410; FIR Filter; FFT/IFFT; Adaptive Filtering 1引言随着信息时代和数字世界的到来,数字信号处理已成为如今一门极其重要的学科和技术领域。数字信号处理在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。数字信号处理(DSP)包括两重含义:数字信号处理技术(Digital Signal Processing)和数字信号处理器(Digital Signal Processor)。数字信号处理(DSP)是利用计算机或专用处理设备,以数值计算的方法、对信号进行采集、滤波、增强、压缩、估值和识别等加工处理,借以达到提取信息和便于应用的目的,其应用范围涉及几乎所有的工程技术领域。在数字信号处理的应用中,数字滤波器很重要而且得到了广泛的应用。按照数字滤波器的特性,它可以被分为线性与非线性、因果与非因果、无限长冲击响应(IIR)与有限长冲击响应(FIR)等等。目前FIR滤波器的实现方法大致可分为三种:利用单片通用数字滤波器集成电路、DSP器件和可编程逻辑器件实现。单片通用数字滤波器使用方便,但由于字长和阶数的规格较少,不能完全满足实际需要,使用以串行运算为主导的通用DSP芯片实现要简单,是一种实时、快速、特别适合于实现各种数字信号处理运算的微处理器,借助于通用数字计算机按滤波器的设计算法编出程序进行数字滤波计算。由于它具有丰富的硬件资源、改进的哈佛结构、高速数据处理能力和强大的指令系统而在通信、航空、航天、雷达、工业控制、网络及家用电器等各个领域得到广泛应用。2系统硬件简述2.1DSP系统的构成一个典型的 DSP 系统如图2.1示。图2.1 典型的DSP系统图2.1是一个用DSP做信号处理的典型框图。由于DSP是用来对数字信号进行处理的,所以首先必须将输入的模拟信号变换为数字信号。于是先对输入模拟信号进行调整,输出的模拟信号经过A/D变换后变成DSP可以处理的数字信号,DSP根据实际需要对其进行相应的处理,如FFT、卷积等;处理得到的结果仍然是数字信号,可以直接通过相应通信接口将它传输出去,或者对它进行D/A变换将其转换为模拟采样值,最后再经过内插和平滑滤波就得到了连续的模拟波形模拟信号。当然,图中的有些环节并不是必需的。如A/D转换,如果输入的是数字信号,就可以直接交给DSP进行运算。2.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芯片软件编程硬件设计系统集成软件调试系统测试和调试图2.2 DSP基本设计流程2.3TI DSP介绍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.4C5410芯片在本设计中使用的DSP是TMS320VC5410。它属于TI C5000系列中的C54X系列,正如前面所说,同一系列的DSP具有相同的内核、相同或兼容的汇编指令集,差别仅在于内存储器的大小,片内外设等等,所以就首先介绍一下C54系列DSP普遍具有的特点和性能。54X具有改进的哈佛结构,使其处理能力达到最大。分开的程序空间和地址空间提供了高度的并行性,可以同时访问程序指令和数据,例如三次读操作和一次写操作可以在一个周期内完成。带并行存储的指令和具有特殊应用的指令充分利用了这种结构。这种并行性支持一套强大的算术运算、逻辑运算和位操作运算,所以使得这些运算可以在单个机器周期内完成。而且54X的运行机制还支持中断处理、重复操作和函数调用等等。对于任意通用可编程芯片来说,一般都具备以下几个部分:(1)内部存储器:主要用来存储程序、执行程序、存储数据等;(2)中央处理单元(CPU):用来实现各种运算功能;(3)片内外设:用来实现一些特定功能,如时钟发生器、硬件定时器等等;(4)外部总线接口:用来和其他芯片接口,协同工作;(5)通信接口:用来从外围芯片获得数据或者将处理完的数据传输出去;(6)内部总线:用来连接芯片中不同的单元。也就是说,以上各个部分的通信是通过内部总线来完成的。2.5 CCS集成开发环境调试DSP目标程序,它主要由几个主要的窗口组成:工程组显示窗口、程序内容显示窗口、编辑信息提示窗口和主要工具栏。图 2.3 就是基本编辑界面。图2.3 CCS基本编辑界面在利用CCS编程的过程中,不可避免的要遇到如何将程序变量分配到内存中去的问题。因为,即使 DSP 的存储空间比较大,速度也十分快,但是如果内存空间分配不当的话,还是会出现空间不够行速度下降,甚至程序跑飞的情况,这样会时程序调试起来十分麻烦。所以,一定要分配好内存空间CCS提供了两种分配空间的方法:利用cmd文件或rcp文件分配空间,其中cmd 文件是纯文本格式的描述性的空间分配方式, 它的优点是程序员对空间的可控制性较高,可以将不同的块分配到指定的地址,并规定长度。但它对于初学者来说,要求对C5410的内存空间的分配有较清楚的认识,否则容易将数据分配到不该分配的地方,引起程序运行的冲突,甚至程序跑飞。所以,一般在编程过程中,使用 rcp 文件对程序进行内存分rcp文件全称是 recipe 文件,这是一种图形化界面的内存分配文件。对于一个新生成的工程组rcp文件的生成方法是:选择CCS菜单上的Tools项,选择linker configuration项,将分配方式改为use the visual linker之后直接编译,编译信息提示窗口中会显示出错信息,提示找不到rcp文件,双击提示CCS会自动弹出rcp生成向导,按照要求选择rcp模板,就会生成这个工程对应的rcp文件,双击生成的rcp文件,通过visual linker连接器可以打开这个文件。当程序中新增加了变量后,在rcp文件中会出现Not yet placed项,只要将其下的文件夹,根据类型拖动到run_view下的相应的数据存储器或程序存储器即可。3 FIR滤波器的设计与实现3.1 FIR滤波器的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为滤波器类型。缺省时为低通或带通滤波器,为high时是高通滤波器,为stop时是带阻滤波器。Window为窗函数,列向量,其长度为n+1;缺省时,自动取hamming窗。输出参数B为FIR滤波器系数向量,长度为n+1。3.1.1 带通滤波器的MATLAB实现使用矩形窗对带通原型进行截取。带通滤波器的指标性能给出如下:下阻带边缘:,下通带边缘:,上通带边缘:,上阻带边缘:,设计结果如3.1所示。图3.1 矩形窗设计3.2 FIR滤波器的应用3.2.1 FFT算法的实现DSP芯片的出现使FFT的实现方法变得更为方便。由于大多数DSP芯片都具有在单指令周期内完成乘法-累加操作,并且提供了专门的FFT指令,使得FFT算法在DSP芯片实现的速度更快。用TMS3205410的汇编程序实现FFT算法主要分为四步:(1)实现输入数据的比特反转输入数据的比特反转实际上就是将输入数据进行位码倒置,以便在整个运算后的输出序列是一个自然序列。在用汇编指令进行位码倒置时,使用位码倒置寻址可以大大提高程序执行速度和使用存储器的效率。在这种寻址方式下,AR0存放的整数N是FFT点的一半,一个辅助寄存器指向一个数据存放的单元。当使用位码倒置寻址将AR0加到辅助寄存器时,地址将以位码倒置的方式产生。(2)实现N点复数FFT N点复数FFT算法的实现可以分为三个功能模块,即第一级蝶形运算、第二级蝶形运算、第三级至级蝶形运算。(3)功率谱的计算用FFT计算x(n)的频谱,即计算 (3.1) X(k)一般是由实部和虚部组成的复数,即 (3.2)因此,计算功率谱时只需将FFT变换好的数据,按照实部和虚部求它们的平方和,然后对平方和进行开平方运算。但是考虑到编程的难度,对于求FFT变换后数据的最大值,不开平方也可以找到最大值,并对功率谱的结果没有影响,所以在实际的DSP编程中省去了开平方的运算。(4)输出FFT结果FFT 算法的基本流程如图3.2所示: 3.2.2FFT算法的仿真和测试结果 (a)MATLAB仿真波形 (b)DSP测试波形图3.3 仿真和测试波形 返 回输 出 部 分位反转程序部分将输入数据调入片内RAMAR1-INPUTAR3-INPUTIW-系数增量变量初始化AR1-TAB将系数调入内存定义输出数据存放地址INPUT定义FFT运算时输入数据的地址INDAT定义系数表在内存的地址TAB进行内部存储器的定义,设置变量FFT计算的点数NFFT计算的级数M系数起始地址WKAD循环计数标志cycle1.cycle2程 序 入 口蝶形运算是否结束NY图3.2 FFT算法的基本流程图3.3 FIR的DSP实现设计3.3.1 FIR滤波器的实现方法在数字信号处理系统中,常常要用到FIR数字滤波器,这是因为用FIR滤波器可以逼近任意幅频特性的滤波器,并获得很好的性能,在本论文中介绍FIR低通滤波器的DSP实现。TMS3205410是16位的定点处理器,所以在进行汇编程序设计时,FIR滤波器系数要采用Q15格式,即必须将上述系数转化为Q15格式,这只要将滤波器各系数乘以2即可。用DSP实现Z算法是十分方便的,常用的方法有两种:线性缓冲区法和循环缓冲区法。在本文中采用的是循环缓冲法,循环缓冲区法的特点是:(1) 对于N阶的FIR滤波器,在数据存储器中开辟一个也称为滑窗的N个单元的缓冲区,滑窗中存放最新的N个输入样本;(2) 每次移入新的样本时,以新样本改写滑窗中老的数据,而滑窗中的其他数据不需要移动;(3) 利用片内BK(循环缓冲区长度)寄存器对滑窗进行间接寻址,循环缓冲区地址首尾相邻。FIR滤波器的核心算法是计算输入信号与滤波器系数的卷积。设x(n)为输入信号,h(n)为FIR滤波器的冲击响应,n=0,N-1,则FIR滤波器的输出y(n)就是x(n)与h(n)的卷积,即: (3.3)由于卷积是数字信号处理中最常用到的算法,因此几乎所有的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。如图3.4所示。图3.4 FIR系数存储格式示意图考虑到在执行macd指令时是将低地址的数据复制到高地址来完成延迟功能,所以在用macd指令计算卷积时,先计算x(n-N+1)与h(N-1)的乘积,最后才计算x(n)与h(0)的乘积。因此在程序中,FIR滤波器的系数在程序存储器中按倒序存储。3.3.2 FIR滤波器的软件设计及其调试本设计中采用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程序中定义的对象或函数,需要在汇编程序中访问或调用,在汇编程序中也必须用.global指令定义。另外一种C语言和汇编混合编程的方法就是直接在C程序中嵌入汇编语句。采用这种方法一方面可以在C程序中实现用C语言无法实现的一些硬件控制功能,如修改中断控制寄存器、中断使能或无效、读取状态寄存器和中断标志寄存器等。另一方面,也可以用这种方法在C程序中的关键部分用汇编语句代替C语句以优化程序。采用这种方法的缺点是比较容易破坏C环境,因为C编译器在编译嵌入了汇编语句的C程序时,并不检查或分析所嵌入的汇编语句。但是如果对C编译器和C环境比较熟悉,采用这种方法也可以对C变量进行自由地操作。与独立编写汇编程序实现混合编程相比,这种方法具有以下优点:(1) 程序的入口和出口由C语言自动管理,不必手工编写汇编程序实现。(2) 程序结构清晰。这种方法保留了C程序的结构,如变量的定义等,因此程序结构清晰,可读性强。(3) 程序调试方便。由于C程序中的变量全部由C语言来定义,因此采用C源码调试器可以方便地观察C语言变量。汇编程序调试首先在CCS中建立新的工程fir.mak, 然后将汇编语言源文件(.asm或. c)文件以及中断向量文件(. asm)、位文件(. cmd)添加到工程中。如果是C语言程序则还要添加“stdio. h”、“math. h”“rts. lib”编译通过后生成. out文件, 可以直接下载到实验板上。这时,要注意硬件状况, 特别是要注意硬件指示灯是否各自处于正常状况, 也要注意硬件仿真器是否正常工作。如果硬件没有问题, 程序就可以正常下载, 这时打开Momery窗口, 可以看到数据存储器已经被划分 coff_ fir, d_ data_ buffer, in_ buffer,out_ buffer等区。编译并将整个FIR项目成功地下载到目标系统板后, FIR程序就可以在 EVM 板上运行。在主程序中,在flag = 0处设置断点;单击“Run”运行程序,程序将运行至断点处停止;用View / Graph / Time/Frequency打开一个图形观察窗口如图3.5示。图3.5 图形参数设置窗口设置观察图形窗口变量及参数为:采用双踪观察启始地址分别为x和y,长度为256的单元中数值的变化,数值类型为32位浮点型变量,这两个数组中分别存放的是经A/D转换后的输入混叠信号(输入信号)和对该信号进行FIR滤波的结果;单击“Animate”运行程序,调整观察窗口并观察滤波结果,如图3.6示。 图3.6 测试结果通过测试波形可以看到,该DSP5410实际滤波表现达到了算法仿真的要求。考虑到DSP5410是定点DSP,所以将输入信号以及滤波器系数都转换成了定点数,为了防止溢出,将输入信号的幅值进行缩小,将其控制在-1到1之间。4 设计中遇到的问题及解决办法 在开始实验之前,我已经对整个实验过程有了很深的了解,但是在试验的过程中,由于自己对芯片的不熟悉,以及对CSS集成开发环境的不熟练,导致在设计和实验中出现了不少的问题,比如说编写的代码在CSS运行中时常出错,但是找不到原因,没有搞清楚是芯片的原因还是仿真环境的原因,而且在最后得到的滤波效果也是十分不理想。通过对CSS集成开发环境的不断操作,我逐渐熟悉了这个仿真环境,并了解了出现将一般故障的具体表现和原因。同时,利用图书馆,网络,访问同学的方式,我也搞清楚了具体芯片的组成的基本系统的相关电路的基本知识。这是最基础的工作,也是最关键的步骤。在此基础上,之前的问题也迎刃而解。代码运行出错后,能准确地找到原因以及解决办法,终于在不断探索中取得了实验的成功,得到了理想的滤波图形。5 结束语本次课程设计的主要工作是FIR数字滤波器的设计进行研究,包括算法的仿真以及通过DSP的实现。FIR滤波器的计算机辅助设计主要是采用MATLAB来进行,用MATLAB模拟输入信号验证滤波器的效果。同时,经过长时间摸索也得出的一整套DSP芯片开发的方法与调试技巧。其中包括,熟悉了TI的TMS320C54X的硬件结构, CCS环境下程序开发的方法,调试工具的使用等方面。开发出的可演示的算法程序,包括窗函数法设计的可调整参数的FIR滤波器,通过对算法的深入分析,结合本款DSP芯片的特点,进行了算法的优化设计,最后通过与MATLAB的仿真对比证明其实现了预定设计标准。在历时4个星期的课程设计中,遇到了许多麻烦和难题,在此要特别感谢指导老师的殷勤指导和同学的帮助。在老师无私和不厌其烦的讲解后,让我解决了很多问题,走出了许多误区。参考文献1 赵刚,黄建明,隋燕. 基于数字滤波器设计的讨论J.南开大学学报(自然科学版),2003.26(3):15218.2 孙宗瀛. DSP原理设计与应用M. 北京:清华大学出版社,2002.3 TMS320C54X DSP REFERRENCE SET VOL.3:Algebraic Instruction Set. TexasInstruments Incorporated. 20014彭启 .DSP与实时数字信号处理.成都:电子科技大学出版社,19955付丽琴,桂志国,王黎明. 数字信号处理原理及实现. 国防工业出版社. 20046张雄伟,陈亮,徐光辉.DSP集成开发与应用实例M. 北京:电子工业出版社.2002.7张雄伟 曹铁勇. DSP芯片的原理与开发应用. 电子工业出版社. 20008周霖. DSP算法设计与系统方案. 国防工业出版社,2004.7.附件:FIR的DSP实现程序C1:FIR.c /*The programme of the FIR filter.Using INT2 to get the input signal.Array x is the input signal from A/D, the length is 256, 32-bit floating point.Array y is the signal out of filter, the length is 256, 32-bit floating point.Array h is the coefficient of the FIR filter, the length is 101, 101 order filter.*/#pragma CODE_SECTION(vect,vect)#include stdio.h#include math.h#define pi 3.1415927#define IMR *(pmem+0x0000) #define IFR *(pmem+0x0001) #define PMST *(pmem+0x001D) #define SWCR *(pmem+0x002B) #define SWWSR *(pmem+0x0028) #define AL *(pmem+0x0008) #define CLKMD 0x0058 /* clock mode reg*/#define Len 256#define FLen 101double npass,hFLen, xLen, yLen, xmidFLen;void firdes (double npass);unsigned int *pmem=0;ioportunsigned charport8001;int in_xLen;int m = 0;int intnum = 0;double xmean=0;int i=0;int flag = 0;double fs,fstop,r,rm;int i,j,p,k=0;void cpu_init()/asm( nop);/asm( STM #0, CLKMD); /asm( STM #0, CLKMD); /asm( rpt #0ffffh);/asm( nop);/asm( STM #0x97ff, CLKMD); *(unsigned int*)CLKMD=0x0; /switch to DIV mode clkout= 1/2 clkin while(*(unsigned int*)CLKMD)&01)!=0); *(unsigned int*)CLKMD=0x27ff; /switch to PLL X 10 modePMST=0x3FA0;SWWSR=0x7fff;SWCR=0x0000;IMR=0;IFR=IFR; interrupt void int2() in_xm = port8001;in_xm &= 0x00FF;m+;intnum = m;if (intnum = Len)intnum = 0;xmean = 0.0;for (i=0; iLen; i+)xmean = in_xi + xmean;xmean = 1.0*xmean/Len;for (i=0; iLen; i+)xi = (double)(in_xi - xmean);for (i=0; iLen; i+)for (p=0; pFLen; p+) xmidFLen-p-1 = xmidFLen-p-2; xmid0 = xi; r = 0;rm= 0; for (j=0; jFLen; j+) r = xmidj * hj;rm = rm + r; yi = rm; m=0;flag = 1; void firdes(double npass) int t; for (t=0; tFLen; t+) ht = sin(pi*(N-(N-1)/2.0)*(0.54-0.46(cos(2*pi/(N-1)/(pi* (N-(N-1)/2.0); if (t = (FLen-1)/2) ht=npass; void set_int() asm( ssbx intm);IMR=IMR|0x0004; asm( rsbx intm); void main(void)cpu_init(); fs =250000 ; /*sampling frequency*/ fstop = 31250; /*cut-off frequency*/ npass = fstop/fs; for (i=0; i PROG PAGE 0 .cinit PROG PAGE 0 .switch PROG PAGE 0 .vect 3f80h PAGE 0 .data DATA PAGE 1 .bss DATA PAGE 1 .const DATA PAGE 1 .sysmem DATA PAGE 1 .stack DATA PAGE 1袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《GBT 3043-2017 普通磨料 棕刚玉化学分析方法》专题研究报告
- 装修污染管控师风险评估与管理知识考核试卷含答案
- 压缩机装配调试工诚信道德水平考核试卷含答案
- 玻纤织布带工复测评优考核试卷含答案
- 化学镀银工安全培训效果强化考核试卷含答案
- 《GBT 14048.12-2016 低压开关设备和控制设备 第 4-3 部分:接触器和电动机起动器 非电动机负载用交流半导体控制器和接触器》专题研究报告
- 水族造景工安全培训效果测试考核试卷含答案
- 公司家用音频产品维修工职业健康、安全、环保技术规程
- 文物修复师岗前达标考核试卷含答案
- 重冶转炉工安全行为模拟考核试卷含答案
- GB/T 11344-2021无损检测超声测厚
- 汽车电子商务综述
- 人力资源部门经理竞聘演讲课件
- 汽车维修增项服务认知讲解课件
- 安全文明施工措施费清单五篇
- 交管12123驾驶证学法减分题库
- 2022年杭州萧山城市交通开发有限公司招聘笔试题库及答案解析
- QFSN-660-2-22型发电机检查性大修作业指导书
- 陕西省中考数学试卷含解析2
- 膝关节骨关节的“阶梯”治疗
- 国家开放大学《社区护理学(本)》形考任务1-5参考答案
评论
0/150
提交评论