DSP实训论文.docx
《DSP实训论文.docx》由会员分享,可在线阅读,更多相关《DSP实训论文.docx(17页珍藏版)》请在冰豆网上搜索。
DSP实训论文
编号:
(信号处理)
实训(论文)说明书
题目:
运放实现模拟带通滤波器、FIR和IIR数字滤波器的实现
院(系):
信息与通信学院
专业:
电子信息工程
2013年07月05日
摘要
低通滤波器是通过低频信号而衰减或抑制高频信号的部件。
理想滤波器电路的频响在通带内应具有一定幅值和线性相移,而在阻带内其幅值应为零。
有源滤波器是指由放大电路及RC网络构成的滤波器电路,它实际上是一种具有特定频率响应的放大器。
本次设计选用二阶有源低通滤波器。
MATALB可以创建图形用户界面GUI(GraphicalUserInterface),它是用户和计算机之间交流的工具。
MATLAB将所有GUl支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力还会不断加强。
而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。
关键词:
低通滤波器;RC网络;MATLAB;GUI
Abstract
Low-passfilterisacomponentwhichcanonlypassthelowfrequencysignalandattenuationorinhibitthehighfrequencysignal.Idealfrequencyresponseofthefiltercircuitinthepassbandshouldhaveacertainamplitudeandlinearphaseshift,andamplitudeoftheresistancebandtobezero.ActivefilteriscomposedoftheRCnetworkandtheamplifier,itactuallyhasaspecificfrequencyresponseoftheamplifier.Accordingtoindicators,second-orderactivelow-passfilterisusedinthisdesign
MATALBcancreateagraphicaluserinterfaceGUI(GraphicalUserInterface),itisbetweenuserandcomputertools.MATLABsupportforallusersGUlcontrolsareintegratedinthisenvironmentandprovidetheinterfaceappearanceandbehaviorinresponsetothewayattributesettingsmethods,withtheimprovedversion,thiscapabilitywillcontinuetostrengthen.Andapowerfulgraphicscapabilities,caneasilyaccesstohigher-qualitycurve.
Keywords:
Low-passfilter;RCnetwork;MATLAB;
目 录
引言1
1硬件电路原理及设计方案2
1.1硬件电路设计2
1.2整机电路图3
1.3电路性能仿真4
1.4制版及调试5
1.4.1PCB注意事项5
1.4.2调试过程5
2基于matlabgui的数字滤波器设计思路及实现6
2.1gui界面设计概述6
2.2基于matlabgui的数字滤波器设计实现6
2.2.1GUI界面设计6
2.3滤波器函数编写7
2.3.1FILTERYUPE中选择滤波器的类型7
2.3.2run按钮程序的编写8
2.4运行和结果显示10
3总结与体会10
谢 辞10
参考文献12
附录13
附录一硬件PCB设计图14
附录二matlabgui界面及运行图15
附录三程序主要部分16
引言
本次实训是理论联系实际的重要实践教学环节,是对学生进行的一次综合性专业设计训练。
本次实训设计主要注重的是电子电路的设计、仿真、安装、调试、印制电路板等综合于一体的一门课程,意在培养学生正确的设计思想方法以及思路,理论联系实际的工作作风,严肃认真、实事求是的科学态度,培养学生综合运用所学知识与生产实践经验,分析和解决工程技术问题的能力。
作为一名大学生不仅需要扎实的理论知识,还需要过硬的动手能力,所以认真做好课程设计,对提高我们的动手能力有很大的帮助做到。
1硬件电路原理及设计方案
1.1硬件电路设计
滤波器是一种只传输指定频段信号,抑制其它频段信号的电路。
滤波器分为无源滤波器与有源滤波器两种:
①无源滤波器:
由电感L、电容C及电阻R等无源元件组成
②有源滤波器:
一般由集成运放与RC网络构成,它具有体积小、性能稳定等优点,同时,由于集成运放的增益和输入阻抗都很高,输出阻抗很低,故有源滤波器还兼有放大与缓冲作用。
利用有源滤波器可以突出有用频率的信号,衰减无用频率的信号,抑制干扰和噪声,以达到提高信噪比或选频的目的,因而有源滤波器被广泛应用于通信、测量及控制技术中的小信号处理。
从功能来上有源滤波器分为:
低通滤波器(LPF)高通滤波器(HPF)
带通滤波器(BPF)带阻滤波器(BEF)
全通滤波器(APF)。
其中前四种滤波器间互有联系,LPF与HPF间互为对偶关系。
当LPF的通带截止频率高于HPF的通带截止频率时,将LPF与HPF相串联,就构成了BPF,而LPF与HPF并联,就构成BEF。
在实用电子电路中,还可能同时采用几种不同型式的滤波电路。
滤波电路的主要性能指标有通带电压放大倍数AVP、通带截止频率fP及阻尼系数Q等。
带通滤波器(BPF)二阶电路图:
(a)电路图 (b)幅频特性
图1.1.1压控电压源二阶带通滤波器
工作原理:
这种滤波器的作用是只允许在某一个通频带范围内的信号通过,而比通频带下限频率低和比上限频率高的信号均加以衰减或抑制。
典型的带通滤波器可以从二阶低通滤波器中将其中一级改成高通而成。
如图1(a)所示。
电路性能参数:
(1)通带增益:
(2)中心频率:
(3)通带带宽:
(4)选择性:
此电路的优点是改变Rf和R4的比例就可改变频宽而不影响中心频率。
1.2制版与调试
1.2.1PCB注意事项
电路绘制的时候主要是注意各个元器件的封装和实际买回来的元器件的管脚大小及距离相对应,并有选择地采用排针作为信号的输入以及输出和直流电源的输入。
元器件采用手动布局。
布线采用手动布局,布线时需要设计好参数。
一般线条大小为1mm,,过孔为1mm,焊盘为1.8mm。
电路板的长宽为:
32mm×32mm。
实际板子大小为:
40mm×62mm绘制好的pcb的sch电路图看附录。
Pcb板请看附录图2.制作pcb板的流程:
设计好原理图sch→改变封装→绘制pcb板→布局布线→打印pcb图纸→印制铜板→腐蚀铜板→钻孔→焊接元器件→测板→修改电路→测试(直到符合设计要求)。
注意事项
电阻的标称值应尽可能接近设计值,这可以适当选用几个电阻串并联;尽可能采用金属膜电阻电容及容差小于10%的电容,影响滤波器性能的主要因素是△R/R、△C/C及运放的功能。
在测试过程中,若某项指标偏差较大,则根据设计表调整修正相应元器件的值。
制作板子过程中,为了节省材料,节约资源,尽量用最少的东西完成最佳的功能。
所以板子元器件布局紧密。
而提高抗干扰能力,布线时尽量短,少。
焊盘过孔设计合理。
1.2.2调试过程
(1)对安装好的电路按一下方法进行调整和测试:
(2)仔细检查装好的电路,确定元件与导线连接无误后,接通电源。
在电路的输入端Vi=1V的正弦信号,慢慢改变输入的信号的频率,用示波器观察输出电压的变化。
在滤波器的截止频率附近,观察电路是否具有滤波特性,若没有滤波特性,应检查电路,找出故障原因并排除之。
(3)若电路具有滤波特性,可进一步进行调试。
观测其截止频率是否满足设计要求,若不满足设计要求应根据公式,确定应调整哪个元件才能使截止频率既能达到设计要求又不会对其它的指标参数产生影响。
然后观测电压放大倍数是否满足设计要求,若不达到要求,应根据相关公式调整有关的元件,使其达到设计要求。
(4)通过测试设计值点电路板的结果,对电路板进行修正以达到设计要求。
设计指标:
fc=10khz,增益为Av=1。
输入信号Vi=1V,观察滤波器的截止频率fc及电压放大倍数Av。
按要求理论测试结果应为:
在相对频段时,如fc=10kHz,电压放大倍数为1;在fc=17kHz时,Av=0.707。
1.3抽样值
2基于MatlabGUI的数字滤波器设计思路及实现
2.1GUI界面设计概述
GUI设计面板是GUI设计工具应用的平面,面板上部提供了菜单和常用工具按钮,左边提供了多种如命令按钮、单选按钮、可编辑文本框、静态文本框、弹出式菜单等。
进行设计时,首先单击面板左边所需的控件,然后在右边的图形界面编辑区中再次单击某一恰当位置,这时将在该位上为图形界面添加相应的控件。
一个图形界面的完成,除了设计其外观外,还有相当的一部分是通过属性的设来完成的。
2.2基于MatlabGUI的数字滤波器设计实现
2.2.1滤波器GUI界面设计
在matlab命令行窗口中输入guide或点击matlab界面上面的菜单中的
图标,打开gui设计的图形界面如图2.1。
然后拖入所要的图形控件,按需要修改外观和空间属性,直至满足要求。
设置属性点击guide界面上方的Run按钮,会生成一个fig文件,一个m文件,其中fig文件就是界面的图形,m文件是界面的回调函数,在m文件里每个控件的回调函数都已经自动生成,控件要做的工作就是在文件框架下定义某些特殊要求的状态并补充完整回调函数场,使单击控件时激活回调程序完成一定的功能。
图2.1GUI设计的图形界面
2.3滤波器函数编写
2.3.1FilterType中选择滤波器类型
选择低通或者高通滤波器时,隐藏相应的带通和带阻的第二个临界频率,使其频率参数不能输入,程序和效果图(图2.2、图2.3)如下:
FilterType_value=get(handles.popupmenu1,'Value');
if((FilterType_value==1)||(FilterType_value==2))
set(handles.edit6,'visible','off');
set(handles.edit7,'visible','off');
set(handles.text11,'visible','off');
set(handles.text17,'visible','off');
set(handles.text18,'visible','off');
set(handles.text19,'visible','off');
elseif((FilterType_value==3)||(FilterType_value==4))
set(handles.edit6,'visible','on');
set(handles.edit7,'visible','on');
set(handles.text11,'visible','on');
set(handles.text17,'visible','on');
set(handles.text18,'visible','on');
set(handles.text19,'visible','on');
end
end
图2.2低通、高通滤波器频率参数输入图2.3带通、带阻滤波器频率参数输入
2.3.2Run按钮程序的编写
functionpushbutton1_Callback(hObject,eventdata,handles)
fs=str2double(get(handles.edit1,'String'));
fp=str2double(get(handles.edit2,'String'));
fr=str2double(get(handles.edit3,'String'));
Rp=str2double(get(handles.edit4,'String'));
Rs=str2double(get(handles.edit5,'String'));
fp2=str2double(get(handles.edit6,'String'));
fr2=str2double(get(handles.edit7,'String'));
FilterDesign_value=get(handles.popupmenu2,'Value');
FilterType_value=get(handles.popupmenu1,'Value');
t=1/fs;
wp=2*pi*fp/fs;
wr=2*pi*fr/fs;
wpp=2/t*tan(wp/2);
wrr=2/t*tan(wr/2);
wp2=2*pi*fp2/fs;
wr2=2*pi*fr2/fs;
wppa=2/t*tan(wp2/2);
wrra=2/t*tan(wr2/2);
wp=[wpp,wppa];
wr=[wrr,wrra];
switchFilterDesign_value%IIR中Butterworth、Chebyshev1、Chebyshev2、Ellipise滤波器
case1%选择Butterworth滤波器
switchFilterType_value
case1%低通滤波器
[n,wn]=buttord(wpp,wrr,Rp,Rs,'s');
[b,a]=butter(n,wn,'s');
[bz,az]=bilinear(b,a,fs);
[h,f]=freqz(bz,az,512,fs);
axes(handles.axes1);%把下面程序得到的图画在axes1
plot(f,abs(h))
axes(handles.axes2);%把下面程序得到的图画在axes2
plot(f,angle(h));
case2%高通滤波器
[n,wn]=buttord(wpp,wrr,Rp,Rs,'s');
[b,a]=butter(n,wn,'high','s');
……
case3%带通滤波器
[n,wn]=buttord(wp,wr,Rp,Rs,'s');
[b,a]=butter(n,wn,'s');
……
case4%带阻滤波器
[n,wn]=buttord(wp,wr,Rp,Rs,'s');
[b,a]=butter(n,wn,'stop','s');
……
end
case2%选择设计Chebyshev1滤波器
switchFilterType_value
case1
[n,wn]=cheb1ord(wpp,wrr,Rp,Rs,'s');
……
case3%选择设计Chebyshev2滤波器
switchFilterType_value
case1
[n,wn]=cheb2ord(wpp,wrr,Rp,Rs,'s');
……
case4%选择设计Ellipse滤波器
switchFilterType_value
case1
[n,wn]=ellipord(wpp,wrr,Rp,Rs,'s');
……
End
Quit按钮
退出滤波器设计窗口,其程序如下:
functionpushbutton2_Callback(hObject,eventdata,handles)
%点击Quti按钮退出
Close
2.4运行和结果显示
2.4.1运行和结果显示
在设计界面下,按“
”,出现如图2.4.1所示界面,选择要设计的滤波器选项如下,在编辑框中输人要求设计的数字滤波器的性能指标,,按“Run”命令按钮,出现如
图所示的模拟低通原型滤波器幅频响应和相频响应曲线,在“滤波器类型选择”旁的下拉菜单框中选择其他类型的滤波器,再按“Run”,立刻出现此类型的滤波器的图形,如下图示:
图2.4.1运行结果界面
3实训总结
在硬件电路设计过程中,理论知识很重要,理论知识决定了设计的方法,设计电路的成败。
所以需要查找很多资料,需要足够的耐心、细心去研究问题,解决问题。
同时还必须有实事求是地分析问题的态度,知道理论与实际是有一些差别的。
认清问题是前提,分析问题才是关键,只有认真地去分析问题才能更好的解决问题,分析问题时必须具备细心,耐心,恒心和毅力,同时还必须做到科学地具体地实事求是地分析问题。
在调试电路时,考虑器件的电气性,尽量减少器件间的干扰。
调试的过程中要有平和的心态,遇见问题是非常正常的,要做的就是多做比较和分析,逐步的排除可能的原因,要坚信“凡事都是有办法解决的”和“问题出现一定有它的原因”,这样最后一定能调试成功。
在这次调试中,我的中心频率偏低,调了好久都不行,后面认真看过电路的原理后,终于发现上面提到的中心频率的式子,如果是中心频率低了,剧要降低电阻值,在降低R2、R7的同时,为了保证增益为一,所以还要调低R3、R8。
在软件设计过程中,用MATLABGUI来实现滤波器的仿真,使用它需要具有一定的知识储备和必要的经验技巧。
并且要充分利用好帮助文档,仔细研读HELP是最好的办法。
需要了解函数句柄等必要基础知识,熟悉各控件对象的基本属性和方法操作,知晓不同控件的合适使用条件及其特有的功能,并会采用不同的使用手段来实现相同功能的设计。
在论文的写作过程中也学到了做任何事情所要有的态度和心态,首先我明白了做学问要一丝不苟,对于出现的任何问题和偏差都不要轻视,要通过正确的途径去解决,在做事情的过程中要有耐心和毅力,不要一遇到困难就打退堂鼓,只要坚持下去就可以找到思路去解决问题的。
在工作中要学会与人合作的态度,认真听取别人的意见,这样做起事情来就可以事倍功半。
通过此次的实训,我学到了很多知识,跨越了传统方式下的教与学的体制束缚,通过查资料和搜集有关的文献,培养了自学能力和动手能力。
并且由原先的被动的接受知识转换为主动的寻求知识,这可以说是学习方法上的一个很大的突破。
在以往的传统的学习模式下,我们可能会记住很多的书本知识,但是通过滤波器设计,学会了如何将学到的知识转化为自己的东西,学会了怎么更好的处理知识和实践相结合的问题。
谢辞
从实训的开始,通过请教老师和同学以及查找资料使我较快的使我很快地完成了硬件和软件的编程及调试。
在本次实训中,我遇到了很多难题,然而这些难题让我不断的学习,在困难中进步,同学们帮了我很多忙,通过同学之间的相互帮助,我更加顺利地完成了本次实训,在此感谢我的同学们!
同时我要感谢学校给我们提供实训的机会,感谢指导教师对我的教导,你们对我的关爱让我深深感受到了生活的美好,谢谢你们一直以来给予我的理解、鼓励和支持,你们是我不断取得进步的永恒动力。
参考文献
[1]王卫东.模拟电子电路基础,西安电子科技大学出版社,2003.
[2]熊发明.新编电子电路与信号课程实验指导,国防工业出版社,2007.
[3][美]RichardG.Lyons.UnderstandingDigitalSignalProcessing.机械工业出版社,2006.
[4]谢自美.电子线路设计·实验·测试(第三版).华中科技大学出版社,2006.
[5]陈 思.巴特沃斯低通滤波器的简化快速设计.信阳师范学院学报,1977.
[6]程佩青编著.数字信号处理教程.第三版.北京:
清华大学出版社,2007.2
[7]徐成波 陶红艳 杨菁 杨如明编著.数字信号处理及MATLAB实现.第二版.北京:
清华大学出版社,2008.1
附件
附录一原理图
图一PCB图
附录二程序主要部分
fs=str2double(get(handles.edit1,'String'));
fp=str2double(get(handles.edit2,'String'));
fr=str2double(get(handles.edit3,'String'));
Rp=str2double(get(handles.edit4,'String'));
Rs=str2double(get(handles.edit5,'String'));
fp2=str2double(get(handles.edit6,'String'));
fr2=str2double(get(handles.edit7,'String'));
FilterDesign_value=get(handles.popupmenu2,'Value');
FilterType_value=get(handles.popupmenu1,'Value');
t=1/fs;
wp=2*pi*fp/fs;
wr=2*pi*fr/fs;
wpp=2/t*tan(wp/2);
wrr=2/t*tan(wr/2);
wp2=2*pi*fp2/fs;
wr2=2*pi*fr2/fs;
wppa=2/t*tan(wp2/2);
wrra=2/t*tan(wr2/2);
wp=[wpp,wppa];
wr=[wrr,wrra];
switchFilterDesign_value
case1
switchFilterType_value
case1
[n,wn]=buttord(wpp,wrr,Rp,Rs,'s');
[b,a]=butter(n,wn,'s');
[bz,az]=bilinear(b,a,fs);
[h,f]=freqz(bz,az,512,fs);
axes(handles.axes1);
plot(f,abs(h))
axes(handles.axes2);
plot(f,angle(h));
case2
[n,wn]=buttord(wpp,wrr,Rp,Rs,'s');
[b,a]=butter(n,wn,'high','s');
case3
[n,wn]=buttord(wp,wr,Rp,Rs,'s');
[b,a]=butter(n,wn,'s');
case4
[n,wn]=buttord(wp,wr,Rp,Rs,'s');
[b,a]=butter(n,wn,'stop','s');
end
case2
switchFilterType_value
case1%cheb1ord
end
case3
switchFilterType_value
case1
[n,wn]=cheb2ord(wpp,wrr,Rp,Rs,'s');
end
case4
switchFilterType_value
case1
[n,wn]=ellipord(wpp,wrr,Rp,Rs,'s');
End
end