实验 2 有限冲激响应滤波器(FIR)算法实验(1)知识讲解

合集下载

数字信号处理 - 有限冲激响应

数字信号处理 - 有限冲激响应


sin [
n
2
]

n
奇对称 、无限长
哈工大电信院信息工程系宿富林 19
设计FIR滤波器: 对hd(n)作移位、截断处理:
将其右移 ( N 1) / 2 截断后:
h( n) 2 sin [
2
(n )
2
]

n
0 n N 1
h(n)=-h(N-1-n)、实数
哈工大电信院信息工程系宿富林 7
常见数字滤波器的理想幅频特性
H (e j )
(a) 低 通 - 2 - o 2 高 通 2 带 通 2 带 阻 2

H (e j )
(b)
- 2

o

H (e j )
(c)
- 2

o

H (e j )
(d )
- 2
H ( j )

c
c

j n

1 c c H ( j ) 其他 0
偶对称 无限长 实数
1 hd (n) 2
e

c
c
d = sin(c 0 n) / n
n
0
哈工大电信院信息工程系宿富林 16
n
0

N-1
要用FIR滤波器设计,需要将h(n)截断。
| H ( j 0) | Ap 20 lg | H ( j p ) | 20 lg | H ( j p ) | 20 lg(1 1 ) | H ( j 0) | As 20 lg | H ( js ) | 20 lg | H ( js ) | 20 lg 2
j n

fir滤波器设计实验报告

fir滤波器设计实验报告

fir滤波器设计实验报告一、实验目的本次实验的目的是设计FIR滤波器,从而实现信号的滤波处理。

二、实验原理FIR滤波器是一种数字滤波器,它采用有限长的冲激响应滤波器来实现频率选择性的滤波处理。

在FIR滤波器中,系统的输出只与输入和滤波器的系数有关,不存在反馈环路,因此具有稳定性和线性相位的特性。

FIR滤波器的设计最常采用Window法和最小二乘法。

Window法是指先对理想滤波器的频率特性进行窗函数的处理,再通过离散傅里叶变换来得到滤波器的时域响应。

最小二乘法则是指采用最小二乘法来拟合理想滤波器的频率特性。

本次实验采用的是Window法。

三、实验步骤1.设计滤波器的频率响应特性:根据实际需要设计出需要的滤波器的频率响应特性,通常采用理想滤波器的底通、高通、带通、带阻等特性。

2.选择窗函数:根据设计的滤波器的频率响应特性选择相应的窗函数,常用的窗函数有矩形窗、汉宁窗、汉明窗等。

3.计算滤波器的时域响应:采用离散傅里叶变换将设计的滤波器的频率响应特性转化为时域响应,得到滤波器的冲激响应h(n)。

4.归一化:将得到的滤波器的冲激响应h(n)进行归一化处理,得到单位加权的滤波器系数h(n)。

5.实现滤波器的应用:将得到的滤波器系数h(n)应用于需要滤波的信号中,通过卷积的方式得到滤波后的信号。

四、实验结果以矩形窗为例,设计一阶低通滤波器,截止频率为300Hz,采样频率为8000Hz,得到的滤波器系数为:h(0)=0.0025h(1)=0.0025滤波效果良好,经过滤波后的信号频率响应相对于滤波前有较明显的截止效应。

五、实验总结通过本次实验,我们掌握了FIR滤波器的设计方法,窗函数的选择和离散傅里叶变换的应用,使我们能够更好地处理信号,实现更有效的信号滤波。

在日常工作和学习中,能够更好地应用到FIR滤波器的设计和应用,提高信号处理的精度和效率。

数字信号处理实验 fFIR IIR 滤波器的设计

数字信号处理实验 fFIR IIR 滤波器的设计

数字信号处理实验报告 FIR 和IIR 滤波器的设计一、实验目的1、分别利用脉冲响应不变法、频率采样法设计IIR 滤波器,观察滤波器形状,并进行比较。

2、双线性变化法设计FIR 滤波器。

二、实验条件计算机、MATLAB2013a三、实验内容(一)、IIR 滤波器的设计。

IIR 滤波器的特征是,具有无限持续时间冲激响应。

这种滤波器也称之为递归型滤波器。

这些滤波器产生新的输出,不但需要过去的输入和现在的输入,还需要过去的输出。

其相应的差分方程为∑∑==-=-Nk k N k k k n x b k n y a00][][,假设0,00≠=k a a ,整理之后便得到滤波器的方程,由所学知识很明显看出该方程为递归的,k a 系数的存在意味着递归滤波器有无限项的脉冲响应。

相较与非递归滤波器,递归滤波器设计时所需的系数要少的多,更容易实现,一般会选择具有待求特性的原型模拟滤波器,然后将其转化为数字滤波器。

IIR 数字滤波器的设计常采用两种方法 :冲激响应不变法、双线性变换法。

1、利用脉冲响应不变法设计IIR 滤波器。

(1)、原理:每个模拟滤波器都有冲击响应h(t),就像每个数字滤波器都有脉冲响应h[n]一样,脉冲响应不变法选择的数字脉冲响应h[n]是满足设计要求的模拟滤波器冲击响应h(t)的采样值。

即h[N]=h(nT),其中T 为所用的采样间隔。

如果令 H a( s)是h ( t)的拉普拉斯变换,H (z)为h( n )的z 变换,利用采样序列z 变换和模拟信号的拉氏变换之间的关系,即jw e z =,从而将模拟滤波器的s 面转换为数字滤波器的z 平面。

(2)、设计步骤:(a )、确定滤波器各个参数,截止频率fs 、阶数、采样频率Fs 等;(b )、将数字滤波器频率指标转换成相应的模拟滤波器频率指标sf f π2=Ω 将数字频率和模拟频率联系起来;(3)、设计一个阶数为1的巴特沃斯滤波器,其截止频率为750HZ ,采样频率为4000HZ ;(4)、利用impinvar 和butter 函数,带入滤波器系数,具体代码如下:其中butter 的具体使用方法如注释,当设计高通滤波器时,将‘s ’改为‘high ’即可。

有限长单位冲激响应(FIR)数字滤波器的设计方法.

有限长单位冲激响应(FIR)数字滤波器的设计方法.
(2) 零点zi在单位圆上,但不在实轴上,即 zi rie ji , ri 1,i 0或
系统函数的基本因子为
主要参数:N=3,=(N-1)/2=1;
z2 1 0
z2
Re[ z] 1
7.2 线性相位FIR数字滤波器的特点
四、 零点位置
第一类和第二类线性相位的系统函数满足等式:H (z) z(N1)H (z1)
h(n)sin[( N 1 n)]
n0
2
因此
H g ( )
N 1 n0
h(n)sin[( N 1 n)]
2
Q( ) ( N 1)
2
2
, , 为常数 N 1
2
2
这种使所有频率的相移皆为90的网络,称为90移相器,或称正交变换网络,它和理
想低通滤波器、理想微分器一样,有着极重要的理论和实际意义。
N 1/ 2
H () c(n)sin n
其中
c(n) 2h N 1 n, n 1,2, , N
n0
2
2
特点: H(0)=0, H()=0, H(2)=0; 对= 0,, 2奇对称;
7.2 线性相位FIR数字滤波器的特点
三、 幅度函数的特点
4. h(n)奇对称,N为偶数
N 1
设希望设计的滤波器传输函数为Hd(ejω), hd(n)是与其对应的单位脉冲响应,因此
设计可在时域进行,使设计的FIR滤波器的h(n)逼近hd(n),以低通为例:
Hd
(e
j
)
e ja
0,c
, c
0 c hd(n) Nhomakorabea1
2
c c
e jae jnd sin(c (n a)) (n a)

FIR(Finite Impulse Response)滤波器

FIR(Finite Impulse Response)滤波器

FIR(Finite Impulse Response)滤波器:有限长单位冲激响应滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。

因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。

一、FIR滤波器的种类目前,FIR滤波器的硬件实现有以下几种方式:1.1、数字集成电路FIR滤波器一种是使用单片通用数字滤波器集成电路,这种电路使用简单,但是由于字长和阶数的规格较少,不易完全满足实际需要。

虽然可采用多片扩展来满足要求,但会增加体积和功耗,因而在实际应用中受到限制。

1.2、DSP芯片FIR滤波器另一种是使用DSP芯片。

DSP芯片有专用的数字信号处理函数可调用,实现FIR滤波器相对简单,但是由于程序顺序执行,速度受到限制。

而且,就是同一公司的不同系统的DSP芯片,其编程指令也会有所不同,开发周期较长。

1.3、可编程FIR滤波器还有一种是使用可编程逻辑器件,FPGA/CPLD。

FPGA有着规整的内部逻辑块整列和丰富的连线资源,特别适合用于细粒度和高并行度结构的FIR滤波器的实现,相对于串行运算主导的通用DSP芯片来说,并行性和可扩展性都更好。

二、FIR的特点有限长单位冲激响应(FIR)滤波器有以下特点:(1) 系统的单位冲激响应h (n)在有限个n值处不为零;(2) 系统函数H(z)在|z|>0处收敛,极点全部在z = 0处(因果系统);(3) 结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例如频率抽样结构)也包含有反馈的递归部分。

设FIR滤波器的单位冲激响应h (n)为一个N点序列,0 ≤ n ≤ N —1,则滤波器的系统函数为H(z)=∑h(n)*z^-n就是说,它有(N—1)阶极点在z = 0处,有(N—1)个零点位于有限z平面的任何位置。

FIR滤波器有以下几种基本结构:2.1、横截型(卷积型、直接型)(7.10)式的系统的差分方程表达式为y(n)=∑h(m)x(n-m)( 7.11)很明显,这就是线性移不变系统的卷积和公式,也是x (n)的延时链的横向结构,如图4-11所示,称为横截型结构或卷积型结构,也可称为直接型结构。

FIR(有限冲激响应)滤波器9页

FIR(有限冲激响应)滤波器9页

