FPGA之CORDIC算法實現_理論篇(上)


 

關於cordic的算法原理核心思想就是規定好旋轉角度,然后通過不停迭代逐步逼近的思想來實現數學求解,網上關於這部分的資料非常多,主要可以參考:

1)https://blog.csdn.net/qq_39210023/article/details/77456031

2)https://blog.csdn.net/rookiew/article/details/74967394

Xinlinx自帶的官方說明文檔也非常值得參考,文章末尾會補充相關參考資料。

1、cordic的優化算法

1)

2)第一次旋轉為旋轉方向

3)第二次旋轉為旋轉方向

式子一直都會有,每次都可以提取。雖然FPGA無法計算,但,因此可以執行和效果相同的移位操作來取代。對於,可以預先全部提取出來,然后等待迭代結束之后,再把因為簡化計算過程抽出的還原回去即可。

2、公式總結:

 提取,2-i等效替換成

 1)

2)

3)

迭代過程:

i0開始迭代,假設時,趨向於0(i0n-1),得到點,此時點就近似等於之前假設的點,此時將之前抽出的還原回去

進一步將式子轉化,可得

注意:的極值為1,因此當i的次數很大,的值趨於一個常數。

3、求解sina,cosa的起點取值問題

設起點(x0y0),當i = n-1時,迭代結束,到達終點(xn, yn),  因為中間用了偽旋轉,所以結果必須要乘以為了簡化計算過程抽出的,因此有

 

觀察上面的式子,我們的目標是根據迭代后的xn、yn求出sina,cosa,因此可設

可將(1)化簡得到

 上式中的xn,yn是經過迭代后的結果,而不是之前一開始假設的點(xn,yn),要注意區分這一點。因此,我們可以觀察到,最后正余弦的求解僅僅是以初始點的設置以及的值有關,可以預先通過matlab求解預存起來,一般經過16次的迭代后就逐漸趨於穩定。

 

下一篇,我會接着來講用FPGA來實現這個Cordic算法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM