有限冲击响应FIR_滤波器的设计完美版
有限冲激响应滤波器设计

(2)H() 对 呈奇对称,对 0, 2 呈偶对称。
相位函数的特点:同I型线性相位滤波器。
3.Ⅲ型线性相位滤波器
由于Ⅲ型线性相位滤波器关于 N 1 奇对称,且 为整数,
2
所以,其频率响应可以表示为
其中
( N 1) / 2
H (e j ) je j( N 1) / 2
c(k) sin(k) (7.16)
但是,要取得很好的衰减特性,FIR滤波器的阶次比HR 滤波器的要高。
本章主要讨论线性相位滤波器的设计。
7. 1 线性相位FIR滤波器的特点
7.1.1 线性相位条件
如果一个线性移不变系统的频率响应有如下形式:
H (e j ) H ( )e j () | H (e j ) | e j
则其具有线性相位。这里 是一个实数。
n0
2
其中
b(k) 2h( N k) 2
k 1, 2,..., N 2
幅度函数为 相位函数为
H () N /2 b(k) cos[(k 1)]
n0
2
() (N 1)
2
(7.14) (7.15)
Ⅱ型线性相位滤波器的幅度函数和相位函数的特点:
幅度函数的特点:
(1)当 时,H( ) =0,也就是说 H(z)在 z 1处必然有一
有限长单位冲激响应数字滤波器的特点:
有限长单位冲激响应(FIR)可以做成具有严格的线性 相位,同时又可以具有任意的幅度特性。
FIR滤波器的单位抽样响应是有限长的,因而FIR滤波器 一定是稳定的。
只要经过一定的延时,任何非因果有限长序列都能变成 因果的有限长序列,总能用因果系统来实现。
FIR滤波器由于单位冲激响应是有限长的,因而可以用 快速傅里叶变换(FFT)算法来实现过滤信号,从而可 大大提高运算效率。
有限冲激响应滤波器的设计

3.Ⅲ型线性相位滤波器
由于Ⅲ型线性相位滤波器关于 奇对称,且 为整数,所以,其频率响应可以表示为 (7.16) 其中
幅度函数为 (7.17) 相位函数为 (7.18)
2
则 就具有线性相位, 。
3
并考虑| |=1,等效地指定
4
(7.48)
5
根据DFT的性质可知,为保证 是实序列,应满足下列对称关系
6
(7.49)
7
由于
(7.50)
当N为偶数时, ;当N为奇数时, 。这样当N为偶数时,若按式(7.48)对 赋值,就不能满足式(7.49)的对应关系。由此,按如下原则对 赋值。
选取一个满意的窗函数,令
(7.41)
则 即为要设计的滤波器的单位抽样响应。
按上述方法设计的滤波器,由于满足了 的对称关系,因此都具有线性相位。
由DFT定义,得
(7.42)
令
(7.43)
频率抽样法是从频域出发,把给定的理想频率响应 加以等间隔抽样,即
Ⅳ型线性相位滤波器
型线性相位滤波器关于 奇对称,且N为偶数,所以 为非整数。其频率响应可以表示为 (7.19) 其中
1
2
幅度函数为 (7.20) 相位函数为 (7.21)
Ⅳ型线性相位滤波器的幅度函数和相位函数的特点: 幅度函数的特点: (1) 在 处必为零,也就是说 在 处为零点 ; (2) 在 处呈奇对称,在 处呈偶对称 相位函数的特点:同Ⅲ型线性相位滤波器。
7 有限长单位冲激响应FIR滤波器的设计方法

第7章 有限长单位冲激响应FIR滤波器的设计方法
4. 第四种类型:h(n)为奇对称,N为偶数
N 2
1
n
e
j
N 1 2
j
/2
N 1 n0
h(n)
sin
N 1 2
n
所以有:
H
()
N 1 n0
h(n)
sin
N 1 2
n
()
N 1 2
第7章 有限长单位冲激响应FIR滤波器的设计方法
式中:
b(n) 2h N n 2
n=1,2, 3, …, N/2
当ω=π时,
c
os
n
1 2
0
,余弦项对ω=π呈奇对称,
因此H(π)=0,即H(z)在z=ejπ=-1 处必然有一个零点,而且H(ω)对
2h(n)
n0
c
os
N 2
1
n
令 n N m ,代入上式可得
2
H ( )
N /22h m1
ቤተ መጻሕፍቲ ባይዱ
N 2
m
cos
m
1 2
因此
H
(
)
N /2
b(n)
n1
c os
n
1 2
20
2
有限脉冲响应FIR滤波器的完美设计.doc