实验 3: 设计 FIR(有限冲激响应)滤波器针对 Spartan-3E 开发套件介绍在这个实验里, 将向你展示通过系统发生器的FIR 和 FDATool模块来指定、模拟和实现FIR滤波器的方法. FDATool 模块被用来定义滤波器的阶数和系数, FIR模块被用作 Simulink 模拟以及在 FPGA中用 Xilinx ISE来实现设计.你也可以通过实际硬件来运行它以验证这个设计的功能.注意:在 c:\xup\dsp_flow\labs\labsolutions\lab3\ 目录下有完整的例子.目标在完成这个试验后, 你将能够:•用 FDATool 模块输入你的滤波器指数,在设计中使用产生的系统或把它储存在工作区•使用具有 FDATool 模块产生的系数的FIR模块, 并在Simulink中运行 bit-true 仿真•产生设计并用 Resource Estimator 模块和post-map 报告估计资源利用量设计描述你是Cyberdyne系统的一个dsp设计者. 你的公司正在调查用数字滤波器代替安防检测器中的模拟滤波器,以尝试提高性能和降低整个系统的成本. 这将使贵公司可以进一步渗入日益增长的安防市场. 一个单频取样滤波器设计如下:•Sampling Frequency (Fs)(采样频率) = 1.5 MHz•Fstop 1 = 270 kHz•Fpass 1 = 300 kHz•Fpass 2 = 450 khz•Fstop 2 = 480 kHz•Attenuation on both sides of the passband(双边通频带衰减) = 54 dB•Pass band ripple(通频带脉动) = 1因为灵活性和上市时间的原因,Cyberdyne已经选择FPGA来实现它.你的HDL设计经验是有限的. 因为你对MathWorks的产品比较熟悉,所以System Generator for DSP会是一个在FPGA中实现滤波器的优秀解决方案.你的经理 Miles Booth 已经要求你创建一个在即将完成的 Spartan-3E™ 原型板上实现的滤波器的原型. 这个原型必须尽可能快地完成,这是因为Aggressive Security 会议即将来临, 这个会议是业界今年最大的会议,我们不能错过它.你的经理已经提供了具有输入源和输出接收端的最初模型. 你的设计必须用随机输入源和来自DSP Blockset 的chirp 信号来仿真. 为分析滤波器的输出, 输入和输出信号在频谱示波器中显示. 频谱示波器用来比较在FPGA 中实现的定点 FIR 滤波器的录放频谱响应.两个不同的输入源用来仿真这个滤波器:• chirp 信号模块, 其扫描频率为 6 KHz 到 10 KHz ,不管其瞬时输出频率• 随机信号源发生器, 它输出范围在-1.9到1.9的均匀分布的随机信号. 因为均匀信号是有界的,它是驱动定点滤波器的较好的选择.设计流程这个试验由六个主要步骤组成. 在步骤1,你将用系统发生器的FDATool 模块来产生指定FIR 滤波器的系数. 在步骤2, 你将把这个系数与 FIR filter 模块联系起来. 步骤3要求你用两个已提供的输入源仿真这个设计并分析系数和输入信号宽度变化的影响. 在步骤4, 你将要添加一个转换模块以调整输出宽度,添加一个延时模块以提高效率,添加一个资源估计模块以估计资源占用量,从而完成整个设计. 在下一步将实现这个设计. 在每一步总的指示下面, 你会发现手把手的说明和图表,指出了实现总的指示的更多细节. 如果你对个别指导有信心, 可以略过手把手的说明,跳到下一步的总指示. 注意: 如果你当时不能完成这个实验, 你可以从Xilinx 大学计划网站 http://university.xilinx 下载实验文件产生FIR 滤波器所需的系数 步骤 1实验总流程: 从 Xilinx Blockset DSP blockset 中添加FDATool 模块到包含一个 DA FIR 滤波器的设计中. 按照下列要求用FDATool 模块产生FIR 滤波器的系数 • Sampling Frequency (Fs) (采样频率)= 1.5 MHz • Fstop 1 = 270 KHz• Fpass 1 = 300 KHz• Fpass 2 = 450 Khz• Fstop 2 = 480 KHz• Attenuation on both sides of the passband (双边通频带衰减) = 54 dB步骤 1: 产生 滤波器 系数步骤 2: 把系数与滤波器相关联步骤 3:仿真 滤波器 步骤 4: 完成整个 设计 Step 6: 估计资源 占用量 Step 5: 实现设计 Step 7: 执行 HW-in-the-•Pass band ripple(通频带脉动) = 1❶在 Matlab中, 改变目录为c:/xup/dsp_flow/labs/lab3/: 在命令行窗口键入cd c:/xup/dsp_flow/labs/lab3/ .❷从MATLAB控制台窗口打开bandpass_filter.mdl模块❸从Xilinx Blockset DSP添加FDATool模块到这个设计❹在FDATool Design Filter窗口 (图 3-1)输入下列滤波器参数•Response Type: Bandpass•Units: KHz•Sampling Frequency (Fs) = 1.5 MHz•Fstop 1 = 270 KHz•Fpass 1 = 300 KHz•Fpass 2 = 450 Khz•Fstop 2 = 480 KHz•Attenuation on both sides of the passband = 54 dB (Astop1 and Astop2 parameters)•Pass band ripple = 1 (Apass)图 3-1. 在 FDATool中设计一个滤波器.❺点击Design Filter按钮以确定滤波器指令频谱窗口将被更新并显示如图 3-2图 3-2. 所设计滤波器的幅频响应.1. 基于所定义的技术要求, 最小的滤波器阶数是多少?❻用File Save Session来储存fda格式文件coefficients.fda 中的系数注意: 这是可选的步骤. 这些系数对这个设计仍然可以利用. 如果你把参数储存在 fda-file中,你可以通过 FDATool 模块参数对话框来加载它们.❼用File Export导出工作区中的系数,其Numerator variable name为Num(图3-3)注意: 这将在你的 MATLAB 工作区添加Num变量. 对于一个 FIR 滤波器, Num 代表用在滤波器中的系数. 因为通过 FDATool 模块仍能利用这些系数,这也是一可选的步骤图 3-3. 在工作区中导出系数.❽在 MATLAB 控制台窗口键入Num来查看系数列表❾在 MATLAB 控制台窗口键入max(Num)以确定指出系数宽度和二进制小数点的最大系数值2. 填入与系数相关的下列信息最大值: ____________________最小值: 把系数与 FIR 滤波器相关联步骤 2 实验总流程: 从 Xilinx Blockset DSP library 添加FIR 滤波器模块并与产生的系数关联 ❶ 从 Xilinx Blockset DSP library 添加FIR (DA FIR v9_0)滤波器到设计中❷ 双击 Xilinx FIR Filter 模块 并在模块参数窗口 (图 3-4)中输入以下参数• Coefficients : xlfda_numerator(‘FDATool’)• Coefficient Structure : Inferred from Coefficients• Number of bits per Coefficients : 12• Binary Point for Coefficients : 11• Provide Valid Ports : unchecked图 3-4. FIR 滤波器模块参数.❸ 点击 OK 以接受设置❹ 如图 3-5所示连接设计的各个模块图 3-5. 设计用来仿真的FIR 滤波器模块.在Simulink 中仿真 FIR 滤波器 步骤 3实验总流程:设置样值输入为 FIX_8_6 ,输入采样周期为 1/1500000. 利用频谱示波器, 研究 chirp 和 noise 信号的输出. ❶ 双击 Gateway In 模块并设置格式为 FIX_8_6 ,采样周期为1/1500000❷ 选择 Chirp 信号为输入源并开始仿真如果你收到下列错误, 根据消息更新FIR 的等待时间, 并再次仿真. ❸ 调出示波器并验证一直衰减的FIR 滤波器的输出信号,这些信号应如图 3-7 和 图 3-8所示.图 3-7. 无衰减通频带 (频谱示波器).图 3-8. 禁带衰减 (频谱示波器).❹ 停止仿真❺ 选择 Random Source 并运行仿真图 3-10. 随机信号输入源 (频谱示波器).Step 1: Generate Filter Coeffici Step 2: Associat e Coeffici Step 3:Simulate the Filter Step 4: Complete the Step 6: Estimate Resource Step 5: Implemen t Design Step 7: Perform HW-in-Step 1: Generate Filter Coeffici Step 2: Associat e Coeffici Step 3:Simulate the Filter Step 4: Complete the Step 6: Estimate Resource Step 5: Implemen t Design Step 7: Perform HW-in-❻ 停止仿真完成 FIR 滤波器设计步骤 4实验总流程: 加入 convert 模块以得到 FIX_8_6 格式的输出,从而降低显示所需的动态量程. 加入 delay 部件以提高性能. 利用 Resource Estimator 估计设计所需的资源.❶ 从 Xilinx Blockset Basic Elements 库中添加一个Convert模块到 FIR 滤波器的输出 以使输出符合 FIX_8_6 格式并改变quantization 为Truncate , Overflow 为 Wrap❷ 从 Xilinx Blockset Basic Elements 库中添加一个延时部件到输出以实现流水线技术 并提高性能,流水线技术会在输出衰减器中得到实现❸ 确信 FIR size 被设置为 FIX_12_11 , Gateway In size 被设置为 FIX_8_6❺ 从 Xilinx Blockset Index 库中添加Resource Estimator 模块到设计中注意: 注意你的设计应如图 3-11所示.图 3-11. 完成的FIR 滤波器设计.实现 FIR 滤波器 步骤 5实验总流程:设置 FIR 硬件过采样率为 9, FIR 核等待时间为14, 然后运行仿真. 这将更新采样率为 7.407e-008. 按照以下技术要求用系统发生器产生代码. 在工程向导里打开 bandpass_filter.ise 工程, 综合并执行它.• Input : Width = FIX_8_6, Quantization = Truncate,Overflow = Wrap• Output Width: FIX_8_6• FIR Core Latency: 14• FIR Hardware Over-Sampling Rate: 9• FIR Coefficients: FIX_12_12• Compilation: HDL Netlist• Part: Spartan3e xc3s500e-4fg320• Synthesis Tool: XSTStep 1: Generate Filter Coeffici Step 2: Associat e Coeffici Step 3:Simulate the Filter Step 4: Complete the Step 6: Estimate Resource Step 5: Implemen t Design Step 7: Perform HW-in-Step 1: Generate Filter Coeffici Step 2: Associat e Coeffici Step 3:Simulate the Filter Step 4: Complete the Step 6: Estimate Resource Step 5: Implemen t Design Step 7: Perform HW-in-• Target Directory: c:/xup/dsp_flow/labs/lab3/ise• Create Testbench: Unchecked• Simulink System Period (sec): 7.407e-008•FPGA System Clock Period (ns): 20❶ 双击 FIR 模块并设置 Hardware Over-Sampling Rate 为 9 , latency 为 143. Hardware Over-Sampling Rate 设置为 9 后,滤波器的实现结果有何变化? 为何要把它设为 9 而不是 8?❷ 运行仿真. 如果采样率更新窗口出现, 接受采样率为 7.407e-008 并再次运行仿真❸ 双击系统发生器符号并设置以下参数• Compilation: HDL Netlist• Part: Spartan3e xc3s500e-4fg320• Synthesis Tool: XST• Target Directory: c:/xup/dsp_flow/labs/lab3/ise(or ./ise)• Create Testbench: Unchecked• Simulink System Period (sec): 7.407e-008• FPGA System Clock Period (ns): 20❹ 双击 Generate 按钮以产生设计❺ 在资源管理器中双击 bandpass_filter_cw.ise 以打开Project Navigator❹ 高亮突出顶层文件并双击执行4. 利用各种报告, 回答以下问题Slices 的数目:有无定时约束?实际时钟周期:5. 在选择连续执行的情况下, 滤波器的实际时钟是多少?用 Resource Estimator 估计资源利用率 步骤 6实验总流程: 用 Resource Estimator 模块和 post-map 报告, 估计此设计所用的资源. ❶ 双击 resource estimator 模块❷ 从下拉框中选择 Post-Map 并点击 Estimate 按钮.ISE 将自动通过综合和映射来运行并产生映射报告.? Step 1: Generate Filter Coeffici Step 2: Associat e Coeffici Step 3:Simulate the Filter Step 4: Complete the Step 6: Estimate Resource Step 5: Implemen t Design Step 7: Perform HW-in-6. 资源估计器的报告有什么内容?Slices 的数目:FFs 的数目:LUTs 数目:实现 Hardware-in-the-Loop 验证 步骤 7实验总流程: 利用系统发生器产生硬件电路并通过硬件电路板来验证设计. 通过Simulink 仿真这个设计. ❶ 储存模型为 bandpass_filter_hwcosim.mdl ❷• Compilation : Hardware Co-simulation xupsp3e_starter_kit• Synthesis Tool : XST• Target Directory : c:/xup/dsp_flow/labs/lab3/sp3e(or ./sp3e)• Create Testbench: Unchecked• Simulink System Period (sec): 7.407e-008❸ 点击 Generate 按钮,会出现一个对话框,显示编译处理的过程,如图 3-12图 3–12. 在命令窗口的编译过程.❹ 当发生器成功完成后, 一个新的 Simulink 库窗口将打开,并出现一个具有适当输入输出数的模块.图 3–13. 在新的 Simulink 窗口中打开的被编译模块.❹ 复制被编译模块到设计中并连结它如图 3-14所示图 3–14. 在循环仿真中完成硬件的设计准备工作.连接硬件板并通过Simulink 对设计仿真.❶ 把电源线与硬件板相连. 板子的LEDs 将闪亮.❷ 在板子与PC 间连接下载电缆❸ 在硬件协同仿真模块上双击并设置下载电缆为USB.❸在Simulink 窗口中点击 run 按钮 ( ) 以运行仿真. 配置文件将被下载,仿真将开始运行 ❹ 仿真结果将在输出示波器中显示,其中 Simulink 仿真器的输出显示在顶部,硬件输出显示在底部(Figure 3-15)Step 1: Generate Filter Coeffici Step 2: Associat e Coeffici Step 3:Simulate the Filter Step 4: Complete the Step 6: Estimate Resource Step 5: Implemen t Design Step 7: Perform HW-in-图 3–15. 仿真结果,Simulink 仿真器的输出显示在顶部.硬件输出显示在底部❺完成后关闭电源❻储存模块并关闭 MATLAB结论在这个试验里, 你学会了如何用 FDATool 创建滤波器系数并从FIR滤波器模块使用它们.学会使用Resource Estimator模块估计资源占用量.答案A1. 基于定义的技术要求, 最小的滤波器阶数是多少?922. 完成下列与系数相连的信息最大值: 0.1610最小值: -0.15413. Hardware Over-Sampling Rate 设置为 9 后,滤波器的实现结果有何变化? 为何要把它设为 9 而不是8?它指出滤波器可以连续实现. 每次输出会占用9个时钟周期. 设为9而不设为8是因为要实现系数的对称. 在对称的条件下, 可以在通过串行乘法器之前实现采样. 这实现了8位数相加,结果为9位数的执行结果 (位增长).4. 利用各种报告, 回答下列问题Slices的数目: 278有无时间约束? Yes实际的时钟周期: ~146 MHz5. 在你选择连续执行的情况下, 滤波器实际的时钟周期是多少?1.5MHz x 9 = 135 MHz6. 资源估计器的报告内容?Slices的数目: 282FFs的数目: 481LUTs的数目: 410希望以上资料对你有所帮助,附励志名言3条:1、宁可辛苦一阵子,不要苦一辈子。

