基于CORDIC算法的单频激光干涉信号处理系统半波长误差分析与消除

2021-04-26 02:57樊宏伟刁晓飞张福民董欣媛铁咪咪
计量学报 2021年3期
关键词:信号处理象限波长

樊宏伟,刁晓飞,张福民,薛 梓,董欣媛,铁咪咪

(1.天津大学 精密仪器与光电子工程学院,天津 300072;2.中国计量科学研究院,北京 100029;3.北京信息科技大学 仪器科学与光电工程学院,北京 100192)

1 引 言

激光干涉仪在精密测量、加工、定位等领域有着广泛的应用[1~4]。通过细分激光干涉仪输出信号,可达到纳米甚至皮米级的分辨率[5,6]。CORDIC算法具有运算简单、使用较少硬件资源的同时能够保持着较高的分辨率和较快的处理速度等优点[7,8],在激光干涉信号处理中有着广泛的应用。

在干涉信号处理系统中,关于CORDIC算法的研究主要是针对硬件实现该算法时资源消耗的优化、处理速度的提高、迭代次数对分辨率的影响等[5,9,10];但对于该算法的自身误差对激光干涉仪位移测量的影响的研究较少。王晓娜等[11]对光栅数字细分的CORDIC算法总量化误差进行了分析,对激光干涉信号处理系统中由CORDIC算法引入的总量化误差分析有一定参考意义。本文在对干涉信号研究过程中发现,基于CORDIC算法的单频激光干涉测量中存在半波长误差,该误差出现具有较强的随机性,且出现概率较低,即使出现也只在干涉信号的1个周期内出现1次,极易被忽略,经常被误认为环境噪声误差,很少引起研究人员的关注。在多波长绝对测距领域针对该半波长误差有一定的研究基础[12,13],可对单频激光干涉测量中的半波长误差研究提供借鉴。

本文针对该半波长误差进行了深入研究,首先设计了以FPGA为处理器,CORDIC算法为细分方法的干涉信号处理系统。通过分析该误差的特点,确定了该误差的来源,最终提出了一种基于修正表的CORDIC算法相位补偿技术消除该误差。

2 单频激光干涉信号处理原理

2.1 单频激光干涉测量原理

单频激光干涉仪输出的干涉信号为2路正、余弦信号,可表示为[14]:

(1)

由式(1)可得

(2)

在激光干涉测量系统中,干涉信号的相位变化Δθ0为:

(3)

则:

(4)

式中:k为光学细分因子(本文取k=2);L为被测目标的位移;λ为光在空气中的波长;N和n分别为干涉信号相位的整数部分和小数部分。

由于激光干涉系统为相对位移测量系统,被测目标运动方向包括靠近和远离参考镜2个方向,因此在信号处理时需要根据输入干涉信号对被测位移辨向。

2.2 干涉信号处理原理

将输入干涉信号转换为2路相位差为90°的方波信号,通过判别2路方波的变化确定整数部分N和方向,如图1所示。当2路方波的幅值由[0,1]变为[1,1],干涉信号变化一个周期,并规定此方向为正向,N加1;当2路方波的幅值由[1,1]变为[0,1]时,方向为反向,N减1。

图1 信号辨向细分原理图Fig.1 Signal direction discrimination and subdivision

通过计算干涉信号的相位θ0确定小数部分n的值,n=θ0/(2 π),θ0∈[0,2 π]。

图2为干涉信号经AD变换器采样后输入到信号处理系统中。干涉信号同时进入整数相位计算模块和小数相位计算模块分别计算N和n。由于2个模块的延时不同,同步模块使输出的N和n对应于同一时刻的干涉信号,N和n相加为总相位,计算干涉信号对应被测位移值。

图2 干涉仪信号处理系统原理图Fig.2 Schematic of interferometer signal processing system

2.3 CORDIC算法原理与总量化误差

小数相位计算模块使用CORDIC算法计算输入干涉信号的相位值θ0。

在不同坐标系和操作模式下,CORDIC算法能够实现不同的基本初等函数计算[15]。其迭代方程为:

(5)

式中:i=0,1,2,…,m-1,m为迭代次数;θi=arctan(2-i):di为旋转控制因子,其取值为±1。计算输入向量的反正切值时,使用该算法的圆周系统和向量模式,此时,di=-sign(xiyi)。

如图3所示,设初始向量为A0(x0,y0),经过m次旋转后的结果为A(xm,ym),此时的旋转的角度为θ,则有:

图3 CORDIC算法实现反正切函数示意图Fig.3 Arctangent function sketch based on CORDIC algorithm

(6)

令z0=0,则zm=arctan(y0/x0),即为输入向量的相位,Km称为伸缩因子,取值:

(7)

CORDIC算法计算向量A0(x0,y0)的角度时,使初始向量经过多次旋转逼近x轴,旋转的角度为θ。由于在旋转过程中,使用有限个θi,导致旋转后向量的角度值θ与真实角度值θ0之间存在残余角度dθ[16],即:

(8)

dθ也称为角度近似误差,其取值可表示为:

|dθ|≤arctan(2-m+1)

(9)

由角度近似误差导致的计算误差称为近似误差εa。两者的关系为:

εa≤dθ×|A0|≤2-m+1|A0|

(10)

式中|A0|为输入向量的模长。

由于FPGA中实现CORDIC算法是基于定点数运算,因此计算精度与操作数的位数b也有关系。由b导致的误差称为舍入误差εr,其取值为:

(11)

CORDIC算法的总量化误差OQE为近似误差和舍入误差的和:

(12)

由式(12)可知,CORDIC算法的总量化误差与迭代次数m、操作数位数b和输入向量的最大模值|A0|max有关。文献[11]计算了FPGA中实现CORDIC算法|A0|max=1.5时不同m和b对应的OQE值。为了减小CORDIC算法引入的OQE对干涉信号处理系统精度的影响,同时考虑延时和资源消耗,系统使用11次迭代和19位的操作数来实现相位细分。此时OQE为0.000 91 rad。对应位移量化误差为EL=OQE/(2 π)×λ/2=0.046nm。此误差值对干涉系统精度影响较小,满足设计要求。

3 粗大误差分析与消除

3.1 实验数据分析与粗大误差

用Tektronix AFG1062信号源产生2路标准的正、余弦信号作为干涉信号,信号频率为100 kHz,幅值为±1 V。信号处理系统ADC采样率为120 MHz,16 bit,输入电压范围为±1 V。FPGA使用Xilinx Kintex-325T。信号处理系统连续记录8 000个采样周期数据存入计算机进行分析,测试该信号处理系统性能。

图4为信号处理系统的输出位移曲线。由于干涉信号为理想的正、余弦信号,其对应位移值应是一条直线;而在图中可以发现,部分区域出现了向下的位移跳变。将信号处理系统测量的位移值与理论值做差,得到系统的测量误差,见图5。由图5可知:各位移跳变点的误差幅值相等,大小为316.4 nm;其余各点的误差值接近于0。剔除FPGA位移序列中跳变点后,测量误差值小于±0.05 nm,这与设计要求相符。

图4 正向运动位移曲线Fig.4 Displacement curve of forward motion

图5 正向运动误差曲线Fig.5 Error curve of forward motion

将两输入信号调换,对反向运动的干涉信号处理。记录1组反向运动时的位移数据,如图6所示,位移跳变依旧存在。将正向和反向运动时位移序列中产生跳变的点与其前后的点列于表1和表2中。

表1 正向运动各位移跳变点相关数据Tab.1 Data of displacement jump points in forward motion

表2 反向运动各位移跳变点相关数据Tab.2 Data of displacement jump points in reverse motion

图6 反向运动位移曲线Fig.6 Displacement curve of reverse motion

实验过程中还增加了CORDIC算法的迭代次数,当迭代次数增加时,实验数据中仍出现了位移跳变,但出现概率有所下降。

由实验分析可知,该粗大误差特点有:(1) 出现误差的点一定在干涉信号相位零点附近,此时整数N变化正确;(2) 在误差点上n的计算结果与理论值存在较大偏差,原因是CORDIC算法将位于第四象限的干涉信号对应的小数相位n计算为0(应接近于1);(3) 该误差大小约为316.4 nm,即干涉光源波长的1/2;(4) 该误差并不在每个N变化的时刻出现,存在一定的随机性,随着迭代次数的增加出现的概率会降低。

3.2 零相位附近CORDIC算法输出相位分析

向量A(0,1)与x轴重合,相位值θ0=0。但使用CORDIC算法计算该向量的相位时,由于角度近似误差的存在,其输出可能不等于0;同理,向量为(1,yl),yl→0时,理论相位值θ0=±θl,CORDIC算法计算该向量的相位值时有可能符号相反。

表3为迭代次数等于11~18时,CORDIC算法计算的向量(1,0)、(1,1/215)、(1,-1/215)相位值。可以看出,随着迭代次数不同,输出相位θ在0相位附近会发生变化,甚至出现符号相反的情况(表3中第四象限的相位值用负相位表示)。

表3 输入向量在x轴正半轴附近时CORDIC算法输出相位Tab.3 Output phase of CORDIC algorithm when input vector is near the positive half axis of x-axis ×10-8 rad

3.3 角度近似误差对干涉信号处理系统的影响

干涉信号的李萨茹图如图7所示,设当前周期N=N0。正向时,输入向量逆时针旋转,n从0增加至1,在x轴正半轴处N=N0+1,如图7(a)所示;反向时,输入向量顺时针旋转,n从1减小至0,在x轴正半轴处N=N0,下一时刻N=N0-1,如图7(b)所示。信号处理系统按照此规则对干涉信号处理得到总相位。

图7 干涉信号李萨茹图Fig.7 Lissajou curves of interference signal

由于角度近似误差的影响,在信号周期变化的临界处(即在干涉信号与x轴正半轴重合时),CORDIC算法计算的相位θ可能会产生歧义,导致位移产生半波长大小的粗大误差。以正向运动为例说明产生的4类粗大误差及其来源。

