APP下载

双频激光干涉仪中的数字相位计设计

2014-08-07胡玲潘征宇洪扁赵栋

光学仪器 2014年3期

胡玲+潘征宇+洪扁+赵栋

文章编号: 10055630(2014)03025805

收稿日期: 20140217

基金项目: 国家自然科学基金(61107077)

作者简介: 胡玲(1987),女,硕士研究生,主要从事压力计量方面的研究。通讯作者: 潘征宇(1961),男,高级工程师,主要从事压力计量方面的研究。

摘要: 基于Altera公司FPGA芯片,提出了一种基于双频激光干涉仪系统中数字相位计的实现方法。该相位计用于测量系统中被测信号 和参考信号之间的相位差角度,间接测量激光干涉仪的光程差信息。被测信号经过光电接收器以及A/D模数转换成数字信号送到FPGA芯片中,与FPGA内建的查找表参考信号做正交相关法解调运算,得到一组XY值,再利用CORDIC算法计算 arctan函数获取相位差,最后计算出干涉仪的光程差,算法的全过程使用FPGA硬件实现。实验结果表明,该相位计使双频激光干涉仪的相位差测量精度在0.01°以内。

关键词: 数字相位计; 双频激光干涉仪; FPGA; CORDIC算法

中图分类号: TM 932文献标志码: Adoi: 10.3969/j.issn.10055630.2014.03.015

Design of digital phasemeter on dual frequency

laser interferometer system

HU Ling, PAN Zhengyu, HONG Bian, ZHAO Dong

(1.Shanghai Institute of Measurement and Testing Technology, Shanghai 201203, China;

2.Fudan University, Shanghai 200433, China)

Abstract: Based on the Altera FPGA chip, a digital phasemeter on dual frequency laser interferometer system is introduced. The function of the phasemeter is to calculate measured signal and reference signal in order to get the phase difference, thus to get the interferometer optical path difference. The method is to use photoelectric converter and A/D convert device to get digital signal from the analog measured signal, and let the output do the multiply with lookup table in FPGA ROM based on the orthogonal correlation algorithm, then use CORDIC to get phase difference value, finally get the ultimate result. The experiment shows that the precision of digital phasemeter on dual frequency laser interferometer system is within 0.01°.

Key words: digital phasemeter; dual frequency laser interferometer; FPGA; CORDIC algorithm

引言双频激光干涉仪是在单频激光干涉仪的基础上发展的一种外差式干涉仪。在各种干涉测量系统中,外差干涉技术因其抗干扰性好的突出优点,应用最为广泛。在引入相位测量后,可把外差干涉的测量精度提高多个数量级,更适用于需要高精度测量的场合。基于相位测量的外差干涉系统可以应用在包括纳米精度测量、机械转角精密测量、直线度测量、生物分子相互作用检测等方面在内的许多领域中,如何提高相位差检测精度值得加以研究[1]。双频激光干涉仪系统框图如图1所示。

图1双频激光干涉仪系统框图

Fig.1The block diagram of dual frequency laser interferometer system

随着科学技术的发展,电信号相位差的数字化测量技术在许多行业有着重要且广泛的应用,如在电工技术、工业自动化、测试控制、通讯等。求取相位差的方法有多种,常用的有过零法、频谱分析法、相关算法等。过零法测量相位差是通过判断两个同频信号过零点的时刻,计算其时间差,然后将其转换为相应相位差,但当信号中含有干扰时,信号的过零点不易准确测量,误差较大。频谱分析法是通过对被检测信号进行频谱分析,获得信号的相频特性,然后计算两信号在主频率处的差值,即可测得两个信号的相位差,但频谱分析法的检测结果受采样点数的影响较大[2]。基于上述分析,本文提出了一种双频激光干涉仪系统中数字相位计的实现方法,该方法将数字信号处理的正交相关法解调算法引入了鉴相系统,由光电接收器将光信号接收并转化成电信号,输出后经过模数转化电路将模拟信号转化成数字信号,送入 FPGA,进行CORDIC(coordinate rotation digital computer)算法得出外差式干涉仪系统中测量信号与参考信号之间的相位差,最后输出数据处理结果[34]。光学仪器第36卷