有限冲激响应滤波器的设计FIRPPT课件


如果H(zi)=0,则H(zi-1)=0。
H(z) z(N1) H(z-1 )
此外,因h(n)是实数,H(z)的零点必成共轭对出现,所
以及
也一定是H(z)的零H点(。zi1 ) zi N1 H(zi ) 0
所以,零点必是互为倒数的共轭对或者说共轭镜像。
z zi * z (zi*)1
21
n0
n0
令m=N-1-n
N 1
h(m)zmz( N 1)
由此可得
m0
H (z)
1 [H(z)
z( N 1) H (z1 )]
1
N 1
h(n) [z n
z( N 1)
zn]
2
2 n0
因此
N 1
z2
N
1
h(n)[
z
(
n
N 1) 2
(n N 1)
z2
]
n0
2
z e j
H
(e
j
)
e
j
(
N 1) 2
( ) 0 , 0
( )
( )
0
0
0
0 0
9
第9页/共58页
( )
0
0
0 0
2.FIR滤波器具有线性相位的条件
h(n)是实序列,且满足偶对称或奇对称,即 h(n)=h(N-1-n)或h(n)=-h(N-1-n),对称轴
h(n)
(N-1)/2 偶对称中心
n N 1 2
h(n)
(N-1)/2 奇对称中心
N 1
N
h(n) cos[(
1 n)]
n0
2
H ()e j ()
11

