基于DSP的语音信号FIR低通滤波器设计

上传人:M****1 文档编号:488437705 上传时间:2024-01-14 格式:DOC 页数:15 大小:766KB
返回 下载 相关 举报
基于DSP的语音信号FIR低通滤波器设计_第1页
第1页 / 共15页
基于DSP的语音信号FIR低通滤波器设计_第2页
第2页 / 共15页
基于DSP的语音信号FIR低通滤波器设计_第3页
第3页 / 共15页
基于DSP的语音信号FIR低通滤波器设计_第4页
第4页 / 共15页
基于DSP的语音信号FIR低通滤波器设计_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《基于DSP的语音信号FIR低通滤波器设计》由会员分享,可在线阅读,更多相关《基于DSP的语音信号FIR低通滤波器设计(15页珍藏版)》请在金锄头文库上搜索。

1、科信学院DSP应用系统(三级项目)(2014/2015学年第二学期) 课程名称 : DSP原理与应用 题 目 :基于DSP的语音信号FIR低通滤波器设计 专业班级 : 信息1221 学 号 : 学生姓名 : Liu 指导教师 : 设计成绩 : 2015年 7 月 10 日1、 项目设计目的通过课程设计,加深对DSP芯片TMS320C54x的结构、工作原理的理解,获得DSP应用技术的实际训练,掌握设计较复杂DSP系统的基本方法、数字滤波器的设计过程,了解FIR的原理和特性,熟悉设计FIR数字滤波器的原理,学习FIR滤波器的DSP的实现原理,学习使用CCS的波形观察窗口观察输入/输出信号波形和频谱

2、变化情况。2、 项目设计正文2.1硬件设计2.1.1方案设计本次设计基于ccs3.3运行环境下,使用ICETEK-VC5509-EDU实验箱(包括仿真器)、麦克风输入设备、耳机输出相关设备等完成此次设计。主要是通过实验箱上AIC23芯片实时采集语音信号,进行FIR低通滤波,使用MATLAB环境下的FDAtool工具来产生低通滤波器系数,用DSP汇编语言或C语言进行编程实现FIR运算对语音信号进行滤波处理,并且与CCS 算法库中的dsplib中的算法相比较,对所设计的FIR滤波器各项指标进评价。2.1.2 CCS开发环境配置CCS可以工作在纯软件仿真环境中,就是由软件在PC机内存中构造一个虚拟的

3、DSP环境,可以调试、运行程序。但一般软件无法构造DSP中的外设,所以软件仿真通常用于调试纯软件的算法和进行效率分析等,本次设计将使用硬件仿真(Emulator)。在使用软件仿真方式工作时,无需连接板卡和仿真器等硬件。双击桌面上图标:进入CCS设置窗口。在出现的窗口中按标号顺序进行如下设置:图 2-1 Emulator选项图接着在下面的窗口中按标号顺序进行如下选择: 图 2-2 Emulator配置图在出现的窗口中按标号顺序进行如下设置: 图 2-3 Emulator配置完成图在出现的窗口中按标号顺序进行如下设置: 图 2-4 配置完成图以上设置完成后,CCS已经被设置成Emulator的方式

4、(用仿真器连接硬件板卡的方式),并且指定通过ICETEK-5100USB 仿真器连接ICETEK-VC5509-A 2.1.3 语音编解码芯片TLV320AIC23原理ICETEK-VC5509-A 评估板上有一个语音编解码芯片 TLV320AIC23。TLV320AIC23内置耳机输出放大器,支持MIC和LINE IN两种输入方式(二选一),且对输入和输出都具有可编程增益调节。AIC23的模数转换(ADCs)和数模转换(DACs)部件高度集成在芯片内部,采用了先进的Sigmadelta过采样技术,可以在8K到96K的频率范围内提供16bit、20bit、24bit和32bit的采样,ADC和

5、DAC的输出信噪比分别可以达到90dB和100dB。图 2-5 TMS320VC5509与TLV320AIC23的连接示意图 系统中AIC23的主时钟12MHz直接由外部的晶振提供。MODE接数字地,表示利用I2C控制接口对AIC23传输控制数据。CS接数字地,定义了I2C总线上AIC23的外设地址,通过将CS接到高电平或低电平,可以选择AIC23作为从设备在I2C总线上的地址。SCLK和SDIN是AIC23控制端口的移位时钟和配置数据输入端,分别与VC5509的I2C模块端口SCL和SDA相连。收发时钟信号CLKX1和CLKR1由AIC23的串行数据输入时钟BCLK提供,并由AIC23的帧同

