主要参考本博客转载的关于cordic算法的博客,实现代码后FPGA仿真发现输入数据的位宽决定着计算的精度,还与输入的数据求平方根值的大小有关,值越大要求的位宽越高,输入的X Y值越小求出的精度越差,越不对。例如输入x=1,y=2;仿真结果幅值为8,偏差很大,而角度数为25570/256=99.88°;输入x=10,y=20;仿真结果幅值为21,偏差还行,而角度数为11072/256=43.5,对角度来说偏差也比较大。所以在求反正切时,需要把要求的数放大以后再去求,精度会高些。但是输入的数据越大我这仿真显示数据精度也不是很大,反而会下降,例如x=255*1024;y=255*1024;得到的幅值为382372,误差较大,角度为11072;x=200*1024;y=200*1024;得到的幅值为289642,没有多延迟了一个周期,角度为11520/256=45;所以不能盲目的增加位宽来求提高精度,还有增加位宽增加了资源消耗,还有计算时间都需要权衡考虑。具体关于cordic算法可以参考《双模式CORDIC算法的fpga实现》这篇文章和三角函数计算,Cordic 算法入门这篇博客,网址如下:http://blog.csdn.net/liyuanbhu/article/details/8458769,
CORDIC算法向量模式,求幅角和幅值
最新推荐文章于 2023-05-13 12:01:42 发布