完整--基于DSP的FIR低通滤波器设计论文 - 图文

更新时间:2024-05-29 09:38:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

四川师范大学本科毕业设计

基于DSP的FIR滤波器设计

学生姓名 院系名称 专业名称 班 级 学 号 指导教师 完成时间

333

物理与电子工程学院

电子信息工程

33333 33333

2014年 5月 10日

基于DSP的FIR滤波器设计

电子信息工程专业

学生姓名 曾慧 指导教师 汪文蝶

摘要 随着科学技术和信息处理的高速发展,目前数字信号处理已经在电子信息、无线电、自动控制等得到广泛应用。本文基于DSP完成了FIR低通滤波器设计。介绍了FIR数字滤波的特点和设计方法以及FIR低通滤波器的设计过程。主要采用了布拉克曼(Blackman)窗函数实现FIR低通滤波器,并给出了MATLAB仿真结果。最终基于DSP在TMS320VC5009平台上用C语言编程在CCS软件上实现了通带边缘频率10KHz,阻带边缘频率22KHz,阻带衰减75dB,采样频率50KHz的FIR低通滤波器。

关键词:FIR低通滤波器 DSP CCS 窗函数 MATLAB

I

DSP-based FIR Filter Design

Abstract With the rapid development of science and technology and information processing, the current digital signal processing has been widely applied in electronic information, radio, automatic control.Based on DSP completed the FIR low-pass filter design. Describes the characteristics and design method of FIR digital filter and FIR low-pass filter design process.The main use of Blackman (Blackman) window FIR low-pass filter function implementation, and gives the MATLAB simulation results. Ultimately based on DSP using C language programming on the CCS software platform on TMS320VC5009 filter passband edge frequency 10KHz, stopband edge frequency 22KHz, stop-band attenuation 75dB, FIR 50KHz sampling frequency low-pass.

Keywords: FIR low-pass filter window function MATLAB DSP CCS

II

目 录

摘要..................................................................... I Abstract................................................................ II 1 引言................................................................... 1 1.1 选题背景与研究意义................................................... 1 1.2 国内外发展........................................................... 1 1.3 研究内容............................................................. 2 2 FIR滤波器的理论基础 ................................................... 2 2.1 FIR滤波器的特点 ..................................................... 2 2.1.1 FIR滤波器设计的特点 ............................................... 3 2.1.2 FIR滤波器的基本结构 ............................................... 3 2.2 线性相位FIR滤波器的特点............................................. 5 2.3 各种窗函数........................................................... 6 2.3.1 窗函数的设计思想................................................... 6 2.3.2几种常用的窗函数介绍 ............................................... 8 2.4 用窗函数设计法来设计FIR低通滤波器................................... 9 2.5 MATLAB仿真 ......................................................... 11 3 DSP的实现平台 ........................................................ 13 3.1 DSP硬件开发环境 .................................................... 13 3.1.2 DSP的硬件结构示意图 .............................................. 14 3.1.3 TMS320VC5509A基本介绍 ............................................ 14 3.2 DSP软件开发环境 .................................................... 14 3.3 CCS实现FIR低通滤波器设计 .......................................... 16 4 结论.................................................................. 19 4.1 试验结果分析........................................................ 19 4.2 总结................................................................ 19 致谢.................................................................... 19 参考文献................................................................ 20 附录.................................................................... 21

1 引言

1.1 选题背景与研究意义

随着信息技术和计算机学科的不断发展,数字型号处理从20世纪60年代以来就迅速的发展起来。数字信号处理不仅应用在通信、仪器 、工业控制与自动化、医疗、军事、还广泛应用在滤波与变换、音频、语音、图象和图形以及消费电子等众多领域中。总之数字信号处理是把信号用数字或符号表示的序列,通过计算机或通用信号处理设备,用数字的数字计算方法处理(滤波、变换,图象的压缩与增强、估值和识别等加工处理等),为了达到提取有用信息的目的。几乎所有的工程技术领域都涉及到数字信号处理。

在发展的过程中,与模拟信号处理相比较,数字信号处理也出现了很多明显的优点,如高精度在高精度的系统中,有时只能采用数字系统;灵活性高,数字系统的性能主要由乘法器的系数决定,而系数存放在系数存储器中,因而只需改变存储的系数就可以得到不同的系统,比改变模拟系统方便很多;可靠性强,因为数字系统只有两个信号电平“0”“1”,因而受周围环境的温度及噪声影响小,因此可靠性强;容易大规模集成,由于数字部件具有高度规范性,便于大规模集成、大规模生产。故产品成品率高;可获得高性能指标等等。由于数字信号处理的突出优点,因此他在语音、雷达、地震测报、通信、遥感、生物医学、电视、仪器中得到非常广泛的应用。

数字信号处理(DSP)的各种芯片可通过软件改变参数来改变滤波器的特性,具有高的灵活性,而且数字信号处理应用非常广泛,因此我们要去理解滤波器的工作原理,研究其的设计方法,优化其设计方法。特别是FIR低通滤波器的设计,与IIR低通滤波器相比,它具有严格的线性相位,同时有可以具有任意的幅度特性。最重要的是FIR滤波器的单位抽样响应是有限长的,因而滤波器一定是稳定的。这种独特的优势,让我想去研究关于数字处理的FIR滤波器,充分体现FIR滤波器的优势。本课题不仅具有理论意义,同时还具有实际意义。

1.2 国内外发展

20世纪60年代起,随着信息技术和计算机的快速发展,数字信号处理是一门广泛应用与许多领域涉及许多学科的工学学科,并且得到了飞速的发展,在如今的数字化时代,它已成为计算机、通信、消费电子等领域的基本器件。DSP的发展基本可以分为三个阶段:

最初的DSP只是用微处理器来处理,但其处理速度非常慢,根本无法满足人们的需求。而且只出现在书本上,无法应用在实际中,应用非常的狭窄,一般指用在航空航天、军事上。

第一代DSP芯片TMS32010伴随着半导体技术和集成电路技术的发展而诞

1

生,现在它的运算速度快乐几十倍,在实际中也得到应用,但是它的功耗和尺寸都很大,容量也非常小,而且应用非常不灵活。但它也给DSP产生了非常的影响,标志着DSP的快速进步。到80年代中期,随着CMOS工艺的DSP芯片应运而生,其运算速度和存储容量都得到了很大的提高,称为语音处理和图象硬件处理技术的基础。第三代DSP芯片出现在80年代后期,运算速度得到飞速的提高,通信、计算机领域也得到了广泛的使用。

DSP不仅在国外,而且最近在中国市场作为整个半导体市场一样为国际半导体市场的一个组成部分,必然具有国际半导体市场的共性。由于它根植于中国这一特定经济与社会环境的土壤中。

DSP在中国的发展具有非常大的市场。随着社会的快速发展以及人们对高端产品的喜爱和依赖,以及高端产品给人们带来的乐趣和用途,促使DSP的快速发展。MMoIP电话、数码相机、数码手表和手持电子设备、汽车电子等数码产品得到广泛的使用。在中国市场的迅速发展促进了高性能DSP的广泛使用。中国的电子产品制造商众多,对低成本、易使用的DSP需求巨大。

DSP主要应用在通讯领域、数字影音的产品,这让DSP不得不快速的发展来适应人们的需求,提高自身的价值,未来DSP市场竞争将越趋激烈。

1.3 研究内容

本论文是TI公司近年推出的高性能TMS320VC5509的DSP芯片设计滤波器系统,基于DSP的FIR有限冲激响应滤波器,完成了通带边缘频率10KHz,阻带边缘频率22KHz,阻带衰减75dB,采样频率50KHz的FIR低通滤波器。采用布拉克曼(Blackman)窗函数在MATLAB和CCS上仿真实现FIR低通滤波器。 本论文共分为四个部分,第一章为引言部分,介绍DSP及其滤波器的发展现状;第二章详细FIR滤波器的理论基础,FIR低通滤波器的设计法方法及其算法,以及在MATLAB上的仿真。介绍DSP的特点、性能指标、软件开发工具、指令系统及硬件结构;第三章介绍了实现FIR滤波器实现的硬件和软件平台以及如何在CCS上的实现。第四章介绍了本次设计的结果分析;其中第二、三章是本论文的核心部分。

2 FIR滤波器的理论基础

2.1 FIR滤波器的特点

由于无限长单位冲激响应(IIR)数字滤波器有非常明显的缺点,他的相位是非线性的,若需要线性相位,则要采用全通网络进行相位校正,然而,图象处理以及数据传输都要求有严格的线性相位特性,而有限长单位冲激响应(FIR)滤波器就可以做成严格的线性相位,同时有可以具有任意的幅度特性。最重要的是FIR滤波器的单位抽样响应是有限长的,因而滤波器一定是稳定的。只要经过一定的