【大学课件】有限长单位冲激响应(FIR)数字滤波器的设计方法

第六章 有限长单位冲激响应 (FIR)数字滤波器的设计方法(2)
ppt课件
1
6.3 窗函数设计法
顾名思义,窗函数设计法就是利用加窗技术来设计 线性相位FIR滤波器的。
加窗处理是在时域进行的,是一种时域设计方法。
其基本思想是,在给定理想线性相位FIR滤波器的频 率响应函数Hd(ej)的前提下,用有限长的一个h(n)去 逼近理想的hd(n)。这种逼近可以看成是对hd(n)进行 加窗截断处理而得到的。
点和谷底点
在c附近形成了一个过渡带,其中峰值点1到 谷值点2的宽度为=4π/N
在通带和阻带都产生了波动,形成了波纹。波 动的幅度取决于WR(θ)的旁瓣大小,波动快慢 取决于旁瓣数量。
ppt课件
11
设计方法
下面的问题是:可否通过改变参数 N 来改变 上述所提到的波动呢?
答案是:随着 N 值得增大,可以改变窗谱函数的主瓣和旁 瓣宽度,即可改变波动的快慢,但 N 增加并不改变主瓣和
旁瓣的相对比例,这是因为在主瓣附近,较小时
W R()sisn inN 22sin N 2 2NsinN N 22
而主瓣和旁瓣的相对比例是由sinx/x来决定的。故随着
N的增加这一比例并不变化,即N的增加并不会改变肩
峰的相对值,矩形窗其肩峰的相对值总是8.95%
这种现象通常被称为Gibbs效应或Gibbs振荡
ppt课件
2
设计方法
已知理想滤波器的频率响应 Hd(ej)(一般为 具有矩阵形状的频率响应特性)。要求设计一
个FIR滤波器响应
N1
H(ej) h(n)ejn
逼近Hd(ej)
n0
由于 hd(n)21Hd(ej)ejnd
是一个无限长序列,若用有限长的h(n)去逼近它就要

