关于cordic的算法原理核心思想就是规定好旋转角度,然后通过不停迭代逐步逼近的思想来实现数学求解,网上关于这部分的资料非常多,主要可以参考:
1)https://blog.csdn.net/qq_39210023/article/details/77456031
2)https://blog.csdn.net/rookiew/article/details/74967394
Xinlinx自带的官方说明文档也非常值得参考,文章末尾会补充相关参考资料。
这里主要补充下圆周旋转模式下,求解sina,cosa的起点取值问题
设起点(x0,y0),当i = n-1时,迭代结束,到达终点(xn, yn), 因为中间用了伪旋转,所以结果必须要乘以为了简化计算过程抽出的,因此有
观察上面的式子,我们的目标是根据迭代后的xn、yn求出sina,cosa,因此可设
可将(1)化简得到
上式中的xn,yn是经过迭代后的结果,而不是之前一开始假设的点(xn,yn),要注意区分这一点。因此,我们可以观察到,最后正余弦的求解仅仅是以初始点的设置以及的值有关,可以预先通过matlab求解预存起来,一般经过16次的迭代后就逐渐趋于稳定。
下一篇,我会接着来讲用FPGA来实现这个Cordic算法。