verilog在写cordic函数时应当注意的点

verilog在写cordic函数时应当注意的点:
1.硬件结构主要有三种:
(1)串行接口(利用公式进行迭代),串行结构占用的资源最少, 这缘于对 CORDIC 处理单元的分时复用, 也正因此使得控制单元设计略显复杂, 时序控制较为烦琐, 系统处理速度较低
(2)并行结构(每次迭代利用单独的cordic处理单元),无须控制电路, 只需移位、 加减操作,同时资源量大大增加
(3)并行流水结构(对并行结构添加流水寄存器)减少了关键路径的长度
2.代码应该注意的地方
(1)移位应当使用算数移位(自动补全符号位)
(2)注意算数推导中的初值的计算
(3)迭代公式,计算时去掉了系数cosθ,每次旋转的角度是正确的,但是模值增大了1/cosθ,是一种伪旋转方式
x1 = x0cosθ – y0sinθ = cosθ(x0 – y0tanθ),
y1 = y0cosθ + x0sinθ = cosθ(y0 + x0tanθ),
x(i+1)=xi-yitanθi
(4)要找出θ=arctan(2**(-i))的角度值,即tanθi=2**(-i),并将其作为每次旋转的角度θi,精度由i值决定
(5)每次迭代时需要判断应该逆时针还是顺时针,设置初始角度z=θ,迭代从i=0开始,到n-1结束,当然,也可以设置重复迭代:
z (i+1)= zi-di
θi,故zi是每次旋转剩余的角度,di表示应该增加还是减少,最终的目的是使得θ变为零
3.不同坐标系使用的单位不同
x(i+1)=xi-udi(yitanθi)
y(i+1)=yi+di
(yitanθi)
z(i+1)=zi-di
ei;
圆周坐标:u=1,ei=arctan(2**(-i))
线性坐标:u=0,ei=2**(-i)
双曲线旋转:u=-1,ei=tanh(-1)(2**(-i)),求e指数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值