- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DSP实习报告【DOC精选】
IIR滤波器的设计
实习目的
掌握数字滤波器的设计过程
了解IIR的原理和特性
熟悉设计IIR数字滤波器的原理和方法
设计IIR低通,高通和带通滤波器。
实习要求
DSP初始化。
MATLAB初始化。
编写MATLAB程序,设计滤波器,得到数据。
熟练使用CCS 对程序进行调试。
编写DSP程序,得到信号及变化后信号的波形及FFT变换。
观察滤波前后波形的FFT变化,对比前后波形变化。
三、实习设备:
计算机
四、系统原理论述
IIR数字滤波器是一种离散时间系统,其系统函数为
假设M≤N,当M>N时,系统函数可以看作一个IIR的子系统和一个(M-N)的FIR子系统的级联。IIR数字滤波器的设计实际上是求解滤波器的系数和 ,它是数学上的一种逼近问题,即在规定意义上(通常采用最小均方误差准则)去逼近系统的特性。如果在S平面上去逼近,就得到模拟滤波器;如果在z平面上去逼近,就得到数字滤波器。
IIR低通和高通滤波器是用契比雪夫窗函数法设计的,而IIR带通滤波器是用双线性变换法设计的切比雪夫数字带通滤波器。
采用非线性频率压缩方法,将整个频率轴上的频率范围压缩到-π/T~π/T之间,再用z=esT转换到Z平面上。也就是说,第一步先将整个S平面压缩映射到S1平面的-π/T~π/T一条横带里;第二步再通过标准变换关系z=es1T将此横带变换到整个Z平面上去。这样就使S平面与Z平面建立了一一对应的单值关系,消除了多值变换性,也就消除了频谱混叠现象,映射关系如图1-3所示。
图1-3双线性变换的映射关系
为了将S平面的整个虚轴jΩ压缩到S1平面jΩ1轴上的-π/T到π/T段上,可以通过以下的正切变换实现
(1-5)
式中,T仍是采样间隔。
当Ω1由-π/T经过0变化到π/T时,Ω由-∞经过0变化到+∞,也即映射了整个jΩ轴。将式(1-5)写成
将此关系解析延拓到整个S平面和S1平面,令jΩ=s,jΩ1=s1,则得
再将S1平面通过以下标准变换关系映射到Z平面
z=es1T
从而得到S平面和Z平面的单值映射关系为:
(1-6)
(1-7)
式(1-6)与式(1-7)是S平面与Z平面之间的单值映射关系,这种变换都是两个线性函数之比,因此称为双线性变换
式(1-5)与式(1-6)的双线性变换符合映射变换应满足的两点要求。
首先,把z=ejω,可得
(1-8)
即S平面的虚轴映射到Z平面的单位圆。
其次,将s=σ+jΩ代入式(1-8),得
因此
由此看出,当σ0时,|z|1;当σ0时,|z|1。也就是说,S平面的左半平面映射到Z平面的单位圆内,S平面的右半平面映射到Z平面的单位圆外,S平面的虚轴映射到Z平面的单位圆上。因此,稳定的模拟滤波器经双线性变换后所得的数字滤波器也一定是稳定的。
五、方案论证及系统设计
本次实习设计了IIR的三种滤波器,C语言和汇编语言实现,由MATLAB得到数据。
1、新建一个项目:点击Project-New,将项目命名为*.pjt,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS软件不能识别以中文命名的文件夹。
2、新建一个源文件:点击File-New-Source File可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面,保存类型选择*.ASM(如果源文件是C语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM为保存类型)。
3、新建一个MATLAB的M文件,写入相应的滤波器的相关程序,调试后得到实验所需的数据和相应的幅频特性和相频特性。
4、调试DSP程序,得到需要的图形。
六、程序流程图
开始 ↓
读入数字滤波器技术指标 ↓
将指标转换成归一化模拟低通滤波器的指标 ↓
设计归一化的模拟低通滤波器阶数N和3db截止频率 ↓
模拟域频率变换,将G(P)变换成模拟带通滤波器H(s) ↓
用双线性变换法将H(s)转换成数字带通滤波器H(z) ↓
输入信号后显示相关结果 ↓
结束
七、源程序
1、IIR低通数字滤波器MATLAB程序:
clear
clc
[n,wn]=cheb1ord(0.4,0.5,3,30)
[b,a]=cheby1(n,3,wn)
freqz(b,a,512,10000)
[s,g]=tf2sos(b,a)
s1=round(s/4*32768)
s2=[s1(:,5),s1(:,6),s1(:,3),s1(:,1),s1(:,2)]
s3=[s2(1,:),s2(2,:),s2(3,:)]
b1=buffer(s3,8)
csvwrite(my_iir_table1.txt,b1);
2、IIR高通数
文档评论(0)