必威体育Betway必威体育官网
当前位置:首页 > IT技术

FIR滤波器和IIR滤波器原理及Xilinx System Generator实现

时间:2019-08-07 03:14:26来源:IT技术作者:seo实验室小编阅读:63次「手机版」
 

fir滤波器

1.FIR数字滤波器

有限冲激响应(FIR)滤波器是对N个采样数据执行加权和平均的处理。处理过程公式为:

如三抽头fir滤波器结构:

一个低通滤波器结构:

设计滤波器就是选取合适的滤波器系数W,使滤波器达到设计的要求。

一阶微分滤波器结构:

当低频通过时,因为相邻两个采样点对于低频来说,变化不大,所以差值基本为0,而对于高频来说,相邻采样点变化很大,输出幅度便会很大,所以一阶微分滤波器是高通。

线性相位与非线性相位:

如果滤波器的N个实值系数为对称或者反对称,那么为线性相位。即通过滤波器的所有频率分量具有相同的延迟。该延迟为群延迟,所以对称FIR具有相同的群延迟。

FIR滤波器的转置结构:

转置结构的公式:

不同点在于:

1.标准FIR寄存器是8位的,转置FIR寄存器是16位的。

2.标准FIR关键路径(x路径)上有四个寄存器,转置FIR没有,所以转置FIR工作速度更快。

资源消耗更多但是对于FPGA或者DSP来说,转置FIR更有优势。

2.IIR数字滤波器

无限冲激响应滤波器,可以看做是两个FIR滤波器构成,其中一个FIR在反馈回路中。

IIR的优点是,同样的阶次,比FIR滤波效果好。缺点是,不稳定,存在相位失真,所以FIR更适合自适应滤波器。

公式为:

具有N个前馈系数和M-1个反馈系数。结构如下:

为了保证IIR滤波器的稳定性,需要极点均位于z平面的单位圆内。

3.DA FIR滤波器设计

分布式算术(DA)实现数字滤波器,通过System Generator实现移位寄存器,查找表,查找表加法器,缩放比例加法器,从而构造整个FIR滤波器。首先对对称系数FIR滤波器的表达式进行改写,使更适合用硬件实现。

其中,W是滤波器系数,每一个抽样值用B位比特表示,XB-i为输入值的第B-i个比特位,共有N个采样值参与计算,N个采样值用移位寄存器实现。

移位寄存器:

1.其中SineWave和constant从Simulink Library库Simulink—>Source中拉取。SineWave设置为频率2*pi。

2.Gateway In起采样的作用,采样周期0.001,设置抽样值为定点数,比特数为8位,小数位为4位,有符号数。Gateway Out输出值,两者均在Xilinx Blockset—>Basic Elements中,Gataway In1设置抽样间隔0.001,比特数为1。

3.子系统由Xilinx Blockset—>Basic Elements Black Box实现,共七个Black Box,每个Black Box由VHDL描述其功能并用m文件定义接口,在这里Black Box设置为8位宽输出的D触发器,实现延迟0.001的效果,从而构成7个采样数值。最后包装为子系统。

4.System Generator,控制仿真,Timing设置为0.001抽样。

5.Scope从Sinks库中获得,设置输入为7,设置layout为7,进行仿真。

这里验证设计的移位寄存器是否正确,从仿真结果中看到,是正确的,所以这个移位寄存器模块可以作为后面DA Filter设计了,所设计的子系统为模拟信号输入,输出7个8位连续采样有符号值。

查找表模块:

从公式中可以看到(W1*x1+W2*x2+......W7*x7),对于采样值的每一比特位只有0和1的取值,所以公式仅仅是滤波器系数的加和,例如7个采样值最高位为分别为(7—>1)1100000,则对应上式输出为W7+W6,所以查找表记录的是运算后的结果,但是对于7个比特组合方式太多,所以将7个比特值分为低4位和高3位,分别计算与权值的乘积加和,即分别用查找表实现x4x3x2x1对应的值与x7x6x5对应的值,之后相加。

使用BlackBox实现4比特输入查找表与3比特输入查找表,0000—>1111对应的输出乘积加和与000—>111对应的输出乘积加和。

上图使用Counter计数器分别输出0-15与0-7验证查找表是否正确。这里查找表分别为3位输入与4位输入,输出23位乘积值(其中21位为小数并且为有符号数)。

查找表加法器模块:

这个模块就是将两个查找表模块的值加起来,实现(W1*x1+W2*x2+......W7*x7)。

实现后的查找表加法器模块为23位有符号两输入,23位有符号输出。

缩放比例加法器:

最后就是分别乘上2的i次方然后加起来,作为输出值,缩放比例加法器完成了这个操作。整体结构:

In是查找表加法器输出的值,23位比特其中21位小数位,首先经过Reinterpret强制转换数据格式与类型,转换成无符号数并且小数位为0,乘法器参数设置为(1—>128)无符号8位,设置乘法器输出无符号30位,在Reinterpret8之前均操作为无符号数30位精度,Reinterpret8强制转换为有符号为并且小数位为25。(应该是乘法操作不能使用有符号数,加减法可以使用,有待查阅)。

DA Filter完整设计

两个不同频率的sin波形加在一起,作为滤波信号,首先需要进行抽样与数据转换(Matlab转化为Xilinx),使用Gateway In,并设置抽样周期0.001,使用移位寄存器在一个采样时刻获取7个连续采样值,使用Xilinx库提供的BitBasher提取各个比特值,如提取最高位设置表达式:

同样的操作将7个采样值的8位比特值分别提取出来,送入查找表模块与查找表相加模块,得到每一个比特位的乘积加和,最后送入缩放比列加法器,完成整个表达式。

仿真结果:

效果还是可以的。最后不要忘了加Xilinx的仿真控件并设置时间0.001,一个经常忘记添加的仿真控件。

相关阅读

RF滤波器到底有多重要?一文让你搞明白

RF 滤波器为何越

必不可少的Firefox插件(一)

1. FireBug在众多插件中Firebug无疑是大家最熟悉用的最多的了。Firebug集成在Firefox中,提供了一套开发辅助工具,诸

JavaScript弹出对话框的三种方式-alert()-confirm()-p

JavaScript弹出对话框的三种方式 投稿:mrr 字体:[增加 减小] 类型:转载 时间:2016-03-23 我要评论本文主要介绍了javascript中的三种

【 FPGA 】FIR 滤波器之Single-rate FIR滤波器的系数

首先要明确什么是单速率 FIR 滤波器? The basic FIR filter core is a single-rate (input sample rate = output sample rate) fi

观后总结:Head First设计模式(一)

首先,这是一本轻松的设计模式书,教你如何利用设计模式复用其他人的经验,如何利用设计模式提高代码的可维护性和可扩展性~ Head First

分享到:

栏目导航

推荐阅读

热门阅读