前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >cordic第二讲、向量模式与伪旋转处理

cordic第二讲、向量模式与伪旋转处理

作者头像
根究FPGA
发布2020-06-30 11:27:21
1.4K0
发布2020-06-30 11:27:21
举报
文章被收录于专栏:根究FPGA根究FPGA

本节更新的Coordinate Rorate Digital Computer的向量模式介绍与伪旋转处理,结尾处会总结旋转模式与向量模式的区别,在接下来的系列中会更新乘法器、除法器、sin函数、cos函数的verilog实现与matlab实现原理,并分享verilog与matlab代码。

一、向量模式(Vector Mode)

向量模式可以得到输入向量的幅度,当使用向量模式旋转后向量就与x轴对齐(重合),因此,向量的幅值将就是旋转向量的x值,幅度结果由Kn增益标定。

在向量模式下,COEDIC算法主要用于实现直角坐标系到极坐标系的转换。旋转模式下,每次迭代使得z趋向于0,与之相比,向量模式下,则是使y趋近于0,为了达到这一目的,每次迭代通过判断yi的符号确定旋转方向,最终使初始向量旋转至X轴的正半轴,这一过程也使得每次伪旋转的旋转角度类加载累加和存储在变量z中,矢量旋转图为:

迭代过程为:(mathtype公式插入不了,贴截图了)

对于d的正负的判断就是看y的值,在点位于x轴上方时,伪旋转点需要继续贴近x轴,所以横坐标要继续增加,y绝对值要继续减小。

从verilog角度来看,矢量模式下CORDIC的x、y输入分别对应x、y坐标,输出的x、z对应模长与正切角度。

初始化的的值为0,从而经过n次迭代之后可以获得向量的模长和相角,以(1,2)为例,旋转过程为:

旋转模式和向量模式的相同之处在于:两者都是伪旋转,旋转模式下是的初始向量必须落入第一或者第四象限,向量模式使得初始向量必须贴近X轴。

二、伪旋转的预处理机制

伪旋转限定初始向量必须位于第一或者第四象限,这就要求x0必须大于0,而对y0无限制,根据对称性,当初始向量位于第二象限时,将其搬移到第一象限;当初始向量位于第三象限时,将其搬至第四象限,然后再对搬移后的向量利用CORDIC算法进行处理,对于CORDIC处理的结果根据x0和y0的符号(判断初始向量所在象限)作相应的处理,从而获得初始向量的相角,处理流程为:

三、旋转模式与向量模式的区别

旋转模式的输入参数为起始点的坐标和要旋转的角度,旋转模式下需要提供旋转的角度且需要提供迭代次数。旋转模式的迭代结果是起始点旋转z0个角度后的终点坐标,最终zn趋近于0。

向量模式的输入参数为起始点的坐标,不需要提供旋转的角度,需要提供迭代次数。最终迭代结果中,x为输入起始点向量的长度,z为到达该位置的旋转角度。

在给定起始坐标点,求该点对应的角度时,使用向量模式,最终可以得到从该点到达x轴的角度(Zn)。

在给定起始坐标点和旋转的角度,在求解终点对应的坐标时,使用旋转模式。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 根究FPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、向量模式(Vector Mode)
  • 二、伪旋转的预处理机制
  • 三、旋转模式与向量模式的区别
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档