樊宏偉,刁曉飛,張福民,薛 梓,董欣媛,鐵咪咪
(1.天津大學 精密儀器與光電子工程學院,天津 300072;2.中國計量科學研究院,北京 100029;3.北京信息科技大學 儀器科學與光電工程學院,北京 100192)
激光干涉儀在精密測量、加工、定位等領域有著廣泛的應用[1~4]。通過細分激光干涉儀輸出信號,可達到納米甚至皮米級的分辨率[5,6]。CORDIC算法具有運算簡單、使用較少硬件資源的同時能夠保持著較高的分辨率和較快的處理速度等優(yōu)點[7,8],在激光干涉信號處理中有著廣泛的應用。
在干涉信號處理系統(tǒng)中,關于CORDIC算法的研究主要是針對硬件實現該算法時資源消耗的優(yōu)化、處理速度的提高、迭代次數對分辨率的影響等[5,9,10];但對于該算法的自身誤差對激光干涉儀位移測量的影響的研究較少。王曉娜等[11]對光柵數字細分的CORDIC算法總量化誤差進行了分析,對激光干涉信號處理系統(tǒng)中由CORDIC算法引入的總量化誤差分析有一定參考意義。本文在對干涉信號研究過程中發(fā)現,基于CORDIC算法的單頻激光干涉測量中存在半波長誤差,該誤差出現具有較強的隨機性,且出現概率較低,即使出現也只在干涉信號的1個周期內出現1次,極易被忽略,經常被誤認為環(huán)境噪聲誤差,很少引起研究人員的關注。在多波長絕對測距領域針對該半波長誤差有一定的研究基礎[12,13],可對單頻激光干涉測量中的半波長誤差研究提供借鑒。
本文針對該半波長誤差進行了深入研究,首先設計了以FPGA為處理器,CORDIC算法為細分方法的干涉信號處理系統(tǒng)。通過分析該誤差的特點,確定了該誤差的來源,最終提出了一種基于修正表的CORDIC算法相位補償技術消除該誤差。
單頻激光干涉儀輸出的干涉信號為2路正、余弦信號,可表示為[14]:
(1)
由式(1)可得
(2)
在激光干涉測量系統(tǒng)中,干涉信號的相位變化Δθ0為:
(3)
則:
(4)
式中:k為光學細分因子(本文取k=2);L為被測目標的位移;λ為光在空氣中的波長;N和n分別為干涉信號相位的整數部分和小數部分。
由于激光干涉系統(tǒng)為相對位移測量系統(tǒng),被測目標運動方向包括靠近和遠離參考鏡2個方向,因此在信號處理時需要根據輸入干涉信號對被測位移辨向。
將輸入干涉信號轉換為2路相位差為90°的方波信號,通過判別2路方波的變化確定整數部分N和方向,如圖1所示。當2路方波的幅值由[0,1]變?yōu)閇1,1],干涉信號變化一個周期,并規(guī)定此方向為正向,N加1;當2路方波的幅值由[1,1]變?yōu)閇0,1]時,方向為反向,N減1。
圖1 信號辨向細分原理圖Fig.1 Signal direction discrimination and subdivision
通過計算干涉信號的相位θ0確定小數部分n的值,n=θ0/(2 π),θ0∈[0,2 π]。
圖2為干涉信號經AD變換器采樣后輸入到信號處理系統(tǒng)中。干涉信號同時進入整數相位計算模塊和小數相位計算模塊分別計算N和n。由于2個模塊的延時不同,同步模塊使輸出的N和n對應于同一時刻的干涉信號,N和n相加為總相位,計算干涉信號對應被測位移值。
圖2 干涉儀信號處理系統(tǒng)原理圖Fig.2 Schematic of interferometer signal processing system
小數相位計算模塊使用CORDIC算法計算輸入干涉信號的相位值θ0。
在不同坐標系和操作模式下,CORDIC算法能夠實現不同的基本初等函數計算[15]。其迭代方程為:
(5)
式中:i=0,1,2,…,m-1,m為迭代次數;θi=arctan(2-i):di為旋轉控制因子,其取值為±1。計算輸入向量的反正切值時,使用該算法的圓周系統(tǒng)和向量模式,此時,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對干涉信號處理系統(tǒng)精度的影響,同時考慮延時和資源消耗,系統(tǒng)使用11次迭代和19位的操作數來實現相位細分。此時OQE為0.000 91 rad。對應位移量化誤差為EL=OQE/(2 π)×λ/2=0.046nm。此誤差值對干涉系統(tǒng)精度影響較小,滿足設計要求。
用Tektronix AFG1062信號源產生2路標準的正、余弦信號作為干涉信號,信號頻率為100 kHz,幅值為±1 V。信號處理系統(tǒng)ADC采樣率為120 MHz,16 bit,輸入電壓范圍為±1 V。FPGA使用Xilinx Kintex-325T。信號處理系統(tǒng)連續(xù)記錄8 000個采樣周期數據存入計算機進行分析,測試該信號處理系統(tǒng)性能。
圖4為信號處理系統(tǒng)的輸出位移曲線。由于干涉信號為理想的正、余弦信號,其對應位移值應是一條直線;而在圖中可以發(fā)現,部分區(qū)域出現了向下的位移跳變。將信號處理系統(tǒng)測量的位移值與理論值做差,得到系統(tǒng)的測量誤差,見圖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變化的時刻出現,存在一定的隨機性,隨著迭代次數的增加出現的概率會降低。
向量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相位附近會發(fā)生變化,甚至出現符號相反的情況(表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
干涉信號的李薩茹圖如圖7所示,設當前周期N=N0。正向時,輸入向量逆時針旋轉,n從0增加至1,在x軸正半軸處N=N0+1,如圖7(a)所示;反向時,輸入向量順時針旋轉,n從1減小至0,在x軸正半軸處N=N0,下一時刻N=N0-1,如圖7(b)所示。信號處理系統(tǒng)按照此規(guī)則對干涉信號處理得到總相位。
圖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軸正半軸重合后繼續(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
由于在數字系統(tǒng)中,計算相位的算法通過有限位的操作數和有限的迭代次數實現,輸出相位總是存在計算誤差,例如CORDIC算法。算法的操作數位數和迭代次數滿足要求時,對于一般的應用,該計算誤差的影響可以容忍,但在干涉系統(tǒng)設計中,涉及到整數N和小數n的結合。如表3所示,在干涉信號相位0點附近,CORDIC算法的計算誤差使得輸出相位θ跨過了[2 π-,0+],在這個區(qū)間內具有不確定性。在小數相位n與整數N結合時,可能會發(fā)生表4和表5列出的4種情況,使得總相位可能比實際值大1或者小1,從而導致干涉信號處理系統(tǒng)輸出的位移可能產生正負半波長誤差。為此,需要在信號處理系統(tǒng)中加入修正表,對CORDIC算法計算特殊向量的相位進行修正,以避免計算位移時產生粗大誤差,誤差修正表見表6。
表6 消除半波長誤差修正表Tab.6 Correction table for eliminating half-wave lenghth error
干涉信號位于第一象限時,若CORDIC算法輸出的相位值在第四象限,則令n=0;干涉信號位于第四象限時,若CORDIC算法輸出的相位值在第一象限或x軸正半軸上,則令n=1;干涉信號位于x軸正半軸時,令n=0。修正規(guī)則中將第一象限部分干涉信號對應的相位小數n近似等于0,第四象限部分干涉信號對應的n近似等于1,這會引入誤差,但該誤差值的大小可用式(10)計算,由式(12)知該誤差小于量化誤差OQE,對信號處理系統(tǒng)的輸出位移影響較小。
以3.1節(jié)的實驗條件對修正后的信號處理系統(tǒng)進行驗證,同時記錄未修正和修正后的數據。圖8是迭代次數n為11時,對CORDIC算法輸出未修正和修正后的位移曲線,由圖可知該粗大誤差已被有效消除且沒有導致信號處理系統(tǒng)的總誤差增加。
圖8 迭代次數為11時未修正和修正后的位移曲線Fig.8 Uncorrected and corrected displacement curves with 11 iterations
表7列出了粗大誤差點和其前后各點的相關值,該位移序列中所有粗大誤差均是由于CORDIC算法將第四象限干涉信號的相位值計算為0造成的,即為表4中的第①類誤差,經信號處理系統(tǒng)修正后該時刻干涉信號對應的n被修正為1,信號處理系統(tǒng)輸出的位移值也與理論值接近。
表7 圖8中各誤差點未修正數據和修正后數據對比Tab.7 Comparisons of uncorrected and corrected data for each error point in Fig.8
本文研制了基于CORDIC算法的單頻激光干涉信號處理系統(tǒng),確定了CORDIC算法的迭代次數和位數。研究發(fā)現信號處理系統(tǒng)計算位移時存在半波長粗大誤差,該誤差隨機出現且符號不定。在本文的干涉信號處理系統(tǒng)中表現為CORDIC算法的角度近似誤差使得0相位附近的干涉信號輸出相位可能發(fā)生符號錯誤,在干涉信號小數n與整數N相加時出現±1誤差,最終導致位移測量結果出現半波長誤差。為此提出了一種基于修正表的CORDIC算法相位補償技術,對CORDIC算法輸出的相位進行修正,使其與輸入干涉信號的理論相位值符號一致。實驗結果表明該補償技術能夠有效消除粗大誤差,且不增大干涉系統(tǒng)的總量化誤差。該補償技術對基于CORDIC算法的單頻激光干涉信號處理系統(tǒng)具有一定的應用價值。