第3期胡玲,等:双频激光干涉仪中的数字相位计设计

1数字相位计的原理与实现

1.1正交相关法解调理论基础数字相关正交解调法原理框图如图2所示,被测信号经A/D模数转换形成离散数字化后的信号sin(n),然后对被测信号做等间隔采样,间隔的时间和信号与自己的固有频率有关,并且定义每周期采样点数为N。

图2正交相关法解调原理框图

Fig.2The block diagram of orthogonal correlation algorithm

可以推导出采样离散化后的信号:Sin(n)=Asin(2πnN+φ)+ξ(n)+q(n)(1)其中,A为信号幅值,φ为信号相位,ξ(n)为带有白噪声和高斯噪声分布的随机噪声,q(n)为A/D的量化噪声。而正弦参考信号I可由序列rsin(n)=sin2πnN表示,正交的余弦参考信号Q可由序列rcos(n)=cos2πnN表示。对于Sin(n)和rsin(n)作互相关运算有:VX=1N∑N-1n=0Sin(n)*rsin(n)(2)可得:VX=A2cosφ(3)同理当参考信号为余弦信号时有:VY=A2sinφ(4)由以上数学相关法公式推算,被测信号Vin的初相位φ可以通过正交相关乘法后的VX和VY分量做arctan函数求得φ=arctanVYVX(5)1.2CORDIC算法基础坐标旋转数字式计算机的基本构想是通过运用运算基数相关角度的不断旋转,达到逼近所需旋转的角度,所以基于这点来说,它只是一个数值逼近的方法。由于这些固定的角度与计算基数有关,运算只有移位和加减法,因而这在硬件上较为容易实现[5]。目前的FPGA 具有许多乘法器和加法器, 然而各种各样的通信技术和矩阵算法则需要三角函数、平方根等的运算。在FPGA 上执行这些运算可以使用查找表,或是迭代法。本节介绍了CORDIC 算法,这是一个“移位相加” 算法,允许计算不同的三角函数,例如sin,cos或者arctan函数[6]。CORDIC算法的基本迭代公式为:Xn+1=Xn-dnYn2-n

Yn+1=Yn+dnXn2-n

Zn+1=Zn-dnarctan(2-n)(6)如果将输入向量通过一个特定的角Y变为0,切旋转的方向取决于d的符号,即:dn=+1if Yn<0

-1if Yn≥0则N次迭代后CORDIC公式的输出变为:Xn+1=PX02+Y02

Yn+1=0

Zn+1=Z0+arctanY0X0(7)如果Z0=0,对于给定的X0和Y0,N次迭代以后CORDIC公式的输出变为经过N次迭代后,P为伸缩因子,约为1.646 760 2。Xn+1=PX20+Y20

Yn+1=0

Zn+1=arctanY0X0(8)图3CORDIC算法框图

Fig.3CORDIC algorithm block从式(8)可以看出,CORDIC算法在向量模式可以计算出给定向量(X0,Y0)的长度和角度,即从平面坐标到极坐标的变换,图3为CORDIC迭代算法的具体实现框图,只要通过给定的初始值,在迭代次数达到Y趋近于0值时候,输出的Z值即为相位差角度arctan(φ)。2硬件算法在FPGA中集成系统采用主时钟信号为50 MHz,主控模块在接收到使能测量的start信号后开始一个周期的相位差检测,首先是驱动A/D转换模块,将光电转换的信号数字化以后和内建的ROM查找表在Booth乘法器模块中实现点对点的乘法运算,ROM查找表数据来源于MATLAB软件生成的mif文件格式,Quartus软件可以例化出信号接口给到使用者,对于sin参考信号,数据为带符号位宽11 bits整型,即正弦的振幅被量化为-1 024~+1 023,一个周期有1 024个离散数据点组成,同理cos参考信号与sin为正交相位差90°。将理论上已经转换好的A/D第一个数据和第一个FPGA内置查找表中的参考正弦信号以及余弦信号做乘法,这样就获得了第1次乘法的结果,缓存起来,然后再根据之前算得的A/D采样间隔,去做第2次,第3次乘法……一直做到1 024次完成,并且把每次的乘法结果在缓存寄存器中累加,可以得到两路信号,一路是将数字化的被测信号与正弦参考信号相乘的并且累加的Xout;另一路则相应是将数字化的被测信号与余弦参考信号相乘并且累加的Yout,这两路信号通过计算arctan函数即可获得被测信号与参考信号的相位差φ,因为被测信号的离散化数值要分别与sin和cos参考信号做乘法相关解调运算,所以booth模块复用逻辑输出的两个乘积product_x和product_y通过1 024次累加后32 bits位宽的x_out和y_out分别作为后续arctan模块的输入激励。在arctan模块中运用15级流水线方法实现CORDIC算法的迭代运算,移位模块完成式(6) 中的2-n操作,而内置的Z角度数值则事先把arctan (2-n) 的值放入,每次计算时只需逐次把数据传入加减模块即可。运算加减取决于dn符号位,在流水线经过15级运算后,Y趋近于0,输出的Z值即为相位差角度[78]。在CORDIC设计中特别需要注意的是长度和角度两者数据的量化,否则得不到正确的角度值,此设计中使用32位有符号数量化最大坐标点,使用18位无符号数量化0°~360°角度。在计算完最后的结果之后为一个正弦信号周期的值,可以将多次周期计算得到的相位差信息取平均值输出,减少噪声和数值逼近误差等信息[9]。如图4所示为FPGA中所用的算法。

图4FPGA中所用的算法

Fig.4Algorithm on FPGA

3实验结果实验中理论和实际测得的相位差角度对比值如表1所示,由表可见数字相位计精度可以达到 0.01°以内,满足设计的需求。相位计整合所有模块的运算结果如表1所示,在仿真的时候,根据A/D激励输入和参考ref_sin以及ref_cos的相位差,这些都由MATLAB输出来人为控制。可以看到,当数字离散化的被测信号与参考信号理论上通过MATLAB输出相位差为0.100°的时候,通过相关法正交解调调用BOOTH乘法器后,被测信号与正弦参考信号相乘累加1 024次后输出的X0为534 465 330,而被测信号与余弦参考信号相乘累加1 024次后的输出Y0为923 488,我们认为这一组X0和Y0为CORDIC算法模块的输入激励,并且算法的内部16次流水线运算,得到最后的CORDIC累加器为Z16为74,此设计中使用32位有符号数量化最大坐标点(X,Y),使用18位无符号数量化0°~360°角度Z,所以可以通过量化推算,74即代表角度0.099°,所以理论上的绝对误差即为0.001°,其余几组值是通过同样的方法输入给系统,并且我们可以看到最大绝对误差在0.005°,可以见得数字相位计的在各个角度的测试下,精度可以达到0.010°以内,满足设计的需求[10]。

表1相位差实验图

Tab.1Phase difference test result

理论相位差/(°)输入X0输入Y0输出Zn实测相位差/(°)绝对误差/(°)0.100534 465 330923 488740.0990.00130.000462 865 332267 234 50521 84429.9980.00245.000377 928 735377 928 73532 77245.005-0.00560.000267 234 505462 862 33243 69260.002-0.00280.00092 815 299526 362 67858 25279.9970.003280.00092 815 299-526 362 167-58 253280.002-0.002300.000267 234 505-462 861 821-43 693299.9970.003315.000377 928 735-377 928 225-32 765315.004-0.004359.900534 465 330-922 978-75359.8970.003