2

延时,任何非因果有限长序列都能变成因果有限长序列,因而总能用因果系统来实现,还可以用快速傅里叶变换(FFT)算法来实现滤波,从而可以提高运算效率。因此 FIR滤波器的线性相位是我们研究的重点。

实现数字滤波器的方法有很多:最开始用到的无限长冲激响应IIR滤波器设计,当然它也有很多数字滤波器的优点,如:可以利用模拟滤波器设计的结果,而模拟滤波器设计有大量图表可查,因此他方便简单,但是它有很明显的缺点,就是想为的非线性,但是要想得到线性相位,那必须通用全通网络进行相位校正,此过程非常复杂且不易实现。因此上面提到的FIR滤波器的优点就得到了明显的优势,因此也得到了广泛的使用。但是要取得很好的衰减特性,FIR滤波器H(Z)的阶次比IIR滤波器的要高。因此要是对于非线性相位的FIR滤波器,一般可以用IIR滤波器来替换,同样幅度特性,IIR滤波器所需要的阶次比FIR滤波器的阶次要少得多,所以让我们最感兴趣的是FIR滤波器的线性相位。 FIR滤波器具有独到的优点,它可以在幅度特性随意设计的同时,保证精确、严格的线性相位。 2.1.1 FIR滤波器设计的特点

(1)系统的单位冲激响应h(n)在有限个n值处不为0。

(2)系统函数H(Z)在Z?0处只有零点,即有限z平面只有零点,而全部极点都在Z?0处,而全部极点都在Z?0处(因果系统)。

(3)结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中也包含有反馈的递归部分。

最主要的是FIR滤波器具有严格的线性相位和稳定性,任何非因果有限长序列都能变成因果有限长序列,因而总能用因果系统来实现。 2.1.2 FIR滤波器的基本结构 (1)FIR数字滤波器的基本原理

设h(n)(n?0,1,2?N?1)为滤波器的冲激响应,输入信号为x(n) ,则FIR 滤波器就是要实现下列差分方程:

y(n)??h(m)x(n?m) (1)

n?0N?1这就是FIR 滤波器的差分方程。FIR 滤波器的最主要的特点是没有反馈回路,因此它是无条件稳定系统。它的单位脉冲响应h(n)是一个有限长序列。由上面的方程可见,FIR 滤波算法实际上是一种乘法累加运算,它不断地输入样本

x(n),经延时(Z)做乘法累加,再输出滤波结果。对式(1)进行Z

变换整理后可得FIR

滤波器的传递函数为:

N?1H(z)??h(n)z?nn?0

(2)

3

由式(2)可以看出,FIR 滤波器的一般结构如图1所示。

X(n)h(0)h(1)h(n-2)h(n-1)y(n)

图1 FIR滤波器的结果

FIR滤波器的单位冲激响应h(n)是有限长的(0?n?N?1)其中Z变换为

N?1H(z)??h(n)z?n (3)

n?0 (2)横截型(卷积型、直接型)结构

系统的差分方程表达式为

N?1y(n)??h(m)x(n?m) (4)

n?0这是线性移不变系统的卷积和公式,也是x(n)的延时链的横向结构,也叫直接型结构。 其结构图如图2。

x(n)h(0)h(1)h(2)h(n-2)h(n-1)y(n)

图2 FIR滤波器的横截型结构

(3)级联型结构:将H(Z)分解成实数系数二阶因子的乘积形式

nN?12H(z)??h(n)z?n??(?0k??1kz?1??2kz?2) (5)

n?0n?0 级联型结构图如图3。

x(n)ZZ-1Β10Z-1Β11-1Β21Z-1Β02Β12Β22ZZ-1-1Β0[N/2]Β1[N/2]Β2[N/2]y(n)

图3 FIR滤波器的级联型结构

4

2.2 线性相位FIR滤波器的特点

FIR滤波器的单位冲击响应h(n)是有限长的(0?n?N?1)其中Z变换为

N?1H(z)??h(n)z?nn?0 (6)

这是z?1的多项式。

线性相位的条件:h(n)的频率响应H(ejw)为

H(ejw)??h(n)e?jwn (7)

n?0N?1当h(n)为实数序列时,可将H(ejw)表示成

H(ejw)?H(w)ej?(w) (8)

