DSP原理及应用课程设计.docx
- 文档编号:1990899
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:15
- 大小:574.18KB
DSP原理及应用课程设计.docx
《DSP原理及应用课程设计.docx》由会员分享,可在线阅读,更多相关《DSP原理及应用课程设计.docx(15页珍藏版)》请在冰点文库上搜索。
DSP原理及应用课程设计
-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN
DSP原理及应用课程设计
华北水利水电大学
NorthChinaUniversityofWaterResourcesandElectricPower
DSP原理及应用课程设计
题目FIR数字低通滤波器
学院信息工程学院
专业电子信息工程
姓名
学号
指导老师
完成时间
摘要
当前,数字信号处理技术受到了人们的广泛关注,其理论及算法随着计算机技术和微电子技术的发展得到了飞速地发展,并被广泛应用于语音和图象处理、数字通信、谱分析、模式识别和自动控制等领域。
数字滤波器是数字信号处理中最重要的组成部分之一,几乎出现在所有的数字信号处理系统中。
设计中通过MATLAB环境中图形化的方式建立数字信号处理的模型进行DSP的设计和仿真验证,将设计的图形文件.mdl直接转换成C语言程序在CCS中运行。
利用MATLAB软件开发产品加速了开发周期,比直接在CCs中编程方便快捷了很多,对于任何复杂功能的DSP系统,只需要进行少量的添加和修改就能完成功能正确的C语言程序设计。
一.绪论
1.1设计背景
一个实际的应用系统中,由于设备或者是外界环境的原因,总存在各种干扰,使信号中混入噪声,譬如音频信号中高频成分的噪声使得音乐听起来刺耳,失去了原有悦耳的音质。
为了提高信号质量,可以对信号进行滤波,从噪声中提取信号,即对一个具有噪声和信号的混合源进行采样,然后经过一个数字滤波器,滤除噪声,提取有用信号。
DSP(数字信号处理器)与一般的微处理器相比有很大的区别,它所特有的系统结构、指令集合、数据流程方式为解决复杂的数字信号处理问题提供了便利,本文选用TMS320C54X作为DSP处理芯片,通过对其编程来实现FIR滤波器。
对数字滤波器而言,从实现方法上,有FIR滤波器和无限冲激响应(IIR)滤波器之分。
由于FIR滤波器只有零点,因此这一类系统不像IIR系统那样易取得比较好的通带与阻带衰减特性。
但是FIR系统有自己突出的优点:
①系统总是稳定的;②易实现线性相位;③允许设计多通带(阻带)滤波器。
其中后两项是IIR系统不易实现的。
1.2设计方法分析
FIR滤波器的设计方法分析
数字滤波器依据冲激响应的宽度划分为有限冲激响应(FIR)滤波器和无限冲激响应滤波(IIR)。
FIR滤波器是有限长单位冲激响应滤波器,在结构上是非递归型的,有限冲激响应滤波器(FIR),具有以下的优点:
(1)可以在幅度特性随意设计的同时,保证精确、严格的线性相位;
(2)由于FIR滤波器的单位脉冲响应h(n)是有限长序列,因此FIR滤波器没有不稳定的问题;(3)由于FIR滤波器一般为非递归结构,因此在有限精度运算下,不会出现递归结构中极性震荡等不稳定现象,误差较小。
FIR滤波器的设计方法有窗函数设计法和频率采样设计法,下面扼要介绍窗函数设计法。
窗函数法设计FIR滤波器的基本思想是:
根据给定的滤波器技术指标,选择滤波器长度N和窗函数ω(n),使其具有最窄宽度的主瓣和最小的旁瓣。
其核心是从给定的频率特性,通过加窗确定有限长单位脉冲响应序列h(n)。
给定滤波器的频率响应为Hd(ejw),要求设计一个频率响应为H(ejw)的滤波器来逼近Hd(ejw),其中:
对Hd(ejw)进行傅立叶反变换推导出其时域响应hd(n),即
由于hd(n)是无限长序列,且是非因果的。
要得到有限长的h(n),需要用一个有限长的窗口函
数序列ω(n)来截取h(n),即
二.FIR滤波器设计过程
2.1FIR滤波器原理
数字滤波是将输入的信号序列,按规定的算法进行处理,从而得到所期望的输出序列,FIR滤波器的差分方程为:
对上式进行Z变换得到FIR滤波器的传递函数为:
由上式可以看出,H(z)是
的N-1次多项式,它在z平面内有N-1个零点,同时在原点处有N-1个重极点。
N阶滤波器通常采用N个延迟单元、N个加法器与N+1个乘法器,取图中(a)、(b)两种结构。
FIR滤波器的一般结构
因为FIR滤波器的单位抽样响应是有限长的,所以它永远是稳定的。
另外,若对h(n)提出一些约束条件,那么可以很容易地使H(z)具有线性相位,这在信号处理的很多领域是非常重要的。
FIR滤波器的设计任务,是要决定一个转移函数H(z),使它的频率响应满足给定的要求。
这里所说的要求,除了通带频率
、阻带频率及两个带上的最大和最小衰减
和
外,很重要的一条是保证H(z)具有线性相位。
2.2FIR滤波器的实现方法
(1)采用DSP(DigitalSignalProcessing)处理器来实现
DSP处理器是专为数字信号处理而设计的,它的主要数字运算单元是一个乘累加器,能够在一个机器周期内完成一次乘累加运算,配有适合于信号处理的指令,具备独特的循环寻址和倒序寻址能力。
这些特点都非常适合数字信号处理中的滤波器设计的有效实现,并且它速度快,成本低。
用DSP芯片实现数字滤波除了具有稳定性好、精确度高、不受环境影响外,还具有灵活性好的特点。
(2)用计算机软件实现
软件实现方法即是在通用的微型计算机上用软件实现。
利用计算机的存储器、运算器和控制器把滤波所要完成的运算编成程序通过计算机来执行,软件可由使用者自己编写,也可以使用现成的。
但是这种方法速度慢,难以对信号进行实时处理,虽然可以用快速傅立叶变换算法来加快计算速度,但要达到实时处理要付出很高的代价。
(3)用FPGA等可编程器件实现
使用相关开发工具和VHDL等硬件开发语言,通过软件编程用硬件实现特定的数字滤波算法。
这一方法由于具有通用性的特点并可以实现算法的并行运算,无论是作为独立的数字信号处理,还是作为DSP芯片的协作处理器都是比较活跃的研究领域。
可以采用DSP或FPGA来实现硬件电路。
采用固定功能的专用信号处理器实现
(4)专用信号处理器采用专用集成电路ASIC来实现,适用于过程固定而又追求高速的信号处理任务,是以指定的算法来确定它的结构,使用各种随机逻辑器件组成的信号处理器。
它们体积小、保密性好,具有极高的性能,然而灵活性差。
2.3FIR滤波器的MATLAB实现
MATLAB辅助DSP实现FIR,其总体过程为在DSP中编写处理程序,在MATLAB中利用滤波器设计、分析工具(FDATOOL),根据指定的滤波器性能快速设计一个FIR,再把滤波器系数以头文件形式导入CCS中,头文件中MATLAB辅助DSP实现FIR数字滤波器含滤波器阶数和系数数组,在MATLAB中调试、运行DSP程序并显示、分析处理后的数据。
使用该方法,便于采用汇编语言来实现程序。
头文件名不变,当MATLAB中设计的滤波器系数改变时,相应头文件中系数也改变,方便程序调试、仿真。
MATLAB集成了一套功能强大的滤波器设计工具FDATool(FilterDesign&AnalysisTool),可以完成多种滤波器的设计、分析和性能评估。
(1).打开FilterDesign&AnalysisTool
单击MATLAB主窗口下方的“Start”按钮,选择菜单“ToolBox”→“FilterDesign”→“FilterDesign&AnalysisTool(FDATool)”命令,打开FDATool,如图1所示。
图1
(2)产生滤波器
阶数为81阶,这里应填80,比阶数少1。
窗函数选择切比雪夫型(chebyshev),滤波器类型为Lowpass,采样频率为20000Hz,通带截止频率分别为1000HZ。
得图2
图2
(3).产生滤波器系数,如图3
图3
(4)头文件的产生
(5)选择所需的型号:
(6)生成头文件
最后将产生的头文件中的滤波器系数数组放入编写好的滤波器函数中,并在进行CCS中进行调试与测试。
2.4设计流程图
程序流程图
(1)对DSP进行初始化,定义DSP的一些向量和工作模式;
(2)为数字滤波作准备,将预先设计好的有N个抽头的FIR数字滤波器的冲激响应序列h(n)中的N个数值放入存储单元B1~BN;
(3)作好滤波准备工作后,开始进行抽样,并读入抽样值,放入存储单元A1中;
(4)之后便对抽样值进行运算处理:
(a)将累加器清零,并设置两个准备相乘的存储单元A与B的初始值K和L;
(b)将第K个抽样值AK与冲激响应序列的第L个数值BL相乘(K+L=N+1),并将乘积送入累加器进行累加;
(c)将第K-1个抽样值AK-1放入AK,此时AK中原数值被覆盖;
(d)重复(b)~(c),直至共完成N次乘加运算。
(5)输出处理结果;
(6)重复(3)~(5)。
三.MATLAB和CCS操作步骤及仿真结果
3.1matlab中的.M文件的编写
sl=300;%有效信号
ns1=2000;%高频噪声
ns2=8000;%高频噪声
fs=20000;%采样频率
N=1000;
T=1/fs;
n=0:
N;
signal=sin(2*pi*sl*n*T);
noise1=0.7*sin(2*pi*ns1*n*T);
noise2=0.4*sin(2*pi*ns2*n*T);
x=(signal+noise1+noise2);%待滤波信号
figure
(1)
plot(x)
figure
(2)
y=abs(fft(x));%待滤波频谱
df=n*(fs/N);
plot(df,y)
figure(3)
plot(n,signal)
figure(4)
ysignal=abs(fft(signal));%滤波后频谱
df=n*(fs/N);
plot(df,ysignal)%滤波数据导出
xout=x/max(x);%归一化
xto_css=round(32767*xout);%数据取整
xoutcss=xto_css;
fid=fopen('G:
\2012156\d\inputld.dat','w');%打开文件
fprintf(fid,'16511010\n');%输出文件头
fprintf(fid,'%d\n',xoutcss);%输出
fclose(fid);
%fid=fopen('sine.dat','w');
%将文件头写入文件,将生成的y信号写入到文件,格式四位小数
%fprintf(fid,'16511010\n');
%fprintf(fid,'%.4f\n',y);
%将文件头写入文件,将生成的y信号写入到文件,格式十六进制,负数用补码
%fprintf(fid,'16511010\n');
%fprintf(fid,'0x%x\n',round(y*100)+(y<0)*2^16);
运行此程序产生以下四个图:
3.2工程文件的建立
在CCSV3.3中建立新工程,把c源代码和.cmd文件导入后,外加rts.lib文件,它是TI提供的运行时支持库,如果是C代码写的源程序,必须要包含该库,该库由TI公司做好放在CCS\cgtools\lib中。
添加完成后,编译通过后,下载.out文件,导入.dat文件。
然后运行程序,待程序准确无误后,点击FileLoadprogyammert打开.out文件
3.3仿真结果及分析
采用CCS的图形显示功能,分别观察输入信号x(n)、输出信号y(n)的时域波形和频域波形,输入信号波形如下图所示:
输入数据时域图(StartAddress:
input)输入数据频谱(DisplayType:
FFTMagnitude)
输出数据时域图(StartAddress:
output)输出数据频谱(DisplayType:
FFTMagnitude)
四.心得与总结
通过本次课程设计的学习,完善了自己对于MATLAB和CCS软件的了解,即进一步掌握了MATLAB对滤波器设计的方法,同时也学会了利用ccs实现数字的滤波,而且也是对数字信号处理课程的一次复习,里面的大部分知识都是其内容。
MATLAB是一个强大的软件,在专业课的学习中应用十分广泛,今后将会更加深入了解它的功能。
CCS为信号搭建了一个平台,是我们运行后能更加直观的感受波形的变化。
虽说是第一次接触这个软件,但是还是很努力的去学习它,了解它。
虽然这次课设验过了,但是还是有很多的问题没有解决,认识到自己学习的知识都是相通的,要学会融会贯通,本设计中通过滤波,滤除了音频信号中的高频噪声,改善了声音质量。
将MATLAB强大的工具箱功能与DSP完美结合,利用MATLAB辅助设计,使得在设计过程中达到事半功倍的效果。
运用数字信号处理芯片强大的运算功能,配合外围电路,可方便地对音频信号进行实时滤波处理当然本次设计中也遇到了许多问题,一是参数的设置,刚开始并没有灵活运用fdatool,当真正了解它的功能后,只需在程序中稍加该动,把采样频率以及截止频率设到合理的范围内就可以实现,例如通过改变程序里的阶数改变信号的密度;二是使用ccs时任何细节的步骤略掉都可能导致信号出不来或无法是别,比如在实验中做低通滤波器后没有关掉,而直接导致低通滤波器的输出结果无法正确显示。
三是对输入信号程序的理解不够深入,导致开始时对模拟的结果没有正确理解。
这次课设很有意义,而且要有团队精神,同组员要积极的沟通,才能更好地交流自己的学习心得,才会使自己和他人更好的进步,希望自己今后能够更加努力,不断地完善自己。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 原理 应用 课程设计