有限脉冲响应FIR滤波器的完美设计专业课学生有限脉冲响应FIR滤波器的设计一、设计目的1.掌握数字滤波器的设计过程;2.了解飞行情报区的原则和特点;3.熟悉FIR数字滤波器设计的原理和方法;4.学习FIR滤波器的DSP实现原理;5、学会使用ccs波形观察窗来观察输入输出信号的波形和频谱变化。
二、设计内容1.通过MATLAB设计低通滤波器,并对其进行仿真,确定FIR 滤波器系数;2.用DSP汇编语言编程实现FIR运算,滤除产生的复合信号中的高频成分,观察滤波前后的波形变化。
第三,设计原理滤波器是在时域或频域中对已知激励产生特定响应的网络。
为了使它能够从信号中提取有用的信号,并抑制和衰减不必要的信号,滤波器的设计实质上是为所提出的要求给出相应的性能指标。
然后,通过计算,物理上可实现的实际滤波器响应特性接近给定的频率响应特性。
FIR数字滤波器是一个非递归系统,它的传递函数是:H (z)=Y(Z)/X(Z)=∑b(n)z-一、设计目的1.掌握数字滤波器的设计过程;2.了解飞行情报区的原则和特点;3.熟悉FIR数字滤波器设计的原理和方法;4.学习FIR滤波器的DSP实现原理;5、学会使用ccs波形观察窗来观察输入输出信号的波形和频谱变化。
二、设计内容1.通过MATLAB设计低通滤波器,并对其进行仿真,确定FIR 滤波器系数;2.用DSP汇编语言编程实现FIR运算,滤除产生的复合信号中的高频成分,观察滤波前后的波形变化。
第三,设计原理滤波器是在时域或频域中对已知激励产生特定响应的网络。
为了使它能够从信号中提取有用的信号,并抑制和衰减不必要的信号,滤波器的设计实质上是为所提出的要求给出相应的性能指标。
然后,通过计算,物理上可实现的实际滤波器响应特性接近给定的频率响应特性。
FIR数字滤波器是一个非递归系统,它的传递函数是: h(z)=y(z)/x(z)=∑b (n)z:y(n)=∑h(I)x(n-I)其激励响应h(n)是一个有限长度序列,实际上是滤波器系数向量b(n),n是FIR滤波器的阶数。
实验六 有限冲激响应(FIR)数字滤波器的设计