其中H(ejw)是真正的幅度响应。而H(?)是可正可负的因此有两类准确的线 性相位,分别要求满足

?(w)???? (9)

?(w)????? (10)

把 (9)和(10)式的关系分别代入(8) 中并且考虑(7)式,可得

N?1jwH(e)??h(n)e?jwn??|H(w)|e?jw?n?0 (11)

N?1jwH(e)??h(n)e?jwn??|H(w)|e?j(w???)n?0 化简得:

(12)

N?1 ?|H(w)|cos(wt)??h(n)cos(wn) (13)

n?0N?1wt()??h(n)sinwn() (14) ?|H(w)|sinn?0 化简:两式相除

N?1()?h(n)sinwnsinwt()n?0 tan (15) wt()??coswt()N?1wn()?h(n)cosn?0

5

N?1N?1?h(n)sin(wt)cos(wn)??h(n)cos(wt)sin(wn)?0 (16) n?0n?0N?1?h(n)sin[w(t?n)]?0 (17) n?0要使(17)成立,必须满足

??N?1 (18)

2另一类线性相位,必须要求

N?1w([t?n)??]?0 (19) ?h(n)sinn?0要使(19)成立,必须满足

??N?1 (20)

2 ???? (21)

2 h(n)??h(N?1?n)(0?n?N?1) (22)

(22)是FIR滤波器就有线性相位的因果系统的充分条件它要求单位冲激响应的

h(n)序列以n?N?1为偶对称中心,此时时间延时?2等于h(n)长度为N?1的一半,

即??N?1个抽样周期,当N为奇数时,延时为整数,N为偶数时延时为整数加半2个抽样周期,,不管N为偶奇,此时h(n)都应该满足n?N?1呈偶对称。 22.3 各种窗函数

2.3.1 窗函数的设计思想

一般是先给出所要求的理想的滤波器频率响应Hd(ejw),要求设计一个FIR滤波器频率响应H(ejw)??h(n)ejw来逼近Hd(ejw)。但是设计时在时域进行的,因

n?0N?1而先由Hd(ejw)的傅里叶反变换导出Hd(n)即

1?jwjwndHd(n)??Hd(e)e? (23) 2??? 由于Hd(ejw)是矩形频率特性,故hd(n)一定是无限长的序列,且是非因果的,而我们要设计的是FIR滤波器,其h(n)必然是有限长的,所以要用有限长的h(n)来

6

逼近无限长的hd(n),最有效的方法是截断hd(n),是用一个有限长度的窗函数序列?(n)来截取hd(n)即h(n)??(n)hd(n)因而窗函数序列的形状及长度。

我们以一个截止频率为?c的线性相位的理想矩形幅度特性的低通滤波器,设低通特性的群时延为?。

Hd(ejw)?e?jw?,??c????c (24)

这表明,在通带范围内,Hd(ejw)的幅度是均匀的,其值为1,相位是???

1?ce?jw?ejwnd??csin[?c(n??)]H(n)??d? (25) 2???c??c(n??)它是中心点在?的偶对称无限长非因果序列,要得到有限长的h(n),一种简单的方法取矩形窗?(n)?RN(n)。

但是按照线性相位滤波器的约束h(n)必须是偶对称,对称中心应为长度的一半,即N?1/2,因而??N?1/2,所以

h(n)?hd(n)?(n)?hd(n),0?n?N?1

(26)

??N?12 (27)

?sin[w(n?N?1)]cwc?2?,(0?n?N?1)N?1 h(n)??? (28) wc(n?)?2????0n为其他值然而加窗处理对理想矩形频率响应产生的几点影响

(1)使理想频率特性不连续点点处边沿加宽,形成一个过渡带,过渡带的宽度等于窗的频率响应WR(?)的主瓣宽度???4?,这里所说的过渡带是指两个肩峰之间

N的宽度,与滤波器的真正过渡带还有一些区别,也就是,滤波器的过渡带比这个数值要小。

(2)在截止频率?c??c?2?的地方,H(?)出现最大的肩峰值,肩峰的两侧形成

N起伏振荡,其振荡幅度取决于旁瓣的相对幅度,而振荡的多少,则取决于旁瓣的多少。

(3)增加截取长度N,则在主瓣附近的窗的频率响应为

7

sin(N?)2?Nsinx (29) WR(?)?xsin?2 其中x?N?2,可见,改变N,只能改变窗谱的主瓣肯定,改变w坐标的比例以及

