《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 一種基于CORDIC算法的自整角機(jī)信號(hào)解碼研究
一種基于CORDIC算法的自整角機(jī)信號(hào)解碼研究
2016年微型機(jī)與應(yīng)用第18期
桑坤,朱向冰,金慧敏
安徽師范大學(xué) 物理與電子信息學(xué)院,安徽 蕪湖 241000
摘要: 自整角機(jī)是一種用于角度測(cè)量的微型電機(jī),其輸出包含角度的模擬信號(hào)經(jīng)過(guò)簡(jiǎn)單處理和A/D變換后再通過(guò)CORDI算法解碼。CODIC算法具有精度靈活可調(diào)、運(yùn)算速度快、硬件實(shí)現(xiàn)簡(jiǎn)單等優(yōu)點(diǎn);通過(guò)對(duì)CORDC算法角度及對(duì)自整角機(jī)輸出信號(hào)的象限修正,設(shè)計(jì)了一種基于CORDIC算法流水線技術(shù)的自整角機(jī)解碼算法,并以FPGA為平臺(tái)進(jìn)行模擬和仿真,驗(yàn)證其準(zhǔn)確性及可行性。
Abstract:
Key words :

  桑坤,朱向冰,金慧敏

  (安徽師范大學(xué) 物理與電子信息學(xué)院,安徽 蕪湖 241000)

       摘要:自整角機(jī)是一種用于角度測(cè)量的微型電機(jī),其輸出包含角度的模擬信號(hào)經(jīng)過(guò)簡(jiǎn)單處理和A/D變換后再通過(guò)CORDI算法解碼。CODIC算法具有精度靈活可調(diào)、運(yùn)算速度快、硬件實(shí)現(xiàn)簡(jiǎn)單等優(yōu)點(diǎn);通過(guò)對(duì)CORDC算法角度及對(duì)自整角機(jī)輸出信號(hào)的象限修正,設(shè)計(jì)了一種基于CORDIC算法流水線技術(shù)的自整角機(jī)解碼算法,并以FPGA為平臺(tái)進(jìn)行模擬和仿真,驗(yàn)證其準(zhǔn)確性及可行性。

  關(guān)鍵詞:CORDIC算法;自整角機(jī);解碼;FPGA

0引言

  自整角機(jī)是一種高精度的角度位置傳感器[1],廣泛應(yīng)用于航海、航天、方位同步指示系統(tǒng)火炮等伺服系統(tǒng)中。自整角機(jī)輸出信號(hào)主要以模擬信號(hào)進(jìn)行傳送,減少角度信號(hào)在較長(zhǎng)距離傳輸時(shí)其他信號(hào)干擾,同時(shí)方便人們控制目標(biāo)元件。傳統(tǒng)的軸角測(cè)量通常采用峰值采樣、相干解調(diào)或?qū)S玫妮S角數(shù)字轉(zhuǎn)換芯片實(shí)現(xiàn)[2],但是這幾種算法也存在精度不高、運(yùn)算速度較慢及價(jià)格昂貴等缺點(diǎn)。本文使用的坐標(biāo)旋轉(zhuǎn)數(shù)字計(jì)算(Coordinate Rotation Digital Computer,CORDIC)算法采用迭代的思想,不進(jìn)行乘法運(yùn)算,提高了運(yùn)算速度。由于該算法是一種數(shù)字數(shù)字的算法,有線性的收斂域和序列及迭代次數(shù)可有效提高精度[3]。

  本文利用CORDIC算法[4]計(jì)算反正切函數(shù)并結(jié)合自整角機(jī)輸入輸出信號(hào)的特點(diǎn),實(shí)現(xiàn)一種運(yùn)算速度高、可靠性好、精度高、硬件設(shè)計(jì)簡(jiǎn)單的角度解碼,并用FPGA豐富硬件資源簡(jiǎn)化程序,提高電路的運(yùn)算速度和可靠性。

1自整角機(jī)基本原理

  自整角機(jī)是利用自整步特性將轉(zhuǎn)角變?yōu)榻涣麟妷夯蛴山涣麟妷鹤優(yōu)檗D(zhuǎn)角的感應(yīng)式微型電機(jī),當(dāng)激勵(lì)繞組以一定的頻率交流電壓勵(lì)磁時(shí),輸出繞組的電壓幅值與轉(zhuǎn)子轉(zhuǎn)角成正余弦函數(shù)關(guān)系[5]。在結(jié)構(gòu)上,自整角機(jī)主要由轉(zhuǎn)子和定子組成,轉(zhuǎn)子軸上的單相繞組通過(guò)電刷和滑環(huán)與外界連接,引出端用Z1和Z2表示;定子的三相對(duì)稱繞組以Y型連接,空間位置上依次落后120°,如圖1所示。