实验报告一、实验目的1.掌握用窗函数法设计FIR 数字滤波器的原理与方法;2.熟悉线性相位FIR 数字滤波器特性;3.了解各种窗函数对滤波特性的影响。
4.加深对数字滤波器的常用指标和设计过程的理解。
二、实验原理低通滤波器的常用指标:P P P for H Ω≤Ω+≤Ω≤-,1)(1δδπδ≤Ω≤Ω≤ΩS S for H ,)(通带边缘频率P Ω,阻带边缘频率S Ω ,通带起伏P δ,通带峰值起伏])[1(log 2010dB p p δα--=,阻带起伏s δ,最小阻带衰减])[(log 2010dB s S δα-=。
数字滤波器有IIR 和FIR 两种类型,它们的特点和设计方法不同。
在Matlab 中,可以用b=fir1(N,Wn,’ftype’,taper) 等函数辅助设计FIR 数字滤波器。
N 代表滤波器阶数;Wn 代表滤波器的截止频率(归一化频率),当设计带通和带阻滤波器时,Wn 为双元素相量;ftype 代表滤波器类型,如’high ’高通,’stop ’带阻等;taper 为窗函数类型,默认为海明窗,窗系数需要实现用窗函数blackman, hamming,hanning chebwin, kaiser 产生。
三、实验设备微型计算机、Matlab7.0教学版。
S PP SPassband StopbandTransition bandFig 1 Typical magnitudespecification for a digital LPF四、实验内容1.编制能产生矩形窗、海明窗的窗函数子程序;2.编写主程序,用不同窗设计线性相位低通FIR数字滤波器;3.对结果进行分析。
五、实验数据1.用Matlab软件编写的实验程序1(采用矩形窗)为:图1 用Matlab软件编写的实验程序1(采用矩形窗)实验结果:①. 振幅、相位:图2 振幅、相位波形图(采用矩形窗)②. 输入、输出信号:图3 输入、输出信号波形图(采用矩形窗)2.用Matlab软件编写的实验程序2(采用海明窗)为:图4 用Matlab软件编写的实验程序2(采用海明窗)说明:程序中第11行程序右边的注释应为“%采用海明窗”。
有限冲击响应滤波器 (FIR)

§4.5 [实验4.5] 有限冲击响应滤波器 (FIR) 实现一、实验目的1. 掌握FIR 滤波器的原理和窗函数设计法;2. 掌握用C 语言编写DSP 程序的方法。
二、实验设备1. 一台装有CCS 软件的计算机;2. DSP 实验箱的TMS320C5416主控板;3. DSP 硬件仿真器。
三、实验原理数字滤波是DSP 的最基本的应用领域之一。
对于许多应用来说,数字滤波一般具有如下的差分方程形式:()()()∑-+∑-=-=-=110N k k N k k k n y b k n x a n y式中,X(n) 为输入序列,Y(n)为输出序列,A k 和B k 为滤波器系数,N 是滤波器的阶数。
若式中所有的B k 均为零,且通常把系数A k 记为h k , 则有:()()∑-=-=1N k k k n x h n y上式就是FIR 滤波器的差分方程了。
FIR 滤波器的最主要的特点是没有反馈回路,因此它是无条件稳定系统。
它的单位脉冲响应h(n)是一个有限长序列。
由上面的方程可见,FIR 滤波算法实际上是一种乘法累加运算,它不断地输入样本x(n),经延时 (z –1),做乘法累加,再输出滤波结果 y(n)。
要设计一个FIR 滤波器就是要求出它的冲击响应系数h(n),设计方法主要有窗函数法和频率抽样法,本实验要求掌握窗函数法,这也是最基本的方法。
理想的低通滤波器的频率响应Hd (w)是一个矩形,这意味着它在时域上是无限长的序列,这在实际上是不可能实现的。
因此我们要采取某种方法截断 Hd(n),可以用一个有限长度的窗函数序列w(n)与之相乘。
这个窗函数序列的形状和长度都会对最后系统的频率响应特性产生影响,因此对窗函数的分析和选择是设计FIR 滤波器的关键问题所在。
本实验举了五种常用的窗函数为例,通过设置参数可以得到加上不同窗后的冲击响应序列h(n),并且可以观察到其幅频响应图。
关于根据给定频率要求进行FIR 滤波器设计的详细原理,以及在求得符合要求的h(n)后如何对输入信号序列进行滤波,请读者参考数字信号处理的有关资料。
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、宁可辛苦一阵子,不要苦一辈子。
FIR(有限冲激响应)滤波器

FIR(有限冲激响应)滤波器仅供教学使用实验 3: 设计 FIR(有限冲激响应)滤波器针对 Spartan-3E 开发套件介绍在这个实验里, 将向你展示通过系统发生器的FIR 和 FDAT ool模块来指定、模拟和实现FIR滤波器的方法. FDATool 模块被用来定义滤波器的阶数和系数, FIR模块被用作 Simulink模拟以及在FPGA中用Xilinx ISE来实现设计.你也可以通过实际硬件来运行它以验证这个设计的功能.注意:在 c:\xup\dsp_flow\labs\labsolutions\lab3\ 目录下有完整的例子.目标在完成这个试验后, 你将能够:用FDAT ool 模块输入你的滤波器指数,在设计中使用产生的系统或把它储存在工作区使用具有 FDATool 模块产生的系数的FIR模块, 并在Simulink中运行 bit-true 仿真产生设计并用 Resource Estimator 模块和post-map 报告估计资源利用量设计描述你是Cyberdyne系统的一个dsp设计者. 你的公司正在调查用数字滤波器代替安防检测器中的模拟滤波器,以尝试提高性能和降低整个系统的成本. 这将使贵公司可以进一步渗入日益增长的安防市场. 一个单频取样滤波器设计如下:Sampling Frequency (Fs)(采样频率) = 1.5 MHzFstop 1 = 270 kHzFpass 1 = 300 kHzFpass 2 = 450 khzFstop 2 = 480 kHzAttenuation on both sides of the passband(双边通频带衰减)= 54 dBPass 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,你将用系统发生器的FDAT ool模块来产生指定FIR滤波器的系数. 在步骤2, 你将把这个系数与 FIR filter 模块联系起来. 步骤3要求你用两个已提供的输入源仿真这个设计并分析系数和输入信号宽度变化的影响. 在步骤4, 你将要添加一个转换模块以调整输出宽度,添加一个延时模块以提高效率,添加一个资源估计模块以估计资源占用量,从而完成整个设计. 在下一步将实现这个设计. 在每一步总的指示下面, 你会发现手把手的说明和图表,指出了实现总的指示的更多细节. 如果你对个别指导有信心, 可以略过手把手的说明,跳到下一步的总指示.注意:如果你当时不能完成这个实验, 你可以从Xilinx大学计划网站/doc/20a485b069dc5022aaea005b.ht ml 下载实验文件产生FIR滤波器所需的系数步骤 1实验总流程:从Xilinx Blockset → DSP blockset中添加FDAT ool模块到包含一个 DA FIR 滤波器的设计中. 按照下列要求用FDAT ool模块产生FIR滤波器的系数Sampling Frequency (Fs)(采样频率) = 1.5 MHzFstop 1 = 270 KHzFpass 1 = 300 KHzFstop 2 = 480 KHzAttenuation on both sides of the passband(双边通频带衰减)= 54 dB ?Pass band ripple(通频带脉动) = 1步骤 2:把系数与滤波器相关联步骤 3:仿真滤波器步骤 4:完成整个设计Step 6:估计资源占用量Step 5:实现设计Step 7:执行 HW-in-the-Loop验证在 Matlab中, 改变目录为c:/xup/dsp_flow/labs/lab3/: 在命令行窗口键入cd c:/xup/dsp_flow/labs/lab3/ .从MATLAB控制台窗口打开bandpass_filter.mdl模块从Xilinx Blockset → DSP添加FDATool模块到这个设计在FDAT ool Design Filter窗口 (图 3-1)输入下列滤波器参数Response Type: BandpassUnits: KHzSampling Frequency (Fs) = 1.5 MHzFpass 1 = 300 KHzFpass 2 = 450 KhzFstop 2 = 480 KHzAttenuation 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实验总流程:Step 1: Generate Filter CoefficientsStep 3: Simulate theFilterStep 4: Complete the Design从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 CoefficientsNumber of bits per Coefficients : 12Binary Point for Coefficients : 11Provide Valid Ports : unchecked图 3-4. FIR 滤波器模块参数.点击OK以接受设置如图 3-5所示连接设计的各个模块Step 6:EstimateResourcesStep 5:ImplementDesignStep 7:Perform HW-in-the-LoopVerification图 3-5. 设计用来仿真的FIR 滤波器模块.在Simulink中仿真 FIR 滤波器步骤 3实验总流程:设置样值输入为FIX_8_6 ,输入采样周期为1/1500000. 利用频谱示波器, 研究 chirp 和 noise 信号的输出.双击Gateway In模块并设置格式为FIX_8_6,采样周期为1/1500000选择Chirp信号为输入源并开始仿真如果你收到下列错误, 根据消息更新FIR的等待时间, 并再次仿真.Step 1:GenerateFilterCoefficientsStep 2:AssociateCoefficientsto FilterStep 4:Complete theDesignStep 6:EstimateResourcesStep 5:ImplementDesignStep 7:Perform HW-in-the-LoopVerification调出示波器并验证一直衰减的FIR滤波器的输出信号,这些信号应如图 3-7 和图 3-8所示.图 3-7. 无衰减通频带 (频谱示波器).图 3-8. 禁带衰减 (频谱示波器).停止仿真选择Random Source并运行仿真停止仿真完成 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 滤波器步骤 5Step 1: Generate Filter CoefficientsStep 2: Associate Coefficients to FilterStep 3: Simulate the FilterStep 6: Estimate ResourcesStep 5: Implement DesignStep 7: Perform HW-in-the-Loop Verification实验总流程:设置 FIR 硬件过采样率为 9, FIR 核等待时间为14, 然后运行仿真. 这将更新采样率为 7.407e-008. 按照以下技术要求用系统发生器产生代码. 在工程向导里打开bandpass_filter.ise工程, 综合并执行它.Input : Width = FIX_8_6, Quantization = Truncate, Overflow = Wrap ?Output Width: FIX_8_6FIR Core Latency: 14FIR Hardware Over-Sampling Rate: 9FIR Coefficients: FIX_12_12Compilation: HDL NetlistPart: Spartan3e xc3s500e-4fg320Synthesis Tool: XSTTarget Directory: c:/xup/dsp_flow/labs/lab3/iseCreate Testbench: UncheckedSimulink System Period (sec):7.407e-008FPGA 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 NetlistPart: Spartan3e xc3s500e-4fg320Step 1:GenerateFilterCoefficientsStep 2:AssociateCoefficientsto FilterStep 3:Simulate theFilterStep 4:Complete theDesignStep 6:EstimateResourcesStep 7:Perform HW-in-the-LoopVerificationSynthesis Tool: XSTTarget Directory: c:/xup/dsp_flow/labs/lab3/ise (or ./ise)Create Testbench: UncheckedSimulink System Period (sec):7.407e-008FPGA 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 将自动通过综合和映射来运行并产生映射报告.6. 资源估计器的报告有什么内容?Step 1:GenerateFilterCoefficientsStep 2:AssociateCoefficientsto FilterStep 3:Simulate theFilterStep 4:Complete theDesignStep 5:ImplementDesignStep 7:Perform HW-in-the-LoopVerificationSlices 的数目: FFs 的数目: LUTs 数目:实现 Hardware-in-the-Loop 验证步骤 7实验总流程:利用系统发生器产生硬件电路并通过硬件电路板来验证设计. 通过Simulink仿真这个设计.储存模型为 bandpass_filter_hwcosim.mdl双击系统发生器符号并设置以下参数Compilation : Hardware Co-simulation → xup → sp3e_starter_kit ? Synthesis Tool : XSTTarget Directory : c:/xup/dsp_flow/labs/lab3/sp3e (or ./sp3e) ? Create Testbench: UncheckedSimulink System Period (sec): 7.407e-008点击Generate 按钮,会出现一个对话框,显示编译处理的过程,如图 3-12图 3–12. 在命令窗口的编译过程.Step 1: Generate Filter CoefficientsStep 2: Associate Coefficients to FilterStep 3: Simulate the FilterStep 4: Complete the DesignStep 6: Estimate ResourcesStep 5: Implement Design当发生器成功完成后, 一个新的Simulink 库窗口将打开,并出现一个具有适当输入输出数的模块.图 3–13. 在新的 Simulink 窗口中打开的被编译模块.复制被编译模块到设计中并连结它如图 3-14所示图 3–14. 在循环仿真中完成硬件的设计准备工作.连接硬件板并通过Simulink对设计仿真.把电源线与硬件板相连. 板子的LEDs 将闪亮.在板子与PC间连接下载电缆在硬件协同仿真模块上双击并设置下载电缆为USB.在Simulink窗口中点击run按钮 ( ) 以运行仿真. 配置文件将被下载,仿真将开始运行仿真结果将在输出示波器中显示,其中 Simulink 仿真器的输出显示在顶部,硬件输出显示在底部(Figure 3-15)图 3–15. 仿真结果,Simulink 仿真器的输出显示在顶部.硬件输出显示在底部完成后关闭电源储存模块并关闭 MATLAB结论在这个试验里, 你学会了如何用 FDAT ool 创建滤波器系数并从FIR 滤波器模块使用它们.学会使用Resource Estimator模块估计资源占用量.1. 基于定义的技术要求, 最小的滤波器阶数是多少?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。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
专业班级 学号 姓名 成绩有限冲击响应FIR 滤波器的设计一、设计目的1、掌握数字滤波器的设计过程;2、了解FIR 的原理和特性;3、熟悉设计FIR 数字滤波器的原理和方法;4、学习FIR 滤波器的DSP 实现原理;5、学习使用ccs 的波形观察窗口观察输入、输出信号波形和频谱变化情况。
二、设计内容1、通过MATLAB 来设计一个低通滤波器,对它进行模拟仿真确定FIR 滤波器系数;2、用DSP 汇编语言进行编程,实现FIR 运算,对产生的合成信号,滤除信号中高频成分,观察其滤波前后的波型变化。
三、设计原理滤波器就是在时间域或频域内,对已知激励产生规定响应的网络。
使其能够从信号中提取有用的信号,抑制并衰减不需要的信号,滤波器的设计实质上就是对提出的要求给出相应的性能指标.再通过计算,使物理可实现的实际滤波器响应特性逼近给出的频率响应特性。
FIR 数字滤波器是一种非递归系统,其传递函数为: H (z) =Y(Z)/X(Z)=∑b(n)z -n……………………………………装………………………………………订…………………………………………线………………………………………由此可得到系统的差分方程为:y(n ) = ∑h ( i ) x ( n -i)其激响应h(n)是有限长序列,它其实就是滤波器系数向量b ( n ) , N 为FIR 滤波器的阶数.在数字信号处理应用中往往需要设计线性相位的滤波器,FIR 滤波器在保证幅度特性满足技术要求的同时,易做到严格的线性相位特性。
为了使滤波器满足线性相位条件,要求其单位脉冲响应h(n)为实序列,且满足偶对称或奇对称条件,即h ( n )=h(N-1-n)或h(n)=h(N-1-n)。
这样,当N 为偶数时,偶对称线性相位F 讯滤波器的差分方程表达式为Y(n)= ∑h ( i ) (x ( n -i)+x(N-1-n-i))由上可见,FIR 滤波器不断地对输入样本x(n)延时后,再做乘法累加算法,将滤波器结果y(n)输出。
因此,FIR 实际上是一种乘法累加运算。
而对于线性相位FIR 而言,利用线性相位FIR 滤波器系数的对称特性,可以采用结构精简的FIR 结构将乘法器数目减少一半。
FIR滤波器的单位脉冲h(n)是一个有限长序列。
若h(n)为实数,且满足偶对称或是奇对称的条件,则FIR滤波器具有相位特性,FIR数字滤波器具有以下几个特点:FIR滤波器无反馈回路,是一种无条件稳定系统。
四、总体方案设计1、有给定的设计参数,滤波器系数可由MATLAB中的函数产生。
2、在CCS中采用汇编源程序来实现FIR数字滤波器步骤1):创建工程文件project/new/myproject 保存时加后缀。
2):在file/new/sourcefile进行汇编语言并将其添加到工程文件。
3):编译汇编链接project/build生成out文件。
4):file/load program。
5):执行文件。
五、主要参数滤波器阶数为17 , a1=a15=0,a2=a14=158,a3=a13=264,a4=a12=-290,a5=a11=-1406,a6=a10=3187,a7=a9=9287,a8=12272。
六、设计步骤1、启动CCS ,在CCS 中建立一个汇编源文件、建立一个C 源文件和一个命令文件,并将这三个文件添加到工程,再编译并装载程序。
2、设置波形时域观察窗口,得到其滤波前后波形变化图;3、设置频域观察窗口,得到其滤波前后频谱变化图。
七、源程序1、汇编源文件;一个FIR滤波器源程序fir.asm.mmregs.global start.def start,_c_int00INDEX .set 1KS .set 256 ;模拟输入数据缓冲区大小N .set 17COFF_FIR .sect "COFF_FIR" ;FIR滤波器系数.word 0.word 158.word 264.word -290.word -1406.word -951.word 3187.word 9287.word 12272.word 9287.word 3187.word -951.word -1406.word -290.word 260.word 158.word 0.dataINPUT .copy "firin.inc" ;模拟输入在数据存储区0x2400 OUTPUT .space 1024 ;输出数据在数据区0x2500;FIR_DP .usect "FIR_V ARS",0;D_FIN .usect "FIR_V ARS",1;D_FOUT .usect "FIR_V ARS",1COFFTAB .usect "FIR_COFF",NDA TABUF .usect "FIR_BFR",NBOS .usect "STACK",0FhTOS .usect "STACK",1.text.asg AR0,INDEX_P.asg AR4,DA TA_P ;输入数据x(n)循环缓冲区指针.asg AR5,COFF_P ;FIR系数表指针.asg AR6,INBUF_P ;模拟输入数据指针.asg AR7,OUTBUF_P;FIR滤波器输出数据指针_c_int00b startnopnopstart: ssbx FRCTSTM #COFFTAB,COFF_PRPT #N-1 ;将FIR系数从程序存储器移动MVPD #COFF_FIR,*COFF_P+ ;到数据存储器STM #INDEX,INDEX_PSTM #DATABUF,DA TA_PRPTZ A,#N-1STL A,*DATA_P+ ;将数据循环缓冲区清零STM #(DATABUF+N-1),DA TA_P ;数据缓冲区指针指向x[n-(N-1)]STM #COFFTAB,COFF_P ;FIR_TASK:STM #INPUT,INBUF_PSTM #OUTPUT,OUTBUF_PSTM #KS-1,BRCRPTBD LOOP-1STM #N,BK ;FIR循环缓冲区大小LD *INBUF_P+,A ;装载输入数据FIR_FILTER:STL A,*DATA_P+%RPTZ A,N-1MAC *DATA_P+0%,*COFF_P+0%,ASTH A,*OUTBUF_P+LOOP:EEND B EEND.end2、链接程序fir.obj-m fir.map-o fir.outMEMORY{PAGE 0: ROM1(RIX) :ORIGIN=0080H,LENGTH=100HPAGE 1: INTRAM1(RW) :ORIGIN=2400H,LENGTH=0200HINTRAM2(RW) :ORIGIN=2600H,LENGTH=0100HINTRAM3(RW) :ORIGIN=2700H,LENGTH=0100HB2B(RW) :ORIGIN=0070H,LENGTH=10H}SECTIONS{.text : {}>ROM1 PAGE 0.data : {}>INTRAM1 PAGE 1FIR_COFF: {}>INTRAM2 PAGE 1FIR_BFR : {}>INTRAM3 PAGE 1.stack : {}>B2B PAGE 1}3、执行程序--------- ---- --- --------------0000:0080 FIR.ASM:46:75$, ___text__, .text, _c_int00--------- ---- --- ----------------------- ---- --- --------------0000:0084 start--------- ---- --- ----------------------- ---- --- ----------------------- ---- --- ----------------------- ---- --- ----------------------- ---- --- ----------------------- ---- --- ----------------------- ---- --- ----------------------- ---- --- ----------------------- ---- --- --------------0000:0095 FIR_TASK--------- ---- --- ----------------------- ---- --- ----------------------- ---- --- ----------------------- ---- --- ----------------------- ---- --- ----------------------- ---- --- --------------0000:00A0 FIR_FILTER--------- ---- --- ----------------------- ---- --- ----------------------- ---- --- --------------0000:00A5 EEND, LOOP--------- ---- --- --------------0000:00A7 COFF_FIR, etext, ___etext__--------- ---- --- --------------八、实验结果及分析1、设置波形时域观察窗口,得到其滤波前后波形变化图2、设置频域观察窗口,得到其滤波前后频谱变化图滤波前频谱图滤波后频谱图太原理工大学现代科技学院课程设计九、设计总结在这次DSP课程设计中,我受益匪浅!这期间学到了更多CCS软件的知识,同时也对这个软件的操作更加熟悉。
用DSP 实现FIR数字滤波,具有稳定性好、准确度高、灵活性好、不受环境影响等优点。
在完成这个设计的过程中我遇到了好多操作问题,好多次都想放弃,因为有了老师的悉心指导和同学的热心帮助,才能坚持把它完成了!这也使我意识到合作的重要性,还有解决一个个难题后的喜悦,难以言表!这次的DSP设计提到的不仅是我们的专业知识,还有一个大学生应该具有正确的学习、生活态度:认真、严谨、坚持、交流等等。
“细节决定成败!”再次被验证,特别是编程的时候。
任何一的小小的失误都会造成严重的后果。