改变WR(?)的绝对值大小,二不能改变主瓣与旁瓣的相对比例,而这个相对比列是由

sinxx决定,例如在矩形窗情况下,最大相对肩峰值为8.95%,N增加时,2?

N减小,故起伏振荡变密,最大肩峰则总是8.95%,这种现象称为称为吉布斯(Gibbs)效应。

以上讨论可以看出,最小阻带衰减只由形状决定,不受N的影响,而过渡带的宽度则既和窗形状有关,且随窗宽N的增加而减小。

2.3.2几种常用的窗函数介绍

(1)矩形窗

?(n)?RN(n) (30)

N?1)??j(2 (31) WR(ejw)?WR(w)esinN?2 (32) WR(?)?sin?2(2)巴特列特窗(三角窗)

w(n)?2nN?1(0?n?) (33) N?12 w(n)?2?窗谱为

8?N2nN?1(?n?N?1) (34) N?12NwN?1sin()?j?24jw22W(e)?[]ew()Nsin4 (35)

此时主瓣宽度为,可以看出,三角形窗频谱密度函数永远是正值。

(3)汉宁(hanning)窗 汉宁窗又称升余弦窗

?(n)?[1?cos(122?n)]RN(n) (36) N?1当N?1时,N?1?N,所以窗谱的幅度函数为

W(?)?0.5WR(w)?0.25[WR(??

2?2?)?WR(??)] (37) N?1N8

这三部分之和使旁瓣互相抵消,能量更集中在主瓣,但是其代价是主瓣宽度比矩形窗的主瓣宽度增加一倍,即为8?。

N(4)海明(hamming)窗

对升余弦加以改进,可以得到旁瓣更小的效果,窗形式为

W(?)?[0.54?0.46cos(2?n)]RN(n) (38) N?1结果可以将99.963%的能量集中在窗谱的主瓣内,与汉宁窗相比,主瓣宽度相同

8?N,但旁瓣幅度更小,旁瓣峰值小于主瓣峰值的1%。

(5)布拉克曼(blackman)窗

为了更进一步抑制旁瓣,可加上余弦的二次谐波分量,得到布拉克曼窗:

?(n)?[0.42?0.5cos(2?n4?n)?0.08cos()]RN(n) (39) N?1N?1其频谱的幅度函数为 W(?)?0.42WR(?)?0.25[WR(??2?)?WR(??2?)]?0.04[WR(??4?)?WR(??4?)]

N?1N?1N?1N?112?N (40) 此时主瓣宽度为矩形窗谱主瓣宽度的三倍,记为

表1归纳了以上几种窗的主要性能,供FIR滤波器时参考。

表1 窗函数基本参数的比较

窗函数 窗谱性能指标 旁瓣宽度 矩形窗 巴特列特 汉宁窗 海明窗 布拉克曼窗 凯泽窗 -13 -25 -31 -41 -57 -57 主瓣宽度 2 4 4 4 6 加窗后滤波性能指标 过渡带宽 0.9 3.05 3.1 3.3 5.5 5 阻带最小衰减 -21 -25 -44 -53 -74 -80 2.4 用窗函数设计法来设计FIR低通滤波器

设计基于DSP的FIR低通滤波器,其要求是通带边缘频率10KHz,阻带边缘频率22KHz,阻带衰减75dB,采样频率50KHz。

根据FIR滤波器的设计方法和设计要求,其设计思路和设计步骤如下:

,?st?22000,??75dB,?s?50000 (41) ?p?10000?pfs?p?s10000?0.4?50000?p??2??2? (42)

9

?0.88? (43) ?st?st?2?st?2?fs?s50000??75dB (44)

??10000设hd(ejw)为理想线性相位滤波器:

?e?jwt,|w|?wjwc (45) hd(e)??0(n为其他)?

?c?c???2??2??16000?0.64?器的过渡带求理想低通首先由所需低通滤波cfs?s50000滤波器的截止?c(是由两个肩峰处中点)而由?p,?st之间的过渡带宽并非两个肩峰间的频率差,所以

?c?1(?p??st)?16000 2 (46)

其对应的数字频率为: 由此可得:

wcejw(n??)d? hd(n)?1?e?jwtej?ndw?1??2?2?wc ? ?1sinw(c(n??))n,?? ?(n??)?c,n?? (47) ?2其中?为线性相位所必需的移位,我们都知道它应该满足??N?1。 由于??75dB,通过查表1得,可以选择布拉克曼窗函数,其阻带衰减-74dB 所要求的过渡带的数字频域。

???2??st??p?s?2?12000?0.48?50000 (48)

所以

???代入得:

N?24.9 即N?25 (50)

5.98?2? (49) N ??N?1?12 (51) 21hd(n)?sin[?c(n?12)],n??

?(n?12)

10

??c,n?? (52) ?2?n4?n?0.08cos]RN(n) (53) N?1N?1布拉克曼窗函数的频谱幅度函数为:

?n?[0.42?0.5cos频谱幅度函数为:

sin[0.64?(n?12)]2?n4?n[0.42?0.5cos?0.08cos]RN(n)?(n?12)N?1N?1sin[0.64?(n?12)]2?n4?n?[0.42?0.5cos?0.08cos]R(n) ?(n?12)242425sin[0.64?(n?12)]2?n4?n?[0.42?0.5cos?0.08cos]??(n?12)2424[?(n)??(n?1)??(n?2)???(n?24)]h(n)?hd(n)?(n)? (54)

计算结果为:

h(n)??0.001x(n?2)?0.002x(n?3)?0.002x(n?4)?0.01x(n?5)?0.009x(n?6)?0.018x(n?7)?0.049x(n?8)?0.02x(n?9)?0.11x(n?10)?0.28x(n?11)?0.64x(n?12)?0.28x(n?13) (55) ?0.11x(n?14)?0.02x(n?15)?0.049x(n?16)?0.018x(n?17)?0.009x(n?18)?0.01x(n?19)?0.002x(n?20)?0.002x(n?21)?0.001x[n?22]FIR低通滤波器的理论设计基本完成。

数字滤波与模拟滤波相比有很多优点,它除了可避免模拟滤波器固有的电压漂移、温度漂移和噪声等问题外, 还能满足滤波器对幅度和相位的严格要求。低通有限冲激响应滤波器( F in ite ImpulseResponse Filter, FIR 滤波器) 有其独特的优点, 因为FIR系统只有零点, 系统总是稳定的, 且为线性相位,允许实现多通道滤波器。

2.5 MATLAB仿真

MATLAB有多种设计FIR数字滤波器的方法,本文主要介绍窗函数设计方法,它的设计思路和之前介绍的窗函数设计法相同,而前面采用是布莱克曼窗函数设计法,MATLAB中编写程序比CCS中用C语言编写程序要简单,只需要把窗函数设计的公式编写出来即可。

首先跟CCS编写程序一样,可以编写两个子函数,和一个主函数,主函数通过调用子函数来完成。因此应该点击file-new如图4产生一个.m文件。

图4 MATLAB仿真操作

11

fSignal1=0.0; fSignal2=PI*0.1; fStepSignal1=2*PI/30; fStepSignal2=2*PI*1.4; while ( 1 ) { fInput=InputWave(); fIn[nIn]=fInput; nIn++; nIn%=256; fOutput=FIR(); fOut[nOut]=fOutput; nOut++;

/* break point */

if ( nOut>=256 )

{ nOut=0;

}

}

}

float InputWave() { for ( i=FIRNUMBER-1;i>0;i-- )

fXn[i]=fXn[i-1];

fXn[0]=sin((double)fSignal1)+cos((double)fSignal2)/6.0; fSignal1+=fStepSignal1;

if ( fSignal1>=f2PI ) fSignal1-=f2PI; fSignal2+=fStepSignal2;

if ( fSignal2>=f2PI ) fSignal2-=f2PI; return(fXn[0]);

}

float FIR() {

float fSum;

22

fSum=0;

for ( i=0;i

}

return(fSum);

}

程序2

#include \