根据仿真的结果可以看到,相位计的精度在理论上可以达到一定的水准,但是此测试中并未就模拟A/D激励信号源给出噪声叠加的测试,如果在数字化的被测信号上添加随机数的噪声幅度叠加,根据噪声幅度和A/D量化幅度的百分比,就能得到更接近实际的仿真数据。在此测试数据中,A/D的激励源和参考值相乘的时候,是根据参考信号频率等间隔平分的,也就是做除法的时候,是没有余数的结果,在一定程度上也加大了理论上相位计的高精度表现。至于相位计在仿真上还存在0.010°以内的误差是因为不可避免量化的结果,CORDIC算法需要对模值和角度量化,并且都是整数级运算,在推演递推公式的时候,都是以右移来表示2-i运算,这样本来存在的小数就会消失,并且CORDIC运算本来就是要无数次迭代才接近理论数据,所以由于算法运算量和运算时间的限制,我们只用了16级流水线对输入的X和Y进行运算,这也是影响精度的原因之一。4结论本文创新点在于从测量相位计的原理出发,对数字相位计的算法进行了深入的分析和研究,找出适合双频激光干涉仪系统的相位计方案,并在此基础之上,将算法优化集成于FPGA系统中。在集成的过程中,需要逐步研究算法的代码化和模块化步骤,例如乘法器、CORDIC模块等从行为级描述到RTL硬件语言描述,接着又用Modelsim仿真工具对系统相位计的各个节点输出进行仿真,然后对理论上仿真上的结果予以一定的误差分析,算出相位计角度之后,再根据实际量化的数值去纠正参考信号的相位,这在双频激光干涉仪系统中起到了关键作用[1112]。同时,系统的运行速度,稳定性和精度也因加入了FPGA而得到进一步改善,具有良好的应用前景。

参考文献:

[1]所睿,范志军,李岩,等.双频激光干涉仪技术与发展[J].激光与红外,2004,34(4):251253.

[2]董洪波,杨召雷,胡凯.双频激光干涉仪相位差测量系统的设计[J].信息技术,2013(2):1114.

[3]羡一民.双频激光干涉仪的原理与应用(一)[J].工具技术,1996,30(4):4446.

[4]张毅刚,付平,王丽.采用数字相关法测量相位差[J].计量学报,2000,21(3):216221.

[5]骆艳卜,张会生,张斌,等.一种CORDIC算法的FPGA实现[J].计算机仿真,2009,26(9):305307.

[6]蒋庆红.相位计测量不确定度评定[J].计量与测试技术,2009,36(10):64.

[7]宋长宝,李志刚,竺小松.基于数字正交变换的相位差测量方法及误差分析[J].电路与系统学报,2006,11(1):143 146.

[8]戴高良,殷纯永.用于纳米测量的混合型外差干涉信号处理方法[J].光学技术,1999,25(1):21 24.

[9]王晓俊,周杏鹏,王毅.精密阻抗分析仪中数字相敏检波技术研究与实现[J].仪器仪表学报,2006,27(6):592595.

[10]戴高良,晃志霞,殷纯永,等 纳米精度双频激光干涉仪非线性误差的确定方法[J].中国激光,1999,26(11):987992.

[11]胡长德,陆加海,幸祺,等.基于激光干涉的长导轨直线度误差测量[J].光学仪器,2008,30(6):1015.

[12]岳峰,陈凌峰,任建荣,等.激光干涉仪的计量保证方案研究[J].光学仪器,2004,26(1):2428.

Yn+1=Yn+dnXn2-n

Zn+1=Zn-dnarctan(2-n)(6)如果将输入向量通过一个特定的角Y变为0,切旋转的方向取决于d的符号,即:dn=+1if Yn<0

-1if Yn≥0则N次迭代后CORDIC公式的输出变为:Xn+1=PX02+Y02

Yn+1=0

Zn+1=Z0+arctanY0X0(7)如果Z0=0,对于给定的X0和Y0,N次迭代以后CORDIC公式的输出变为经过N次迭代后,P为伸缩因子,约为1.646 760 2。Xn+1=PX20+Y20

Yn+1=0

Zn+1=arctanY0X0(8)图3CORDIC算法框图