6、步信号LRCIN、LRCOUT启动串口数据传输。DX0和DR0分别与AIC23的DIN和DOUT相连,从而完成VC5509与AIC23间的数字信号通信。2.1.4 FIR滤波器原理 对于一个FIR滤波器系统,它的冲击响应总是又限长的,其系统函数可记为: (2-a)其中N-1是FIR的滤波器的阶数,为延时结,h(n)为端口信号函数。最基本的FIR滤波器可用下式表示: (2-b)其中x(n-k)输入采样序列,h(k)是滤波器系数,N是滤波器的阶数Y(N)表示滤波器的输出序列,也可以用卷积来表示输出序列y(n)与x(n)、h(n)的关系,如下: (2-c)2.1.5 滤波器系数的生成在Matlab的

7、Start菜单中选择Toolboxes - Filter Design - Filter Design & Analysis Tools(fdatool),或者在命令行中输入fdatool来启动滤波器设计分析器。启动成功后界面如图所示。图 2-6 fdatool界面图 在选项中选择或输入滤波器参数,然后点击“Design Filter”按钮,完成滤波器的设计。具体参数及设计成功后的结果如图图 2-7 滤波器图从Matlab中导出FIR滤波器系数。在Fdatool中,选择Targets - Code Composer Studio (tm) IDE,在出现的对话框中选择输出文件类型为C head

8、er file,输出系数类型为signed 16-bit integer,如图2.1.3.3所示。点击Generate按钮,选择路径,即可输出前一步设计出的FIR滤波器的系数表。图 2-8 系数生成图2.1.5 FIR滤波器的DSP实现 FIR滤波器的输出表达式为 (2-d)式中为滤波器系数x(n)表示滤波器在n时刻的输入y(n)为n时刻的输出。它的基本算法是一种乘法-累加运算即不断地输入样本x(n)经过延时后,再进行乘法-累加,最后输出滤波结果y(n)。 该次设计中采用的是循环缓冲法设计FIR低通滤波器,循环缓冲区法的特点如下: (1)对于N级FIR滤波器在数据存储器中开辟一个N单元的缓冲区

9、滑窗用来存放最新的N个输入样本。 (2)从最新样本开始取数(3)读完最后一个样本最老样本后,输入最新样本来代替最老样本而其他数据位置不变。 图 2-9 FIR滤波器循环缓冲示意图2.2软件设计2.2.1系统分析通过麦克风利用芯片AIC23进行带噪声的语音信号采集,由于AIC本身自带A/D转化,采集得到的数据传输保存于MCBSP数据接收寄存器DDR。DSP对MCBSP中的数据进行FIR滤波,并送给MCBSP中的数据发送寄存器DXR。DXR中数据回传给AIC23,并利用它带的D/A转换进行输出,从而能听到滤波后的信号。开始初始化语音缓冲区和工作变量等待 McBSP通道 0 传送结束读取语音数据保存

10、于左声道缓冲区调用 fir2计算 FIR 滤波输出滤波结果保存于右声道缓冲区原声音送左声道,滤波后送右声道输出2.2.2系统流程图主程序流程图:开始初始化:EMIF、CPU频率、AIC23调用AIC23_Mixer子程序处理音频数据输入/输出2.2.2 实现代码主程序:/ 测试时音频插孔J5接音源,J7接扬声器。#include 5509.h#include util.hvoid wait( unsigned int cycles );void EnableAPLL( );extern int fir(int *,int *,unsigned int,int );void main() SDR

11、AM_init(); EnableAPLL(); PLL_Init(40); AIC23_Init(); PLL_Init(120); for(;) AIC23_Mixer(); AIC2323_Mixer(); void wait( unsigned int cycles ) int i; for ( i = 0 ; i cycles ; i+ ) void EnableAPLL( ) /* Enusre DPLL is running */ *( ioport volatile unsigned short* )0x1f00 = 4; wait( 25 ); *( ioport volat

12、ile unsigned short* )0x1f00 = 0; / MULITPLY *( ioport volatile unsigned short* )0x1f00 = 0x3000; / COUNT *( ioport volatile unsigned short* )0x1f00 |= 0x4F8; wait( 25 ); /*( ioport volatile unsigned short* )0x1f00 |= 0x800 / MODE *( ioport volatile unsigned short* )0x1f00 |= 2; wait( 30000 ); / APLL

13、 Select *( ioport volatile unsigned short* )0x1e80 = 1; / DELAY wait( 60000 );子程序1:#define AUTIODATALEFT 0x0d000#define AUTIODATARIGHT 0x17000int *pAudioLeft,*pAudioRight;int www=0;int left, right; int *pLeft,*pRight;int lft, rgt; void AIC23_Mixer() PC55XX_MCSP pMCBSP0 = (PC55XX_MCSP)C55XX_MSP0_ADDR; int *pl,*pr,nAudioCount; int i;pAudioLeft=pl=(int *)AUTIODATALEFT;pAudioRight=pr=(int *)AUTIODATARIGHT;nAudioCount

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 幼儿教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号