胡玲+潘征宇+洪扁+趙棟
文章編號: 10055630(2014)03025805
收稿日期: 20140217
基金項目: 國家自然科學(xué)基金(61107077)
作者簡介: 胡玲(1987),女,碩士研究生,主要從事壓力計量方面的研究。通訊作者: 潘征宇(1961),男,高級工程師,主要從事壓力計量方面的研究。
摘要: 基于Altera公司FPGA芯片,提出了一種基于雙頻激光干涉儀系統(tǒng)中數(shù)字相位計的實現(xiàn)方法。該相位計用于測量系統(tǒng)中被測信號 和參考信號之間的相位差角度,間接測量激光干涉儀的光程差信息。被測信號經(jīng)過光電接收器以及A/D模數(shù)轉(zhuǎn)換成數(shù)字信號送到FPGA芯片中,與FPGA內(nèi)建的查找表參考信號做正交相關(guān)法解調(diào)運算,得到一組XY值,再利用CORDIC算法計算 arctan函數(shù)獲取相位差,最后計算出干涉儀的光程差,算法的全過程使用FPGA硬件實現(xiàn)。實驗結(jié)果表明,該相位計使雙頻激光干涉儀的相位差測量精度在0.01°以內(nèi)。
關(guān)鍵詞: 數(shù)字相位計; 雙頻激光干涉儀; FPGA; CORDIC算法
中圖分類號: TM 932文獻標(biāo)志碼: Adoi: 10.3969/j.issn.10055630.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 lookup 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
引言雙頻激光干涉儀是在單頻激光干涉儀的基礎(chǔ)上發(fā)展的一種外差式干涉儀。在各種干涉測量系統(tǒng)中,外差干涉技術(shù)因其抗干擾性好的突出優(yōu)點,應(yīng)用最為廣泛。在引入相位測量后,可把外差干涉的測量精度提高多個數(shù)量級,更適用于需要高精度測量的場合。基于相位測量的外差干涉系統(tǒng)可以應(yīng)用在包括納米精度測量、機械轉(zhuǎn)角精密測量、直線度測量、生物分子相互作用檢測等方面在內(nèi)的許多領(lǐng)域中,如何提高相位差檢測精度值得加以研究[1]。雙頻激光干涉儀系統(tǒng)框圖如圖1所示。
圖1雙頻激光干涉儀系統(tǒng)框圖
Fig.1The block diagram of dual frequency laser interferometer system
隨著科學(xué)技術(shù)的發(fā)展,電信號相位差的數(shù)字化測量技術(shù)在許多行業(yè)有著重要且廣泛的應(yīng)用,如在電工技術(shù)、工業(yè)自動化、測試控制、通訊等。求取相位差的方法有多種,常用的有過零法、頻譜分析法、相關(guān)算法等。過零法測量相位差是通過判斷兩個同頻信號過零點的時刻,計算其時間差,然后將其轉(zhuǎn)換為相應(yīng)相位差,但當(dāng)信號中含有干擾時,信號的過零點不易準(zhǔn)確測量,誤差較大。頻譜分析法是通過對被檢測信號進行頻譜分析,獲得信號的相頻特性,然后計算兩信號在主頻率處的差值,即可測得兩個信號的相位差,但頻譜分析法的檢測結(jié)果受采樣點數(shù)的影響較大[2]?;谏鲜龇治?本文提出了一種雙頻激光干涉儀系統(tǒng)中數(shù)字相位計的實現(xiàn)方法,該方法將數(shù)字信號處理的正交相關(guān)法解調(diào)算法引入了鑒相系統(tǒng),由光電接收器將光信號接收并轉(zhuǎn)化成電信號,輸出后經(jīng)過模數(shù)轉(zhuǎn)化電路將模擬信號轉(zhuǎn)化成數(shù)字信號,送入 FPGA,進行CORDIC(coordinate rotation digital computer)算法得出外差式干涉儀系統(tǒng)中測量信號與參考信號之間的相位差,最后輸出數(shù)據(jù)處理結(jié)果[34]。光學(xué)儀器第36卷
第3期胡玲,等:雙頻激光干涉儀中的數(shù)字相位計設(shè)計
1數(shù)字相位計的原理與實現(xiàn)
1.1正交相關(guān)法解調(diào)理論基礎(chǔ)數(shù)字相關(guān)正交解調(diào)法原理框圖如圖2所示,被測信號經(jīng)A/D模數(shù)轉(zhuǎn)換形成離散數(shù)字化后的信號sin(n),然后對被測信號做等間隔采樣,間隔的時間和信號與自己的固有頻率有關(guān),并且定義每周期采樣點數(shù)為N。
圖2正交相關(guān)法解調(diào)原理框圖
Fig.2The block diagram of orthogonal correlation algorithm
可以推導(dǎo)出采樣離散化后的信號: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)作互相關(guān)運算有:VX=1N∑N-1n=0Sin(n)*rsin(n)(2)可得:VX=A2cosφ(3)同理當(dāng)參考信號為余弦信號時有:VY=A2sinφ(4)由以上數(shù)學(xué)相關(guān)法公式推算,被測信號Vin的初相位φ可以通過正交相關(guān)乘法后的VX和VY分量做arctan函數(shù)求得φ=arctanVYVX(5)1.2CORDIC算法基礎(chǔ)坐標(biāo)旋轉(zhuǎn)數(shù)字式計算機的基本構(gòu)想是通過運用運算基數(shù)相關(guān)角度的不斷旋轉(zhuǎn),達到逼近所需旋轉(zhuǎn)的角度,所以基于這點來說,它只是一個數(shù)值逼近的方法。由于這些固定的角度與計算基數(shù)有關(guān),運算只有移位和加減法,因而這在硬件上較為容易實現(xiàn)[5]。目前的FPGA 具有許多乘法器和加法器, 然而各種各樣的通信技術(shù)和矩陣算法則需要三角函數(shù)、平方根等的運算。在FPGA 上執(zhí)行這些運算可以使用查找表,或是迭代法。本節(jié)介紹了CORDIC 算法,這是一個“移位相加” 算法,允許計算不同的三角函數(shù),例如sin,cos或者arctan函數(shù)[6]。CORDIC算法的基本迭代公式為:Xn+1=Xn-dnYn2-n
Yn+1=Yn+dnXn2-n
Zn+1=Zn-dnarctan(2-n)(6)如果將輸入向量通過一個特定的角Y變?yōu)?,切旋轉(zhuǎn)的方向取決于d的符號,即:dn=+1if Yn<0
-1if Yn≥0則N次迭代后CORDIC公式的輸出變?yōu)?Xn+1=PX02+Y02
Yn+1=0
Zn+1=Z0+arctanY0X0(7)如果Z0=0,對于給定的X0和Y0,N次迭代以后CORDIC公式的輸出變?yōu)榻?jīng)過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)的長度和角度,即從平面坐標(biāo)到極坐標(biāo)的變換,圖3為CORDIC迭代算法的具體實現(xiàn)框圖,只要通過給定的初始值,在迭代次數(shù)達到Y(jié)趨近于0值時候,輸出的Z值即為相位差角度arctan(φ)。2硬件算法在FPGA中集成系統(tǒng)采用主時鐘信號為50 MHz,主控模塊在接收到使能測量的start信號后開始一個周期的相位差檢測,首先是驅(qū)動A/D轉(zhuǎn)換模塊,將光電轉(zhuǎn)換的信號數(shù)字化以后和內(nèi)建的ROM查找表在Booth乘法器模塊中實現(xiàn)點對點的乘法運算,ROM查找表數(shù)據(jù)來源于MATLAB軟件生成的mif文件格式,Quartus軟件可以例化出信號接口給到使用者,對于sin參考信號,數(shù)據(jù)為帶符號位寬11 bits整型,即正弦的振幅被量化為-1 024~+1 023,一個周期有1 024個離散數(shù)據(jù)點組成,同理cos參考信號與sin為正交相位差90°。將理論上已經(jīng)轉(zhuǎn)換好的A/D第一個數(shù)據(jù)和第一個FPGA內(nèi)置查找表中的參考正弦信號以及余弦信號做乘法,這樣就獲得了第1次乘法的結(jié)果,緩存起來,然后再根據(jù)之前算得的A/D采樣間隔,去做第2次,第3次乘法……一直做到1 024次完成,并且把每次的乘法結(jié)果在緩存寄存器中累加,可以得到兩路信號,一路是將數(shù)字化的被測信號與正弦參考信號相乘的并且累加的Xout;另一路則相應(yīng)是將數(shù)字化的被測信號與余弦參考信號相乘并且累加的Yout,這兩路信號通過計算arctan函數(shù)即可獲得被測信號與參考信號的相位差φ,因為被測信號的離散化數(shù)值要分別與sin和cos參考信號做乘法相關(guān)解調(diào)運算,所以booth模塊復(fù)用邏輯輸出的兩個乘積product_x和product_y通過1 024次累加后32 bits位寬的x_out和y_out分別作為后續(xù)arctan模塊的輸入激勵。在arctan模塊中運用15級流水線方法實現(xiàn)CORDIC算法的迭代運算,移位模塊完成式(6) 中的2-n操作,而內(nèi)置的Z角度數(shù)值則事先把arctan (2-n) 的值放入,每次計算時只需逐次把數(shù)據(jù)傳入加減模塊即可。運算加減取決于dn符號位,在流水線經(jīng)過15級運算后,Y趨近于0,輸出的Z值即為相位差角度[78]。在CORDIC設(shè)計中特別需要注意的是長度和角度兩者數(shù)據(jù)的量化,否則得不到正確的角度值,此設(shè)計中使用32位有符號數(shù)量化最大坐標(biāo)點,使用18位無符號數(shù)量化0°~360°角度。在計算完最后的結(jié)果之后為一個正弦信號周期的值,可以將多次周期計算得到的相位差信息取平均值輸出,減少噪聲和數(shù)值逼近誤差等信息[9]。如圖4所示為FPGA中所用的算法。
圖4FPGA中所用的算法
Fig.4Algorithm on FPGA
3實驗結(jié)果實驗中理論和實際測得的相位差角度對比值如表1所示,由表可見數(shù)字相位計精度可以達到 0.01°以內(nèi),滿足設(shè)計的需求。相位計整合所有模塊的運算結(jié)果如表1所示,在仿真的時候,根據(jù)A/D激勵輸入和參考ref_sin以及ref_cos的相位差,這些都由MATLAB輸出來人為控制。可以看到,當(dāng)數(shù)字離散化的被測信號與參考信號理論上通過MATLAB輸出相位差為0.100°的時候,通過相關(guān)法正交解調(diào)調(diào)用BOOTH乘法器后,被測信號與正弦參考信號相乘累加1 024次后輸出的X0為534 465 330,而被測信號與余弦參考信號相乘累加1 024次后的輸出Y0為923 488,我們認為這一組X0和Y0為CORDIC算法模塊的輸入激勵,并且算法的內(nèi)部16次流水線運算,得到最后的CORDIC累加器為Z16為74,此設(shè)計中使用32位有符號數(shù)量化最大坐標(biāo)點(X,Y),使用18位無符號數(shù)量化0°~360°角度Z,所以可以通過量化推算,74即代表角度0.099°,所以理論上的絕對誤差即為0.001°,其余幾組值是通過同樣的方法輸入給系統(tǒng),并且我們可以看到最大絕對誤差在0.005°,可以見得數(shù)字相位計的在各個角度的測試下,精度可以達到0.010°以內(nèi),滿足設(shè)計的需求[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
根據(jù)仿真的結(jié)果可以看到,相位計的精度在理論上可以達到一定的水準(zhǔn),但是此測試中并未就模擬A/D激勵信號源給出噪聲疊加的測試,如果在數(shù)字化的被測信號上添加隨機數(shù)的噪聲幅度疊加,根據(jù)噪聲幅度和A/D量化幅度的百分比,就能得到更接近實際的仿真數(shù)據(jù)。在此測試數(shù)據(jù)中,A/D的激勵源和參考值相乘的時候,是根據(jù)參考信號頻率等間隔平分的,也就是做除法的時候,是沒有余數(shù)的結(jié)果,在一定程度上也加大了理論上相位計的高精度表現(xiàn)。至于相位計在仿真上還存在0.010°以內(nèi)的誤差是因為不可避免量化的結(jié)果,CORDIC算法需要對模值和角度量化,并且都是整數(shù)級運算,在推演遞推公式的時候,都是以右移來表示2-i運算,這樣本來存在的小數(shù)就會消失,并且CORDIC運算本來就是要無數(shù)次迭代才接近理論數(shù)據(jù),所以由于算法運算量和運算時間的限制,我們只用了16級流水線對輸入的X和Y進行運算,這也是影響精度的原因之一。4結(jié)論本文創(chuàng)新點在于從測量相位計的原理出發(fā),對數(shù)字相位計的算法進行了深入的分析和研究,找出適合雙頻激光干涉儀系統(tǒng)的相位計方案,并在此基礎(chǔ)之上,將算法優(yōu)化集成于FPGA系統(tǒng)中。在集成的過程中,需要逐步研究算法的代碼化和模塊化步驟,例如乘法器、CORDIC模塊等從行為級描述到RTL硬件語言描述,接著又用Modelsim仿真工具對系統(tǒng)相位計的各個節(jié)點輸出進行仿真,然后對理論上仿真上的結(jié)果予以一定的誤差分析,算出相位計角度之后,再根據(jù)實際量化的數(shù)值去糾正參考信號的相位,這在雙頻激光干涉儀系統(tǒng)中起到了關(guān)鍵作用[1112]。同時,系統(tǒng)的運行速度,穩(wěn)定性和精度也因加入了FPGA而得到進一步改善,具有良好的應(yīng)用前景。
參考文獻:
[1]所睿,范志軍,李巖,等.雙頻激光干涉儀技術(shù)與發(fā)展[J].激光與紅外,2004,34(4):251253.
[2]董洪波,楊召雷,胡凱.雙頻激光干涉儀相位差測量系統(tǒng)的設(shè)計[J].信息技術(shù),2013(2):1114.
[3]羨一民.雙頻激光干涉儀的原理與應(yīng)用(一)[J].工具技術(shù),1996,30(4):4446.
[4]張毅剛,付平,王麗.采用數(shù)字相關(guān)法測量相位差[J].計量學(xué)報,2000,21(3):216221.
[5]駱艷卜,張會生,張斌,等.一種CORDIC算法的FPGA實現(xiàn)[J].計算機仿真,2009,26(9):305307.
[6]蔣慶紅.相位計測量不確定度評定[J].計量與測試技術(shù),2009,36(10):64.
[7]宋長寶,李志剛,竺小松.基于數(shù)字正交變換的相位差測量方法及誤差分析[J].電路與系統(tǒng)學(xué)報,2006,11(1):143 146.
[8]戴高良,殷純永.用于納米測量的混合型外差干涉信號處理方法[J].光學(xué)技術(shù),1999,25(1):21 24.
[9]王曉俊,周杏鵬,王毅.精密阻抗分析儀中數(shù)字相敏檢波技術(shù)研究與實現(xiàn)[J].儀器儀表學(xué)報,2006,27(6):592595.
[10]戴高良,晃志霞,殷純永,等 納米精度雙頻激光干涉儀非線性誤差的確定方法[J].中國激光,1999,26(11):987992.
[11]胡長德,陸加海,幸祺,等.基于激光干涉的長導(dǎo)軌直線度誤差測量[J].光學(xué)儀器,2008,30(6):1015.
[12]岳峰,陳凌峰,任建榮,等.激光干涉儀的計量保證方案研究[J].光學(xué)儀器,2004,26(1):2428.
Yn+1=Yn+dnXn2-n
Zn+1=Zn-dnarctan(2-n)(6)如果將輸入向量通過一個特定的角Y變?yōu)?,切旋轉(zhuǎn)的方向取決于d的符號,即:dn=+1if Yn<0
-1if Yn≥0則N次迭代后CORDIC公式的輸出變?yōu)?Xn+1=PX02+Y02
Yn+1=0
Zn+1=Z0+arctanY0X0(7)如果Z0=0,對于給定的X0和Y0,N次迭代以后CORDIC公式的輸出變?yōu)榻?jīng)過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)的長度和角度,即從平面坐標(biāo)到極坐標(biāo)的變換,圖3為CORDIC迭代算法的具體實現(xiàn)框圖,只要通過給定的初始值,在迭代次數(shù)達到Y(jié)趨近于0值時候,輸出的Z值即為相位差角度arctan(φ)。2硬件算法在FPGA中集成系統(tǒng)采用主時鐘信號為50 MHz,主控模塊在接收到使能測量的start信號后開始一個周期的相位差檢測,首先是驅(qū)動A/D轉(zhuǎn)換模塊,將光電轉(zhuǎn)換的信號數(shù)字化以后和內(nèi)建的ROM查找表在Booth乘法器模塊中實現(xiàn)點對點的乘法運算,ROM查找表數(shù)據(jù)來源于MATLAB軟件生成的mif文件格式,Quartus軟件可以例化出信號接口給到使用者,對于sin參考信號,數(shù)據(jù)為帶符號位寬11 bits整型,即正弦的振幅被量化為-1 024~+1 023,一個周期有1 024個離散數(shù)據(jù)點組成,同理cos參考信號與sin為正交相位差90°。將理論上已經(jīng)轉(zhuǎn)換好的A/D第一個數(shù)據(jù)和第一個FPGA內(nèi)置查找表中的參考正弦信號以及余弦信號做乘法,這樣就獲得了第1次乘法的結(jié)果,緩存起來,然后再根據(jù)之前算得的A/D采樣間隔,去做第2次,第3次乘法……一直做到1 024次完成,并且把每次的乘法結(jié)果在緩存寄存器中累加,可以得到兩路信號,一路是將數(shù)字化的被測信號與正弦參考信號相乘的并且累加的Xout;另一路則相應(yīng)是將數(shù)字化的被測信號與余弦參考信號相乘并且累加的Yout,這兩路信號通過計算arctan函數(shù)即可獲得被測信號與參考信號的相位差φ,因為被測信號的離散化數(shù)值要分別與sin和cos參考信號做乘法相關(guān)解調(diào)運算,所以booth模塊復(fù)用邏輯輸出的兩個乘積product_x和product_y通過1 024次累加后32 bits位寬的x_out和y_out分別作為后續(xù)arctan模塊的輸入激勵。在arctan模塊中運用15級流水線方法實現(xiàn)CORDIC算法的迭代運算,移位模塊完成式(6) 中的2-n操作,而內(nèi)置的Z角度數(shù)值則事先把arctan (2-n) 的值放入,每次計算時只需逐次把數(shù)據(jù)傳入加減模塊即可。運算加減取決于dn符號位,在流水線經(jīng)過15級運算后,Y趨近于0,輸出的Z值即為相位差角度[78]。在CORDIC設(shè)計中特別需要注意的是長度和角度兩者數(shù)據(jù)的量化,否則得不到正確的角度值,此設(shè)計中使用32位有符號數(shù)量化最大坐標(biāo)點,使用18位無符號數(shù)量化0°~360°角度。在計算完最后的結(jié)果之后為一個正弦信號周期的值,可以將多次周期計算得到的相位差信息取平均值輸出,減少噪聲和數(shù)值逼近誤差等信息[9]。如圖4所示為FPGA中所用的算法。
圖4FPGA中所用的算法
Fig.4Algorithm on FPGA
3實驗結(jié)果實驗中理論和實際測得的相位差角度對比值如表1所示,由表可見數(shù)字相位計精度可以達到 0.01°以內(nèi),滿足設(shè)計的需求。相位計整合所有模塊的運算結(jié)果如表1所示,在仿真的時候,根據(jù)A/D激勵輸入和參考ref_sin以及ref_cos的相位差,這些都由MATLAB輸出來人為控制。可以看到,當(dāng)數(shù)字離散化的被測信號與參考信號理論上通過MATLAB輸出相位差為0.100°的時候,通過相關(guān)法正交解調(diào)調(diào)用BOOTH乘法器后,被測信號與正弦參考信號相乘累加1 024次后輸出的X0為534 465 330,而被測信號與余弦參考信號相乘累加1 024次后的輸出Y0為923 488,我們認為這一組X0和Y0為CORDIC算法模塊的輸入激勵,并且算法的內(nèi)部16次流水線運算,得到最后的CORDIC累加器為Z16為74,此設(shè)計中使用32位有符號數(shù)量化最大坐標(biāo)點(X,Y),使用18位無符號數(shù)量化0°~360°角度Z,所以可以通過量化推算,74即代表角度0.099°,所以理論上的絕對誤差即為0.001°,其余幾組值是通過同樣的方法輸入給系統(tǒng),并且我們可以看到最大絕對誤差在0.005°,可以見得數(shù)字相位計的在各個角度的測試下,精度可以達到0.010°以內(nèi),滿足設(shè)計的需求[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
根據(jù)仿真的結(jié)果可以看到,相位計的精度在理論上可以達到一定的水準(zhǔn),但是此測試中并未就模擬A/D激勵信號源給出噪聲疊加的測試,如果在數(shù)字化的被測信號上添加隨機數(shù)的噪聲幅度疊加,根據(jù)噪聲幅度和A/D量化幅度的百分比,就能得到更接近實際的仿真數(shù)據(jù)。在此測試數(shù)據(jù)中,A/D的激勵源和參考值相乘的時候,是根據(jù)參考信號頻率等間隔平分的,也就是做除法的時候,是沒有余數(shù)的結(jié)果,在一定程度上也加大了理論上相位計的高精度表現(xiàn)。至于相位計在仿真上還存在0.010°以內(nèi)的誤差是因為不可避免量化的結(jié)果,CORDIC算法需要對模值和角度量化,并且都是整數(shù)級運算,在推演遞推公式的時候,都是以右移來表示2-i運算,這樣本來存在的小數(shù)就會消失,并且CORDIC運算本來就是要無數(shù)次迭代才接近理論數(shù)據(jù),所以由于算法運算量和運算時間的限制,我們只用了16級流水線對輸入的X和Y進行運算,這也是影響精度的原因之一。4結(jié)論本文創(chuàng)新點在于從測量相位計的原理出發(fā),對數(shù)字相位計的算法進行了深入的分析和研究,找出適合雙頻激光干涉儀系統(tǒng)的相位計方案,并在此基礎(chǔ)之上,將算法優(yōu)化集成于FPGA系統(tǒng)中。在集成的過程中,需要逐步研究算法的代碼化和模塊化步驟,例如乘法器、CORDIC模塊等從行為級描述到RTL硬件語言描述,接著又用Modelsim仿真工具對系統(tǒng)相位計的各個節(jié)點輸出進行仿真,然后對理論上仿真上的結(jié)果予以一定的誤差分析,算出相位計角度之后,再根據(jù)實際量化的數(shù)值去糾正參考信號的相位,這在雙頻激光干涉儀系統(tǒng)中起到了關(guān)鍵作用[1112]。同時,系統(tǒng)的運行速度,穩(wěn)定性和精度也因加入了FPGA而得到進一步改善,具有良好的應(yīng)用前景。
參考文獻:
[1]所睿,范志軍,李巖,等.雙頻激光干涉儀技術(shù)與發(fā)展[J].激光與紅外,2004,34(4):251253.
[2]董洪波,楊召雷,胡凱.雙頻激光干涉儀相位差測量系統(tǒng)的設(shè)計[J].信息技術(shù),2013(2):1114.
[3]羨一民.雙頻激光干涉儀的原理與應(yīng)用(一)[J].工具技術(shù),1996,30(4):4446.
[4]張毅剛,付平,王麗.采用數(shù)字相關(guān)法測量相位差[J].計量學(xué)報,2000,21(3):216221.
[5]駱艷卜,張會生,張斌,等.一種CORDIC算法的FPGA實現(xiàn)[J].計算機仿真,2009,26(9):305307.
[6]蔣慶紅.相位計測量不確定度評定[J].計量與測試技術(shù),2009,36(10):64.
[7]宋長寶,李志剛,竺小松.基于數(shù)字正交變換的相位差測量方法及誤差分析[J].電路與系統(tǒng)學(xué)報,2006,11(1):143 146.
[8]戴高良,殷純永.用于納米測量的混合型外差干涉信號處理方法[J].光學(xué)技術(shù),1999,25(1):21 24.
[9]王曉俊,周杏鵬,王毅.精密阻抗分析儀中數(shù)字相敏檢波技術(shù)研究與實現(xiàn)[J].儀器儀表學(xué)報,2006,27(6):592595.
[10]戴高良,晃志霞,殷純永,等 納米精度雙頻激光干涉儀非線性誤差的確定方法[J].中國激光,1999,26(11):987992.
[11]胡長德,陸加海,幸祺,等.基于激光干涉的長導(dǎo)軌直線度誤差測量[J].光學(xué)儀器,2008,30(6):1015.
[12]岳峰,陳凌峰,任建榮,等.激光干涉儀的計量保證方案研究[J].光學(xué)儀器,2004,26(1):2428.
Yn+1=Yn+dnXn2-n
Zn+1=Zn-dnarctan(2-n)(6)如果將輸入向量通過一個特定的角Y變?yōu)?,切旋轉(zhuǎn)的方向取決于d的符號,即:dn=+1if Yn<0
-1if Yn≥0則N次迭代后CORDIC公式的輸出變?yōu)?Xn+1=PX02+Y02
Yn+1=0
Zn+1=Z0+arctanY0X0(7)如果Z0=0,對于給定的X0和Y0,N次迭代以后CORDIC公式的輸出變?yōu)榻?jīng)過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)的長度和角度,即從平面坐標(biāo)到極坐標(biāo)的變換,圖3為CORDIC迭代算法的具體實現(xiàn)框圖,只要通過給定的初始值,在迭代次數(shù)達到Y(jié)趨近于0值時候,輸出的Z值即為相位差角度arctan(φ)。2硬件算法在FPGA中集成系統(tǒng)采用主時鐘信號為50 MHz,主控模塊在接收到使能測量的start信號后開始一個周期的相位差檢測,首先是驅(qū)動A/D轉(zhuǎn)換模塊,將光電轉(zhuǎn)換的信號數(shù)字化以后和內(nèi)建的ROM查找表在Booth乘法器模塊中實現(xiàn)點對點的乘法運算,ROM查找表數(shù)據(jù)來源于MATLAB軟件生成的mif文件格式,Quartus軟件可以例化出信號接口給到使用者,對于sin參考信號,數(shù)據(jù)為帶符號位寬11 bits整型,即正弦的振幅被量化為-1 024~+1 023,一個周期有1 024個離散數(shù)據(jù)點組成,同理cos參考信號與sin為正交相位差90°。將理論上已經(jīng)轉(zhuǎn)換好的A/D第一個數(shù)據(jù)和第一個FPGA內(nèi)置查找表中的參考正弦信號以及余弦信號做乘法,這樣就獲得了第1次乘法的結(jié)果,緩存起來,然后再根據(jù)之前算得的A/D采樣間隔,去做第2次,第3次乘法……一直做到1 024次完成,并且把每次的乘法結(jié)果在緩存寄存器中累加,可以得到兩路信號,一路是將數(shù)字化的被測信號與正弦參考信號相乘的并且累加的Xout;另一路則相應(yīng)是將數(shù)字化的被測信號與余弦參考信號相乘并且累加的Yout,這兩路信號通過計算arctan函數(shù)即可獲得被測信號與參考信號的相位差φ,因為被測信號的離散化數(shù)值要分別與sin和cos參考信號做乘法相關(guān)解調(diào)運算,所以booth模塊復(fù)用邏輯輸出的兩個乘積product_x和product_y通過1 024次累加后32 bits位寬的x_out和y_out分別作為后續(xù)arctan模塊的輸入激勵。在arctan模塊中運用15級流水線方法實現(xiàn)CORDIC算法的迭代運算,移位模塊完成式(6) 中的2-n操作,而內(nèi)置的Z角度數(shù)值則事先把arctan (2-n) 的值放入,每次計算時只需逐次把數(shù)據(jù)傳入加減模塊即可。運算加減取決于dn符號位,在流水線經(jīng)過15級運算后,Y趨近于0,輸出的Z值即為相位差角度[78]。在CORDIC設(shè)計中特別需要注意的是長度和角度兩者數(shù)據(jù)的量化,否則得不到正確的角度值,此設(shè)計中使用32位有符號數(shù)量化最大坐標(biāo)點,使用18位無符號數(shù)量化0°~360°角度。在計算完最后的結(jié)果之后為一個正弦信號周期的值,可以將多次周期計算得到的相位差信息取平均值輸出,減少噪聲和數(shù)值逼近誤差等信息[9]。如圖4所示為FPGA中所用的算法。
圖4FPGA中所用的算法
Fig.4Algorithm on FPGA
3實驗結(jié)果實驗中理論和實際測得的相位差角度對比值如表1所示,由表可見數(shù)字相位計精度可以達到 0.01°以內(nèi),滿足設(shè)計的需求。相位計整合所有模塊的運算結(jié)果如表1所示,在仿真的時候,根據(jù)A/D激勵輸入和參考ref_sin以及ref_cos的相位差,這些都由MATLAB輸出來人為控制。可以看到,當(dāng)數(shù)字離散化的被測信號與參考信號理論上通過MATLAB輸出相位差為0.100°的時候,通過相關(guān)法正交解調(diào)調(diào)用BOOTH乘法器后,被測信號與正弦參考信號相乘累加1 024次后輸出的X0為534 465 330,而被測信號與余弦參考信號相乘累加1 024次后的輸出Y0為923 488,我們認為這一組X0和Y0為CORDIC算法模塊的輸入激勵,并且算法的內(nèi)部16次流水線運算,得到最后的CORDIC累加器為Z16為74,此設(shè)計中使用32位有符號數(shù)量化最大坐標(biāo)點(X,Y),使用18位無符號數(shù)量化0°~360°角度Z,所以可以通過量化推算,74即代表角度0.099°,所以理論上的絕對誤差即為0.001°,其余幾組值是通過同樣的方法輸入給系統(tǒng),并且我們可以看到最大絕對誤差在0.005°,可以見得數(shù)字相位計的在各個角度的測試下,精度可以達到0.010°以內(nèi),滿足設(shè)計的需求[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
根據(jù)仿真的結(jié)果可以看到,相位計的精度在理論上可以達到一定的水準(zhǔn),但是此測試中并未就模擬A/D激勵信號源給出噪聲疊加的測試,如果在數(shù)字化的被測信號上添加隨機數(shù)的噪聲幅度疊加,根據(jù)噪聲幅度和A/D量化幅度的百分比,就能得到更接近實際的仿真數(shù)據(jù)。在此測試數(shù)據(jù)中,A/D的激勵源和參考值相乘的時候,是根據(jù)參考信號頻率等間隔平分的,也就是做除法的時候,是沒有余數(shù)的結(jié)果,在一定程度上也加大了理論上相位計的高精度表現(xiàn)。至于相位計在仿真上還存在0.010°以內(nèi)的誤差是因為不可避免量化的結(jié)果,CORDIC算法需要對模值和角度量化,并且都是整數(shù)級運算,在推演遞推公式的時候,都是以右移來表示2-i運算,這樣本來存在的小數(shù)就會消失,并且CORDIC運算本來就是要無數(shù)次迭代才接近理論數(shù)據(jù),所以由于算法運算量和運算時間的限制,我們只用了16級流水線對輸入的X和Y進行運算,這也是影響精度的原因之一。4結(jié)論本文創(chuàng)新點在于從測量相位計的原理出發(fā),對數(shù)字相位計的算法進行了深入的分析和研究,找出適合雙頻激光干涉儀系統(tǒng)的相位計方案,并在此基礎(chǔ)之上,將算法優(yōu)化集成于FPGA系統(tǒng)中。在集成的過程中,需要逐步研究算法的代碼化和模塊化步驟,例如乘法器、CORDIC模塊等從行為級描述到RTL硬件語言描述,接著又用Modelsim仿真工具對系統(tǒng)相位計的各個節(jié)點輸出進行仿真,然后對理論上仿真上的結(jié)果予以一定的誤差分析,算出相位計角度之后,再根據(jù)實際量化的數(shù)值去糾正參考信號的相位,這在雙頻激光干涉儀系統(tǒng)中起到了關(guān)鍵作用[1112]。同時,系統(tǒng)的運行速度,穩(wěn)定性和精度也因加入了FPGA而得到進一步改善,具有良好的應(yīng)用前景。
參考文獻:
[1]所睿,范志軍,李巖,等.雙頻激光干涉儀技術(shù)與發(fā)展[J].激光與紅外,2004,34(4):251253.
[2]董洪波,楊召雷,胡凱.雙頻激光干涉儀相位差測量系統(tǒng)的設(shè)計[J].信息技術(shù),2013(2):1114.
[3]羨一民.雙頻激光干涉儀的原理與應(yīng)用(一)[J].工具技術(shù),1996,30(4):4446.
[4]張毅剛,付平,王麗.采用數(shù)字相關(guān)法測量相位差[J].計量學(xué)報,2000,21(3):216221.
[5]駱艷卜,張會生,張斌,等.一種CORDIC算法的FPGA實現(xiàn)[J].計算機仿真,2009,26(9):305307.
[6]蔣慶紅.相位計測量不確定度評定[J].計量與測試技術(shù),2009,36(10):64.
[7]宋長寶,李志剛,竺小松.基于數(shù)字正交變換的相位差測量方法及誤差分析[J].電路與系統(tǒng)學(xué)報,2006,11(1):143 146.
[8]戴高良,殷純永.用于納米測量的混合型外差干涉信號處理方法[J].光學(xué)技術(shù),1999,25(1):21 24.
[9]王曉俊,周杏鵬,王毅.精密阻抗分析儀中數(shù)字相敏檢波技術(shù)研究與實現(xiàn)[J].儀器儀表學(xué)報,2006,27(6):592595.
[10]戴高良,晃志霞,殷純永,等 納米精度雙頻激光干涉儀非線性誤差的確定方法[J].中國激光,1999,26(11):987992.
[11]胡長德,陸加海,幸祺,等.基于激光干涉的長導(dǎo)軌直線度誤差測量[J].光學(xué)儀器,2008,30(6):1015.
[12]岳峰,陳凌峰,任建榮,等.激光干涉儀的計量保證方案研究[J].光學(xué)儀器,2004,26(1):2428.