FIR滤波器在光纤陀螺中的应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
表 1 数据选择器真值
输入数据 某一相同位
0000 0001
…
输出数据
0 h ( 3)
…
1111
h(0) + h(1) + h(2) + h(3)
3 采用分布式算法实现 FIR 滤波器
FIR 滤波器的实现结构如图 3 所示. 输入数据 寄存器用来存放读入的待处理数据,这个寄存器用 来存储 16 个输入数据,新进来的值取代最早进入的 值. 数据选择器都为四输入的形式,对应着 4 个待处 理数据. 待处理数据以相同的某一位作为输入,来得 到一个输出. 最后将所有数据选择器的输出进行移 位累加,就可以得到一个滤波输出. 输出调整单元的
滤波器系数为 h( 0) = h ( 15) = - 0. 006 9,
h( 1) = h ( 14) = 0. 001 9,
h ( 2) = h ( 13) = 0. 022 3,
h ( 3) = h ( 12) = 0. 062 2,
h ( 4) = h ( 11) = 0. 119 7,
h ( 5) = h ( 10) = 0. 185 2,
h ( 6) = h ( 9) = 0. 242 9,
h ( 7) = h ( 8) = 0. 276 9 ,
3) 滤波器系数量化 由于 Matlab 生 成 的 参 数 是 浮 点 数,然 而 目 前
FPGA 芯片只能进行定点运算,因此需要先对系数 进行量化处理才能送入 FPGA 中进行运算. 由 FIR 滤波器卷积形式对应的差分方程可知,把全部滤波
减小突变噪声对信号的干扰,另一方面对于随机噪
声也有很好的抑制作用. 采用这种方法设计的滤波
器能够达到很高的数据处理速度,但是频域特性不
易控制[5]. 滤波器的结构如图 1 所示.
所谓平滑滤波就是对所采数据进行 N 点加权
收稿日期: 2011-01-05. 基金项目: 国际科技合作计划基金资助项目( 2010DFR80140) . 作者简介: 闫保中( 1963-) ,男,研究员,主要研究方向: 组合导航,E-mail: heuybz@ 126. com.
图 2 FIR 滤波器的卷积型结构
其对应的差分方程为
N -1
y( n) = ∑h( m) x( n - m) .
m =0
可见,FIR 滤波器可以直接采用乘累加的方式 实现. 目前很多 FPGA 芯片都有内部乘法器,这为实 现 FIR 滤波器提供了方便. 然而如果在工程应用中 仅针对特定型号芯片才有的结构来设计滤波器,显 然不利于代码的移植. 因此采用一种被称为分布式 计算的方法来实现滤波器成为了一种较好的实施方案.
·58·
应
用
作用是调整输出数据位数、速率等.
图 3 FIR 滤波器硬件设计框图
在计 算 y( n) 值的时候,可以先计算 x( n) 高位 的值再计算低位值,然后通过移位寄存器得出最后 结果. verilog HDL 语言的实现方法如下[7]:
y_r < = ( y_r < < 1) + { ( 1ut_out1 + 1ut_out2) ,3’b000} ;
1 平滑滤波器
平均,如下所示:
N -1
y( n)
=
wenku.baidu.com1 N
∑
a
k
X(
n
-
k)
.
k =0
在光纤陀螺的设计中,一般采用权值相等的平滑滤
波器,也就是取 ak = 1,于是平滑滤波器的数学表
达式可以简化为
N -1
y( n)
=
1 N
∑X(
n
- k) .
k =0
可见,平滑滤波器的当前输出值取决于该时刻及以
前的 N - 1 个输入值. 通过这样的计算,一方面可以
接下来的工作就是获取 FIR 滤波器的系数. 数 字滤波器的功能其实就是把输入序列经过加权求和 之后变为输出序列,通过设计加权的幅值可以对输 入序列的频域特性进行改变,也就达到了去除噪声 的作用. 在常系数 FIR 数字滤波器的设计中,只要设 计好滤波系数 h( m) 就完成了滤波器的设计. 可按 照如下步骤获取滤波器系数:
[h( 0) x1 ( n) + h( 1) x1 ( n - 1) + h( 2) x1 ( n - 2) + h( 3) x1 ( n - 3) ]21 +
[h( 0) x0 ( n) + h( 1) x0 ( n - 1) + h( 2) x0 ( n - 2) + h( 3) x0 ( n - 3) ]20 . 式中: Xl( k) 为第 k 个输入数据的 l 位,h( m) ( m = 0,1,2,3) 的数值可以由 Matlab 中的工具箱 fdatool 得到,Xl( k) 的值只可能是 0 或者 1. 因此,4 个输入 数据 x( n) 、x( n - 1) 、x( n - 2) 、x( n - 3) 的任意相同 位的所有可能取值为 0000 ~ 1111. 所以可以采用穷 举法,设计一个四输入的数据选择器来计算每一次 的输入对应的输出,这样便巧妙地避开了使用乘法 器的问题. 数据选择器的真值表见表 1.
YAN Baozhong,WANG Zhenguo
( College of Automation,Harbin Engineering University,Harbin 150001,China)
Abstract: The research on IFOG( interferometric fiber optic gyroscope) can be divided into two sections: the optical path design and the electric circuit design. The arithmetic of digital signal processing affects the accuracy of IFOG. This paper introduces the fundamental principle of smoothing filter and FIR filter based on distributed arithmetic. The fdatool in Matlab toolbox was used to design the filter coefficients,and simulation was done. The results show that the design is reliable and reasonable,and meets the design requirement. The electric circuit of filter hardware was designed with the Verilog HDL. Keywords: Verilog HDL; interferometric fiber optic gyroscope; FIR filter; distributed arithmetic; smoothing filter
第 38 卷第 9 期 2011 年 9 月
应
用
科
技
Applied Science and Technology
doi: 10. 3969 / j. issn. 1009-671X. 2011. 09. 13
Vol. 38,No. 9 Sep. 2011
FIR 滤波器在光纤陀螺中的应用
闫保中,王振国
h( 0) [x1 ( n) 21 + x0 ( n) 20] + h( 1) [x1 ( n - 1) 21 + x0 ( n - 1) 20] + h( 2) [x1 ( n - 2) 21 + x0 ( n - 2) 20] + h( 3) [x1 ( n - 3) 21 + x0 ( n - 3) 20] =
+… + shift_reg[14]+ shift_reg[15]; phlb_result < = ( temp > > > 4) ;
2 采用分布式算法设计 FIR 滤波器
FIR 滤波器是有限长单位冲击响应滤波器的简 称,具有系统单位冲击响应函数有限个零点、系统函 数在有限 z 平面内只有零点、可以实现线性相位滤 波等优点,其卷积型结构如图 2 所示.
Fs Fpass Fstop Wpass Wstop
值 lowpass FIR Equiripple
15 4. 15 0. 518 75 0. 648 437 5
1 80
2) 导出滤波器系数. 点击 fdatool 对话框 file 下面的 Export 将滤波器 系数存储到一个 1 × 16 的矩阵. 按表 2 参数生成的
下面由 FIR 滤波器的卷积型结构差分方程导出
分布式计算方法的公式. 为了方便理解,考虑一个四 阶常系数滤波器,其输入数据 x( n) 是两位二进制 数. 那么对应的差分方程为
3
y( n) = ∑h( m) x( n - m) =
m =0
h( 0) x( n) + h( 1) x( n - 1) + h( 2) x( n - 2) + h( 3) x( n - 3) =
第9 期
闫保中,等: FIR 滤波器在光纤陀螺中的应用
·57·
图 1 平滑滤波器结构
在本设计中,采用一个 16 点滑动滤波器,输入 数据为 14 位,其 verilog 实现代码如下:
cnt < = cnt + 1’b1; shift_reg[cnt]< = ad_out; temp < = shift_reg[0]+ shift_reg[1]
器系数 h( m) 同时放大一定倍数只会使输出 y( n) 放大相应的倍数,并不会影响其频域特性. 将上述 16 个滤波器系数放大 16 384 倍,并转换为 14 位十
1) 设置滤波器参数. 打开 Matlab 软件,在 command window 中输入 fadtool,在弹出 的 对 话 框 中 对 滤 波 器 参 数 进 行 如 下 设置:
科
技
第 38 卷
表 2 滤波器参数
参数 Response Type Design Method Specify order
( 哈尔滨工程大学 自动化学院,黑龙江 哈尔滨 150001)
摘 要: 光纤陀螺的研究主要分为光路和电路 2 个部分,电路部分中数字信号处理的算法影响整个光纤陀螺系
统的精度. 介绍了平滑滤波器和基于分布式算法的 FIR 滤波器的基本原理; 采用 Matlab 工具箱中的 fdatool 设计
了滤波器系数,并进行了仿真,仿真结果表明设计可靠、合理且满足设计要求; 最后使用 Verilog HDL 语言实现
了滤波器硬件电路.
关键词: Verilog HDL; 光纤陀螺; FIR 滤波器; 分布式算法; 平滑滤波器
中图分类号: TN914. 4
文献标志码: A
文章编号: 1009-671X( 2011) 09-0056-04
Research on the practical application of the FIR filter in inter ferometric fiber optic gyroscope
光纤陀螺是用于测量角速率和旋转角位移的装 置,其输出量是输入角速率的函数. 输出量对输入角 速率的导数称为标度因数,在整个动态范围内都需 要有稳定的标度因数. 为了达到对标度因数性能的 要求,一般采用数字闭环的信号处理方案[1-4]. 在数 字闭环的方案中,需要对解调出来的误差信号进行 累加和滤波. 目前,普遍采用平滑滤波器的方式. 平 滑滤波器属于 FIR 滤波器的一类,具有结构简单、算 法易于实现的优点,但是不能够依据实际噪声频率 设计通带频率、阻带频率、通带衰减、阻带衰减等滤 波器参数,因而在此探讨了一种参数可调的 FIR 滤 波器来取代滑动滤波器.
采用这种方法一方面相比直接乘累加的方式节省了 逻辑单元使用量,另一方面在提高滤波器阶数上也 有优势. 采用分布式算法,滤波器的速度不再取决于 阶数,而是输入数据的位数,也就是说完全可以采用 高阶滤波器来实现需求而不必考虑由阶数提高而带 来的速度变慢问题[6]; 然而需要注意的是,FPGA 普 遍采用四输入 LUT 结构,如果采用非 4 个数据为一 个滤波器输入,将造成 FPGA 资源的浪费. 因此以 4 个滤波器系数为一个数据选择器输入进行设计能最 大化地利用 FPGA 里的逻辑单元. 所以滤波器阶数 为 4 的倍数时,FPGA 资源利用率最高.
输入数据 某一相同位
0000 0001
…
输出数据
0 h ( 3)
…
1111
h(0) + h(1) + h(2) + h(3)
3 采用分布式算法实现 FIR 滤波器
FIR 滤波器的实现结构如图 3 所示. 输入数据 寄存器用来存放读入的待处理数据,这个寄存器用 来存储 16 个输入数据,新进来的值取代最早进入的 值. 数据选择器都为四输入的形式,对应着 4 个待处 理数据. 待处理数据以相同的某一位作为输入,来得 到一个输出. 最后将所有数据选择器的输出进行移 位累加,就可以得到一个滤波输出. 输出调整单元的
滤波器系数为 h( 0) = h ( 15) = - 0. 006 9,
h( 1) = h ( 14) = 0. 001 9,
h ( 2) = h ( 13) = 0. 022 3,
h ( 3) = h ( 12) = 0. 062 2,
h ( 4) = h ( 11) = 0. 119 7,
h ( 5) = h ( 10) = 0. 185 2,
h ( 6) = h ( 9) = 0. 242 9,
h ( 7) = h ( 8) = 0. 276 9 ,
3) 滤波器系数量化 由于 Matlab 生 成 的 参 数 是 浮 点 数,然 而 目 前
FPGA 芯片只能进行定点运算,因此需要先对系数 进行量化处理才能送入 FPGA 中进行运算. 由 FIR 滤波器卷积形式对应的差分方程可知,把全部滤波
减小突变噪声对信号的干扰,另一方面对于随机噪
声也有很好的抑制作用. 采用这种方法设计的滤波
器能够达到很高的数据处理速度,但是频域特性不
易控制[5]. 滤波器的结构如图 1 所示.
所谓平滑滤波就是对所采数据进行 N 点加权
收稿日期: 2011-01-05. 基金项目: 国际科技合作计划基金资助项目( 2010DFR80140) . 作者简介: 闫保中( 1963-) ,男,研究员,主要研究方向: 组合导航,E-mail: heuybz@ 126. com.
图 2 FIR 滤波器的卷积型结构
其对应的差分方程为
N -1
y( n) = ∑h( m) x( n - m) .
m =0
可见,FIR 滤波器可以直接采用乘累加的方式 实现. 目前很多 FPGA 芯片都有内部乘法器,这为实 现 FIR 滤波器提供了方便. 然而如果在工程应用中 仅针对特定型号芯片才有的结构来设计滤波器,显 然不利于代码的移植. 因此采用一种被称为分布式 计算的方法来实现滤波器成为了一种较好的实施方案.
·58·
应
用
作用是调整输出数据位数、速率等.
图 3 FIR 滤波器硬件设计框图
在计 算 y( n) 值的时候,可以先计算 x( n) 高位 的值再计算低位值,然后通过移位寄存器得出最后 结果. verilog HDL 语言的实现方法如下[7]:
y_r < = ( y_r < < 1) + { ( 1ut_out1 + 1ut_out2) ,3’b000} ;
1 平滑滤波器
平均,如下所示:
N -1
y( n)
=
wenku.baidu.com1 N
∑
a
k
X(
n
-
k)
.
k =0
在光纤陀螺的设计中,一般采用权值相等的平滑滤
波器,也就是取 ak = 1,于是平滑滤波器的数学表
达式可以简化为
N -1
y( n)
=
1 N
∑X(
n
- k) .
k =0
可见,平滑滤波器的当前输出值取决于该时刻及以
前的 N - 1 个输入值. 通过这样的计算,一方面可以
接下来的工作就是获取 FIR 滤波器的系数. 数 字滤波器的功能其实就是把输入序列经过加权求和 之后变为输出序列,通过设计加权的幅值可以对输 入序列的频域特性进行改变,也就达到了去除噪声 的作用. 在常系数 FIR 数字滤波器的设计中,只要设 计好滤波系数 h( m) 就完成了滤波器的设计. 可按 照如下步骤获取滤波器系数:
[h( 0) x1 ( n) + h( 1) x1 ( n - 1) + h( 2) x1 ( n - 2) + h( 3) x1 ( n - 3) ]21 +
[h( 0) x0 ( n) + h( 1) x0 ( n - 1) + h( 2) x0 ( n - 2) + h( 3) x0 ( n - 3) ]20 . 式中: Xl( k) 为第 k 个输入数据的 l 位,h( m) ( m = 0,1,2,3) 的数值可以由 Matlab 中的工具箱 fdatool 得到,Xl( k) 的值只可能是 0 或者 1. 因此,4 个输入 数据 x( n) 、x( n - 1) 、x( n - 2) 、x( n - 3) 的任意相同 位的所有可能取值为 0000 ~ 1111. 所以可以采用穷 举法,设计一个四输入的数据选择器来计算每一次 的输入对应的输出,这样便巧妙地避开了使用乘法 器的问题. 数据选择器的真值表见表 1.
YAN Baozhong,WANG Zhenguo
( College of Automation,Harbin Engineering University,Harbin 150001,China)
Abstract: The research on IFOG( interferometric fiber optic gyroscope) can be divided into two sections: the optical path design and the electric circuit design. The arithmetic of digital signal processing affects the accuracy of IFOG. This paper introduces the fundamental principle of smoothing filter and FIR filter based on distributed arithmetic. The fdatool in Matlab toolbox was used to design the filter coefficients,and simulation was done. The results show that the design is reliable and reasonable,and meets the design requirement. The electric circuit of filter hardware was designed with the Verilog HDL. Keywords: Verilog HDL; interferometric fiber optic gyroscope; FIR filter; distributed arithmetic; smoothing filter
第 38 卷第 9 期 2011 年 9 月
应
用
科
技
Applied Science and Technology
doi: 10. 3969 / j. issn. 1009-671X. 2011. 09. 13
Vol. 38,No. 9 Sep. 2011
FIR 滤波器在光纤陀螺中的应用
闫保中,王振国
h( 0) [x1 ( n) 21 + x0 ( n) 20] + h( 1) [x1 ( n - 1) 21 + x0 ( n - 1) 20] + h( 2) [x1 ( n - 2) 21 + x0 ( n - 2) 20] + h( 3) [x1 ( n - 3) 21 + x0 ( n - 3) 20] =
+… + shift_reg[14]+ shift_reg[15]; phlb_result < = ( temp > > > 4) ;
2 采用分布式算法设计 FIR 滤波器
FIR 滤波器是有限长单位冲击响应滤波器的简 称,具有系统单位冲击响应函数有限个零点、系统函 数在有限 z 平面内只有零点、可以实现线性相位滤 波等优点,其卷积型结构如图 2 所示.
Fs Fpass Fstop Wpass Wstop
值 lowpass FIR Equiripple
15 4. 15 0. 518 75 0. 648 437 5
1 80
2) 导出滤波器系数. 点击 fdatool 对话框 file 下面的 Export 将滤波器 系数存储到一个 1 × 16 的矩阵. 按表 2 参数生成的
下面由 FIR 滤波器的卷积型结构差分方程导出
分布式计算方法的公式. 为了方便理解,考虑一个四 阶常系数滤波器,其输入数据 x( n) 是两位二进制 数. 那么对应的差分方程为
3
y( n) = ∑h( m) x( n - m) =
m =0
h( 0) x( n) + h( 1) x( n - 1) + h( 2) x( n - 2) + h( 3) x( n - 3) =
第9 期
闫保中,等: FIR 滤波器在光纤陀螺中的应用
·57·
图 1 平滑滤波器结构
在本设计中,采用一个 16 点滑动滤波器,输入 数据为 14 位,其 verilog 实现代码如下:
cnt < = cnt + 1’b1; shift_reg[cnt]< = ad_out; temp < = shift_reg[0]+ shift_reg[1]
器系数 h( m) 同时放大一定倍数只会使输出 y( n) 放大相应的倍数,并不会影响其频域特性. 将上述 16 个滤波器系数放大 16 384 倍,并转换为 14 位十
1) 设置滤波器参数. 打开 Matlab 软件,在 command window 中输入 fadtool,在弹出 的 对 话 框 中 对 滤 波 器 参 数 进 行 如 下 设置:
科
技
第 38 卷
表 2 滤波器参数
参数 Response Type Design Method Specify order
( 哈尔滨工程大学 自动化学院,黑龙江 哈尔滨 150001)
摘 要: 光纤陀螺的研究主要分为光路和电路 2 个部分,电路部分中数字信号处理的算法影响整个光纤陀螺系
统的精度. 介绍了平滑滤波器和基于分布式算法的 FIR 滤波器的基本原理; 采用 Matlab 工具箱中的 fdatool 设计
了滤波器系数,并进行了仿真,仿真结果表明设计可靠、合理且满足设计要求; 最后使用 Verilog HDL 语言实现
了滤波器硬件电路.
关键词: Verilog HDL; 光纤陀螺; FIR 滤波器; 分布式算法; 平滑滤波器
中图分类号: TN914. 4
文献标志码: A
文章编号: 1009-671X( 2011) 09-0056-04
Research on the practical application of the FIR filter in inter ferometric fiber optic gyroscope
光纤陀螺是用于测量角速率和旋转角位移的装 置,其输出量是输入角速率的函数. 输出量对输入角 速率的导数称为标度因数,在整个动态范围内都需 要有稳定的标度因数. 为了达到对标度因数性能的 要求,一般采用数字闭环的信号处理方案[1-4]. 在数 字闭环的方案中,需要对解调出来的误差信号进行 累加和滤波. 目前,普遍采用平滑滤波器的方式. 平 滑滤波器属于 FIR 滤波器的一类,具有结构简单、算 法易于实现的优点,但是不能够依据实际噪声频率 设计通带频率、阻带频率、通带衰减、阻带衰减等滤 波器参数,因而在此探讨了一种参数可调的 FIR 滤 波器来取代滑动滤波器.
采用这种方法一方面相比直接乘累加的方式节省了 逻辑单元使用量,另一方面在提高滤波器阶数上也 有优势. 采用分布式算法,滤波器的速度不再取决于 阶数,而是输入数据的位数,也就是说完全可以采用 高阶滤波器来实现需求而不必考虑由阶数提高而带 来的速度变慢问题[6]; 然而需要注意的是,FPGA 普 遍采用四输入 LUT 结构,如果采用非 4 个数据为一 个滤波器输入,将造成 FPGA 资源的浪费. 因此以 4 个滤波器系数为一个数据选择器输入进行设计能最 大化地利用 FPGA 里的逻辑单元. 所以滤波器阶数 为 4 的倍数时,FPGA 资源利用率最高.