杨晓晗 李彬华 丁 旭
(昆明理工大学信息工程与自动化学院,昆明 650500)
基于FPGA的光栅信号FIR滤波器实现
杨晓晗 李彬华 丁 旭
(昆明理工大学信息工程与自动化学院,昆明 650500)
为了去除实测光栅信号的噪声干扰,提高信号的细分精度,提出一种基于FPGA的光栅信号FIR滤波器实现方法。给出滤波器的基本原理和设计流程。通过DSP Builder和Matlab/Simulink完成了滤波器模块的设计和仿真,并将此模块直接转换成VHDL语言,用Modelsim的RTL进行仿真,验证了VHDL模块的正确性。滤波结果表明:示波器的实测光栅信号和滤波后的光栅信号与Matlab/Simulink、DSP Builder模型仿真结果相同,设计的32阶FIR滤波器在FPGA开发板的实现效果即示波器观测到的输入输出信号,证明该滤波器设计的可行性及其良好的滤波效果。
FIR滤波器 光栅信号 DSP Builder FPGA Matlab/Simulink
光栅测量技术是以光栅付相对移动所形成的莫尔条纹信号为基础的。光栅付的相对移动使透射光的光强呈周期性变化,该周期性光信号经光电转换后成为正弦波信号。正弦波信号每变化一个周期,表示被测物体移动一个光栅栅距。为了提高被测物体移动距离的检测精度和分辨率,大多数研究人员侧重研究的是对光栅信号的电子学细分处理方法[1]。但是,大部分细分方法所用的光栅信号都是理想的正余弦波,而且细分倍数越高,对光栅信号的要求越严格。而光栅测量系统产生的莫尔信号不可避免地会引入噪声干扰,使得实际情况下很难得到理想的莫尔条纹,光电元件的输出波形变为带有杂波的近似正余弦曲线[2]。因此,需要对光栅信号进行滤波处理,消除噪声对它产生的影响。目前,滤波器设计主要有软件实现和硬件实现两种方式[3]。软件实现是利用计算机的存储器、运算器和控制器完成滤波运算程序,但此方法速度慢且难以对信号进行实时处理。硬件实现多利用现场可编程门阵列(Field-Programmable Gate Array,FPGA)结合乘法和累加构成的卷积运算实现滤波器。FPGA具有体积小、速度快、功耗低及可靠性高等优点,但它在实现复杂算法时可行性较差。在比较各种实现有限长单位冲激响应(Finite Impulse Response,FIR)滤波器方法的优缺点后,Altera公司推出了专门针对数字信号处理器的设计软件DSP Builder[4],使得滤波器设计效率大为提高,但它很少应用于光栅信号的滤波处理。
在此,笔者提出一种基于Matlab/Simulink、DSP Builder及QuartusII等软件的FPGA开发板环境下的32阶FIR滤波器,对实测的光栅信号进行滤波去噪处理,以得到较为理想的正弦信号。
通过云南天文台经纬仪的读数头SR050A采集到的光栅信号如图1所示。示波器将采集的光栅信号保存为csv格式,然后导入Matlab中,并将它归一化量化为8位数据。这是因为FPGA开发板自带的是8位AD芯片TLC5510。由于示波器的采样频率为100kHz,所以将对应的采样时间和数据一起导入Simulink的From Workspace模块中,即完成了光栅信号数据的导入过程。
图1 实测光栅信号
2.1FIR滤波器的基本原理
FIR滤波器在数字通信系统中被大量使用,如低通滤波、通带选择、抗混叠、抽取及内插等。通常对于一个FIR滤波器而言,它的冲击响应是有限长的,其系统函数可以记为[5]:
(1)
式中bk——加权系数;
H(z)——FIR滤波器的系统函数;
M——FIR滤波器的零点数,即延时节数,为叙述简便,称M为FIR滤波器的阶数;
z-k——移位算子。
最基本的FIR滤波器可表示为:
(2)
式中h(i)——滤波器系数;
L——滤波器的系数长度;
x(n)——输入采样序列;
y(n)——滤波器的输出序列。
也可以用卷积来表示输出序列y(n)与x(n)、h(n)的关系:
y(n)=x(n)*h(n)
(3)
其中,h(n)是系统的冲激响应函数。
2.2设计流程
几乎所有的工程技术领域都涉及到信号(如电、磁、机械、热、声及光等)[6],因此信号噪声无处不在,它贯穿于信号的获取、传输及处理等各个环节。要将噪声从信号中去除并提取有用信号,就必须对原始信号进行滤波。根据FIR滤波器的基本原理,为了设计32阶低通滤波器,首先建立一个4阶低通滤波器模型,然后根据4阶滤波器便可以搭成4n阶的直接I型滤波器。图2所示为一个4阶FIR滤波器,含有4个延迟模块、4个乘法单元和一个加法器。
图2 4阶FIR滤波器模型
复制4个如图2所示的4阶FIR滤波器,将它们衔接起来。前一级的输出端口Out2接后一级的In1输入端口,并附加16个常数端口和一个4输入端口的加法器,最后得到16阶的FIR滤波器(图3)输出端口Out1。同理,以16阶FIR滤波器为基础可以得到32阶的FIR低通滤波器,设计流程如图4所示。设计完成后,根据光栅信号频率(1.3kHz)和采样频率(100kHz),通过FDATool工具确定32阶FIR滤波器的系数。
图3 16阶FIR滤波器模型
图4 32阶FIR滤波器的设计流程
根据实测光栅信号和32阶FIR滤波器的设计流程,需在Matlab/Simulink环境下建立一个mdl模型文件,用图形方式调用DSP Builder和其他Simulink库中的图形模型(Block),以构成算法级的设计框图。
为了验证设计的Simulink模型(图5)的正确性,对它进行仿真验证,结果如图6所示。可见,经滤波处理的光栅信号基本滤除了噪声干扰,证实基于Simulink的DSP Builder模型是正确的。但Simulink仿真属系统验证性质,是对mdl文件进行仿真,并未对生成的VHDL代码进行仿真。生成的VHDL描述的是RTL级,是针对具体硬件结构的;而Matlab/Simulink的模型仿真是算法级的,是针对算法实现的。因此转换后的VHDL代码实现可能与mdl模型描述的情况不完全相符,需对生成的RTL级VHDL代码进行功能仿真。为此,在Simulink模型仿真之后,用DSP Builder的Signal Compiler模块把mdl文件转换成相应的硬件描述语言VHDL文件,再用DSP Builder的Test Bench模块生成针对VHDL仿真器Modelism的测试文件进行仿真,如图7所示。
图5 32阶FIR滤波器的Simulink模型
a. 滤波前
b. 滤波后图6 Simulink仿真结果
图7 Modelsim的RTL仿真结果
上述仿真实验验证了该32阶FIR滤波器设计的正确性。最终,笔者将设计的32阶FIR滤波器在FPGA硬件系统(图8)中实现,该系统包括AD转换模块、FPGA、DA转换模块和电源模块4部分。其中,FPGA模块采用的是Cyclone系列FPGA芯片EP3C16Q240C8;AD转换模块采用TLC5510芯片,目的是将模拟信号进行数字化并送入FPGA中进行数字滤波;DA模块采用DAC7643芯片,将FPGA处理后输出的数字信号转换为模拟信号。
图8 FPGA硬件系统
用示波器的A通道和B通道同时观察输入的原始光栅信号(AD输入波形)和经过FPGA硬件实现后的滤波信号(DA输出波形),如图9所示。csv格式的原始信号数据导入可编程函数信号发生器33250A后,由于可编程函数信号发生器的csv数据格式和示波器保存的csv数据格式不同,因此信号幅度和频率都会发生改变。示波器的csv数据格式是时间与幅度一一对应的,而可编程函数信号发生器是以导入几个波形为一个周期的,且其可编程软件可将信号幅度放大,但整体波形规律不会改变。
图9 AD输入波形和DA输出波形
笔者利用DSP Builder技术,将Matlab/Simulink和QuartusII设计工具有效结合,设计32阶FIR滤波器模块,并在FPGA开发板上实现了对实测光栅信号的数字滤波处理。借助Matlab/Simulink和Modelsim进行的仿真分析结果表明:通过Simulink仿真实现了光栅信号的去噪处理,说明此滤波器设计在Matlab中的正确性;Modelsim仿真得到了相同的结论,所以基于DSP Builder的32阶FIR滤波器是可行的;为了更准确地说明此方法可以在硬件环境下实现,把生成的VHDL代码封装成模块移植至FPGA开发板,并用示波器观察输入输出信号(即实测光栅信号和滤波后的光栅信号),结果与用Simulink和Modelsim仿真得到的相同。
[1] 胡晓东,彭琅,雷明,等.一种光栅信号细分算法的FPGA实现[J].光子学报,2011,40(3):407~412.
[2] 罗华,高山,李翔龙.粗光栅信号全数字化处理法实现高倍数细分[J].光学精密工程,2007,15(2):283~288.
[3] 朱好学.基于FPGA的高阶FIR滤波器设计[D].南京:南京理工大学,2008.
[4] 郝小江,黄昆.FIR数字滤波器设计及其FPGA实现[J].微型机与应用,2013,32(19):22~24.
[5] 潘松,黄继业,王国栋.现代DSP技术[M].西安:西安电子科技大学出版社,2003:163~164.
[6] 高耀鸿.基于FPGA的FIR低通滤波器[D].长沙:湖南大学,2012.
(Continued on Page 332)
FPGA-basedImplementationofFIRFilterforGratingSignals
YANG Xiao-han, LI Bin-hua, DING Xu
(FacultyofInformationEngineeringandAutomation,KunmingUniversityofScienceandTechnology,Kunming650500,China)
TH865
A
1000-3932(2016)03-0272-06
2016-01-12(修改稿)