void SDRAM_init( void ) {

ioport unsigned int *ebsr =(unsigned int *)0x6c00; ioport unsigned int *egcr =(unsigned int *)0x800; ioport unsigned int *emirst=(unsigned int *)0x801; //ioport unsigned int *emibe =(unsigned int *)0x802; ioport unsigned int *ce01 =(unsigned int *)0x803; //ioport unsigned int *ce02 =(unsigned int *)0x804; //ioport unsigned int *ce03 =(unsigned int *)0x805; ioport unsigned int *ce11 =(unsigned int *)0x806; //ioport unsigned int *ce12 =(unsigned int *)0x807; //ioport unsigned int *ce13 =(unsigned int *)0x808; ioport unsigned int *ce21 =(unsigned int *)0x809; //ioport unsigned int *ce22 =(unsigned int *)0x80A; //ioport unsigned int *ce23 =(unsigned int *)0x80B; ioport unsigned int *ce31 =(unsigned int *)0x80C; //ioport unsigned int *ce32 =(unsigned int *)0x80D; //ioport unsigned int *ce33 =(unsigned int *)0x80E; ioport unsigned int *sdc1 =(unsigned int *)0x80F; //ioport unsigned int *sdper =(unsigned int *)0x810; //ioport unsigned int *sdcnt =(unsigned int *)0x811; ioport unsigned int *init =(unsigned int *)0x812; ioport unsigned int *sdc2 =(unsigned int *)0x813; //*ebsr = 0x221;//0xa01

23

*ebsr = 0xa01; *egcr = 0x220; *egcr = 0X220; *ce01 = 0X3000; *ce11 = 0X1fff; *ce21 = 0x1fff; *ce31 = 0x1fff; *emirst = 0; *sdc1 = 0X5958; *sdc2 = 0X38F; *init = 0; } 程序3

#include\

void CLK_init() {

ioport unsigned int *clkmd; clkmd=(unsigned int *)0x1c00;

*clkmd =0x2033; // 0x2033;//0x2413;// 200MHz=0x2513 }

void SetDSPPLL(unsigned int uPLL) {

ioport unsigned int *clkmd; clkmd=(unsigned int *)0x1c00; *clkmd =uPLL; }

void TMCR_reset( void ) {

ioport unsigned int *TMCR_MGS3=(unsigned int *)0x07FE; ioport unsigned int *TMCR_MM =(unsigned int *)0x07FF; *TMCR_MGS3 =0x510;

24

*TMCR_MM =0x000; } 程序4

wst=0.88*pi; wp=0.4*pi;

deltaw=wst-wp; %过渡带宽△w的计算

N0=ceil(11*pi/deltaw); %按布莱克曼窗计算所需的滤波器长度

N=N0+mod(N0+1,2); %为了实现第一类偶对称滤波器,应确保其长度N为奇数 n=[0:1:N-1];

wc=(wst+wp)/2; %截止频率取为两边缘频率的平均值 hd=ideal(wc,N); %求理想脉冲响应 wdbla=(blackman(N))'; %求窗函数

h=hd.*wdbla; %设计的脉冲响应应为理想脉冲响应与窗函数乘积 [db,mag,pha,grd,w]=myfreqz(h,[1]); %对设计结果进行检验 dw=2*pi/2000; %频率分辨率 Rp=-(min(db(1:wp/dw+1))) %检验通带波动 As=-round(max(db(wst/dw+1:501))) %检验最小阻带衰减 figure(1) subplot(2,2,1); stem(n,wdbla);

title('布莱克曼窗') %绘制布莱克曼窗 axis([0 N-1 0 1.1]);ylabel('w(n)'); text(N+1,0,'n') subplot(2,2,2); stem(n,h);

title('实际脉冲响应') %绘制实际脉冲响应 axis([0 N-1 -0.4 0.5]); xlabel('n'); ylabel('h(n)') subplot(2,2,3);

plot(w/pi,db); %绘制幅度响应; title('幅度响应(单位:dB)'); grid;

axis([0 1 -150 10]);

xlabel('频率(单位: pi)'); ylabel('分贝数')

set(gca,'XTickMode','manual','XTick',[0,0.2,0.35,0.65,0.8,1]) set(gca,'YTickMode','manual','YTick',[-60,0]) subplot(2,2,4); plot(w,pha);

title('相位响应'); %绘制相频特性 axis([0 2 -4 4]);

xlabel('频率(单位:pi)');

25

ylabel('相位(Φ)')

程序5

function hd=ideal(wc,M); al=(M-1)/2; n=[0:(M-1)]; m=n-al+eps;

hd=sin(wc*m)./(pi*m);

程序5

function [db,mag,pha,grd,w]=myfreqz(b,a); N=1000;

[H,w]=freqz(b,a,N,'whole');

H=(H(1:1:501))';w=(w(1:1:501))'; mag=abs(H);

db=20*log10((mag+eps)/max(mag)); pha=angle(H);

grd=grpdelay(b,a,w);

26

本文来源:https://www.bwwdw.com/article/s6u7.html

Top