DSP 芯片及应用课程设计
设计题目:无限冲激响应FIR 在TMS320C64上实现
姓名:吴康鑫
学号:学院:信息工程 指导教师:饶志华 时间日期:2012.4.29
摘要
随着计算机和信息技术的飞速发展,数字信号处理已经成为高速实时处理的一项关键技术,广泛应用在语音识别、智能检测、工业控制等各个领域。数字滤波器是对数字信号实现滤波的线性时不变系统。数字滤波实质上是一种运算过程,实现对信号的运算处理。
DSP 数字信号处理(Digital Signal Processing,简称DSP) 是一门涉及许多学科而又广泛应用于许多领域的新兴学科。20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。传感器数字信号处理是利用传感器对模拟信号或数字信号进行采集并把其转换成计算机可识别的电信号,并利用计算机对信号进行处理以达到计算机辅助控制或是计算机自动控制的目的。
DSP 芯片是一种特别适合数字信号处理运算的微处理器,主要用来实时、快速地实现各种数字信号处理算法。用DSP 芯片实现IIR 数字滤波器,不仅具有精确度高、不受环境影响等优点,而且因DSP 芯片的可编程性,可方便地修改滤波器参数,从而改变滤波器的特性,设计十分灵活。
本课题主要应用MATLAB 软件设计IIR 数字滤波器,并对所设计的滤波器进行仿真;应用DSP 集成开发环境——CCS 调试汇编程序,文章结合TM320C5509的结构特点,介绍了一种IIR 滤波器在TM320C5509中的实现方法。文中程序已经过硬件验证,仿真结果表明该设计符合要求。
关键词 数字滤波;IIR ;DSP ;TM320C64;MATLAB
目录
摘要……....................................................................................................................... I
第1章 绪论................................................................................................................ 3
1.1 数字滤波器的优越性 ....................................................................................... 3
1.2 数字滤波器实现的方法 ................................................................................... 3
1.3 主要研究内容 ................................................................................................... 4
第2章 滤波器基础.................................................................................................... 5
2.1数字滤波器介绍 ................................................................................................ 5
第3章 数字滤波器的DSP 实现 .............................................................................. 6
3.1 TMS320C5509特点 .......................................................................................... 6
3.2 DSP系统的设计与开发 . ................................................................................... 8
3.2.1 DSP系统的特点 ......................................................................................... 8
3.2.2 DSP系统的设计流程 ................................................................................. 8
3.2.3 DSP系统的开发工具CCS . ........................................................................ 9
3.2.4 IIR滤波器的设计框图 ............................................................................. 10
第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(Digital Signal Processing)处理器实现
DSP 处理器是专为数字信号处理而设计的,如TI 公司的TMS320C54x 系列,AD 公司的ADSP2IX ,ADSP210X 系列等。它的主要数字运算单元是一个乘累加器(Multiply-accumulator,MAC) ,能够在一个机器周期内完成一次乘累加运算,配有适合于信号处理的指令,具备独特的循环寻址和倒序寻址能力。这些特点都
非常适合数字信号处理中的滤波器设计的有效实现,并且它速度快、稳定性好、编程方便。
3.用固定功能的专用信号处理器实现
专用信号处理器采用专用集成电路ASIC(Application Specific Integrated Circuits) 实现,适用于过程固定而又追求高速的信号处理任务,是以指定的算法来确定它的结构,使用各种随机逻辑器件组成的信号处理器。它们体积小、保密性好,具有极高的性能,但灵活性差。
4.用FPGA 等可编程器件来开发数字滤波算法。由于FPGA 产品的迅速发展,人们可以利用Atera 、Xilinx 等产品,使用其相关开发工具和VHDL 等硬件开发语言,通过软件编程用硬件实现特定的数字滤波算法。这一方法由于具有通用性的特点并可以实现算法的并行运算,无论是作为独立的数字信号处理器,还是作为DSP 芯片的协处理器,目前都是比较活跃的研究领域。
比较以上方法可见:可以采用MATLAB 等软件来学习数字滤波器的基本知识,计算数字滤波器的系数,研究算法的可行性,对数字滤波器进行前期的设计和仿真。而后,用DSP 处理器或FPGA 进行数字滤波的硬件实现。本课题设计的FIR 数字滤波器就是用MATLAB 进行设计和仿真,用DSP 处理器来实现。
1.3 主要研究内容
本文主要研究了数字滤波器的基本理论和实现方法。接着研究分析了如何利用MATLAB 仿真软件来设计出符合各种要求的数字滤波器,并对所设计的滤波器进行仿真得到系数,本文还应用DSP 集成开发环境——CCS 调试汇编程序,为后面在DSP 上实现提供必要的数据。
本课题选择在TM320C5509 DSP 综合实验开发系统平台上进行开发。最后采用窗函数法在CCS 环境下,利用MATLAB 仿真得到的滤波器系数,编程实现IIR 数字滤波器,得出滤波结果波形,并对结果进行分析与总结。
第2章 滤波器基础
2.1 数字滤波器的介绍
数字滤波器是对数字信号实现滤波的线性时不变系统。数字滤波实质上是一种运算过程,实现对信号的运算处理。输入数字信号(数字序列)通过特定的运算转变为输出的数字序列,因此,数字滤波器本质上是一个完成特定运算的数字计算过程,也可以理解为是一台计算机。描述离散系统输出与输入关系的卷积和差分方程只是给数字信号滤波器提供运算规则,使其按照这个规则完成对输入数据的处理。时域离散系统的频域特性:
其中、, 分别是数字滤波器的输出序列和输入序列的频域特性
是数字滤波器的单位取样响应的频谱,又称为数字滤经过滤波后, 因此,只(或称为频谱特性)
, 波器的频域响应。输入序列的频谱
要按照输入信号频谱的特点和处理信号的目的, 适当选择
的,使得滤波后
满足设计的要求,这就是数字滤波器的滤波原理。
数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应(IIR)数字滤波器和有限长冲激响应(FIR)数字滤波器。IIR 数字滤波器的特征是,具有无限持续时间冲激响应,需要用递归模型 来实现,其差分方程为: 系统函数为:
设计IIR 滤波器的任务就是寻求一个物理上可实现的系统函数H(z),使其频率响应H(z)满足所希望得到的频域指标,即符合给定的通带截止频率、阻带截止频率、通带衰减系数和阻带衰减系数。
第三章 数字滤波器的DSP 实现
数字信号处理器(Digital Signal Processor)是一种适合对数字信号进行高速实时处理的专用处理器,其主要用来实时快速地实现各种数字信号处理算法。在当今的数字化时代,DSP 己成为通信设备、计算机和其它电子产品的基础器件。
数字信号处理器与数字信号处理有着密不可分的关系,我们通常说的“DSP ”可以指数字信号处理(Digital Signal Processing) ,也可以代表数字信号处理器(Digital Signal Processor)在本文里均指数字信号处理器。数字信号处理是一门包括了许多学科并应用于很多领域的学科,是指利用计算机或是专用处理设备,以数字形式对信号进行分析、采集、合成、变换、滤波、估值、压缩、识别等处理,得到符合要求的信号形式。数字信号处理器是用于处理数字信号的器件,因此它是伴随着数字信号处理才产生的。
DSP 发展历程大致分为三个阶段:20世纪70年代理论先行,80年代产品普及和90年代的突飞猛进。在DSP 出现之前数字信号处理只能依靠微处理器(MPU)来完成。但MPU 较低的处理速度无法满足高速实时的要求。因此,直到20世纪70年代,有人才提出了DSP 的理论和算法基础。随着大规模集成电路技术的发展,1982年世界上诞生了第一片DSP 芯片。几年后,第二代基于CMOS 工艺的DSP 芯片应运而生。80年代后期,第三代DSP 芯片问世。90年代DSP 发展最快,相继出现了第四代和第五代DSP 器件。经过20多年的发展,DSP 产品的应用己扩大到人们的学习、工作和生活的各个方面,并逐渐成为电子产品更新换代的决定因素。
3.1 TMS320C643特点
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.哈佛结构
哈佛结构是不同于传统的冯·诺曼(Von Neuman)结构的并行体系结构,其主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址,独立访问。与两个存储器相对应的是系统中设置了程序总线和数据总线两条总线,从而使数据的吞吐率提高了一倍。
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.05 mW/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.2 DSP 系统的设计与开发
DSP 系统的开发是一个复杂的过程,在系统的设计和调试中不但需要数字信号处理方面的理论知识,而且还要熟悉掌握各种DSP 芯片、外围硬件电路以及DSP 开发工具等。
3.2.1 DSP系统的特点
DSP 系统是以数字信号处理为基础的,因此不但具有数字处理的全部优点而且还具有以下特点[24]:
1.接口方便:DSP 应用系统与其他以现代数字技术为基础的系统或设备都是相互兼容的,这样的系统接口以实现某种功能要比模拟系统与这些系统接口要容易得多。
2.编程方便:DSP 应用系统中的可编程DSP 芯片,能灵活方便地进行修改和升级。
3.稳定性好:DSP 应用系统以数字处理为基础,受环境温度及噪声的影响较小、可靠性高,无器件老化现象。
4.精度高:16位数字系统可以达到10-5级的精度。
5.可重复性好:模拟系统的性能受元器件参数性能变化的影响比较大,而数字系统基本不受影响,因此数字系统便于测试、调试和大规模生产。
6.集成方便:DSP 应用系统中的数字部件有高度的规范性,便于大规模集成。
当然,数字信号处理也存在一些缺点。例如,对于简单信号处理任务,若采用DSP 则使成本增加。DSP 系统中的高速时钟可能带来高频干扰和电磁泄漏等问题,而且DSP 系统消耗的功率也较大。此外,DSP 技术更新速度快,对于数学知识要求高,开发和测试工具还有待进一步完善。
3.2.2 DSP系统的设计流程
一个DSP 系统的设计过程大概要有以下几个步骤。
1.根据系统的任务要求,确定系统处理精度要求、速度要求、实时性要求等性能指标。
2.根据系统的要求进行高级语言的算法模拟,比如使用MATLAB 等仿真工具,验证算法的可行性,得出最佳的处理方法。
3.DSP 的系统设计,主要分为硬件设计和软件设计。硬件设计是指根据系统要求选择合适的DSP 芯片,然后设计相应的外围电路。软件设计主要是指根据系统的要求和选用的DSP 芯片编写相应的程序。程序的编写可以使用汇编语言,汇编语言编写的程序效率高,但比较烦杂;也可采用C 语言,DSP 的C 语言基本上是标准C 语言,编写比较简单,但效率低。在实际系统开发时往往是两种语言结合编写,在算法运算量大的地方使用汇编语言,在运算量小的地方使用C 语言,这样既能缩短软件的开发周期,提高程序的可读性和可移植性,又满足了系统的实时性要求。本文的设计采用汇编语言编写、设计软件程序。
3.2.3 DSP系统的开发工具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.4 IIR滤波器设计总框图
IIR 滤波器设计总框图如图4.2所示
图4.2 IIR滤波器设计总框图
3.2.5 程序源代码
1. 汇编源文件程序(.asm)
.global _iir,_init,_outdata
_iir
bset frct
sub #1,t0
mov t0,mmap(csr)
add t0,ar0
mov xar2,xdp
mov ar2,cdp
mov #0,ac0
rpt csr
macmz *ar0-,*cdp+,ac0
add t0,ar1
mov xar3,xdp
mov ar3,cdp
rpt csr
macmz *ar1-,*cdp+,ac0
mar *ar1+
mov hi(ac0),*ar1
mov hi(ac0),t0
bclr frct
ret
_init
sub #1,t0
mov t0,mmap(csr)
mov #0,ac0
rpt csr
mov ac0,*ar0+
rpt csr
mov ac0,*ar1+
ret
_outdata
mov t1,ac0
sub #2,ac0
mov ac0,mmap(csr)
add ac0,ar0
rpt csr
delay *ar0-
mar *ar0+
mov t0,*ar0
ret
2. C 源文件程序(.c)
#include "math.h"
#define signal_1_f 500
#define signal_2_f 10000
#define signal_sample_f 25000
#define pi 3.1415926
#define IIRNUMBER_L 2
#define bufer_L 256
int N_L=IIRNUMBER_L;
int data_in[bufer_L];
int out[bufer_L] ;
int x[IIRNUMBER_L+1];
int y[IIRNUMBER_L+1];
int k=0;
int bufer=bufer_L;
int fBn[IIRNUMBER_L]={0,0x634a};
int fAn[IIRNUMBER_L]={0xe5c,0xe5c};
extern int iir(int *x,int *y,int *fAn,int *fBn,int N_L);
extern int init(int *,int *,int);
extern int outdata(int *,int,int);
void inputwave();
void main()
{
int iirout;
inputwave();
init(x,y,N_L);
while(1)
{
x[0]=data_in[k];
iirout=iir(x,y,fAn,fBn,N_L);
outdata(out,iirout,bufer);
k++;
if(k>=bufer_L)
{
k=0;
}
}
}
void inputwave()
{
float wt1;
float wt2;
int i;
for(i=0;i
{
wt1=2*pi*i*signal_1_f;
wt1=wt1/signal_sample_f;
wt2=2*pi*i*signal_2_f;
wt2=wt2/signal_sample_f;
data_in[i]=(cos(wt1)+cos(wt2))/2*32768;
}
}
3. 命令文件程序(.cmd)
-stack 0x0500
-sysstack 0x0500
-heap 0x1000
-c
-u _Reset
-l rts55.lib
MEMORY
{
PAGE 0:
RAM(RWIX): origin=0x000100, length=0x01ff00
ROM(RIX): origin=0x020100, length=0x01ff00
VECS(RIX): origin=0xffff00, length=0x000200
PAGE 2:
IOPORT(RWI):origin=0x000000, length=0x020000
}
SECTIONS
{
.text >ROM PAGE 0
.data >ROM PAGE 0
.bss >RAM PAGE 0
.const >RAM PAGE 0
.sysmem >RAM PAGE 0
.stack >RAM PAGE 0
.cio >RAM PAGE 0
.sysstack >RAM PAGE 0
.switch >RAM PAGE 0
.cinit >RAM PAGE 0
.pinit >RAM PAGE 0
.vectors >VECS PAGE 0
.ioport >IOPORT PAGE 2
}
3.2.6、实验结果及分析
滤波前
第四章 全文总结
4.1 总结
通过这个实验,对设计带通数字滤波器的整个过程有了很好的掌握。其中双线性变换法,巴特沃斯设计模拟滤波器的运用,也比较熟悉了。
通过对数字带通滤波器的设计,熟悉了MATLAB 的运行环境,初步掌握了MATLAB 语言在数字信号处理中一些基本库函数的调用和编写基本程序等应用;熟悉了滤波器设计的一般原理,对滤波器有了一个感性的认识;学会了数字高通滤波器设计的一般步骤;加深了对滤波器设计中产生误差的原因以及双线性变换法优缺点的理解和认识。总之,使理论联系了实际,巩固并深化了对课本基本知识的认识和理解,使理论得以升华。
参考文献
1 《ICETEK 评估板硬件使用指导书》.
2 邹彦等《DSP 原理与应用》. 北京:电子工业出版社,2005:156~211 3 彭启琮《DSP 技术的发展与应用》. 北京:高教出版社,2001:141~174
课程设计评分表
学生姓名: 吴康鑫 班级: 093232 学号:09323219 课程设计题目:无限冲激响应FIR 在TMS320C64上实现
DSP 芯片及应用课程设计
设计题目:无限冲激响应FIR 在TMS320C64上实现
姓名:吴康鑫
学号:学院:信息工程 指导教师:饶志华 时间日期:2012.4.29
摘要
随着计算机和信息技术的飞速发展,数字信号处理已经成为高速实时处理的一项关键技术,广泛应用在语音识别、智能检测、工业控制等各个领域。数字滤波器是对数字信号实现滤波的线性时不变系统。数字滤波实质上是一种运算过程,实现对信号的运算处理。
DSP 数字信号处理(Digital Signal Processing,简称DSP) 是一门涉及许多学科而又广泛应用于许多领域的新兴学科。20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。传感器数字信号处理是利用传感器对模拟信号或数字信号进行采集并把其转换成计算机可识别的电信号,并利用计算机对信号进行处理以达到计算机辅助控制或是计算机自动控制的目的。
DSP 芯片是一种特别适合数字信号处理运算的微处理器,主要用来实时、快速地实现各种数字信号处理算法。用DSP 芯片实现IIR 数字滤波器,不仅具有精确度高、不受环境影响等优点,而且因DSP 芯片的可编程性,可方便地修改滤波器参数,从而改变滤波器的特性,设计十分灵活。
本课题主要应用MATLAB 软件设计IIR 数字滤波器,并对所设计的滤波器进行仿真;应用DSP 集成开发环境——CCS 调试汇编程序,文章结合TM320C5509的结构特点,介绍了一种IIR 滤波器在TM320C5509中的实现方法。文中程序已经过硬件验证,仿真结果表明该设计符合要求。
关键词 数字滤波;IIR ;DSP ;TM320C64;MATLAB
目录
摘要……....................................................................................................................... I
第1章 绪论................................................................................................................ 3
1.1 数字滤波器的优越性 ....................................................................................... 3
1.2 数字滤波器实现的方法 ................................................................................... 3
1.3 主要研究内容 ................................................................................................... 4
第2章 滤波器基础.................................................................................................... 5
2.1数字滤波器介绍 ................................................................................................ 5
第3章 数字滤波器的DSP 实现 .............................................................................. 6
3.1 TMS320C5509特点 .......................................................................................... 6
3.2 DSP系统的设计与开发 . ................................................................................... 8
3.2.1 DSP系统的特点 ......................................................................................... 8
3.2.2 DSP系统的设计流程 ................................................................................. 8
3.2.3 DSP系统的开发工具CCS . ........................................................................ 9
3.2.4 IIR滤波器的设计框图 ............................................................................. 10
第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(Digital Signal Processing)处理器实现
DSP 处理器是专为数字信号处理而设计的,如TI 公司的TMS320C54x 系列,AD 公司的ADSP2IX ,ADSP210X 系列等。它的主要数字运算单元是一个乘累加器(Multiply-accumulator,MAC) ,能够在一个机器周期内完成一次乘累加运算,配有适合于信号处理的指令,具备独特的循环寻址和倒序寻址能力。这些特点都
非常适合数字信号处理中的滤波器设计的有效实现,并且它速度快、稳定性好、编程方便。
3.用固定功能的专用信号处理器实现
专用信号处理器采用专用集成电路ASIC(Application Specific Integrated Circuits) 实现,适用于过程固定而又追求高速的信号处理任务,是以指定的算法来确定它的结构,使用各种随机逻辑器件组成的信号处理器。它们体积小、保密性好,具有极高的性能,但灵活性差。
4.用FPGA 等可编程器件来开发数字滤波算法。由于FPGA 产品的迅速发展,人们可以利用Atera 、Xilinx 等产品,使用其相关开发工具和VHDL 等硬件开发语言,通过软件编程用硬件实现特定的数字滤波算法。这一方法由于具有通用性的特点并可以实现算法的并行运算,无论是作为独立的数字信号处理器,还是作为DSP 芯片的协处理器,目前都是比较活跃的研究领域。
比较以上方法可见:可以采用MATLAB 等软件来学习数字滤波器的基本知识,计算数字滤波器的系数,研究算法的可行性,对数字滤波器进行前期的设计和仿真。而后,用DSP 处理器或FPGA 进行数字滤波的硬件实现。本课题设计的FIR 数字滤波器就是用MATLAB 进行设计和仿真,用DSP 处理器来实现。
1.3 主要研究内容
本文主要研究了数字滤波器的基本理论和实现方法。接着研究分析了如何利用MATLAB 仿真软件来设计出符合各种要求的数字滤波器,并对所设计的滤波器进行仿真得到系数,本文还应用DSP 集成开发环境——CCS 调试汇编程序,为后面在DSP 上实现提供必要的数据。
本课题选择在TM320C5509 DSP 综合实验开发系统平台上进行开发。最后采用窗函数法在CCS 环境下,利用MATLAB 仿真得到的滤波器系数,编程实现IIR 数字滤波器,得出滤波结果波形,并对结果进行分析与总结。
第2章 滤波器基础
2.1 数字滤波器的介绍
数字滤波器是对数字信号实现滤波的线性时不变系统。数字滤波实质上是一种运算过程,实现对信号的运算处理。输入数字信号(数字序列)通过特定的运算转变为输出的数字序列,因此,数字滤波器本质上是一个完成特定运算的数字计算过程,也可以理解为是一台计算机。描述离散系统输出与输入关系的卷积和差分方程只是给数字信号滤波器提供运算规则,使其按照这个规则完成对输入数据的处理。时域离散系统的频域特性:
其中、, 分别是数字滤波器的输出序列和输入序列的频域特性
是数字滤波器的单位取样响应的频谱,又称为数字滤经过滤波后, 因此,只(或称为频谱特性)
, 波器的频域响应。输入序列的频谱
要按照输入信号频谱的特点和处理信号的目的, 适当选择
的,使得滤波后
满足设计的要求,这就是数字滤波器的滤波原理。
数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应(IIR)数字滤波器和有限长冲激响应(FIR)数字滤波器。IIR 数字滤波器的特征是,具有无限持续时间冲激响应,需要用递归模型 来实现,其差分方程为: 系统函数为:
设计IIR 滤波器的任务就是寻求一个物理上可实现的系统函数H(z),使其频率响应H(z)满足所希望得到的频域指标,即符合给定的通带截止频率、阻带截止频率、通带衰减系数和阻带衰减系数。
第三章 数字滤波器的DSP 实现
数字信号处理器(Digital Signal Processor)是一种适合对数字信号进行高速实时处理的专用处理器,其主要用来实时快速地实现各种数字信号处理算法。在当今的数字化时代,DSP 己成为通信设备、计算机和其它电子产品的基础器件。
数字信号处理器与数字信号处理有着密不可分的关系,我们通常说的“DSP ”可以指数字信号处理(Digital Signal Processing) ,也可以代表数字信号处理器(Digital Signal Processor)在本文里均指数字信号处理器。数字信号处理是一门包括了许多学科并应用于很多领域的学科,是指利用计算机或是专用处理设备,以数字形式对信号进行分析、采集、合成、变换、滤波、估值、压缩、识别等处理,得到符合要求的信号形式。数字信号处理器是用于处理数字信号的器件,因此它是伴随着数字信号处理才产生的。
DSP 发展历程大致分为三个阶段:20世纪70年代理论先行,80年代产品普及和90年代的突飞猛进。在DSP 出现之前数字信号处理只能依靠微处理器(MPU)来完成。但MPU 较低的处理速度无法满足高速实时的要求。因此,直到20世纪70年代,有人才提出了DSP 的理论和算法基础。随着大规模集成电路技术的发展,1982年世界上诞生了第一片DSP 芯片。几年后,第二代基于CMOS 工艺的DSP 芯片应运而生。80年代后期,第三代DSP 芯片问世。90年代DSP 发展最快,相继出现了第四代和第五代DSP 器件。经过20多年的发展,DSP 产品的应用己扩大到人们的学习、工作和生活的各个方面,并逐渐成为电子产品更新换代的决定因素。
3.1 TMS320C643特点
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.哈佛结构
哈佛结构是不同于传统的冯·诺曼(Von Neuman)结构的并行体系结构,其主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址,独立访问。与两个存储器相对应的是系统中设置了程序总线和数据总线两条总线,从而使数据的吞吐率提高了一倍。
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.05 mW/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.2 DSP 系统的设计与开发
DSP 系统的开发是一个复杂的过程,在系统的设计和调试中不但需要数字信号处理方面的理论知识,而且还要熟悉掌握各种DSP 芯片、外围硬件电路以及DSP 开发工具等。
3.2.1 DSP系统的特点
DSP 系统是以数字信号处理为基础的,因此不但具有数字处理的全部优点而且还具有以下特点[24]:
1.接口方便:DSP 应用系统与其他以现代数字技术为基础的系统或设备都是相互兼容的,这样的系统接口以实现某种功能要比模拟系统与这些系统接口要容易得多。
2.编程方便:DSP 应用系统中的可编程DSP 芯片,能灵活方便地进行修改和升级。
3.稳定性好:DSP 应用系统以数字处理为基础,受环境温度及噪声的影响较小、可靠性高,无器件老化现象。
4.精度高:16位数字系统可以达到10-5级的精度。
5.可重复性好:模拟系统的性能受元器件参数性能变化的影响比较大,而数字系统基本不受影响,因此数字系统便于测试、调试和大规模生产。
6.集成方便:DSP 应用系统中的数字部件有高度的规范性,便于大规模集成。
当然,数字信号处理也存在一些缺点。例如,对于简单信号处理任务,若采用DSP 则使成本增加。DSP 系统中的高速时钟可能带来高频干扰和电磁泄漏等问题,而且DSP 系统消耗的功率也较大。此外,DSP 技术更新速度快,对于数学知识要求高,开发和测试工具还有待进一步完善。
3.2.2 DSP系统的设计流程
一个DSP 系统的设计过程大概要有以下几个步骤。
1.根据系统的任务要求,确定系统处理精度要求、速度要求、实时性要求等性能指标。
2.根据系统的要求进行高级语言的算法模拟,比如使用MATLAB 等仿真工具,验证算法的可行性,得出最佳的处理方法。
3.DSP 的系统设计,主要分为硬件设计和软件设计。硬件设计是指根据系统要求选择合适的DSP 芯片,然后设计相应的外围电路。软件设计主要是指根据系统的要求和选用的DSP 芯片编写相应的程序。程序的编写可以使用汇编语言,汇编语言编写的程序效率高,但比较烦杂;也可采用C 语言,DSP 的C 语言基本上是标准C 语言,编写比较简单,但效率低。在实际系统开发时往往是两种语言结合编写,在算法运算量大的地方使用汇编语言,在运算量小的地方使用C 语言,这样既能缩短软件的开发周期,提高程序的可读性和可移植性,又满足了系统的实时性要求。本文的设计采用汇编语言编写、设计软件程序。
3.2.3 DSP系统的开发工具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.4 IIR滤波器设计总框图
IIR 滤波器设计总框图如图4.2所示
图4.2 IIR滤波器设计总框图
3.2.5 程序源代码
1. 汇编源文件程序(.asm)
.global _iir,_init,_outdata
_iir
bset frct
sub #1,t0
mov t0,mmap(csr)
add t0,ar0
mov xar2,xdp
mov ar2,cdp
mov #0,ac0
rpt csr
macmz *ar0-,*cdp+,ac0
add t0,ar1
mov xar3,xdp
mov ar3,cdp
rpt csr
macmz *ar1-,*cdp+,ac0
mar *ar1+
mov hi(ac0),*ar1
mov hi(ac0),t0
bclr frct
ret
_init
sub #1,t0
mov t0,mmap(csr)
mov #0,ac0
rpt csr
mov ac0,*ar0+
rpt csr
mov ac0,*ar1+
ret
_outdata
mov t1,ac0
sub #2,ac0
mov ac0,mmap(csr)
add ac0,ar0
rpt csr
delay *ar0-
mar *ar0+
mov t0,*ar0
ret
2. C 源文件程序(.c)
#include "math.h"
#define signal_1_f 500
#define signal_2_f 10000
#define signal_sample_f 25000
#define pi 3.1415926
#define IIRNUMBER_L 2
#define bufer_L 256
int N_L=IIRNUMBER_L;
int data_in[bufer_L];
int out[bufer_L] ;
int x[IIRNUMBER_L+1];
int y[IIRNUMBER_L+1];
int k=0;
int bufer=bufer_L;
int fBn[IIRNUMBER_L]={0,0x634a};
int fAn[IIRNUMBER_L]={0xe5c,0xe5c};
extern int iir(int *x,int *y,int *fAn,int *fBn,int N_L);
extern int init(int *,int *,int);
extern int outdata(int *,int,int);
void inputwave();
void main()
{
int iirout;
inputwave();
init(x,y,N_L);
while(1)
{
x[0]=data_in[k];
iirout=iir(x,y,fAn,fBn,N_L);
outdata(out,iirout,bufer);
k++;
if(k>=bufer_L)
{
k=0;
}
}
}
void inputwave()
{
float wt1;
float wt2;
int i;
for(i=0;i
{
wt1=2*pi*i*signal_1_f;
wt1=wt1/signal_sample_f;
wt2=2*pi*i*signal_2_f;
wt2=wt2/signal_sample_f;
data_in[i]=(cos(wt1)+cos(wt2))/2*32768;
}
}
3. 命令文件程序(.cmd)
-stack 0x0500
-sysstack 0x0500
-heap 0x1000
-c
-u _Reset
-l rts55.lib
MEMORY
{
PAGE 0:
RAM(RWIX): origin=0x000100, length=0x01ff00
ROM(RIX): origin=0x020100, length=0x01ff00
VECS(RIX): origin=0xffff00, length=0x000200
PAGE 2:
IOPORT(RWI):origin=0x000000, length=0x020000
}
SECTIONS
{
.text >ROM PAGE 0
.data >ROM PAGE 0
.bss >RAM PAGE 0
.const >RAM PAGE 0
.sysmem >RAM PAGE 0
.stack >RAM PAGE 0
.cio >RAM PAGE 0
.sysstack >RAM PAGE 0
.switch >RAM PAGE 0
.cinit >RAM PAGE 0
.pinit >RAM PAGE 0
.vectors >VECS PAGE 0
.ioport >IOPORT PAGE 2
}
3.2.6、实验结果及分析
滤波前
第四章 全文总结
4.1 总结
通过这个实验,对设计带通数字滤波器的整个过程有了很好的掌握。其中双线性变换法,巴特沃斯设计模拟滤波器的运用,也比较熟悉了。
通过对数字带通滤波器的设计,熟悉了MATLAB 的运行环境,初步掌握了MATLAB 语言在数字信号处理中一些基本库函数的调用和编写基本程序等应用;熟悉了滤波器设计的一般原理,对滤波器有了一个感性的认识;学会了数字高通滤波器设计的一般步骤;加深了对滤波器设计中产生误差的原因以及双线性变换法优缺点的理解和认识。总之,使理论联系了实际,巩固并深化了对课本基本知识的认识和理解,使理论得以升华。
参考文献
1 《ICETEK 评估板硬件使用指导书》.
2 邹彦等《DSP 原理与应用》. 北京:电子工业出版社,2005:156~211 3 彭启琮《DSP 技术的发展与应用》. 北京:高教出版社,2001:141~174
课程设计评分表
学生姓名: 吴康鑫 班级: 093232 学号:09323219 课程设计题目:无限冲激响应FIR 在TMS320C64上实现