杭电研一课件-4、有限冲击响应滤波器FIR

j n 0
N 1
H (e ) cos( 0 ) h[n] cos(n)
n 0
N 1
H (e ) sin( 0 ) h[n] sin( n)
j n 0
N 1
tg ( )
sin( 0 ) cos( 0 )
0 n 80 otherwise
上式中, c
p s
2
频率特性
2、对称性和线性相位特点
线性相位条件:
N 1 n 0
H (e ) h[n]e j n H ( )e j ( ) H ( ) e j ( )
j
线性相位指θ(ω)是ω的线性函数。 第一类线性相位θ(ω)=-τω 第二类线性相位θ(ω)=β0-τω
布莱克曼窗
因果性获得
hw [n] hd [n]w[n]
上面信号在n<0处也有不等于零的值,不符合因果性。
可以通过对hw[n]进行平移来获得。
h[n] hw [n L]
窗函数法设计步骤
1、给定理想的频率响应函数Hd(ejω)及技术指标 2、求出理想的单位冲激响应hd[n]
3、根据阻带衰减选择窗函数w[n]
1、有限冲激响应FIR:系数a i都等于零,h[n]有限长 ,差分方程非 递归。
2、无限冲激响应IIR:至少有一个系数ai 不等于零,差分方程递归。
FIR的特点
输出是冲激响应h[n]的线性组合。FIR的任何时刻的输出
只取决于输入信号。
H ( z ) b0 b1 z 1 bN z N h[n] {b0 , b1 ,, bN }
本章内容:
1、有限冲激响应滤波器FIR
线性相位,窗函数法,频率抽样法和一致逼近法。

