《基于DSP的程控滤波器设计毕业设计(论文)word格式.doc》由会员分享,可在线阅读,更多相关《基于DSP的程控滤波器设计毕业设计(论文)word格式.doc(47页珍藏版)》请在三一办公上搜索。
1、分类号 密级 U D C 编号 本科毕业论文(设计)题 目 基于DSP的程控滤波器设计 院 (系) 信息技术系 专 业 电子信息工程 年 级 2004级 学生姓名 董继承 学 号 20043719 指导教师 罗小巧 二八 年 五 月华中师范大学学位论文原创性声明本人郑重声明:所呈交的学位论文是本人在导师指导下独立进行研究工作所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。学位论文作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保障、使用学位论文的规定,同意学校
2、保留并向有关学位论文管理部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权省级优秀学士学位论文评选机构将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。本学位论文属于1、保密 ,在_年解密后适用本授权书。2、不保密 。(请在以上相应方框内打“”)学位论文作者签名: 日期: 年 月 日导师签名: 日期: 年 月 日目录内容摘要1关键词1Abstract1Key words11.绪论22.方案论证与设计流程22.1方案论证22.2设计流程43.FIR滤波器的原理54.程控滤波器的硬件设计94.1 DSP芯片的选型94.2电源
3、电路设计114.3时钟电路设计124.4 CPLD逻辑扩展接口设计124.5仿真测试口的设计134.6 BOOT电路设计144.7 A/D和D/A部分154.8键盘显示部分175.程控滤波器的软件设计195.1编写内存分配文件205.2 C和汇编语言混合编程方法225.3在matlab中使用FDAtool设计FIR滤波器并仿真235.4 FIR滤波器在DSP中的实现255.5滤波器的程控部分程序275.6 TLV320AIC23的控制程序285.7人机接口部分的实现296.滤波器的测试结果296.1测试使用的仪器296.2测试方法与结果306.3结果分析327.总结与展望33参考文献34致 谢
4、35附录1:硬件电路图36附录2:PCB板图37附录3:部分程序代码38内容摘要:程控滤波器在现代电子设计中有重要的作用,采用模拟方式实现,有控制不方便、容易受环境因素影响等缺点。在当代数字信号处理技术飞速发展的情况下,针对这些不足,本文运用以FIR滤波器为核心的设计方法,实现了程控滤波器。此次设计首先利用matlab进行了理论的计算和FIR滤波器系数的设计以及结果的仿真,然后以DSP芯片为核心设计了整个滤波器的硬件平台,继而在此硬件平台上完成了整个系统软件的设计。达到了由键盘输入数据改变滤波器性能的目的,经测试整个滤波器在通带内波动较小,阻带衰减较大,运行非常稳定。关键词:数字信号处理 滤波
5、器 程控Abstract:Programmable control filter plays an important part in modern electronic design. It is always implemented by analog circuit,which is not convenient, vulnerable to temperature and other environmental impacts. For these reasons, based on digital signal processing technology, a programmabl
6、e control filter whose core is FIR filter is designed. Before the design, the coefficient of FIR filter should be calculated and simulation should be performed by matlab. After that, the entire filter hardware platform is designed using digital signal processor. And then, the whole software is writt
7、en. In the test report, it is achieved the purpose that changing the filter performance with keyboard. The pass-band fluctuation is little, stop-band attenuation is large and the system is very stable.Key words:digital signal process filter programmable control1.绪论滤波器是频率选择系统中的关键器件,在通讯、导航、广播电视和航空航天等电
8、子装置中占有重要的地位。1在信号频率动态范围不宽的场合设定固定截止频率的滤波技术已比较成熟,但在许多工程应用领域,信号频率的动态范围往往很宽,这时就需要采用多种截止频率的程控滤波器。2在实验设备中也常常要用到不同参数的滤波器,需要用到程控滤波器,以及在语音处理,图像处理过程中的滤波器的参数也需要改变。数字信号处理(Digital Signal Processing,简称DSP)是一门涉及多门学科并广泛应用于很多科学和工程领域的新兴学科,它是指利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以便提取有用的信息并进行有效的传输与应用,得到符合人们需要的
9、信号形式。与模拟信号处理相比,数字信号处理具有精确、灵活、抗干扰能力强、可靠性高、体积小、易于大规模集成等优点。3数字信号处理的实现在早期采用通用的处理器实现,但其速度低,价格昂贵。数字信号处理器(Digital Signal Processor)的出现则改变了这一状况,其内部带有专门用于数字信号处理的硬件,因此速度非常快,方便实时快速地实现各种数字信号处理算法。数字滤波器是DSP的一个重要应用。它是语音和图象处理、模式识别、谱分析等应用中的一个基本的处理技术。与模拟滤波相比,数字滤波具有很多突出的优点。它可以满足滤波器对幅度和相位特性的严格要求,可以避免模拟滤波所无法克服的电压漂移,温度漂移
10、和噪声等问题。用可编程DSP芯片实现数字滤波,可通过程序修改滤波器的参数,因而改变滤波器的特性十分方便,便于实现程控滤波器。而且基于DSP的程控滤波器还可以为今后设计以DSP为核心部件的嵌入式系统集成提供技术准备,这不仅具有重要的理论意义,同时还具有重要的实际意义。2.方案论证与设计流程2.1方案论证(1)采用传统的模拟滤波器实现模拟滤波器又可以分为有源滤波器和无源滤波器。无源滤波器是指用电阻、电感、电容等无源元件构成的滤波器。因此实现程控滤波器需要制作大量的电感,需要用到继电器切换,电路复杂,且整体电路分布参数很大,调节步进频率非常困难,精确度不高。有源滤波器件是以集成运放为核心,通过它与电
11、容、电阻等构成的滤波器具有不用电感、体积小、重量轻等优点。如果用单片机等切换相应的电阻值来达到程控的目的,但实现起来仍然很不灵活。(2)使用开关电容滤波器实现开关电容滤波器是在有源滤波器的基础上发展起来的,其通过改变开关的速度就可以达到控制电容的目的,从而实现截止频率的控制。其由MOS电容、开关和运放组成。虽然现在的开关电容滤波器已经实现了单片集成,使用较为方便,只要改变外输入的时钟就可以改变截止频率,但是由于开关电容的存在,其有高频噪声,还有容易受环境影响等缺点。4(3)采用数字滤波器实现采用数字滤波器实现的方法是:输入信号经过抗混叠滤波后,经A/D采样转变为数字信号,然后通过一定的运算关系
12、改变输入信号的频率成分的相对比例,或者滤除某些频率成分,再通过D/A送出后经过平滑滤波,就得到了输出信号。数字滤波器相对模拟滤波器有很多优点,如:通过程序改变滤波器的系数,从而容易实现程控,噪声小、受环境因素影响小等。对于经典的数字滤波器还可以分为有限冲击响应滤波器(FIR)和无限冲击响应滤波器(IIR),FIR滤波器其输出只与有限个过去和现在的输入有关,而IIR滤波器不仅跟有限个过去和现在的输入有关,还和过去的输出有关,FIR和IIR滤波器无论在性能还是在设计上都有很大的差别。在数字滤波器中FIR滤波器有以下的优点:(1)可以在幅度特性随意设计的同时,保证严格的线性相位。(2)由于FIR滤波
13、器的单位脉冲响应是有限长的,因此FIR滤波器永远是稳定的。(3)由于FIR滤波器一般为非递归结构,因此在有限精度运算下,不会出现递归结构中的极限振荡等不稳定现象。(4)FIR可以采用FFT算法实现,从而提高运算效率。综上,本设计采用FIR数字滤波器的方式实现程控滤波器。2.2设计流程整个程控滤波器的设计属于一个DSP应用系统的设计,既有硬件的设计,又有软件的设计。因此在进行具体的操作前,必须把整个设计的流程整理清楚。整个设计的流程如图2-1所示:5图2-1 整个系统设计的流程依据设计过程,其设计步骤分为如下几个阶段:第一步是在系统设计之前,弄清设计任务,写出设计任务书。本次设计的目的是完成一个
14、程控滤波器,其-3dB截止频率fc从2KHz到20KHz,能通过键盘实现1KHz步进,阻带2fc或高通时的1/2fc处衰减大于20dB,并能通过键盘改变滤波器的类型:高通或低通,截止频率误差小于10。第二步进行算法模拟和确定性能指标。根据系统的要求进行算法仿真和高级语言(如matlab,C语言)模拟实现,确定最佳算法。在本设计中采用了matlab中的FDAtool进行滤波器的算法设计与仿真。第三步在根据算法的需要选择DSP芯片和外围器件。第四步是设计实时DSP系统,包括硬件设计和软件设计两个方面。硬件设计先要根据系统运算量的大小、对运算精度的要求、系统成本限制以及体积、功耗等要求选择合适的DS
15、P芯片。软件设计和编程主要根据系统要求和所选的DSP芯片编写相应DSP汇编程序,若系统运算量不大且有高级语言编译器支持,也可以用高级语言(如C语言)编程。由于现有的高级语言编译器的效率还比不上手工编写汇编语言的效率,因此在实际应用系统中常常采用高级语言和汇编语言的混合编程方法,在运算量大的地方用汇编语言编写,运算量不大的地方用高级语言编写。既可缩短软件开发的周期,提高程序的可读性和可移植性,又能满足系统实时运算的要求。第五步进行硬件和软件的调试。硬件调试一般采用硬件仿真器进行调试。软件的调试一般借助于DSP开发工具,如软件模拟器、DSP开发系统或仿真器等。第六步完成系统的集成和测试。将软件脱离
16、开发系统而直接在应用系统上运行。若系统测试结果符合指标,则样机设计完成。否则就需要进行软件和硬件的调整。3.FIR滤波器的原理FIR滤波器的设计方法常用的是窗函数法和频率采样法。而此次程控滤波器的设计采用了窗函数法,下面将重点介绍用此方法设计FIR滤波器。设我们希望设计的滤波器传输函数为,是与其对应的单位脉冲响应,因此 (31) (32)如果能够由已知的求出,经过Z变换可以得到滤波器的系统函数。但一般情况下,逐段恒定,在边界频率处有不连续点,因而是无限时宽的,且是非因果序列。例如:理想低通滤波器的传输函数为 (33)相应的单位取样响应为 (34)由上式看到,理想低通滤波器的单位取样响应 是无限
17、长,且是非因果序列,的波形如图3-1所示。6为了构造一个长度为N的线性相位滤波器,只有将截取一段,并保证截取的一段对(N-1)/2对称。设截取的一段用表示,即 (35)图3-1 的波形式中是一个矩形序列,长度为N,波形如图3-2所示。由该图可知,当a图3-2 波形取值为(N-1)/2时,截取的一段对(N-1)/2对称,保证所设计的滤波器具有线性响应。 我们实际实现的滤波器的单位取样响应为,长度为N,其系统函数为,。这样我们用一个有限长的序列,去代替,肯定会引起误差,表现在频域就是通常所说的Gibbs效应。该效应引起通带内和阻带内的波动性,尤其使阻带的衰减小,从而满足不了技术上的要求。这种效应是
18、由于将直接截断引起的,因此,也称为截断效应。为了补偿这种失真,只有改变原来窗口的形状,修正经过时域截取后的窗口失真。下面我们分别讨论一下各种窗口的影响。(1)矩形窗其窗函数,由于矩形窗是将理想的通带所对应的时域部分(无限长)截断到有限长。这样,在转换回频域时,理想的矩形通带就会产生畸变。畸变的情况如图3-3所示。图3-3 经矩形窗截断后低通滤波器频域的畸变由图可见频率域相对于理想的产生了如下的变化:7在通带内出现了两个尖峰(即通带内不平滑)。阻带中出现了泄漏,即出现了波动。以上两点的产生主要取决于窗口频谱的旁瓣,旁瓣越多,余振越多,旁瓣相对值越大,波动越强。过渡带变宽了,理想矩形通带应当过渡带
19、为0,现在却变成了从到这样长的过渡带,过渡带的宽度取决于窗口频谱的主瓣宽度。由此分析可以得出改善窗函数的标准:尽量减少窗口频谱的旁瓣,是能量集中在主瓣中,以减少波动的幅度和次数,提高阻带衰减,这样,主瓣就不能太窄。主瓣的宽度应当尽量窄,以得到尽量窄的过渡带。可以看出来:上面这两个条件是相互矛盾的,所以就根据不同的性能要求,设计出不同的窗口函数。(2)其他窗函数三角窗 (36)为其幅度函数,频率响应的主瓣宽度为,第一副瓣比主瓣低26dB。汉宁(Hanning)窗-升余弦窗 (37)为此窗幅度函数,为矩形序列。此窗的频率响应的能量集中在主瓣部分,主瓣宽度为。哈明(Hamming)窗 (38)这种改
20、进的升余弦窗,能量更加集中在主瓣中,主瓣的能量约占99.96,第一旁瓣的峰值小40dB,但主瓣宽度和汉宁窗相同,仍为。布莱克曼窗 (39)为此窗的幅度函数,其展开后由5部分组成,这几部分频率响应的相位和幅度都不同,使得旁瓣进一步抵消。阻带衰减进一步增加,过渡带是。凯塞贝塞尔窗其表达式非常复杂,一般在matlab中生成其系数。(3)几种窗函数的性能比较这里介绍的六种窗函数的基本产生如表1所示:表1 六种窗函数的基本参数比较窗函数旁瓣峰值幅度/dB过渡带宽阻带最小衰减/dB矩形窗-13-21三角形窗-25-25汉宁窗-31-44哈明窗-41-53布莱克曼窗-57-74凯塞窗-57-80由上表的对比
21、结果结合设计的难易程度,本次设计中选用哈明窗。4.程控滤波器的硬件设计此次程控滤波器的硬件部分主要完成模拟信号的采集、处理、输出和人机接口。具体可以分为以下几个部分:电源部分、DSP以及周围接口电路、单片机引导DSP启动部分、CPLD实现地址译码、3.3V和外部5V器件的电压转换、A/D和D/A部分、键盘显示部分。整个硬件部分的电路框图如图4-1。图4-1 程控滤波器的硬件框图硬件的整体设计规划为:CPU选择TI公司的16位定点DSP,具体型号为TMS320VC5416,采用PQFP封装。此芯片的核电压为1.5V,I/O口电压为3.3V,再加上与外部接口的5V电压,就要求整个系统有三种不同的电
22、压,因此此次设计的电源部分采用了外部5.0V供电,然后通过一片AMS1117-3.3提供3.3V电压,5V再通过一片AMS1117-1.5提供1.5V电压。 CPLD选用Altera公司的MAX系列EPM7128,PLCC封装,A/D和D/A转换器采用TI为音频设计的TLV320AIC23,其与DSP采用McBSP接口相联,TSOP封装。显示采用LCD1602,键盘采用8个轻触键,键盘和LCD都直接接在CPLD上,CPLD实现键盘的去抖,并且当有键按下时发生产生中断并把键盘的值存在CPLD中,等待DSP读取。而整个系统的BOOT采用DSP的HPI模式,先把代码下载到单片机内部,然后由HPI从单
23、片机引导到DSP内部的程序空间中运行。4.1 DSP芯片的选型在我们设计DSP应用系统时,DSP芯片选型是非常重要的一个环节。在DSP系统硬件设计中只有选定了DSP芯片,才能进一步设计其外围电路及系统的其他电路。我们选择的原则是:根据应用系统的实际需要,做到既能满足使用要求,又不浪费资源,从而达到成本最小化的目的。首先根据所设计系统的运算量并不大,可以由定点DSP完成的特点,选择TI公司的TMS320C54系列的芯片。此次设计选择TMS320VC5416(以下简称C5416)主要基于以下几点考虑:(1)C5416内部含有64K的DARAM和64K的SARAM以及16K的ROM,根据处理器的工作
24、方式寄存器PMST的设置,用户可以自由的分配片内的存储器在不同的空间。TMS320VC5416的存储器配置机构如图4-2。8利用片内的存储器可以提高运行的速度,同时在采用此芯片进行系统设计时就不用再扩充外部的存储器了,降低了设计难度和成本。图4-2 TMS320VC5416的存储器程序和数据空间映射图(2)C5416提供多个高速、双向、多通道带反冲串口McBSP。它可以与其他C54器件,编程器或者其他的串口器件通信。其结构如图4-3:图4-3 McBSP 结构此结构具有以下功能:(1)全双工通信。(2)双缓冲发送和三缓冲接收数据存储器,允许连续的数据流。(3)独立的接收、发送帧和时钟信号。(4
25、)可以直接与工业标准的编解码器、其他串行A/D、D/A器件连接通信。(5)可以直接和多种串行协议接口通信。(6)数据的大小范围选择,包括8、16、20、24、32位字长。因此此次设计中的A/D转换器和D/A转换器与DSP的接口就是采用了此McBSP接口。同时具有接口简单,编程成熟,可以查看TI给的实例程序等优点,缩短了开发周期。(3)中段系统控制灵活,此次的键盘设计就利用了外部中断,DSP对McBSP数据口传来的数据处理也是中断的形式。(4)对外部I/O空间控制灵活,可以通过配置SWWSR寄存器和SWCR寄存器中的SWSM位来设置访问外部设备的等待周期,其可以值为014个机器周期,这样方便于D
26、SP访问外部慢速设备。4.2电源电路设计电源是整个系统的能量供给部分,关系到整个系统工作的稳定性。TMS320VC5416的电源分为内核电源CVdd和I/O电源DVdd。内核电源1.5V,为CPU、时钟电路和所有内部逻辑电路提供电流。I/O电源为3.3V,为外部接口引脚提供电压。C5416的电流消耗主要取决于器件的激活度,内核电源消耗的电流主要取决于CPU的激活度,外设消耗的电流决定于正在工作的外设及其速度,一般与CPU相比,外设消耗的电流是比较小的。时钟电路也需要消耗一部分电流,而且这部分电流是恒定的,与和外设的激活度无关。本设计中采用一片AMS1117-1.5提供1.5V的核电压,一片AM
27、S1117-3.3提供3.3V的电压提供给C5416的I/O口,A/D和A/D芯片,CPLD的部分VCCIO,以及单片机,AMS1117提供的电流可达800mA,满足以上器件的电源供给。整个系统的电源部分电路图如4-4。为了方便5V供电,特别设计了从电脑USB接口取电的电路。图4-4 系统电源电路4.3时钟电路设计C5416有X1和X2两个时钟管脚,X1为输出管脚,X2为输入管脚也称为CLKIN。为DSP提供时钟有两种引脚连接方式,一种是X1悬空,X2输入外部时钟,一种是利用DSP片内提供的放大电路,X1、X2接无源晶振,电路连接如图4-5。这种接法中,片内振荡器被激活,X2脚向DSP送入一个
28、频率与脚2晶体标称值相同的时钟,并通过外部锁相环控制电路选择适当倍频为CPU内部提供系统时钟。此次设计外部系统时钟为20MHz。9图4-5 时钟电路C5416支持软件内部锁相环控制方式,在复位时,它由CLKMD1-CLKMD3三个管脚的电平决定,这三个管脚值也决定了时钟模式寄存器CLKMD的值,在软件运行时也可以通过改变内部寄存器CLKMD的值来改变时钟。三个管脚与倍频关系如表2:此次设计CLKMD1、CLKMD2、CLKMD3分别设置为1、1、0。这样在上电时,内部时钟也为20MHz,如果需要改变则在软件中通过配置CLKMD值来改变。表2 CLKMD1-CLKMD3与倍频关系CLKMD1CL
29、KMD2CLKMD3CLKMD复位值时钟模式0000000h1/20019007hPLL*100104007hPLL*51001007hPLL*2110F007hPLL*11110000h1/2101F000h1/4011-保留4.4 CPLD逻辑扩展接口设计本次设计中选用了一片CPLD器件来完成整个DSP系统的地址译码、逻辑扩展、电平转换、和键盘显示控制等功能。CPLD芯片采用Altera的EPM7128SLC8415,其为ALTERA公司的MAX7000系列产品,具有高阻抗、电可擦等特点,2500个可用门,68个I/O引脚、8个逻辑阵列块、128个宏单元,管脚间最大延迟为5ns,工作电压为
30、5V。可以用在3.3V和5V的混合系统中,I/O口的输入电压可以承受3.3V或者5V的输入。利用VCCIO可以设置I/O输出驱动电压为3.3V或5V,如果接5V则I/O的输入输出电压就为5V,本次设计中与DSP接口部分接3.3V,在扩展外围器件部分系统时,根据外围器件,利用跳线帽,选择用3.3V还是5V。VCCINT为设置内部操作和缓冲器电压,应该为5V。CPLD与DSP的连接如图4-6:图4-6 CPLD与DSP的连接其中D0D15为DSP的数据总线,A0A7为DSP的地址总线的低8位,由于外部器件有限,为了节省CPLD的I/O口只用了8根地址总线。IS为DSP中用来选中外部I/O设备的信号
31、,IOSTRB低电平有效,为DSP选通外部I/O设备的信号。INT0,INT1,INT3为CPLD发向DSP的中断请求引脚。同时CPLD还承担着键盘去抖和显示驱动。4.5仿真测试口的设计仿真器即扩展开发系统(XDS),可用来进行系统级的集成调试,是进行DSP芯片软硬件开发的最佳工具。目前主要有两种类型的仿真器:一种是传统的电路仿真器,主要用于早期的TMS320C1X和TMS320C2X两代DSP芯片的仿真,这两代DSP芯片没有仿真信号线;另一种是先进的扫描仿真器,可用于TI的其他型号的芯片。扫描仿真器通过DSP芯片是提供的几个仿真引脚实现仿真功能,可以用来解决高速DSP芯片的仿真。由于高速DS
32、P芯片具有高度并行结构、快速的指令周期、高密度的封装等特点,采用传统的电路仿真方法很难实现可靠的仿真。扫描仿真消除了传统的电路仿真存在的问题,用户程序可在目标系统的片内或片外存储器实时运行,而不会因为仿真器引入额外的等待状态。JTAG(Joint Test Action Group)是基于IEEEll49.1标准的一种边界扫描测试方式(Boundary-Scan Test)。TI公司为大多数DSP芯片提供了JTAG端口支持。结合配套的仿真软件(Emulator),可以访问DSP的所有资源,包括片内寄存器以及所有存储器,从而提供了一个实时的硬件仿真与调试环境,便于开发人员进行系统软件调试。这是实
33、现一个系统中处理器部分“可见度”的一个最方便的手段。JTAG端口的14pin接插件结构图如图4-7所示。10TMSTDIVCCTDOTCK RETTCKEMU03156784291011131214TRSTGNDKEYGNDGNDGNDEMU1TI-JTAGG仿真口(上拉)(上拉)图4-7 JTAG仿真口接线规则其中,第6脚不接,作为接口位置的标志。主要引脚含义如下:TCK:在TAP操作期间,TEST CLOCK用来测试时钟状态信息和测试输入输出设备的数据。TDI:在TAP操作期间,TEST DATA INPUT把测试命令和数据串行输入到设备。TDO:在TAP操作期间,TEST DATA OU
34、T把测试命令和数据串行输出到设备。TMS:TEST MODE SELECT,测试方式选择,用于控制在设备中TAP控制器的状态。我们在本处理系统上设计了JTAG测试口,DSP-USB仿真器通过14pin接插件与芯片的JTAG端口进行通信,使得系统调试时可通过PC机下载程序进行调试。4.6 BOOT电路设计此次系统的BOOT采用单片机引导的方式,首先将代码下载到单片机中,在上电的时候由单片机加载到DSP的程序空间中。同时单片机还承担着控制A/D和D/A工作方式的任务。DSP的整个启动过程描述如下:在上电复位时,如果引脚MP/MC为低电平,则C5416从片内的ROM的FF80h处开始执行程序。在这里
35、有一条跳转指令,转向ROM中已掩膜的加载程序,这个程序在加载前先初始化CPU的状态寄存器。全局禁止中断(INTM1),内部DARAM和SRAM均映射到程序/数据存储器空间(OLVY1)。对全部的程序存储空间和数据存储空间都设置为7个等待状态。此次设计中采用主机接口(HPI)引导模式,采用8位的接口。DSP的HPI与单片机的接口如图4-8: 图4-8 DSP与单片机的连接单片机和C5416通过片内分享存储器交换信息。如果选用了主机接口引导模式,则在外部把HINT接到INT2的引脚(如果在外部不把HINT接到INT2的引脚,也可以在C5416读取复位矢量后的30个CLKOUT周期内给INT2发出一
36、个合法的中断信号来选择主机接口引导模式)。使HINT为低电平,即设置中断标志寄存器IFR中的相应位。在HPI变低20个CLKOUT周期后读出IFR中的位2,如果该位被置位(即有INT2信号),引导程序转向HPI RAM的起始地址并从该地址开始执行程序。选择了HPI模式后,单片机必须在DSP退出复位之前把代码下载到片内的HPI RAM中。引导程序在整个过程中使HPI保持在分享模式,一旦引导程序使HINT变低,HINT就一直保持低,直到单片机通过写入HPIC清楚它为止。4.7 A/D和D/A部分模拟数字转换和数字模拟转换是整个系统和模拟部分打交道的部分,它为整个数字信号处理的信号输入和最终输出,所
37、以此器件的选择和相关电路的设计非常重要。由于整个系统DSP芯片为16位,为了方便数据的搭配,选择16位的A/D和D/A器件。本设计选择了TI公司一款高性能立体声音频Codec芯TLV320AIC23,具有接口方便,内部集成度高等优点。114.7.1 TLV320AIC23简介TLV320AIC23(以下简称AIC23)是TI公司推出的一款高性能的立体声音频Codec芯片。AIC23 内置耳机输出放大器,支持MIC和LINE IN两种输入方式,且对输入和输出都具有可编程增益调节,该芯片高度集成了模拟电路功能。AIC23 的模数转换(A/D) 和数模转换(D/A) 部件高度集成在芯片内部,采用了先
38、进的多比特工艺, 在内部集成了高采样率的数字内插滤波器, 可在896kHz的频率范围内提供16bit、20bit、24bit和32bit的采样,此次设计采用了16bit的方式。AIC23还具有很低的能耗,回放模式下功率仅为23mW。4.7.2 TLV320AIC23的接口设计在这个系统中AIC23的接口包括三部分:第一部分为AIC23的数据接口,其与DSP的McBSP连接部分如图4-9:12图4-9 AIC23与DSP接口电路图该系统中C5416通过多通道缓冲串口McBSP0与AIC23进行音频数据的收发。数据音频数据传输接口采用DSP模式,AIC23的数字接口的DSP模式的时序图如图4-10
39、所示。图4-10 DSP模式时序图 McBSP0的位同步信号CLKX/CLKR、帧同步信号FSR/FSX都由外部器件AIC23驱动。根据AIC23在DSP模式下的接口时序, 只需要对McBSP0进行相应的配置即可实现DSP对此器件的数据采集。第二部分为AIC23的控制部分,与单片机连接如图4-11。这部分是SPI的连接方式,AIC23通过CS、SCLK、SDIN与单片机相连。单片机通过P3.3、P3.4、P3.5这三个引脚模拟SPI的时序来控制AIC23。图4-11 AIC23与单片机接口电路图第三部分为AIC与模拟部分的接口,与外部输入和输出相接。4.8键盘显示部分键盘显示为本次设计中的人机
40、接口部分,是整个系统的交互界面。键盘采用8个轻触键,显示采用字符型LCD。4.8.1键盘部分针对此次设计中用到的按键不多的特点,没有采用专门的键盘管理芯片,也没有采用矩阵式键盘,而是采用8个轻触键。在键盘没有按下的时候,由于上拉电阻的存在,此按键的输出为高电平。当有键按下时,对应按键输出脚为低电平,键盘部分的电路如图4-12。图4-12 键盘与CPLD的连接这8个按键的输出key1key8直接连接到CPLD上,CPLD内部对其去抖,并且当发现有任意一个键按下时,记下对应的键值,并产生中断,等待DSP读取按键的值。键盘去抖动的过程是在CPLD内部利用软件去抖。CPLD对整个键盘大约每隔5ms扫描
41、一次,当有连续两次发现为低电平时,某个键就按下了,此时产生一次脉冲给后面的电路,然后识别出按键的值,再由CPLD向DSP发出中断。键盘去抖的流程如图4-13。图4-13 键盘去抖流程图4.8.2显示部分液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧等诸多优点在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。本次设计中选用字符型LCD ,它是一种用5x7点阵图形来显示字符的液晶显示器,显示的容量可以有2行16个字。其外观如图4-14。图4-14 LCD实物图它的引脚定义及其使用方法如下:1脚:VSS为电源地。2脚:VDD接5V正电源。3脚:V0为液晶显示器对比度调整端。4脚:RS为寄存器
42、选择,高电平时选择数据寄存器、低电平时选择指令寄存器。5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。714脚:D0D7为8位双向数据线。 1516脚:背光。图4-15 LCD的连接电路图数据和控制引脚直接与CPLD相连接,连接的电路如图4-15,DSP需要显示的数据通过CPLD后控制LCD的显示。5.程控滤波器的软件设计软件部分整体的框架和控制采用C语言编写,而经常调用且对实
43、时性要求较高的部分采样汇编语言编写。软件部分的工作流程是:首先系统上电,整个系统复位,然后初始化CPU内部寄存器,初始化McBSP口,送出初始化设置的截止频率显示于LCD上。然后主程序进入等待中断状态。当A/D转换器采样到一个数据后立即传输给DSP的McBSP口,DSP发生McBSP中断,在中断服务程序中调用汇编语言编写的FIR滤波函数,并送出滤波后的数据。当需要改变滤波器的类型或截止频率值时,按下按键,此时发生外部中断,在中断程序中判断输入的键值,并根据结果改变滤波器的结构,实现实时程控滤波。整体的流程如图5-1所示;McBSP串口中断处理的流程如图5-2。键盘中断的处理过程如图5-3。 图
44、5-1 总体流程图 图5-2 McBSP中断流程图 图5-3 键盘中断流程图以上便为整个系统的软件的工作过程。在介绍具体程序编写前,先介绍此次编程所用到的开发环境中较为重要部分的使用方法,怎样使用汇编语言与C语言混合编程,内存分配文件的编写和整个系统核心FIR滤波器在matlab中的设计与仿真。5.1编写内存分配文件在利用DSP的开发工具CCS编程的过程中,首先要解决的是如何将程序变量分配到内存中去的问题。因为即使 DSP的存储空间比较大,速度也十分快。但是如果内存空间分配不当的话,还是会出现空间不够,运行速度下降,甚至程序跑飞的情况。这样会使程序调试起来十分麻烦。所以,一定要分配好内存空间。
45、图5-4 rcp文件内存分配界面CCS提供了两种分配空间的方法:利用cmd文件或rcp文件分配空间。其中cmd 文件是纯文本格式的描述性的空间分配方式。它的优点是:程序员对空间的可控制性较高,可以将不同的块分配到指定的地址,并规定长度。但它对于初学者来说,要求对C5416的内存空间的分配有较清楚的认识,否则容易将数据分配到不该分配的地方,引起程序运行的冲突,甚至程序跑飞。所以一般在编程过程中,使用 rcp文件对程序进行内存分配。Rcp文件全称是recipe文件,这是一种图形化界面的内存分配文件。对于一个新生成的工程组rcp文件的生成方法是选择CCS菜单上的Tools项选择linker configuration项,将分配方式改为use the visual linker之后,直接编译在编译信息提示窗口中会显示出错信息,提示找不到 rcp 文件,双击提示CCS会自动弹出rcp生成向导,按照要求选择rcp模板,就会生成这个工程对应的rcp文件。双击生成的rcp文件,通过visual linker连接器