无限冲激响应FIR在TMS320C64上实现.docx

上传人:b****8 文档编号:9158049 上传时间:2023-02-03 格式:DOCX 页数:23 大小:233.34KB
下载 相关 举报
无限冲激响应FIR在TMS320C64上实现.docx_第1页
第1页 / 共23页
无限冲激响应FIR在TMS320C64上实现.docx_第2页
第2页 / 共23页
无限冲激响应FIR在TMS320C64上实现.docx_第3页
第3页 / 共23页
无限冲激响应FIR在TMS320C64上实现.docx_第4页
第4页 / 共23页
无限冲激响应FIR在TMS320C64上实现.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

无限冲激响应FIR在TMS320C64上实现.docx

《无限冲激响应FIR在TMS320C64上实现.docx》由会员分享,可在线阅读,更多相关《无限冲激响应FIR在TMS320C64上实现.docx(23页珍藏版)》请在冰豆网上搜索。

无限冲激响应FIR在TMS320C64上实现.docx

无限冲激响应FIR在TMS320C64上实现

DSP芯片及应用课程设计

 

设计题目:

无限冲激响应FIR在TMS320C64上实现

 

姓名:

吴康鑫

学号:

09323219

学院:

信息工程

指导教师:

饶志华

时间日期:

2012.4.29

摘要 

随着计算机和信息技术的飞速发展,数字信号处理已经成为高速实时处理的一项关键技术,广泛应用在语音识别、智能检测、工业控制等各个领域。

数字滤波器是对数字信号实现滤波的线性时不变系统。

数字滤波实质上是一种运算过程,实现对信号的运算处理。