FIR实验


2.用MATLAB计算滤波系数 用来设计标准频率响应的基于窗函数的FIR滤波器,可实现加窗
线性相位FIR数字滤波器的设计。
语法: b=fir1(n,Wn) b=fir1(n,Wn,„ftype‟) b=fir1(n,Wn,Window) b=fir1(n,Wn,„ftype‟,Window) n:滤波器的阶数;Wn:滤波器的截止频率; ftype:用来决定滤波器的类型, 当ftype=high时,可设计高通滤波器; 当ftype=stop时,可设计带阻滤波器。 Window:用来指定滤波器采用的窗函数类型, 其默认值为汉明(Hamming)窗。
四 实验步骤
1 设置软件仿真模式
双击SETUP CCS3.3图标,设置在软件仿真模式。
(芯片选C54X,然后选C5416 simulator。)
2 打开工程文件并编译
打开本实验的工程文件(FIR\FIR.pjt)编译,当编译没 有出错则可生成输出文件(.out文件)。
3 加载并设置断点并进行断点管理
N=0,1,2... 根据系数h 是偶对称,为了简化运算产生如下计算方法 如果一个FIR 滤波有一个冲激响应,h (0),h (1),…,h(N-1),和
x (n)描绘输入的时常滤波n,输出滤波y(n)的 n 给出以下方程式:
y(n)=h(0)x(n)+h(1)x(n-1)+h(2)x(n-2)+…+h(N-1)x[n-(n-1)] 公式1-2
d_data_buffer .usect "fir_bfr",64 FIR_DP d_filin output input d_filout .usect "fir_vars",0 .usect "fir_vars",1 .usect "fir_vars",1 .usect "fir_vars",1 .usect "fir_vars",100h
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验 2 有限冲激响
应滤波器(FIR)算法
实验(1)
精品资料

仅供学习与交流,如有侵权请联系网站删除 谢谢
2
实验 2 : 有限冲激响应滤波器(FIR)算法实验
一、实验目的
1. 熟悉线性相位 FIR 数字滤波器特性;
2.了解各种窗函数对滤波器特性的影响;
3.掌握FIR数字滤波器的窗函数法的设计过程;
4.掌握 FIR 数字滤波器性能测试方法。

二、实验设备
1.PC
兼容机

2.
WIN7 操作系统
3.Code Composer Studio v5

三、实验内容
1
.掌握FIR数字滤波器的基础理论;

2.基于MATLAB的FIR数字滤波器参数确定方法;
3.采用C语言编程实现低通 FIR 滤波器;
4.掌握基于CCS的波形观察方法;观察滤波前后的波形变化。

四.实验原理分析
要求:用窗函数法,设计通带截止频率fp为10kHz,阻带截止频率fst为22kHz,采样
频率fs为50kHz,阻带衰减为72dB的低通滤波器。

解:
(一)、滤波器参数计算
(1)求数字滤波器的参数:
 数字通带截止频率wp为:2πfp/fs = 0.4π
 数字阻带截止频率wst为:2πfst/fs = 0.88π
 过渡带宽为:wst - wp = 0.48π
 过渡带数字中心频率wc为:(wp + wst)/2 = 0.64π
(2)求窗函数的类型:
 根据阻带衰减为72dB的设计要求,选择布莱克曼窗
 窗函数长度为:N >= 11π/( wst - wp),N = 23
阻带边缘频率-通带边缘频率 = 12kHz;
精品资料
仅供学习与交流,如有侵权请联系网站删除 谢谢
3
(二)、基于MATLAB的滤波器参数求解
(1)blackman窗的计算
利用blackman(N)计算blackman窗,其中N为滤波器的点数

(2)验证理想低通滤波器单位冲激响应
利用ideallp(wc,N)计算(-tao,tao)范围内的N点的理想低通滤波器的单位冲激响应
function hd = ideallp( wc,N )
%理想低通滤波器计算
% [hd] = ideallp( wc,N )
% h = 0 ~ N-1之间的理想脉冲响应
% N = 理想低通滤波器的长度
tao = (N-1)/2;
n = [0:1:(N-1)];
m = n-tao+eps;
hd = sin(wc*m)./(m*pi);

end

(3)求解FIR低通数字滤波器的单位冲激响应
hd.*wd’
(三)、基于C语言编程的FIR 数字滤波器编程实现
精品资料

仅供学习与交流,如有侵权请联系网站删除 谢谢
4
程序流程图
五.实验步骤
1.打开 CCS,进入 CCS 的操作环境。
2.打开工程,浏览程序:工程目录为C:\ICETEK\ICETEK-DM6437-
A\Lab0401_FIR