圖像 001.png

  設(shè)轉(zhuǎn)子轉(zhuǎn)動(dòng)θ,自整角機(jī)三路輸出模擬信號(hào),但是需要電壓激勵(lì)。激勵(lì)電壓為:

  QQ圖片20161024194309.png

  S1、S2、S3三路定子的感應(yīng)電動(dòng)勢(shì)分別為:

  QQ圖片20161024194312.png

  QQ圖片20161024194316.png

  QQ圖片20161024194320.png

  上式中sinωt為交流信號(hào),θ是自整角機(jī)偏轉(zhuǎn)的角度。

2CORDIC算法原理

  CORDIC算法基本思想是迭代,通過(guò)多個(gè)固定的及與運(yùn)算有關(guān)的角度逐次遞減,從而逐漸逼近需要的角度。

圖像 002.png

  CORDIC算法的基本公式在一些文獻(xiàn)中有詳細(xì)推導(dǎo),這里僅作簡(jiǎn)要的說(shuō)明。

  如圖2所示,假設(shè)向量(xi,yi)按照一定角度旋轉(zhuǎn)到(xj,yj)則有:

  QQ圖片20161024194323.png

  起始位置到終點(diǎn)位置可以通過(guò)多步迭代旋轉(zhuǎn)過(guò)程實(shí)現(xiàn),每一步旋轉(zhuǎn)一定的相位,則:

  QQ圖片20161024194327.png

  提取cosθn,則有:

  QQ圖片20161024194331.png

  定義每一步的旋轉(zhuǎn)角度為θn=arctan(12n),總的旋轉(zhuǎn)相位為θ=∑Snθn,其中Sn=±1,則:

  QQ圖片20161024194335.png

  其中K為增益因子,其值的變化取決于迭代次數(shù),當(dāng)?shù)螖?shù)N很大時(shí):

    QQ圖片20161024194339.png

  CORDIC算法有旋轉(zhuǎn)模式(rotation)和矢量模式(vectoring)兩種旋轉(zhuǎn)模式[6],該解碼算法采用矢量模式。迭代方程如下:

  QQ圖片20161024194343.png

  其中zj是角度累加器,di=-sgn(yi)=1,y<0(順時(shí)針旋轉(zhuǎn))

 ?。?,y>0(逆時(shí)針旋轉(zhuǎn))。

  假設(shè)初始條件為x0=x,y0=y,z0=0,經(jīng)過(guò)n次迭代后,矢量模式的表達(dá)式為:

  QQ圖片20161024194350.png

3自整角機(jī)解碼算法設(shè)計(jì)

  3.1自整角機(jī)輸出信號(hào)的象限修正

  利用CORDIC算法計(jì)算反正切值[7],由于arctan2-i(0≤i≤n)所能計(jì)算的值區(qū)域?yàn)椋?,π2,要計(jì)算全角度時(shí)必須對(duì)角度進(jìn)行預(yù)處理。將公式(2)-(4)整理得:

  QQ圖片20161024194354.png

  對(duì)自整角機(jī)三路輸出的模擬信號(hào)進(jìn)行簡(jiǎn)單運(yùn)算,得到只含角度θ的正余弦值和正切值;然后對(duì)得到的正余弦函數(shù)進(jìn)行修正,得到角度θ所在的范圍。

  將得到的正弦和余弦函數(shù)進(jìn)行區(qū)間范圍的判斷,sinθ和cosθ所在的區(qū)間范圍如下:當(dāng)|cosθ|-|sinθ|≥0,θ在QQ圖片20161024194759.png

  QQ圖片20161024194814.png

定義一個(gè)中間變量α,則有:

  QQ圖片20161024194357.png

  sinθ、cosθ在不同區(qū)域的值如表1所示。

圖像 006.png

上述輸出角度θ的劃分修正,將角量全部轉(zhuǎn)換到0,π4,可有效避免討論sinθ或cosθ等于0的情況,在計(jì)算過(guò)程中,也避免了反正切函數(shù)在±π2和±π附近角度不收斂無(wú)法計(jì)算的情況,因此不占用和浪費(fèi)大量資源,提高了運(yùn)算速度。

  3.2CORDIC求全角量反正切

  對(duì)于自整角機(jī)輸出信號(hào),在旋轉(zhuǎn)的角度一定時(shí),可將輸出的信號(hào)理解為勵(lì)磁信號(hào)Eref=ERLO-RHIsinωt對(duì)sinθ和cosθ進(jìn)行的幅度調(diào)制[6],而勵(lì)磁信號(hào)的變化只是幅值發(fā)生變化,對(duì)自整角機(jī)輸出信號(hào)的正確解碼不產(chǎn)生影響,只要能正確地解碼出角度值,則幅值的變化可以忽略不計(jì),本文選擇CORDIC算法的矢量模式,令Uxin=cosθ,Uyin=sinθ,z0=0,經(jīng)過(guò)n次迭代后得到式(11)。

  3.3CORDIC算法的角度輸出

  自整角機(jī)解碼算法采用20位二進(jìn)制數(shù)表示輸出信號(hào),輸入信號(hào)為16位二進(jìn)制數(shù)。1°=216360≈18210=101101102;arctan(2-n)可表示為2202π·arctan(2-n),當(dāng)?shù)螖?shù)n不少于16時(shí),就能夠達(dá)到一定的精度。