Fig.3CORDIC algorithm block从式(8)可以看出,CORDIC算法在向量模式可以计算出给定向量(X0,Y0)的长度和角度,即从平面坐标到极坐标的变换,图3为CORDIC迭代算法的具体实现框图,只要通过给定的初始值,在迭代次数达到Y趋近于0值时候,输出的Z值即为相位差角度arctan(φ)。2硬件算法在FPGA中集成系统采用主时钟信号为50 MHz,主控模块在接收到使能测量的start信号后开始一个周期的相位差检测,首先是驱动A/D转换模块,将光电转换的信号数字化以后和内建的ROM查找表在Booth乘法器模块中实现点对点的乘法运算,ROM查找表数据来源于MATLAB软件生成的mif文件格式,Quartus软件可以例化出信号接口给到使用者,对于sin参考信号,数据为带符号位宽11 bits整型,即正弦的振幅被量化为-1 024~+1 023,一个周期有1 024个离散数据点组成,同理cos参考信号与sin为正交相位差90°。将理论上已经转换好的A/D第一个数据和第一个FPGA内置查找表中的参考正弦信号以及余弦信号做乘法,这样就获得了第1次乘法的结果,缓存起来,然后再根据之前算得的A/D采样间隔,去做第2次,第3次乘法……一直做到1 024次完成,并且把每次的乘法结果在缓存寄存器中累加,可以得到两路信号,一路是将数字化的被测信号与正弦参考信号相乘的并且累加的Xout;另一路则相应是将数字化的被测信号与余弦参考信号相乘并且累加的Yout,这两路信号通过计算arctan函数即可获得被测信号与参考信号的相位差φ,因为被测信号的离散化数值要分别与sin和cos参考信号做乘法相关解调运算,所以booth模块复用逻辑输出的两个乘积product_x和product_y通过1 024次累加后32 bits位宽的x_out和y_out分别作为后续arctan模块的输入激励。在arctan模块中运用15级流水线方法实现CORDIC算法的迭代运算,移位模块完成式(6) 中的2-n操作,而内置的Z角度数值则事先把arctan (2-n) 的值放入,每次计算时只需逐次把数据传入加减模块即可。运算加减取决于dn符号位,在流水线经过15级运算后,Y趋近于0,输出的Z值即为相位差角度[78]。在CORDIC设计中特别需要注意的是长度和角度两者数据的量化,否则得不到正确的角度值,此设计中使用32位有符号数量化最大坐标点,使用18位无符号数量化0°~360°角度。在计算完最后的结果之后为一个正弦信号周期的值,可以将多次周期计算得到的相位差信息取平均值输出,减少噪声和数值逼近误差等信息[9]。如图4所示为FPGA中所用的算法。

图4FPGA中所用的算法

Fig.4Algorithm on FPGA

3实验结果实验中理论和实际测得的相位差角度对比值如表1所示,由表可见数字相位计精度可以达到 0.01°以内,满足设计的需求。相位计整合所有模块的运算结果如表1所示,在仿真的时候,根据A/D激励输入和参考ref_sin以及ref_cos的相位差,这些都由MATLAB输出来人为控制。可以看到,当数字离散化的被测信号与参考信号理论上通过MATLAB输出相位差为0.100°的时候,通过相关法正交解调调用BOOTH乘法器后,被测信号与正弦参考信号相乘累加1 024次后输出的X0为534 465 330,而被测信号与余弦参考信号相乘累加1 024次后的输出Y0为923 488,我们认为这一组X0和Y0为CORDIC算法模块的输入激励,并且算法的内部16次流水线运算,得到最后的CORDIC累加器为Z16为74,此设计中使用32位有符号数量化最大坐标点(X,Y),使用18位无符号数量化0°~360°角度Z,所以可以通过量化推算,74即代表角度0.099°,所以理论上的绝对误差即为0.001°,其余几组值是通过同样的方法输入给系统,并且我们可以看到最大绝对误差在0.005°,可以见得数字相位计的在各个角度的测试下,精度可以达到0.010°以内,满足设计的需求[10]。

表1相位差实验图

Tab.1Phase difference test result

理论相位差/(°)输入X0输入Y0输出Zn实测相位差/(°)绝对误差/(°)0.100534 465 330923 488740.0990.00130.000462 865 332267 234 50521 84429.9980.00245.000377 928 735377 928 73532 77245.005-0.00560.000267 234 505462 862 33243 69260.002-0.00280.00092 815 299526 362 67858 25279.9970.003280.00092 815 299-526 362 167-58 253280.002-0.002300.000267 234 505-462 861 821-43 693299.9970.003315.000377 928 735-377 928 225-32 765315.004-0.004359.900534 465 330-922 978-75359.8970.003