① 当干涉信号位于第四象限,其y分量很小,信号与x轴即将重合,理论的n接近于1。但CORDIC算法计算的相位值θ等于0,即n等于0,此时产生负的半波长误差,表1和表2位移跳变属于此类。

② 干涉信号位于第四象限,且靠近x轴,理论的n→1。但CORDIC算法计算的相位值θ可能大于0,即n大于0,此时产生负的半波长误差。

③ 当干涉信号与x轴正半轴重合时,理论的n等于0。但CORIC算法计算的相位值θ可能小于0,即n→1,产生正的半波长误差。

④ 干涉信号与x轴正半轴重合后继续正向运动,信号位于第一象限。当干涉信号的y分量很小时,理论的相位值n→0,但CORDIC算法计算的相位值可能小于0,即n→1,也会产生正的半波长误差。

负向运动的半波长误差与正向运动的半波长误差情况类似。表4和表5列出了正向、反向运动时,干涉信号在x轴正半轴及其前后一个时刻的理论值和CORDIC算法的计算值之间的差异,以及由此导致的位移差类型。

表4 正向运动半波长的误差来源Tab.4 Sources of half-wavelength error in forward motion

表5 反向运动半波长误差来源Tab.5 Sources of half-wavelength error in reverse motion

3.4 干涉仪信号处理系统粗大误差消除

由于在数字系统中,计算相位的算法通过有限位的操作数和有限的迭代次数实现,输出相位总是存在计算误差,例如CORDIC算法。算法的操作数位数和迭代次数满足要求时,对于一般的应用,该计算误差的影响可以容忍,但在干涉系统设计中,涉及到整数N和小数n的结合。如表3所示,在干涉信号相位0点附近,CORDIC算法的计算误差使得输出相位θ跨过了[2 π-,0+],在这个区间内具有不确定性。在小数相位n与整数N结合时,可能会发生表4和表5列出的4种情况,使得总相位可能比实际值大1或者小1,从而导致干涉信号处理系统输出的位移可能产生正负半波长误差。为此,需要在信号处理系统中加入修正表,对CORDIC算法计算特殊向量的相位进行修正,以避免计算位移时产生粗大误差,误差修正表见表6。

表6 消除半波长误差修正表Tab.6 Correction table for eliminating half-wave lenghth error

干涉信号位于第一象限时,若CORDIC算法输出的相位值在第四象限,则令n=0;干涉信号位于第四象限时,若CORDIC算法输出的相位值在第一象限或x轴正半轴上,则令n=1;干涉信号位于x轴正半轴时,令n=0。修正规则中将第一象限部分干涉信号对应的相位小数n近似等于0,第四象限部分干涉信号对应的n近似等于1,这会引入误差,但该误差值的大小可用式(10)计算,由式(12)知该误差小于量化误差OQE,对信号处理系统的输出位移影响较小。

4 实验验证

以3.1节的实验条件对修正后的信号处理系统进行验证,同时记录未修正和修正后的数据。图8是迭代次数n为11时,对CORDIC算法输出未修正和修正后的位移曲线,由图可知该粗大误差已被有效消除且没有导致信号处理系统的总误差增加。

图8 迭代次数为11时未修正和修正后的位移曲线Fig.8 Uncorrected and corrected displacement curves with 11 iterations

表7列出了粗大误差点和其前后各点的相关值,该位移序列中所有粗大误差均是由于CORDIC算法将第四象限干涉信号的相位值计算为0造成的,即为表4中的第①类误差,经信号处理系统修正后该时刻干涉信号对应的n被修正为1,信号处理系统输出的位移值也与理论值接近。

表7 图8中各误差点未修正数据和修正后数据对比Tab.7 Comparisons of uncorrected and corrected data for each error point in Fig.8

5 结 论

本文研制了基于CORDIC算法的单频激光干涉信号处理系统,确定了CORDIC算法的迭代次数和位数。研究发现信号处理系统计算位移时存在半波长粗大误差,该误差随机出现且符号不定。在本文的干涉信号处理系统中表现为CORDIC算法的角度近似误差使得0相位附近的干涉信号输出相位可能发生符号错误,在干涉信号小数n与整数N相加时出现±1误差,最终导致位移测量结果出现半波长误差。为此提出了一种基于修正表的CORDIC算法相位补偿技术,对CORDIC算法输出的相位进行修正,使其与输入干涉信号的理论相位值符号一致。实验结果表明该补偿技术能够有效消除粗大误差,且不增大干涉系统的总量化误差。该补偿技术对基于CORDIC算法的单频激光干涉信号处理系统具有一定的应用价值。

猜你喜欢
信号处理象限波长
HPLC-PDA双波长法同时测定四季草片中没食子酸和槲皮苷的含量
勘 误
复数知识核心考点综合演练
常数牵手象限畅游中考
《信号处理》征稿简则
《信号处理》第九届编委会
《信号处理》征稿简则
《信号处理》第九届编委会
双波长激光治疗慢性牙周炎的疗效观察
平面直角坐标系典例分析