3.点击图标 ,CCS 会自动编译、链接和下载程序。
4.运行程序。可以观察收到的数据。
*选择菜单 Tools->Graph->Dual Time
,进行如下设置:

Dual Time 参数设置
精品资料

仅供学习与交流,如有侵权请联系网站删除 谢谢
5
输入、输出的时域波形
其中,输入波形:一个低频正弦波与一个高频正弦波的叠加;输出波形:经过低
通滤波后的低频正弦波。

*选择菜单 Tools->Graph->Single Time,进行如下设置:显示FIR低通滤波器的单位冲
激响应。

Single Time 参数设置
h(n)的系数
*选择菜单 Tools->Graph->FFT Magnitude,新建 2 个观察窗口,分别进行如下设
置:分别显示输入波形、经低通滤波后输出波形的DFT幅度谱;
精品资料
仅供学习与交流,如有侵权请联系网站删除 谢谢
6
FFT幅度谱的参数设置

输入、输出波形的幅度谱
5.设置断点:在有注释“break point”的语句设置软件断点。
使用菜单的 View->Break points打开断点观察窗口,在刚才设置的断点上
右键->Breadk point properties 调出断点的属性设置界面,设置 Action 为
Refresh All windows。 则程序每次运行到断点,所有的观察窗口值都会被刷
新,观察波形、幅度谱。
6.运行并观察结果:
⑴ 按 F8 键运行程序。
⑵ 观察窗口中时域图形;观察滤波效果。
⑶ 观察窗口中频域图形;理解滤波效果。
7.退出 CCS。
精品资料
仅供学习与交流,如有侵权请联系网站删除 谢谢
7
六.实验结果
输入波形为一个低频率的正弦波与一个高频的正弦波叠加而成。通过观察频域和
时域图,得知:输入波形中的低频波形通过了滤波器,而高频部分则大部分被滤除。

七.问题与思考
基本任务:
1.确定程序中的信号频率,试选用设计不同的信号、噪声组合,基于MATLAB设计不同
的类型的滤波器,并基于CCS实现,并观察实验的结果。
2.分析实验程序,细化算法流程图。
3.结合CCS的使用,分析实验结果
提高任务:
4.尝试使用信号源生成组合信号,经过A/D采样后,送FIR滤波器实现。
源代码:
#include

#define FIRNUMBER 25 /*滤波器的点数*/
#define SIGNAL1F 1000 /*正弦信号频率,没用*/
#define SIGNAL2F 4500 /*正弦信号频率,没用*/
#define SAMPLEF 10000 /*采样频率,没用*/
#define PI 3.1415926

float InputWave(); /*输入给FIR滤波器的信号,每次输出一个点*/
float FIR(); /*FIR滤波器,每次输出一个点*/

float fHn[FIRNUMBER]={ 0.0,0.0,0.001,-0.002,-0.002,0.01,-0.009,
-0.018,0.049,-0.02,0.11,0.28,0.64,0.28,
-0.11,-0.02,0.049,-0.018,-0.009,0.01,
-0.002,-0.002,0.001,0.0,0.0
}; /*可以根据信号频率自行设计*/
float fXn[FIRNUMBER]={ 0.0 }; /*滑动窗内的信号*/
float fInput,fOutput; /*输入点和输出点*/
float fSignal1,fSignal2;
float fStepSignal1,fStepSignal2;
float f2PI;
int i;
float fIn[256],fOut[256]; /*输入波形和输出波形*/
int nIn,nOut; /*输入信号和输出信号的索引*/

main()
{
nIn=0; nOut=0;
精品资料
仅供学习与交流,如有侵权请联系网站删除 谢谢
8
f2PI=2*PI;
fSignal1=0.0; /*信号1的初始相位*/
fSignal2=PI*0.1; /*信号2的初始相位*/
fStepSignal1=2*PI/30; /*信号1的相位步长:f1/fs = 1/30*/
fStepSignal2=2*PI*1.4;
/*信号1的相位步长: f2/fs = 1.4,违背了奈奎斯特采样定律*/
while ( 1 )
{
fInput=InputWave(); /*从输入信号中获取一个点*/
fIn[nIn]=fInput;
nIn++; nIn%=256;
fOutput=FIR(); /*输出一个经滤波后的点*/
fOut[nOut]=fOutput;
nOut++; /* 请在此句上设置软件断点 */
if ( nOut>=256 )
{
nOut=0;
}
}
}

float InputWave()
{
for ( i=FIRNUMBER-1;i>0;i-- )
fXn[i]=fXn[i-1];
fXn[0]=sin(fSignal1)+cos(fSignal2)/6.0;
fSignal1+=fStepSignal1;
if ( fSignal1>=f2PI ) fSignal1-=f2PI;
fSignal2+=fStepSignal2;
if ( fSignal2>=f2PI ) fSignal2-=f2PI;
return(fXn[0]);
}

float FIR()
{
float fSum;
fSum=0;
for ( i=0;i{
fSum+=(fXn[i]*fHn[i]);
}
return(fSum);
}

相关文档
最新文档