根据仿真的结果可以看到,相位计的精度在理论上可以达到一定的水准,但是此测试中并未就模拟A/D激励信号源给出噪声叠加的测试,如果在数字化的被测信号上添加随机数的噪声幅度叠加,根据噪声幅度和A/D量化幅度的百分比,就能得到更接近实际的仿真数据。在此测试数据中,A/D的激励源和参考值相乘的时候,是根据参考信号频率等间隔平分的,也就是做除法的时候,是没有余数的结果,在一定程度上也加大了理论上相位计的高精度表现。至于相位计在仿真上还存在0.010°以内的误差是因为不可避免量化的结果,CORDIC算法需要对模值和角度量化,并且都是整数级运算,在推演递推公式的时候,都是以右移来表示2-i运算,这样本来存在的小数就会消失,并且CORDIC运算本来就是要无数次迭代才接近理论数据,所以由于算法运算量和运算时间的限制,我们只用了16级流水线对输入的X和Y进行运算,这也是影响精度的原因之一。4结论本文创新点在于从测量相位计的原理出发,对数字相位计的算法进行了深入的分析和研究,找出适合双频激光干涉仪系统的相位计方案,并在此基础之上,将算法优化集成于FPGA系统中。在集成的过程中,需要逐步研究算法的代码化和模块化步骤,例如乘法器、CORDIC模块等从行为级描述到RTL硬件语言描述,接着又用Modelsim仿真工具对系统相位计的各个节点输出进行仿真,然后对理论上仿真上的结果予以一定的误差分析,算出相位计角度之后,再根据实际量化的数值去纠正参考信号的相位,这在双频激光干涉仪系统中起到了关键作用[1112]。同时,系统的运行速度,稳定性和精度也因加入了FPGA而得到进一步改善,具有良好的应用前景。

参考文献:

[1]所睿,范志军,李岩,等.双频激光干涉仪技术与发展[J].激光与红外,2004,34(4):251253.

[2]董洪波,杨召雷,胡凯.双频激光干涉仪相位差测量系统的设计[J].信息技术,2013(2):1114.

[3]羡一民.双频激光干涉仪的原理与应用(一)[J].工具技术,1996,30(4):4446.

[4]张毅刚,付平,王丽.采用数字相关法测量相位差[J].计量学报,2000,21(3):216221.

[5]骆艳卜,张会生,张斌,等.一种CORDIC算法的FPGA实现[J].计算机仿真,2009,26(9):305307.

[6]蒋庆红.相位计测量不确定度评定[J].计量与测试技术,2009,36(10):64.

[7]宋长宝,李志刚,竺小松.基于数字正交变换的相位差测量方法及误差分析[J].电路与系统学报,2006,11(1):143 146.

[8]戴高良,殷纯永.用于纳米测量的混合型外差干涉信号处理方法[J].光学技术,1999,25(1):21 24.

[9]王晓俊,周杏鹏,王毅.精密阻抗分析仪中数字相敏检波技术研究与实现[J].仪器仪表学报,2006,27(6):592595.

[10]戴高良,晃志霞,殷纯永,等 纳米精度双频激光干涉仪非线性误差的确定方法[J].中国激光,1999,26(11):987992.

[11]胡长德,陆加海,幸祺,等.基于激光干涉的长导轨直线度误差测量[J].光学仪器,2008,30(6):1015.

[12]岳峰,陈凌峰,任建荣,等.激光干涉仪的计量保证方案研究[J].光学仪器,2004,26(1):2428.

Yn+1=Yn+dnXn2-n

Zn+1=Zn-dnarctan(2-n)(6)如果将输入向量通过一个特定的角Y变为0,切旋转的方向取决于d的符号,即:dn=+1if Yn<0

-1if Yn≥0则N次迭代后CORDIC公式的输出变为:Xn+1=PX02+Y02

Yn+1=0

Zn+1=Z0+arctanY0X0(7)如果Z0=0,对于给定的X0和Y0,N次迭代以后CORDIC公式的输出变为经过N次迭代后,P为伸缩因子,约为1.646 760 2。Xn+1=PX20+Y20

Yn+1=0