DSP数字信号处理(DigitalSignalProcessing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。

20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。

传感器数字信号处理是利用传感器对模拟信号或数字信号进行采集并把其转换成计算机可识别的电信号,并利用计算机对信号进行处理以达到计算机辅助控制或是计算机自动控制的目的。

DSP芯片是一种特别适合数字信号处理运算的微处理器,主要用来实时、快速地实现各种数字信号处理算法。

用DSP芯片实现IIR数字滤波器,不仅具有精确度高、不受环境影响等优点,而且因DSP芯片的可编程性,可方便地修改滤波器参数,从而改变滤波器的特性,设计十分灵活。

本课题主要应用MATLAB软件设计IIR数字滤波器,并对所设计的滤波器进行仿真;应用DSP集成开发环境——CCS调试汇编程序,文章结合TM320C5509的结构特点,介绍了一种IIR滤波器在TM320C5509中的实现方法。

文中程序已经过硬件验证,仿真结果表明该设计符合要求。

关键词  数字滤波;IIR;DSP;TM320C64;MATLAB

目录

摘要……

第1章绪论3

1.1数字滤波器的优越性3

1.2数字滤波器实现的方法3

1.3主要研究内容4

第2章滤波器基础5

2.1数字滤波器介绍5

第3章数字滤波器的DSP实现6

3.1TMS320C5509特点6

3.2DSP系统的设计与开发8

3.2.1DSP系统的特点8

3.2.2DSP系统的设计流程8

3.2.3DSP系统的开发工具CCS9

3.2.4IIR滤波器的设计框图10

3.2.5程序源代码10

3.2.6、实验结果及分析……………………………………………………………………13

第4章本文总结15

4.1总结15

参考文献15

 

 

第一章绪论

1.1数字滤波器的优越性

DSP芯片是一种特别适合数字信号处理运算的微处理器,主要用来实时、快速地实现各种数字信号处理算法。

数字信号处理由于具有精度高、灵活性强等优点,已广泛应用于图像处理、数字通信、雷达等领域。

数字滤波技术在数字信号处理中占有极其重要的地位,数字滤波器根据其单位脉冲响应可分为IIR(无限长冲激响应滤波器)和FIR(有限长冲激响应滤波器)两类。

IIR滤波器可以用较少的阶数获得很高的选择特性,但在有限精度的运算中,可能出现不稳定现象,而且相位特性不好控制。

数字滤波器本质上是一个完成特定运算的数字计算过程,也可以理解为是一台计算机。

数字滤波器又分为无限冲激响应滤波器(IIR)和有限冲激响应滤波器(FIR)。

FIR滤波器具有不含反馈环路、结构简单以及可以实现的严格线性相位等优点,因而在对相位要求比较严格的条件下,采用FIR数字滤波器。

同时,由于在许多场合下,需要对信号进行实时处理,因而对于单片机的性能要求也越来越高。

由于DSP控制器具有许多独特的结构,例如采用多组总线结构实现并行处理,独立的累加器和乘法器以及丰富的寻址方式,采用DSP控制器就可以提高数字信号处理运算的能力,可以对数字信号做到实时处理。

DSP(数字信号处理器)与一般的微处理器相比有很大的区别,它所特有的系统结构、指令集合、数据流程方式为解决复杂的数字信号处理问题提供了便利,本文选用TMS320C5509作为DSP处理芯片,通过对其编程来实现IIR滤波器。

对数字滤波器而言,从实现方法上,有FIR滤波器和无限冲激响应(IIR)滤波器之分。

由于FIR滤波器只有零点,因此这一类系统不像IIR系统那样易取得比较好的通带与阻带衰减特性。

但是IIR系统与传统的通过硬件电路实现的模拟滤波器相比有以下优点:

1、单位冲击响应有无限多项;

2、高效率(因为结构简单、系数小、乘法操作较少)

3、与模拟滤波器有对应关系

4、可以解析控制,强制系统在指定位置为零点

5、有极点,在设计时要考虑稳定性

6、具有反馈,可能产生噪声、误差累积

1.2数字滤波器的实现方法

目前数字滤波器的主要实现方法有:

1.在通用的微型计算机上用软件实现。

软件可以是自己编写的,也可以使用现成的软件包,这种方法的缺点是速度太慢,不能用于实时系统,只能用于教学和算法的仿真研究。

比如用MATLAB就几乎可以实现所有数字滤波器的仿真。

而且在MATLAB下的部分仿真程序还可以通过转化为C语言,再通过DSP的C编译器直接在DSP硬件上运行。

2.用DSP(DigitalSignalProcessing)处理器实现

DSP处理器是专为数字信号处理而设计的,如TI公司的TMS320C54x系列,AD公司的ADSP2IX,ADSP210X系列等。

它的主要数字运算单元是一个乘累加器(Multiply-accumulator,MAC),能够在一个机器周期内完成一次乘累加运算,配有适合于信号处理的指令,具备独特的循环寻址和倒序寻址能力。

这些特点都非常适合数字信号处理中的滤波器设计的有效实现,并且它速度快、稳定性好、编程方便。

3.用固定功能的专用信号处理器实现

专用信号处理器采用专用集成电路ASIC(ApplicationSpecificIntegratedCircuits)实现,适用于过程固定而又追求高速的信号处理任务,是以指定的算法来确定它的结构,使用各种随机逻辑器件组成的信号处理器。

它们体积小、保密性好,具有极高的性能,但灵活性差。

4.用FPGA等可编程器件来开发数字滤波算法。

由于FPGA产品的迅速发展,人们可以利用Atera、Xilinx等产品,使用其相关开发工具和VHDL等硬件开发语言,通过软件编程用硬件实现特定的数字滤波算法。

这一方法由于具有通用性的特点并可以实现算法的并行运算,无论是作为独立的数字信号处理器,还是作为DSP芯片的协处理器,目前都是比较活跃的研究领域。

比较以上方法可见:

可以采用MATLAB等软件来学习数字滤波器的基本知识,计算数字滤波器的系数,研究算法的可行性,对数字滤波器进行前期的设计和仿真。

而后,用DSP处理器或FPGA进行数字滤波的硬件实现。

本课题设计的FIR数字滤波器就是用MATLAB进行设计和仿真,用DSP处理器来实现。

1.3主要研究内容

本文主要研究了数字滤波器的基本理论和实现方法。

接着研究分析了如何利用MATLAB仿真软件来设计出符合各种要求的数字滤波器,并对所设计的滤波器进行仿真得到系数,本文还应用DSP集成开发环境——CCS调试汇编程序,为后面在DSP上实现提供必要的数据。

本课题选择在TM320C5509DSP综合实验开发系统平台上进行开发。

最后采用窗函数法在CCS环境下,利用MATLAB仿真得到的滤波器系数,编程实现IIR数字滤波器,得出滤波结果波形,并对结果进行分析与总结。

第2章滤波器基础

2.1数字滤波器的介绍

数字滤波器是对数字信号实现滤波的线性时不变系统。

数字滤波实质上是一种运算过程,实现对信号的运算处理。

输入数字信号(数字序列)通过特定的运算转变为输出的数字序列,因此,数字滤波器本质上是一个完成特定运算的数字计算过程,也可以理解为是一台计算机。

描述离散系统输出与输入关系的卷积和差分方程只是给数字信号滤波器提供运算规则,使其按照这个规则完成对输入数据的处理。

时域离散系统的频域特性:

其中

分别是数字滤波器的输出序列和输入序列的频域特性(或称为频谱特性),

是数字滤波器的单位取样响应的频谱,又称为数字滤波器的频域响应。

输入序列的频谱

经过滤波后

因此,只要按照输入信号频谱的特点和处理信号的目的,适当选择

,使得滤波后的

满足设计的要求,这就是数字滤波器的滤波原理。

数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应(IIR)数字滤波器和有限长冲激响应(FIR)数字滤波器。

IIR数字滤波器的特征是,具有无限持续时间冲激响应,需要用递归模型

来实现,其差分方程为:

系统函数为:

设计IIR滤波器的任务就是寻求一个物理上可实现的系统函数H(z),使其频率响应H(z)满足所希望得到的频域指标,即符合给定的通带截止频率、阻带截止频率、通带衰减系数和阻带衰减系数。

第三章数字滤波器的DSP实现

数字信号处理器(DigitalSignalProcessor)是一种适合对数字信号进行高速实时处理的专用处理器,其主要用来实时快速地实现各种数字信号处理算法。

在当今的数字化时代,DSP己成为通信设备、计算机和其它电子产品的基础器件。

数字信号处理器与数字信号处理有着密不可分的关系,我们通常说的“DSP”可以指数字信号处理(DigitalSignalProcessing),也可以代表数字信号处理器(DigitalSignalProcessor)在本文里均指数字信号处理器。

数字信号处理是一门包括了许多学科并应用于很多领域的学科,是指利用计算机或是专用处理设备,以数字形式对信号进行分析、采集、合成、变换、滤波、估值、压缩、识别等处理,得到符合要求的信号形式。

数字信号处理器是用于处理数字信号的器件,因此它是伴随着数字信号处理才产生的。

DSP发展历程大致分为三个阶段:

20世纪70年代理论先行,80年代产品普及和90年代的突飞猛进。

在DSP出现之前数字信号处理只能依靠微处理器(MPU)来完成。

但MPU较低的处理速度无法满足高速实时的要求。

因此,直到20世纪70年代,有人才提出了DSP的理论和算法基础。

随着大规模集成电路技术的发展,1982年世界上诞生了第一片DSP芯片。

几年后,第二代基于CMOS工艺的DSP芯片应运而生。

80年代后期,第三代DSP芯片问世。

90年代DSP发展最快,相继出现了第四代和第五代DSP器件。

经过20多年的发展,DSP产品的应用己扩大到人们的学习、工作和生活的各个方面,并逐渐成为电子产品更新换代的决定因素。

3.1TMS320C643特点

TMS320C643采用双乘累加单元(MAC)结构。

整个处理器内部分为5个大的功能单元:

存储器缓冲单元(M)、指令缓冲单元(I)、程序控制单元(P)、地址生成单元(A)和数据计算单元(D),各个功能单元之间通过总线连接。

TMS320C643中共有12条总线:

1条32位程序数据总线(PB),1条24位程序地址总线(PAB),5条16位的数据总线(BB、CB、DB、EB、FB)和5条24位的数据地址总线(BAB、CAB、DAB、EAB、FAB)。

作为嵌入式芯片的一种,DSP芯片是一种非常适合于进行数字信号处理的微处理器芯片,已经广泛应用于实现各种数字信号处理运算。

其显著特点可以归纳如下:

1.哈佛结构

哈佛结构是不同于传统的冯·诺曼(VonNeuman)结构的并行体系结构,其主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址,独立访问。

与两个存储器相对应的是系统中设置了程序总线和数据总线两条总线,从而使数据的吞吐率提高了一倍。

2.流水线

与哈佛结构相关,DSP芯片广泛采用流水线以减少指令执行时间,从而增强了处理器的处理能力。

TMS320系列处理器的流水线深度从2-6级不等。

第一代TMS320处理器采用二级流水线,第二代采用三级流水线,而第三代则采用四级流水线。

也就是说,处理器可以并行处理2-6条指令,每条指令处于流水线上的不同阶段。

3.专用的硬件乘法器

在一般形式的FIR滤波器中,乘法是DSP的重要组成部分。

对每个滤波器抽头,必须做一次乘法和一次加法。

乘法速度越快,DSP处理器的性能就越高。

在通用的微处理器中,乘法指令是由一系列加法来实现的,故需许多个指令周期来完成。

相比而言,DSP芯片的特征就是有一个专用的硬件乘法器。

4.特殊的DSP指令

DSP芯片的另一个特征是采用特殊的指令。

例如TMS320C10中的LTD指令,可单周期完成加载寄存器、数据移动、同时累加操作。

还有DMOV指令,它完成数据移位功能。

在数字信号处理中,延迟操作非常重要,这个延迟就是由DMOV指令来实现的[9]。

5.快速的指令周期

哈佛结构、流水线操作、专用的硬件乘法器、特殊的DSP指令再加上集成电路的优化设计,可使DSP芯片的指令周期缩短到200ns以下。

现在,许多DSP处理器的指令周期已经从第一代的200ns降低至现在的20ns以下,甚至在10ns以内。

快速的指令周期使得DSP芯片能够实时实现许多DSP应用。

6.面向寄存器和累加器

DSP所使用的不是一般的寄存器文件,而是专用寄存器,较新的DSP产品都有类似于RISC的寄存器文件。

许多DSP还有大的累加器,可以在异常情况下对数据溢出进行处理。

7.支持前、后台处理

DSP支持复杂的内循环处理,包括建立起X、Y内存和分址/循环计数器。

一些DSP在做内循环处理中把中断屏蔽了,另一些则以类似后台处理的方式支持快速中断。

许多DSP使用硬连线的堆栈来保存有限的上下文,而有些则用隐蔽的寄存器来加快上下文转换时间。

8.拥有简便的单片内存和内存接口

DSP设法避免了大型缓冲器或复杂的内存接口,减少了内存访问。

一些DSP的内循环是在其单片内存中重复执行指令或循环操作部分代码,它多采用SRAM而不是DRAM,因为前者接口更简便。

2000年3月,德州仪器(TI)公司推出了高性能低功耗的TMS320C55x芯片[10]。

其性能可以达到400-800MIPS,但功耗低到0.05mW/MIPS。

TMS320系列包括定点、浮点和多处理器等三种类型的数字信号处理器。

它的结构是专门针对实时信号处理而设计的,具有指令灵活、可操作性强、速度快以及支持并行运算和C语言等特点,是性价比较高的一类DSP,在通信设备中得到了广泛的应用。

C5000系列DSP是针对个人便携设备而设计的,如音乐播放器、3G蜂窝电话、数码相机、高速音频设备、高精度的信号和多通道应用。

通常人们把C54x和C55x系列通称C5000系列,主要用于功耗低、便携式的无线通信终端产品。

C5000系列包括旧有的C5x、当前主流的C54x和较新的C55x系列。

其中,C54x采用改进的哈佛结构,并集成有丰富的硬件逻辑和外部接口资源,具有较高的性能,及较低的成本和体积。

C55x是在C54x的基础上发展起来的,也采用改进型哈佛结构,其器件功耗较C54x更低,性能更高。

TMS320C55x采用多总线结构,由五组内部数据总线(3个用于读,2个用于写)和一组内部程序存储总线构成。

32bit的程序总线(PB)传送从程序存储器来的指令代码和立即数。

三组16bit数据读总线(BB,CB和DB)连接数据读地址产生逻辑。

CB和DB总线传送双操作数。

DB总线传送单操作数。

BB总线提供第三种读路径并且能够提供双乘操作数的系数。

两组16bit数据写总线(EB,FB)连接数据写地址产生逻辑。

六组24bit数据总线(PAB,CAB,DAB,BAB,EAB,FAB)传送执行指令所需要的地址。

还有一条附加总线为DMA控制器和外设控制器提供服务。

TMS320C55x的CPU结构主要包括四种功能单元:

即指令缓冲单元(I单元),程序流程单元(P单元),地址数据流程单元(A单元)和数据计算单元(D单元)。

其数据计算单元包括一个40bit的可以提供-32到31移位范围的桶形移位器,一个40bit的算术逻辑电路(ALU),两个乘累加器(MAC)可以在一个周期中执行两个MAC操作,以及四个40bit的累加器。

在其地址数据流程单元还包括一个16bit的算术逻辑电路(ALU),为主ALU提供简单的算术运算。

55x的指令集功能强大而且使用灵活,它同时具有易于使用和程序效率高的特点。

寻址方式包括绝对寻址、寄存器间接寻址、直接寻址,这些寻址方式降低了算法所需要的指令数量,减小了代码量,也提高了芯片运算速度。

特别要提到的是C55x指令集中所提供的三操作数指令,这种指令可以实现3个操作数的同时处理(如写入寄存器或存储器等操作),大大压缩了代码的指令数量。

3.2DSP系统的设计与开发

DSP系统的开发是一个复杂的过程,在系统的设计和调试中不但需要数字信号处理方面的理论知识,而且还要熟悉掌握各种DSP芯片、外围硬件电路以及DSP开发工具等。

3.2.1DSP系统的特点

DSP系统是以数字信号处理为基础的,因此不但具有数字处理的全部优点而且还具有以下特点[24]:

1.接口方便:

DSP应用系统与其他以现代数字技术为基础的系统或设备都是相互兼容的,这样的系统接口以实现某种功能要比模拟系统与这些系统接口要容易得多。

2.编程方便:

DSP应用系统中的可编程DSP芯片,能灵活方便地进行修改和升级。

3.稳定性好:

DSP应用系统以数字处理为基础,受环境温度及噪声的影响较小、可靠性高,无器件老化现象。

4.精度高:

16位数字系统可以达到10-5级的精度。

5.可重复性好:

模拟系统的性能受元器件参数性能变化的影响比较大,而数字系统基本不受影响,因此数字系统便于测试、调试和大规模生产。

6.集成方便:

DSP应用系统中的数字部件有高度的规范性,便于大规模集成。

当然,数字信号处理也存在一些缺点。

例如,对于简单信号处理任务,若采用DSP则使成本增加。

DSP系统中的高速时钟可能带来高频干扰和电磁泄漏等问题,而且DSP系统消耗的功率也较大。

此外,DSP技术更新速度快,对于数学知识要求高,开发和测试工具还有待进一步完善。

3.2.2DSP系统的设计流程

一个DSP系统的设计过程大概要有以下几个步骤。

1.根据系统的任务要求,确定系统处理精度要求、速度要求、实时性要求等性能指标。

2.根据系统的要求进行高级语言的算法模拟,比如使用MATLAB等仿真工具,验证算法的可行性,得出最佳的处理方法。

3.DSP的系统设计,主要分为硬件设计和软件设计。

硬件设计是指根据系统要求选择合适的DSP芯片,然后设计相应的外围电路。

软件设计主要是指根据系统的要求和选用的DSP芯片编写相应的程序。

程序的编写可以使用汇编语言,汇编语言编写的程序效率高,但比较烦杂;也可采用C语言,DSP的C语言基本上是标准C语言,编写比较简单,但效率低。

在实际系统开发时往往是两种语言结合编写,在算法运算量大的地方使用汇编语言,在运算量小的地方使用C语言,这样既能缩短软件的开发周期,提高程序的可读性和可移植性,又满足了系统的实时性要求。

本文的设计采用汇编语言编写、设计软件程序。

3.2.3DSP系统的开发工具CCS

CCS是一种针对TMS320系列DSP的集成开发环境,在Windows操作系统下,采用图形接口界面,提供有环境配置、源文件编辑、程序调试、跟踪和分析等工具。

CCS有两种工作模式,即

软件仿真器模式:

可以脱离DSP芯片,在PC机上模拟DSP的指令集和工作机制,主要用于前期算法实现和调试。

硬件在线编程模式:

可以实时运行在DSP芯片上,与硬件开发板相结合在线编程和调试应用程序。

CCS的开发系统主要由以下组件构成:

1.TMS320C54x集成代码产生工具;

2.CCS集成开发环境;

3.DSP/BIOS实时内核插件及其应用程序接口API;

4.实时数据交换的RTDX插件以及相应的程序接口API;

5.由TI公司以外的第三方提供的各种应用模块插件。

   

CCS的功能十分强大,它集成了代码的编辑、编译、链接和调试等诸多功能,而且支持C/C++和汇编的混合编程,其主要功能如下:

1.具有集成可视化代码编辑界面,用户可通过其界面直接编写C、汇编、.cmd文件等;

2.含有集成代码生成工具,包括汇编器、优化C编译器、链接器等,将代码的编辑、编译、链接和调试等诸多功能集成到一个软件环境中;

3.高性能编辑器支持汇编文件的动态语法加亮显示,使用户很容易阅读代码,发现语法错误;

4.工程项目管理工具可对用户程序实行项目管理。

在生成目标程序和程序库的过程中,建立不同程序的跟踪信息,通过跟踪信息对不同的程序进行分类管理;

5.基本调试工具具有装入执行代码、查看寄存器、存储器、反汇编、变量窗口等功能,并支持C源代码级调试;

6.断点工具,能在调试程序的过程中,完成硬件断点、软件断点和条件断点的设置;

7.探测点工具,可用于算法的仿真,数据的实时监视等;

8.分析工具,包括模拟器和仿真器分析,可用于模拟和监视硬件的功能、评价代码执行的时钟;

9.数据的图形显示工具,可以将运算结果用图形显示,包括显示时域/频域波形、眼图、星座图、图像等,并能进行自动刷新;

10.提供GEL工具。

利用GEL扩展语言,用户可以编写自己的控制面板/菜单,设置GEL菜单选项,方便直观地修改变量,配置参数等;

11.支持多DSP的调试;

12.支持RTDX技术,可在不中断目标系统运行的情况下,实现DSP与其他应用程序的数据交换;

13.提供DSP/BIOS工具,增强对代码的实时分析能力。

3.2.4IIR滤波器设计总框图

IIR滤波器设计总框图如图4.2所示

图4.2IIR滤波器设计总框图

 

3.2.5程序源代码

1.汇编源文件程序(.asm)

.global_iir,_init,_outdata

_iir

bsetfrct

sub#1,t0

movt0,mmap(csr)

addt0,ar0

movxar2,xdp

movar2,cdp

mov#0,ac0

rptcsr

macmz*ar0-,*cdp+,ac0

addt0,ar1

movxar3,xdp

movar3,cdp

rptcsr

macmz*ar1-,*cdp+,ac0

mar*ar1+

movhi(ac0),*ar1

movhi(ac0),t0

bclrfrct

ret

_init

sub#1,t0

movt0,mmap(csr)

mov#0,ac0

rptcsr

movac0,*ar0+

rptcsr

movac0,*ar1+

ret

_outdata

movt1,ac0

sub#2,ac0

movac0,mmap(csr)

addac0,ar0

rptcsr

delay*ar0-

mar*ar0+

movt0,*ar0

ret

2.C源文件程序(.c)

#include"math.h"

#definesignal_1_f500

#definesignal_2_f10000

#definesignal_sample_f25000

#definepi3.1415926

#defineIIRNUMBER_L2

#definebufer_L256

intN_L=IIRNUMBER_L;

intdata_in[bufer_L];

intout[bufer_L];

intx[IIRNUMBER_L+1];

inty[IIRNUMBER_L+1];

intk=0;

intbufer=bufe

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1