CORDIC之线性坐标系旋转

本文介绍了CORDIC算法的原理及其在旋转模式和向量模式下的应用。在处理器设计中,由于乘除法器占用大量资源,作者通过理解和应用CORDIC算法,实现了资源共享,减少了资源消耗。CORDIC算法可以用于实现乘法、除法以及三角函数计算,通过调整因子和角度集即可灵活运用。
摘要由CSDN通过智能技术生成

关于CORDIC的原理及两个模式(旋转模式及向量模式),Xilinx的一份ppt已经讲得非常非常详细了。最近在写处理器时遇到了问题:手写的乘、除法器占用资源巨大(为了同步减少延时不能用流水线设计),尝试了dsp_elements,乘法器可以,但是除法器用不了dsp资源。64位的乘除法器综合下来总共占用10K左右的LUTs,比较浪费。因此想到了几个月前的CORDIC,当时没看懂,现在理解了一下,很是惊奇。这样就可以重复利用乘法器、除法器以及三角函数计算器。公式如下:

旋转模式(就是正向,乘法):

X(i+1)=X(i)

Y(i+1)=Y(i)+2^(-i)*X(i)

Z(i+1)=Z(i)=2^(-i)

标准的乘法器代码如下:

Multiply=(A[00]?(B<<00):0)+(A[01]?(B<<01):0)+(A[02]?(B<<02):0)+(A[03]?(B<<03):0)+(A[04]?(B<<04):0)+(A[05]?(B<<05):0)+(A[06]?(B<<06):0)+(A[07]?(B<<07):0)+
(A[08]?(B<<08):0)+(A[09]?(B<<09):0)+(A[10]?(B<<10):0)+(A[11]?(B<<11):0)+(A[12]?(B<<12):0)+(A[13]?(B<<13):0)+(A[14]?(B<<14):0)+(A[15]?(B&
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值