ZHCACL7A january 2021 – april 2023 TMAG5170 , TMAG5170-Q1 , TMAG5170D-Q1 , TMAG5173-Q1 , TMAG5273
CORDIC(即坐標(biāo)旋轉(zhuǎn)數(shù)字計(jì)算器)為數(shù)字系統(tǒng)使用坐標(biāo)數(shù)據(jù)計(jì)算角度提供了一種快速有效的方法。該算法通過執(zhí)行二進(jìn)制搜索以圍繞原點(diǎn)旋轉(zhuǎn)一個點(diǎn),直到生成的矢量位于單個軸上,從而快速近似計(jì)算角度。由于坐標(biāo)輸入以迭代階躍旋轉(zhuǎn),因此可以通過所有階躍的總和來估算起始角度。完成這些旋轉(zhuǎn)后產(chǎn)生的結(jié)束位置也將產(chǎn)生輸入矢量的大小。當(dāng)與多軸霍爾效應(yīng)傳感器的輸出一起使用時,該算法被證明是快速且精確的角度計(jì)算的極佳選擇??紤]圖 2-8 中的點(diǎn)。
如果將該點(diǎn)順時針旋轉(zhuǎn) 45°(表示為 α0),則新生成的矢量將離開第一象限,如圖 2-9 所示。
由于目標(biāo)是將矢量與 X 軸對齊,因此在下一個階躍中必須逆時針調(diào)整旋轉(zhuǎn)方向。在下一次迭代中,坐標(biāo)將逆時針旋轉(zhuǎn) 22.5° (α1)。此處的結(jié)果不會產(chǎn)生象限變化,因此旋轉(zhuǎn)方向會繼續(xù)沿此方向。此過程繼續(xù)進(jìn)行,添加和減去角度階躍并更改旋轉(zhuǎn)方向,直到結(jié)果與 X 軸對齊。如圖 2-10 所示,5 次迭代后的近似角度約為 19.69°。
在方程式 1 中的矩陣乘法之后描述了在空間中旋轉(zhuǎn)坐標(biāo)點(diǎn)的代數(shù)過程。
如果從結(jié)果乘積中分解出 cos(α) 因子,那么我們將得到公式 4 和 5:
隨著算法的進(jìn)行,我們必須確定旋轉(zhuǎn)的方向。如果我們選擇逆時針旋轉(zhuǎn),結(jié)果將產(chǎn)生公式 6 和 7:
請注意,此處唯一的區(qū)別是每個公式中的運(yùn)算是反轉(zhuǎn)的。因此,我們可以通過檢查操作符號輕松確定旋轉(zhuǎn)方向。該旋轉(zhuǎn)可以由一個可選值表示,我們將其表示為 d。
此時,一些近似值可簡化角度計(jì)算。如果 cos(α) 被完全移除,檢查結(jié)果將顯示已創(chuàng)建一個新矢量,該矢量旋轉(zhuǎn)了正確的角度但大小大于原始矢量。該因子實(shí)際上是一個標(biāo)量,用于將生成的矢量歸一化為循環(huán)的每個階躍的正確大小。標(biāo)量值由旋轉(zhuǎn)角度決定,可使用預(yù)先確定的階躍大小針對每個階躍輕松計(jì)算。
如果對每個角度轉(zhuǎn)換使用固定次數(shù)的迭代,則每個矢量轉(zhuǎn)換的累積乘積將始終產(chǎn)生恒定的最終標(biāo)量 m。因此,在例程中可以忽略 cos(α) 的值。相反,最終的大小結(jié)果可以按 m 縮放一次。假設(shè)使用算法的十次迭代(0 至 9),則 m 的結(jié)果值如公式方程式 9 所示。
此外,我們可以注意到 tan(α) 接近于 2-n 的值。如果將正切計(jì)算替換為乘以 2 的冪,則該算法的實(shí)現(xiàn)將變得更加簡單??紤]以下值表:
αn [°] |
tan(α) |
2-n |
tan-1(2-n) [°] |
---|---|---|---|
45 |
1 |
1 |
45 |
22.5 |
0.414 |
0.5 |
26.565 |
11.25 |
0.199 |
0.25 |
14.036 |
5.625 |
0.098 |
0.125 |
7.125 |
2.8125 |
0.049 |
0.0625 |
3.576 |
對算法進(jìn)行這些修改后,我們得到方程式 11 至方程式 14,可以迭代使用這些公式來確定任何二維矢量的角度和大小。
請注意,該方法僅使用了少數(shù)幾次循環(huán),為快速計(jì)算提供了一種簡潔的解決方案。集成了 CORDIC 引擎的器件(例如 TMAG5170)能夠快速解析角度計(jì)算并將其作為輸出提供,而不會對整體轉(zhuǎn)換時序產(chǎn)生任何重大影響。