Zn+1=arctanY0X0(8)图3CORDIC算法框图

Fig.3CORDIC algorithm block从式(8)可以看出,CORDIC算法在向量模式可以计算出给定向量(X0,Y0)的长度和角度,即从平面坐标到极坐标的变换,图3为CORDIC迭代算法的具体实现框图,只要通过给定的初始值,在迭代次数达到Y趋近于0值时候,输出的Z值即为相位差角度arctan(φ)。2硬件算法在FPGA中集成系统采用主时钟信号为50 MHz,主控模块在接收到使能测量的start信号后开始一个周期的相位差检测,首先是驱动A/D转换模块,将光电转换的信号数字化以后和内建的ROM查找表在Booth乘法器模块中实现点对点的乘法运算,ROM查找表数据来源于MATLAB软件生成的mif文件格式,Quartus软件可以例化出信号接口给到使用者,对于sin参考信号,数据为带符号位宽11 bits整型,即正弦的振幅被量化为-1 024~+1 023,一个周期有1 024个离散数据点组成,同理cos参考信号与sin为正交相位差90°。将理论上已经转换好的A/D第一个数据和第一个FPGA内置查找表中的参考正弦信号以及余弦信号做乘法,这样就获得了第1次乘法的结果,缓存起来,然后再根据之前算得的A/D采样间隔,去做第2次,第3次乘法……一直做到1 024次完成,并且把每次的乘法结果在缓存寄存器中累加,可以得到两路信号,一路是将数字化的被测信号与正弦参考信号相乘的并且累加的Xout;另一路则相应是将数字化的被测信号与余弦参考信号相乘并且累加的Yout,这两路信号通过计算arctan函数即可获得被测信号与参考信号的相位差φ,因为被测信号的离散化数值要分别与sin和cos参考信号做乘法相关解调运算,所以booth模块复用逻辑输出的两个乘积product_x和product_y通过1 024次累加后32 bits位宽的x_out和y_out分别作为后续arctan模块的输入激励。在arctan模块中运用15级流水线方法实现CORDIC算法的迭代运算,移位模块完成式(6) 中的2-n操作,而内置的Z角度数值则事先把arctan (2-n) 的值放入,每次计算时只需逐次把数据传入加减模块即可。运算加减取决于dn符号位,在流水线经过15级运算后,Y趋近于0,输出的Z值即为相位差角度[78]。在CORDIC设计中特别需要注意的是长度和角度两者数据的量化,否则得不到正确的角度值,此设计中使用32位有符号数量化最大坐标点,使用18位无符号数量化0°~360°角度。在计算完最后的结果之后为一个正弦信号周期的值,可以将多次周期计算得到的相位差信息取平均值输出,减少噪声和数值逼近误差等信息[9]。如图4所示为FPGA中所用的算法。

图4FPGA中所用的算法

Fig.4Algorithm on FPGA

3实验结果实验中理论和实际测得的相位差角度对比值如表1所示,由表可见数字相位计精度可以达到 0.01°以内,满足设计的需求。相位计整合所有模块的运算结果如表1所示,在仿真的时候,根据A/D激励输入和参考ref_sin以及ref_cos的相位差,这些都由MATLAB输出来人为控制。可以看到,当数字离散化的被测信号与参考信号理论上通过MATLAB输出相位差为0.100°的时候,通过相关法正交解调调用BOOTH乘法器后,被测信号与正弦参考信号相乘累加1 024次后输出的X0为534 465 330,而被测信号与余弦参考信号相乘累加1 024次后的输出Y0为923 488,我们认为这一组X0和Y0为CORDIC算法模块的输入激励,并且算法的内部16次流水线运算,得到最后的CORDIC累加器为Z16为74,此设计中使用32位有符号数量化最大坐标点(X,Y),使用18位无符号数量化0°~360°角度Z,所以可以通过量化推算,74即代表角度0.099°,所以理论上的绝对误差即为0.001°,其余几组值是通过同样的方法输入给系统,并且我们可以看到最大绝对误差在0.005°,可以见得数字相位计的在各个角度的测试下,精度可以达到0.010°以内,满足设计的需求[10]。

表1相位差实验图

