欢迎来到天天文库
浏览记录
ID:41708283
大小:485.85 KB
页数:38页
时间:2019-08-30
《数字信号处理dsp教学课件module14》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、C28xFIR-滤波器介绍这一章将讲解数字信号处理器的一个常见的应用:“数字滤波器〔前面已经提及,计算的方式两种基本类型:离线计算和实时计算.这也适用与数字信号处理器。因为我们面对的是为嵌/式控制设计的C28x,通常情况下计算都是在实时环境下完成。对于数字滤波器來说,这就寅味着对系统当前状态的所有内部处理都必须在下一个输入值被采样进来之前完成。然而,H算吋间是非常宝贵的,所以数字滤波器算法的计算越快,我们就可以从输入通道采样更多金值。同时也就意味着被处理的输入信号的频率决定于控制器的效率。我们会从数字滤波器的一些数学基础开始,但是不会对理论背景进行深入的研究,如果对数字滤波器的数
2、学背景感兴趣,可以参加大学里面的其它课程。TexasInstrumentsC6000-TeachingCD-ROM可以用來学习数字滤波器的设计.该CD的第14章将介绍滤波器系数估计的技术和有关窗函数的一些基本方法。尽管这个C6000CD是基于C6000家族的,但是滤波器和傅立叶变换这一章同样使用与C28x.然后开始讲解“有限冲击响应(FIRf-滤波器的结构和属性。因为这种类型的滤波器简单且稳定,所以在数字信号处理屮常常用到。在查看FIR滤波器算法的C28xC代码前,我们会计算一个低通(LPF)和高通(HPF)FIR滤波器。在设计滤波器时,使用IQ-MathC函数比用标准ANSI・
3、C执行起來快速很多,因为IQ-Math是基于C28x内部硬件单元设计的函如杲使用IQ-MATH的执行速度还不够快,还可以使用汇编代码和使用TI提供的数字滤波器库(sprc082.zip).通过两个示例,我们可以观察利用汇编语言和TI提供的C库函数“FIR16”编写的FIR的执行情况的区别最后我们将使用一个FIR滤波器來完成实验.在我们产生3kHz的方波之后,在通过ADC将其采样回来,并利用一个4阶的FIR滤波器形成一个LPF对这些采样值滤波。CCS的图形工具将用来并行显示滤波后和滤波前的信号。目录C28xFIR-滤波器14-1介绍14-1模块目录.14-2数字滤波器基础14-3时
4、域方程14-3频域方程14-5有限冲击响应14-8FIR-滤波器的属性14-9FIR示例.14-10FIRC代码的执行.14-14FIR汇编代码的执行.14-16循环地址模式14-17FIR-滤波器代码14-1TexasInstrumentsC28x滤波器库14-21MATLAB滤波器14-22FIR16库函数14-23Lab14:方波信号的FIR-滤波器14-25目标14-25过程14-26打开文件,创建工程文件14-26工程建立选项14-27修改源代码14-27编译和下载14-29测试14-30将信号反馈到ADC14-31设置ADC采样周期(Timer2)14-31连接T1P
5、WM与ADCIN214-32编译,下载和测试14-32观察FIR14-33CCS图形工具14-34数字滤波器基础时域方程下面的线性时不变(LTI)系统的方程是获得数字滤波器的表示法的起点:BasicsofDigitalFilterTheorya>KHm沁*虹togN_Xj一呦二工bk*x[n一R]m—0jfc=0⑩y(n)=outputsignal⑩am,bk=^^fficRBts⑩N=numlM(orderofsys#m)&"rap険t枪乜)三,桝或曲电th絵翊咏艸*•轲tta舱y[n—m]这是对于离散输入(x(II))和离散输出(y(n))的变换方程,变换是属性通过系数佝“
6、andbk表示,条件x[n-k]ory[n-m]用来表示当前采样次数n之前的k或者m次输入和输出的状态.对于因果系统,在时间t=0前的所有釆样都为零。这种类型的方程基于时间表示对输出信号的调整,成为“时域表示法”O在这个方程川使用的时间的最小量为釆样周期.在输入信号被采样后,连续时间标尺被数字序列代替。根据香农采样定理,采样频率必须至少是输入信号的最高频率的两倍.y(n)的规格化计算如下图所示:y(n)要通过当前的输入采样和输入信号之前的采样one(x(n-l)),two(x(n-2))ork(x(n-k))i
7、*算而得,我们把这一部分计算叫做“前向”计算。如果在计算中包含将输出
8、信号延迟1个周期(y(n-l)),2个周期(y(n-2))……k个周期(y(n-k))的状态,则新的y(n)值包含了一个“反馈”区域。要将这个流程图转换为计算机程序,我们不仅需要保存当前输入x(n)和输出y(n),还需要它们之前状态的信息.怎么编码呢?通常,我们使用两个足够大的数组來保存所有先前的X和y的状态,这种类型的数组叫做“缓冲区”。在函数中作为“延迟线”,所以成为“延迟线缓冲二那么在代码完成一个新的y(n)计算之后呢?很明显,y(n)必须作为计算的新值输出。另外,要实时执
此文档下载收益归作者所有