4CORDIC自整角機(jī)解碼算法的實(shí)現(xiàn)及仿真

  4.1CORDIC自整角機(jī)解碼算法的實(shí)現(xiàn)

  基于CORDIC算法實(shí)現(xiàn)的設(shè)計(jì)有迭代結(jié)構(gòu)和流水線結(jié)構(gòu)[7],流水線結(jié)構(gòu)運(yùn)算速度比迭代結(jié)構(gòu)快,采用流水線結(jié)構(gòu)可有效提高算法速度。在流水線結(jié)構(gòu)中,旋轉(zhuǎn)角度集的各個(gè)值均是直接聯(lián)到累加器的[6] 。流水線結(jié)構(gòu)如圖3所示。

圖像 003.png

  4.2FPGA實(shí)驗(yàn)仿真

  采用VHDL語(yǔ)言描述并在FPGA上實(shí)現(xiàn)流水線結(jié)構(gòu)的CORDIC解碼算法,利用QuartuesII進(jìn)行仿真,驗(yàn)證其可行性與正確性。

  設(shè)定系統(tǒng)時(shí)鐘為98 MHz,輸入一位時(shí)鐘信號(hào)clk,1位使能信號(hào)ena,16位輸入信號(hào)Xin、Yin,及20位角度解碼信號(hào)輸出Aout,仿真選取50°和260°進(jìn)行模擬,驗(yàn)證該解碼算法的正確性。

  當(dāng)自整角機(jī)的角度為50°時(shí),QuartuesII仿真圖及仿真數(shù)據(jù)如圖4和表2所示。

圖像 004.png

圖像 007.png

  當(dāng)自整角機(jī)的角度為260°時(shí),仿真圖及仿真數(shù)據(jù)如圖5和表3所示。

圖像 005.png

  由上述數(shù)據(jù)可知,在角度一定、Eref變化的情況下,該算法可以正確地解碼θ,并且達(dá)到一定的精度;仿真中的冒險(xiǎn)競(jìng)爭(zhēng)不是發(fā)生在時(shí)鐘上升沿,不影響角度的正確解碼。從仿真圖上可以看出有一定的延時(shí),這是由迭代運(yùn)算造成的效果,可以通過(guò)改變時(shí)鐘頻率進(jìn)行改善。

圖像 008.png

5結(jié)論

  本文采用CORDIC算法在FPGA上實(shí)現(xiàn)自整角機(jī)輸出角度的解碼,并對(duì)自整角機(jī)的輸出信號(hào)進(jìn)行簡(jiǎn)單的運(yùn)算和角度的象限修正預(yù)處理,在可計(jì)算的范圍內(nèi),通過(guò)QuartuesII驗(yàn)證其可行性與正確性,提升了運(yùn)行速度和精度,從而驗(yàn)證了該設(shè)計(jì)的正確可行。

  參考文獻(xiàn)

  [1] 楊桂華. 高精度自整角機(jī)精度的分析[J]. 微電機(jī),1990(1):11-15.

 ?。?] 李全.正交三角函數(shù)的CORDIC實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2008,24(12-3):268-269.

 ?。?] 陳石平,廖丁毅,張權(quán).CORDIC算法在正角調(diào)制技術(shù)的應(yīng)用[J].廣西通信技術(shù),2015(2):49-52.

 ?。?]王華華,陳雷成,陳發(fā)堂,等.基于FPGA的STACORDIC算法在SCME中的應(yīng)用[J].電子技術(shù)應(yīng)用,2014,40(8):109-111,115.

 ?。?] ANDRAKA R. A survey of CORDIC algorithms for FPGA based computers[M]. New York: ACM Press, 1998.

  [6] VOLDER E. The CORDIC trigonometric computing technique[J].IRE Transactions on Electronic Computers,1959, 8:379-385.

 ?。?] 李滔,韓月秋.基于流水線CORDIC 算法的三角函數(shù)發(fā)生器[J].電子技術(shù)應(yīng)用, 2000, 25(4):85-87.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。