DSP课程设计基于FIR的语音信号滤波.docx
- 文档编号:23812464
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:23
- 大小:353.13KB
DSP课程设计基于FIR的语音信号滤波.docx
《DSP课程设计基于FIR的语音信号滤波.docx》由会员分享,可在线阅读,更多相关《DSP课程设计基于FIR的语音信号滤波.docx(23页珍藏版)》请在冰豆网上搜索。
DSP课程设计基于FIR的语音信号滤波
目录
1绪论1
1.1背景及目的1
1.2设计步骤1
1.3设计方案2
2总体设计3
2.1滤波器的原理及特点3
2.2MATLAB软件介绍5
2.3FIR滤波器的Matlab设计6
3硬件设计7
3.1语音处理的总框图设计7
3.2硬件模块的设计7
3.2.1音频转换模块7
3.2.2存储器和数据通信模块8
3.3TMS320VC5402芯片的介绍8
3.4主要硬件接口及实现9
3.4.1TMS320VC5402与A/D、D/A芯片的接口9
3.5电源电路设计10
4软件部分11
4.1软件设计流程图11
5程序调试结果14
5.1调试结果14
6总结心得17
参考文献18
附录源程序19
1绪论
1.1背景及目的
随着微处理技术的快速发展,微处理器芯片的集成度从最早的几千个晶体管发展到现在的上亿个晶体管,字长从4位提高到了64位,正是这些技术的飞速发展引发了一轮又一轮的信息产业革命,而人们的生活、学习和工作方式也在以计算机技术、通信技术为核心的信息技术的影响下发生着前所未有的改变。
然而在这次设计中,比较核心的是数字滤波器,数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域。
滤波的目的。
根据其单位冲激响应函数的时域特性可分为两类:
无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。
与IIR滤波器相比,FIR滤波器只有零点,除原点外.在z平面上没有极点,因此总是稳定的和可实现的;更重要的是,FIR滤波器在满足一定的对称条件下,可以获得严格的线性相位特性,这一点是IIR滤波器难以实现的。
因此。
它在高保真的信号处理.如数字音频、图像处理、数据传输、生物医学等领域得到广泛应用。
对于本设计主要是利用一个DSP芯片来进行语音采集系统的设计,而数字信号处理技术的发展使得采用数字化的方法实时的处理语音信号成为可能。
早期的语音信号处理均是采用模拟处理,对声音信号最常用的滤波、相关、谱分析等运算,部分采用模拟电路来实现的。
这种传统的模拟方法处理语音信号,硬件设备昂贵,不能升级、产品生命周期短,而采用数字处理技术处理语音信号具有抗干扰性强、便于传输和处理等优点,代表着语音处理技术的发展方向。
DSP芯片高速、可编程的特点使其非常适合于语音信号处理领域。
1.2设计步骤
本题目通过DSP处理器控制TLC320AIC23采集音频信号,在CCS软件中分析音频信号的频谱图,使用Matlab设计相应的FIR数字滤波器(低通、带通、带阻等)并得到滤波器H(z)的系数,然后根据这些系数,编写DSP程序(C语言或汇编)对已采集信号进行处理,最后在CCS软件中得到处理后音频信号的频谱图,比较滤波前后信号的频谱图。
设计步骤包括:
1、DSP与TLC320AIC23接口电路的原理图绘制;
2、DSP控制TLC320AIC23的程序编写与调试;
3、TLC320AIC23模拟量到数字量的转换,采集声音信号,查看并记录信号频谱;
4、使用Matlab对FIR滤波器的设计;
5、编写FIR滤波处理的DSP程序,查看并记录处理后的信号频谱;
6、用TLC320AIC23实现数字量到模拟量的转换,回放处理后的声音;
7、按要求编写课程设计报告书,正确、完整的阐述设计和实验结果。
8、在报告中绘制程序的流程图,并文字说明。
1.3设计方案
DSP与一般的微处理器相比有很大的区别。
它所特有的结构和指令集合为解决复杂的数字信号处理问题提供了便利。
用DSP芯片C54x实现FIR滤波器的具体方案是:
先用MATLAB的相关滤波器函数设计一个FIR滤波器,将产生的滤波器系数作为DSP芯片实现该FIR滤波器的系数。
然后用MATLAB的SIMULINK功能信号源模块产生滤波器的输入数据,并仿真出滤波器的滤波过程,使用Scope模块得到滤波器对所输入的数据产生的滤波结果。
也就是,设计的滤波器对所采集的语音信号进行处理。
再通过DSP的集成开发环境CCS把SIMULINK所产生的滤波器数据存储在DSP芯片的数据空间中。
最后使用汇编语言设计C54x的FIR滤波程序,将MATLAB函数产生的滤波器系数和用C语言产生的输入数据进行运算。
输入数据和通过DSP芯片产生的滤波结果可以通过CCS显示出来,这样就可以验证该滤波器的实现。
在硬件设计方面,本设计是一个采用基于TMS320VC5402的语音采集硬件设计方案,叙述和分析了其中的几个主要硬件模块,包括信号采集A/D、D/A模块、存储器模块、UART数据通信模块和电源模块。
2总体设计
2.1滤波器的原理及特点
数字滤波器有两类:
IIR数字滤波器和FIR数字滤波器。
FIR滤波器是有限长单位冲激响应滤波器,在结构上是非递归型的。
它可以在幅度特性随意设计的同时,保证精确严格的线性相位。
线性相位特性在实际应用中非常重要,如在数据通信、图像处理、语音信号处理等领域,往往都要求具有线性相位特性。
并且由于FIR滤波器的单位脉冲响应有限长,系统不存在非稳定现象,我们总能用因果稳定系统来实现FIR滤波器。
FIR主要的不足在于其较好的性能是以较高的阶数为代价换来的,对于相同的设计指标,FIR滤波器所要求的阶数比IIR滤波器高2~5倍,信号的延迟偏大。
因此,在保证相同性能的前提下,尽量降低其阶数是FIR数字滤波器设计的目标之一。
FIR滤波器是有限长单位冲激响应滤波器,它具有以下独特的优点:
(1)可以在幅度特性随意设计的同时,保证精确、严格的线性相位;避免被处理的信号产生相位失真,这一特点在宽频带信号处理、阵列信号处理、数据传输等系统中非常重要;
(2)由于FIR滤波器的单位脉冲响应h(n)是有限长序列,因此FIR滤波器没有不稳定的问题;(3)由于FIR滤波器一般为非递归的结构,因此在有限精度运算下,不会出现递归结构中极性震荡等不稳定现象,误差较小。
FIR滤波器的数学表达式为:
(2-1)
式中:
N为FIR滤波器的抽头数;x(n)为第n时刻的输入样本;h(i)为FIR滤波器第i级抽头系数。
其相应的z变换为:
(2-2)
式中:
z-i为N-1阶多项式。
普通的直接型FIR滤波器结构如图2.1所示:
图2.1FIR滤波器的直接型结构
在自适应处理、数据通信等领域中往往要求信号在传输过程中不能有明显的相位失真,FIR滤波器可以做到线性相位满足此要求。
F1R滤波器实质上是一个分节的延迟线,把每一节的输出加权累加,得到滤波器的输出。
对于FIR滤波器的单位脉冲响应h(i)只要满足以下2个条件之一,则为线性相位滤波器。
(2-3)
线性相位的FIR滤波器具有中心对称的特性,其对称中心在N/2处。
(2-4)
(2-2)由性能指标确定窗函数w(n)和窗口长度N
(2-3)求得实际滤波器的单位脉冲响应h(n):
(2-5)
式中,H(z)是的(N-1)次多项式,它在z平面上有(N-1)个零点,其原点z=0是(N-1)阶重极点。
因此,H(z)能永远保持稳定。
通常FIR数字滤波器设计流程分为2个部分:
开发设计和产品实现。
在开发设计部分完成方案设计和算法设计与验证,一般用Matlab语言进行仿真,当仿真结果满意时,再进入产品的实现阶段。
在实现阶段,将开发设计的阶段的算法用C/C++或者汇编语言实现,在硬件的单片机或DSP目标板上实现。
如果FIR滤波器的冲激响应为h(0),h
(1),…,h(N-1).x(n)表示滤波器在n时刻的输入,则n时刻的输出为:
y(n)=h(0)x(n)+h
(1)x(n-1)+…+h(N-1)x[n-(N-1)](2-6)
使用MAC或FIRS指令可以方便地实现上面的计算。
图3.1说明了使用循环寻址实现FIR滤波器的方法。
为了能正确使用循环寻址,必须先初始化BK,块长为N。
滤波系数指针初始化时指向h(N-1),经过一次FIR滤波计算后,在循环寻址的作用下,仍然指向h(N-1)。
而数据缓冲区指针指向的是需要更新的数据,如x(n)。
在写入新数据并完成FIR运算之后,该指针指向x(n-(n-1))。
所以,使用循环寻址可以方便的完成滤波窗口数据的自动更新。
图2.2FIR滤波器存储器里的数据存储方式
2.2MATLAB软件介绍
MATLAB在数学类科技应用软件中在数值计算方面首屈一指MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,C++,JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,
2.3FIR滤波器的Matlab设计
FIR滤波器的MATLAB设计数字滤波器实际上是一个采用有限精度算法实现的线性非时变离散系统,它的设计步骤为:
首先根据实际需要确定其性能指标,在求得系统函数H(z),最后采用有限精度算法实现。
MATLAB是一套用于科学计算的可视化高性能语言与软件环境。
它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个界面友好的用户环境。
它的信号处理工具箱包含了各种经典的和现代的数字信号处理技术,是一个非常优秀的算法研究与辅助设计的工具。
在设计数字滤波器时,通常采用MATLAB来进行辅助设计和仿真。
用户只需在FDATool或SPTool图形工具里选择相应的滤波器设计方法,并填入滤波器设计指标,即可为用户生成所需的滤波器频率响应特性。
因为在SPTool工具里可以看到根据设计指标得到的实际滤波特性的数字显示,所以可以更准确地通过拖动特性曲线或改变指标使实际滤波器更满足要求,所以设计时,可先在SPTool里预设计,然后再将实际特性指标移到FDATool中,利用其提供的定点分析工具将滤波系数变为定点系数,并观察系数截断后的频率响应。
最后通过FDATool工具提供的可将数据以C头文件方式导出功能,将滤波系数以Q15格式输出,供DSP处理用。
针对设计要求,采用Kaiser窗函数法进行设计,代入相应的参数,求得FIR滤波器系数。
FIR滤波器的MATLAB设计与仿真4.1FIR滤波器的设计方案FIR滤波器的设计可用高级语言,如C语言、汇编语言实现,也可以采用MATLAB的数字信号处理软件包提供的专用函数来直接求取FIR滤波器的系数。
在MATLAB中,提供了几个设计滤波器的函数,如fir1、fir2等。
fir1的功能--基于窗函数的FIR数字滤波器的设计—标准频率响应。
fir1函数实现了加窗线性相位FIR数字滤波器设计的经典方法。
其缺省的窗函数为哈明窗。
其调用句法为:
b=fir1(n,Wn);
b=fir1(n,Wn,‘ftype’);
b=fir1(n,Wn,window);
其中n为滤波器的阶数,Wn为0到1之间的数,window为窗函数的类型,ftype为滤波器的类型,即可以是低通、高通、带通或带阻。
本文采用fir1函数进行FIR滤波器的设计,具体方案:
首先输入所要求的技术指标;然后根据计算归一化频率的公式求出归一化频率。
3硬件设计
3.1语音处理的总框图设计
输入语音信号经过高精度且高速的A/D转换器转换后得到一串数字信号,完成了语音信号的采集后,由串口输入到DSP芯片内按语音处理算法进行高速处理,语音信号处理完成后再输入到D/A转换器中还原成模拟的声音信号,最后转为输出语音信号。
总体结构如图3.1所示
图3.1硬件总体结构框图
3.2硬件模块的设计
3.2.1音频转换模块
在选择模转换芯片型号时,需要考虑A/D的转换精度、采样速率以及芯片的工作电压和接口电压。
声音信号经ADC转换后得到的数字信号,输入到数据缓冲区中,TMS320VC5402从中提取数据,在系统内部由各种处理算法将录进的音频信号进行快速运算和处理,经处理后的数字信号再输入到输出缓冲区中,经DAC转换器还原成模拟的声音信号。
根据这次设计要求,选择的芯片是TI公司的TLC320AD50芯片。
利用缓冲区的目的是进行语音信号的实时处理,系统中各模块是并行运行的,一部分信号正在ADC中进行转换,而另一部分信号则在DSP处理器中进行算法处理,整个系统是以流水线的方式进行工作的。
3.2.2存储器和数据通信模块
系统存储器除了存储系统运行时所需程序和一些先期处理程序外,就作为语音信号的数据缓冲存储器用。
FLASH作为程序存储器,SRAM作为外部程序存储器和数据存储器,外部逻辑电路用于实现地址译码和其他控制功能,以便实现DSP与FLASH、SRAM之间的连接。
经DSP芯片处理的大量数据,通过串口传送到PC机上显示或作进一步处理,这就需要通过UART并、串转换芯片TL16C550C将并行数据转换成为串行数据,再经过电平转换和PC机通信。
3.3TMS320VC5402芯片的介绍
本次设计的核心芯片选用的是美国TI公司的TMS320VC5402芯片。
它是TI公司1999年10月推出的性价比较高的定点数字信号处理器,与其它TMS320C54X其他芯片一样,TMS320VC5402具有高度灵活的可操作性和高速的处理能力。
其主要特性是具有先进的改进型哈佛结构,运算速度快,内部存储空间大,外部接口性能好等,具有先进的多总线结构,三条16位数据存储器总线和一条程序存储器总线;40位算术逻辑单元(ALU),包括一个40位桶形移位器和两个40位累加器;一个17×17乘法器和一个40位专用加法器,允许16位带/不带符号的乘法;单周期正规化及指数译码;8个辅助寄存器及一个软件栈,允许使用业界最先进的定点DSPC语言编译器;数据/程序寻址空间为1M×16Bit,内置4K×16BitROM和16K×16BitRAM;内置可编程等待状态发生器、锁相环(PLL)时钟产生器、两个多通道缓冲串口、一个与外部处理器通信的8位并行HIP口、两个16位定时器以及6通道DMA控制器且低功耗。
与C54X系列的其它芯片相比,C5402具有高性能、低功耗和低价格等特点。
该芯片属于低功耗定点DSP芯片,采用双电源供电机制,电源由内核电源(CVdd)和I/O(DVdd)电源两部分构成,其中内核电源为1.8V,可以降低功耗,I/O电源采用3.3V供电使得DSP芯片可以直接与外部低压器件接口,不需要额外的电平转换电路。
而TLC320AD50(以下简称AD50)是TI公司生产的一个16位、音频范围(采样频率为2K~22.05KHZ)、内含抗混叠滤波器和重构滤波器的模拟接口芯片。
它的主要特点有:
双供电电压,模拟部分电路时5V供电,数字部分电路时3.3V供电;通用16位信号处理;可变采样速率,最高可达22.05KHz,精度可达16Bit;可以配置成主器件或从器件方式等。
AD50芯片采用过采样∑-△技术,可进行A/D、D/A的高分辨率、低速信号转换,同时该芯片中的可选项和电路配置可以通过串行口进行编程。
3.4主要硬件接口及实现
3.4.1TMS320VC5402与A/D、D/A芯片的接口
语音信号处理包括两个电路:
音频输入模拟信号的处理电路和音频输出模拟信号的处理电路。
这两个处理电路的主要作用是将信号进行处理,使之更加适合A/D、D/A转换的要求,尽量避免由于输入输出引入的噪声。
同时还可以调整输入输出的放大系数,使音频信号适合各种不同的功放和喇叭,得到最佳的语音效果。
模拟信号的输入采用差分输入方式,即使用两个运算放大器,将单端输入信号转换成差分输入信号,电路连接如图3.2所示。
图3.2TLC320AIC23单端信号转换成差分信号电路
TLC320AIC23的D/A输出处理电路如图3.3所示。
图3.3TLC320AIC23的D/A后端输出信号处理电路
3.5电源电路设计
系统各部分选用的各个芯片共需要5V、3.3V、1.8V三种供电电压。
5V是常用的电压,可由硬件电路板外的变压器直接提供,这里需要能把5V电压转换为3.3V和1.8V的电源芯片。
考虑到全部芯片和元器件的总电流大小的需要,选择TI公司的电源芯片TPS767D318。
TPS767D318的输入电压为5V,输出电压为3.3V和1.8V两路。
在输出电压过低时,该芯片会产生系统复位信号。
C5402芯片采用的是双电源供电模式,以获得更好的电源性能:
1.8V对应内核电源,主要为该器件的内部逻辑提供电流;3.3V对应I/O电源,为外部接口引脚提供电压,主要可以直接与外部低压器件接口,而不需要额外的电平转换电路;降低内核电压的主要目的是降低功耗。
DSP对这两种电源加电次序也有要求,理想情况下两个电源同时加电,但是一般情况下很难做到,我们通过TI公司的DSP专用电源芯片TPS767D318来构建电源,就可以实现5V向3.3V和1.8V的电压转换,同时也避免了上电次序的问题。
4软件部分
4.1软件设计流程图
N
Y
图4.1主程序流程图
图4.1中断程序流程图
通过DSP的串口0输入/输出数据。
在串口通讯中,数据时钟和帧同步信号都由AC01产生,所以TMS320VC5402将使用外部时钟和帧同步信号。
串口设置代码如
下:
stm#0,spsa0
stm#2000h,spcr10
stm#1,spsa0
stm#0c0h,spcr20
stm#2,spsa0
stm#40h,39h
stm#3,spsa0
stm#0,39h
stm#4,spsa0
stm#40h,xcr10
stm#5,spsa0
stm#0,39h
stm#0eh,spsa0
stm#0dh,pcr0
stm#7h,spsa0
stm#8000h,39h
rpt#0ffffh
nop
stm#00h,dxr10
ldm22h,a
stm#1,38h
stm#0c1h,39h
完成串口设置后,还需要修改中断向量表以便正确响应串口0的接收和发送
中断请求。
使用发送中断产生送出滤波之后的数字语音信号;使用接收中断存贮
输入的数据,并设置新数据到达标志。
主循环在检测到该标志后,调用FIR滤波
程序,完成对输入数据的处理。
FIR滤波程序片段:
stm#1,ar0
stm#N,bk
stla,*ar3+%
rptza,#(N-1)
mac*ar2+0%,*ar3+0%,a
mvmdar3,#t_ar3
mvmdar2,#t_ar2
运行程序后,使用DSP的集成开发环境CCS可以将输入数据与滤波结果显示出来,通过与使用MATLAB的SIMULINK功能仿真出的滤波结果进行比较,可以验证用DSP芯片C54x实现的该FIR滤波器的滤波过程是否正确。
结论本文利用MATLAB的滤波器设计函数fir1设计了一个具有线性相位的数字低通FIR滤波器,得到了该滤波器的滤波系数及幅频特性曲线、相频特性曲线,并且用MATLAB的仿真工具SIMULINK仿真了该FIR滤波器的滤波过程;通过线性缓冲区法对FIR滤波器在DSP芯片C54x的实现做了理论上的分析。
用MATLAB语言可方便、快捷地设计具有线性相位的FIR滤波器,而且对于参数的修改也十分方便。
用MATLAB仿真工具可以清晰地仿真出FIR滤波器的滤波过程,有利于理解滤波过程,且可以判断滤波结果的正确性。
利用DSP芯片实现FIR滤波器,不仅具有准确度高、执行速度快等特点,而且用程序可移植性好,实用性强可以十分方便地改变滤波器特性。
在实际应用中,只需要按照要求修改滤波器的参数,并对程序作微小的改动,即可实现不同要求的FIR滤波器。
5程序调试结果
5.1调试结果
麦克风发出来的语音信号,经过A/D转换器,让声音信号转换为数字信号,输入到数据缓冲区中,TMS320VC5402从中提取数据,在系统内部由各种处理算法将录进的音频信号进行快速运算和处理,经处理后的数字信号再输入到输出缓冲区中,经DAC转换器还原成模拟的声音信号。
在调试过程中,根据设计要求,在MATLAB中,我们通过修改参数,达到我们设计所需滤波器的系数。
将理想的参数代入到DSP处理器中,我们通过下面波形图,可以看出设计的FIR滤波器符合我们需要的滤波效果。
图5.1程序调试图
图5.2原始语音频谱分析图
图5.3加噪后的频谱分析
图5.4经FIR滤波器后的频谱图
6总结心得
这次的课程设计非常重要,难度也比较大。
它要求的数学知识多,包括高等代数、数值分析、概率统计、随机过程等。
要求掌握的基础知识强,其中网络理论、信号与系统是本课程的理论基础。
并且与其他学科密切相关,即与通信理论、计算机、微电子技术不可分,又是人工智能、模式识别、神经网络等新兴学科的理论基础之一。
所以设计之初,我受困于基础不扎实,举步维艰,于是我用了三天时间把要用到的一些知识重新复习了一遍,才开始着手于设计。
本设计是一个基于TMS320VC5402的语音采集硬件设计方案,叙述和分析了其中的几个主要硬件模块,包括信号采集A/D、D/A模块、存储器模块、UART数据通信模块和电源模块。
同时对各个模块与DSP芯片之间的接口电路进行了详细的论述和设计。
虽然本设计是基于TMS320VC5402进行语音采集的硬件设计,但是在以后的学习中还可以对设计做一些改进。
通过对文献的阅读,我了解到TMS320VC5402是性价比很高的一款DSP芯片,能够满足音频信号实时处理的要求,但内部存储空间较小,外围需要扩展存储器,而且需要解决接口和时序问题,因此在以后的电路改进中可以选用运算速度更高存储空间较大的DSP芯片,如TMS320VC5410,内部空间比较大,只需扩展FLASH,简化电路设计。
至于实现地址的译码,可以采用专用的CPLD芯片来完成,可以增加系统的性能。
对于与PC机之间的连接通信,为了提高接口传输的速度,可以采用一套以太网接口或USB接口。
至于其他硬件模块芯片的选择则可以根据各自设计的实际情况进行选择。
在这次设计当中,我非常感谢贺老师对我的悉心指导,设计的过程中,思想屡屡会陷入一些死胡同,这时如果没有老师的提醒,我的设计势必难以进行下去,甚至会离理想的结果越来越远。
参考文献
[1]邹彦.DSP原理及应用[M].北京:
电子工业出版社,2005,1.
[2]戴明桢.TMS320C54xDSP结构、原理及应用[M].北京航空航天大学出版社,2001,8.
[3]胡圣尧.DSP原理及应用[M].东南大学出版社,2008.7.
[4]清源科技.TMS320C54xDSP应用程序设计教程[M].机械工业出版社,2004,1.
[5]清源科技.TMS320C54x硬件开发教程[M].机械工业出版社,2003,1.
附录源程序
FIR滤波器的实现完整程序:
.asgAR0,FIR_INDEX_P
.asgAR4,FIR_DATA_P
.asgAR5,FIR_COFF_P
.mmregs
.global
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 课程设计 基于 FIR 语音 信号 滤波