向量旋转(或矢量旋转或坐标轴旋转)后xy坐标重定位(vivado+cordic ip核+matlab) - 适用于数学爱好者
大家在高中大学应该学过以下角度转换公式(两公式形式不同本质相同),vivado中有现成的角度转换ip核cordic供使用,本文参考官方手册数据进行一次转角实验
在vivado pg105-cordic手册中为
以下设置codic ip核
以下代码
`timescale 1ns / 1ns
module exx_tst();
reg clk;
reg [15 : 0] angle; // phase为转角
reg [31 : 0] x0y0; //旧xy值,y在前16位,在后16位
wire x1y1_valid; // 输出新值有效信号
wire [31 : 0] x1y1; // 新xy值,y在前16位,在后16位
//reg s_axis_phase_tvalid; //转角有效信号用于控制,可以直接设为1
//reg s_axis_cartesian_tvalid; //旧xy有效信号用于控制,可以直接设为1
wire [15:0] x0= x0y0[15:0]; //引出旧x值
wire [15:0] y0= x0y0[31:16];//引出旧y值
wire [15:0] x1 = x1y1[15:0]; //引出新x值
wire [15:0] y1 = x1y1[31:16]; //引出新y值
always #5 clk=~clk;
initial begin
#0 clk=0;
#100
angle = 16'b1100_1101_1100_0000; //-pi/2=-1.57 fix16_13定点数
x0y0 = 32'b0001_0000_0000_0000_0010_1101_0100_0000;//y0=0.25,x0=0.707 fix16_14定点数
end
cordic_1 mycordic (
.aclk(clk), // input wire aclk
.s_axis_phase_tvalid( 1 ), // input wire s_axis_phase_tvalid
.s_axis_phase_tdata( angle ), // input wire [15 : 0] s_axis_phase_tdata
.s_axis_cartesian_tvalid( 1 ), // input wire s_axis_cartesian_tvalid
.s_axis_cartesian_tdata( x0y0 ), // input wire [31 : 0] s_axis_cartesian_tdata
.m_axis_dout_tvalid( x1y1_valid), // output wire m_axis_dout_tvalid
.m_axis_dout_tdata( x1y1 ) // output wire [31 : 0] m_axis_dout_tdata
);
endmodule
大家在设置 x0 y0 x1 y1时要设为以下(phase设为13)16_14定点数,
做实验时如果没有matlab支持,是很难从带小数点实数转二进制的(16_14定点格式),如果有matlab的话,我自己采用以下算法命令快速换算成二进制值
dec2bin(0.707*256) %*256是为了把小数点消掉
ans =
10110100 %因为乘了256所以要向回退8位变为00.10110100,小数点前符号位+个位,
dec2bin(0.25*256)
ans =
1000000 %要向回退8位变为00.010000000
dec2bin(pi/2*256)
ans =
110010010 %要向回退8位变为001.10010010(小数点前符号位+十位+个位,因为最大值可能为3所以加了十位),最后换为补码110.01101110(因为是-pi/2)
//算出的-0.707可以用00.10110100(0.707)换为补码11.01001011(略有误差)
//如果大家嫌换补码烦可以考虑matlab dec2bin(bitxor(255,n)+1)联合运算的指令
以下直接用matlab命令进行一次同样的计算
%cos(-pi/2)=0 sin(-pi/2)=-1
x1=0.707*cos(-pi/2) - 0.25*sin(-pi/2) =0.25
y1=0.25*cos(-pi/2) + 0.707*sin(-pi/2) =-0.707
当然,如果你是位数学高手的话,会一眼看出并直奔最快的算法如下:
>> (0.707+0.25i)*-i %-i 代表旋转-90度
ans =
0.2500 - 0.7070i %x轴变为0.25 y轴变为-0.707
由此看来,FPGA是有点“笨”哈,谁让它只认得0-1两个数,不像我们人类还认得2-9+i,但FPGA(存储量大+运算速度快)能7*24小时不停工作,而我们人类工作8小时就累趴下了
大家是不是觉得很好玩呢
向量旋转(或矢量旋转或坐标轴旋转)后xy坐标重定位(vivado+cordic ip核+matlab) - 适用于数学爱好者相关推荐
- 【自动驾驶】29.坐标变换与坐标轴旋转
从一个坐标系的点变换到另一个坐标系的点,旋转矩阵的角度我们不能直接知道,但是可以通过两个坐标系之间的旋转来间接得到. 如: 世界坐标系有一个点P,我们要描述它,就得给他一个坐标系原点,如果他放在车身坐 ...
- 绕固定坐标轴旋转与绕自身坐标轴旋转一致性证明
最近在看人头姿态和视线方向检测的东西,需要考虑坐标系与坐标系之间的旋转.用欧拉角表示坐标系的旋转时存在两种旋转方法,另外旋转的顺序也会对旋转结果有影响,查了一些资料总结一下结果. 描述坐标系B ...
- OpenGL(十二)——Qt OpenGL绕着坐标轴旋转多边形
OpenGL(十二)--Qt OpenGL绕着坐标轴旋转多边形 一.旋转多边形 前两篇介绍了如何绘制多边形,并且给多边形进行上色.本篇介绍如何旋转多边形. 多边形的旋转,在类中增加两个变量来控制这两个 ...
- 【Unity步步升】各类旋转逻辑的区别,如欧拉旋转、插值旋转、矢量朝向等...及游戏视角案例
在 Unity 中为物体旋转提供了各种 API ,例如 Rotate.RotateAround.LookAt 等方法.但为了避免万向节死锁的问题,一般使用四元数来表示物体的旋转. 而接下来的旋转方法我 ...
- 刚体在三维空间的旋转(关于旋转矩阵、DCM、旋转向量、四元数、欧拉角)
最近学习了一些关于三维空间旋转相关的知识,借此梳理一下备忘. 三维空间的旋转(3D Rotation)是一个很神奇的东东:如果对某个刚体在三维空间进行任意次的旋转,只要旋转中心保持不变,无论多少次的旋 ...
- 帅某---考研---空间直线绕坐标轴旋转、二次曲面方程
一.空间直线绕坐标轴旋转 注:1.本说明以Z轴为例子,其他轴类同: 2.直线绕直线旋转对应的为二次曲面方程,属于超纲内容.考察内容为:给定二次曲面方程,只需要知道其曲面类型. 二.二次曲面方程 1.介 ...
- matlab的空间坐标轴,空间三维坐标轴旋转
根据在网上找的公式编的程序,不知道对不对 %设在OXY坐标系中,原点不动,坐标轴旋转而得到一新坐标系OX'Y'Z': %OX'轴与OX,OY,OZ轴的正向夹角分别成:α1, β1, γ1角: %O ...
- java 某点 旋转_java-如何围绕某个点旋转顶点?
java-如何围绕某个点旋转顶点? 想象一下,您在2d空间中有两个点,您需要将其中一个点旋转X度,另一个点作为中心. float distX = Math.abs( centerX -point2X ...
- php 图片压缩旋转,移动端图片上传旋转、压缩问题的解决方案
本篇文章就给大家带来移动端图片上传旋转.压缩问题的解决方案.有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 前言 在手机上通过网页 input 标签拍照上传图片,有一些手机会出现图片 ...
最新文章
- java is not a enclosing class_Java Class getEnclosingClass()用法及代码示例
- eclipse使用教程_使用此首选项可加快Eclipse m2e配置
- linux内存分析命令,Linux進程內存分析pmap命令
- Spring-Boot——Cache
- innodb存储引擎 - 锁
- 【Python成长之路】Python爬虫 --requests库爬取网站乱码(\xe4\xb8\xb0\xe5\xa)的解决方法【华为云分享】
- C# 高效字符串连接 StringBuilder介绍
- 【OpenCV学习笔记】【编程实例】二(图像的旋转和翻转)
- vfp生成菜单时文件不存在_手把手教你搞定权限管理,结合Vue实现菜单的动态权限控制!...
- python做词典_python实现电子词典
- Android自定义WebView实现Youtube网络视频播放控件
- @Prometheus监控数据库(MySQL)
- python4delphi和tesserocr库安装配置
- 计算机病毒计算机软件系统故障,简要区分计算机病毒与软硬件故障问题
- 机器学习:simple linear iterative clustering (SLIC) 算法
- hdu 1849 Rabbit and Grass Nim博弈
- Help 药盒_疯狂的设计
- iOS 一步一步带你实现引导页
- mysql的mgr是什么意思_MySQL之MGR简介
- webpackvue-cli快速构建
热门文章
- matlab里excel汉字怎么显示,[求助]matlab如何导入excel中的汉字,求助~~~
- android开发中对图片的处理方式汇总
- 热门商业模式解剖:哪个适合中国
- Spring Boot系列六 Spring boot集成mybatis、分页插件pagehelper
- 最佳阵容 | Flutter Firebase 插件更新
- 关于单点登录的一点想法
- 【编程语言】品诺试题
- vue.runtime.esm.js?2b0e:619 [Vue warn]: Error in v-on handler (Promise/async): “Error: 失败“found in
- 红色印章制作过程记录
- 使用VMware安装CentOS