Tab.1Phase difference test result

理论相位差/(°)输入X0输入Y0输出Zn实测相位差/(°)绝对误差/(°)0.100534 465 330923 488740.0990.00130.000462 865 332267 234 50521 84429.9980.00245.000377 928 735377 928 73532 77245.005-0.00560.000267 234 505462 862 33243 69260.002-0.00280.00092 815 299526 362 67858 25279.9970.003280.00092 815 299-526 362 167-58 253280.002-0.002300.000267 234 505-462 861 821-43 693299.9970.003315.000377 928 735-377 928 225-32 765315.004-0.004359.900534 465 330-922 978-75359.8970.003

根据仿真的结果可以看到,相位计的精度在理论上可以达到一定的水准,但是此测试中并未就模拟A/D激励信号源给出噪声叠加的测试,如果在数字化的被测信号上添加随机数的噪声幅度叠加,根据噪声幅度和A/D量化幅度的百分比,就能得到更接近实际的仿真数据。在此测试数据中,A/D的激励源和参考值相乘的时候,是根据参考信号频率等间隔平分的,也就是做除法的时候,是没有余数的结果,在一定程度上也加大了理论上相位计的高精度表现。至于相位计在仿真上还存在0.010°以内的误差是因为不可避免量化的结果,CORDIC算法需要对模值和角度量化,并且都是整数级运算,在推演递推公式的时候,都是以右移来表示2-i运算,这样本来存在的小数就会消失,并且CORDIC运算本来就是要无数次迭代才接近理论数据,所以由于算法运算量和运算时间的限制,我们只用了16级流水线对输入的X和Y进行运算,这也是影响精度的原因之一。4结论本文创新点在于从测量相位计的原理出发,对数字相位计的算法进行了深入的分析和研究,找出适合双频激光干涉仪系统的相位计方案,并在此基础之上,将算法优化集成于FPGA系统中。在集成的过程中,需要逐步研究算法的代码化和模块化步骤,例如乘法器、CORDIC模块等从行为级描述到RTL硬件语言描述,接着又用Modelsim仿真工具对系统相位计的各个节点输出进行仿真,然后对理论上仿真上的结果予以一定的误差分析,算出相位计角度之后,再根据实际量化的数值去纠正参考信号的相位,这在双频激光干涉仪系统中起到了关键作用[1112]。同时,系统的运行速度,稳定性和精度也因加入了FPGA而得到进一步改善,具有良好的应用前景。

参考文献:

[1]所睿,范志军,李岩,等.双频激光干涉仪技术与发展[J].激光与红外,2004,34(4):251253.

[2]董洪波,杨召雷,胡凯.双频激光干涉仪相位差测量系统的设计[J].信息技术,2013(2):1114.

[3]羡一民.双频激光干涉仪的原理与应用(一)[J].工具技术,1996,30(4):4446.

[4]张毅刚,付平,王丽.采用数字相关法测量相位差[J].计量学报,2000,21(3):216221.

[5]骆艳卜,张会生,张斌,等.一种CORDIC算法的FPGA实现[J].计算机仿真,2009,26(9):305307.

[6]蒋庆红.相位计测量不确定度评定[J].计量与测试技术,2009,36(10):64.

[7]宋长宝,李志刚,竺小松.基于数字正交变换的相位差测量方法及误差分析[J].电路与系统学报,2006,11(1):143 146.

[8]戴高良,殷纯永.用于纳米测量的混合型外差干涉信号处理方法[J].光学技术,1999,25(1):21 24.

[9]王晓俊,周杏鹏,王毅.精密阻抗分析仪中数字相敏检波技术研究与实现[J].仪器仪表学报,2006,27(6):592595.

[10]戴高良,晃志霞,殷纯永,等 纳米精度双频激光干涉仪非线性误差的确定方法[J].中国激光,1999,26(11):987992.

[11]胡长德,陆加海,幸祺,等.基于激光干涉的长导轨直线度误差测量[J].光学仪器,2008,30(6):1015.

[12]岳峰,陈凌峰,任建荣,等.激光干涉仪的计量保证方案研究[J].光学仪器,2004,26(1):2428.