DSP课程设计实验报告————利用DSP实现实时信号FIR滤波学院:电子信息工程学院专业:自动化(信号)1201小组成员:12212150洪恩杯12212154金夏垚指导老师:高海林一、实验目的掌握DSP集成开发环境CCS的使用和调试方法。掌握DSP片上资源和片外资源访问的基本方法。通过对DSP处理器及CODEC的编程,培养学生C语言编程能力。学会利用Matlab对信号进行FIR滤波,掌握Matlab的信号仿真方法。掌握利用DSP实现信号实时FIR滤波设计可使学生更加透彻的理解信号的采集方法和滤波方法。培养学生使用DSP硬件平台实现数字信号处理算法的能力。二、实验要求基本部分(1)掌握利用Matlab的滤波器工具箱设计FIR滤波器的方法,并提取滤波器参数。(2)掌握Matlab的信号处理工具箱的使用,以及利用Matlab对信号进行滤波的方法。(3)在DMA中断服务程序中,编写数字滤波算法程序,或调用DSPLIB中的滤波函数,实现对信号的滤波。(4)在实验板的Linein输入端接入正弦信号,分左右声道分别采集,并分别滤波。(5)利用CCS信号分析工具分析信号的频谱成分,根据实际输入信号确定滤波器的参数。发挥部分(1)比较加不同窗和阶数时滤波器的滤波效果。(2)测试所设计滤波器的幅频特性和相频特性,并与MATLIB下的设计结果进行比较。三、实验相关技术1、DMA技术直接内存存取(DirectMemoryAccess,简称DMA)是数字信号处理器(DSP)中用于快速数据交换的重要技术,它具有独立于CPU的后台批量数据传输能力,能够满足实时图像处理中高速数据传输要求。允许在外部设备和存储器之间直接读写数据,既不通过CPU,也不需要CPU干预。整个数据传输操作在一个称为DMA控制器的控制下进行的。CPU除了在数据传输开始和结束时做一点处理外,在传输过程中CPU可以进行其他的工作。这样,在大部分时间里,CPU和输入输出都处于并行操作。因此,使整个计算机系统的效率大大提高。实现DMA传送的基本操作如下:1、外设可通过DMA控制器向CPU发出DMA请求;2、CPU响应DMA请求,系统转变为DMA工作方式,并把总线控制权交给DMA控制器;3、由DMA控制器发送存储器地址,并决定传送数据块的长度;4、执行DMA传送;5、DMA操作结束,并把总线控制权交还CPU。2、FIR滤波技术假设数字滤波器的频率响应函数H用下式表示:幅频特性表示信号通过该滤波器后各频率成分振幅衰减情况,而相频特性反映各频率成分通过滤波器后在时间上的延时情况。一般选频滤波器的技术要求由幅频特性给出,其相频特性是确定的,所以在设计过程中,对相频特性一般不作要求。在低通滤波器的幅频特性中,Wp和Ws分别称为通带边界频率和阻带截止频率。从Wp到Ws称为过渡带,过渡带上的频响一半是单调下降的。当冲击响应满足下列条件时,FIR滤波器具有对称结构,为线性相位滤波器:这种对称性,可使得乘法器数量减半:对n价滤波器,当n为偶数时,乘法器的个数为n/2个;当n为奇数时,乘法器的个数为(n+1)/2个。在电路实现中,乘法器占用的逻辑单元数较多。乘法器的增加,意味着电路成本增加,另外对电路的工作速度也有影响。在DSP的应用中,可以应用Matlab的滤波器设计工具箱fdatool工具箱生成需要的FIR滤波器,在生成C文件,提取出相应的滤波数据,应用CCS来调用这些数据,从而应用DSP产生信号的滤波效果,这样就实现了FIR的低通滤波效果。3、利用DSP实现实时的FIR滤波利用DSP实现对模拟信号的实时滤波流程图:信号采集和滤波的流程图:将DMA传输和DSP的算法FIR相结合,在DMA采集和传输的主程序中的存储器处理子程序中嵌入滤波算法,则可以实现利用DSP实现信号实时滤波。四、实验内容(一)实验基本思路:外部模拟信号先进行A/D转换,利用MCBSP的接收寄存器接收数据。利用CCS的频谱分析工具对输入信号进行频谱分析;根据频谱成分确定滤波器参数,然后利用Matlab设计FIR滤波器,并将参数提取出来。在DMA中断服务程序中调用DSPLIB中的FIR滤波函数,对信号进行滤波。滤波后的数据利用DMA方式送到D/A转换器转换为模拟信号。本设计可以分为两部分:(1)信号仿真(a)首先利用Matlab的fdatool工具箱设计滤波器,在sptool工具箱进行信号分析与滤波。(b)利用CCS进行信号滤波算法的仿真,即利用simulator进行仿真。调用DSPLIB库中的fir()滤波函数实现信号FIR滤波,或自行编写FIR滤波程序实现信号FIR滤波。(2)利用Emulator在DSP实验板上采用DMA方式实现信号采集与传输。(3)在DSP实验板上,结合FIR滤波算法,实现信号的实时FIR滤波。(二)实验过程1、利用Matlab的滤波器工具箱设计FIR滤波器,生成c文件,并提取相应的滤波数据。用MATLAB的fdatool滤波器工具箱设计低通滤波器:得到的64个数据:2、MATLAB中的sptool工具箱对任意设置的信号进行分析:设两个中心频率分别为2000Hz和5000Hz的正弦波相叠加,设计截止频率为3000Hz的低通滤波器进行滤波。输入(叠加正弦波)信号的频域、时域波形分别如下所示:经过截止频率为3000Hz的低通滤波之后的时域、频域波形分别为:3、利用ccsS新建工程、编译和运行调试步骤如下所示:4、利用ccs图形观测工具观察输入左声道频谱:滤波后左声道频谱:增益增益比较上面左声道滤波前后的频谱纵坐标数据,滤波前的最大纵坐标值(增益)为2.8e^5,滤波后纵坐标最大值(增益)为2899,即滤波后增益减小。左(右)声道输入时域波形:滤波后左声道时域波形比较滤波前后的左声道的时域波形,可看出经过滤波后,信号变得平滑,且失真几乎没有。5、基于声卡的模拟示波器显示滤波前:由于左声道低通滤波器的截止频率设置的是4000Hz,故当左声道(绿线)的频率设置为3000Hz的时候还处在滤波器的高通范围内,信号没有被滤掉,故还可以显示出来;右声道(红线)没有进行滤波,故改变频率其频谱基本上没什么变化。相应的频谱显示如下图所示:滤波后:由于设计的低通滤波器的截止频率是4000Hz,所以当左声道信号(图中绿线)的频率为7000Hz时,大于了截止频率,处于阻带范围内,信号被滤掉,而右声道信号没有经过滤波处理,故其频谱没什么变化,只是频率变高后,高频部分的频谱将会稍微减弱。频谱变化如下图所示:五、实验感想通过DSP的课程设计,将之前数字信号处理的内容进行实践,过去只是在matlab上通过软件进行信号的滤波处理,这次不仅需要软件仿真,还需要通过硬件进行处理滤波,我们从开始的什么都不会,到后来一点点查找资料,弄懂DSP处理的原理以及方法,在编程调试的过程中加深了对DSP的理解,因DSP独特的结构使他在数字信号处理方面有独特的优势,在以后的工作中会起到很大的作用。