Cordic 算法之 反正切
在通信的算法中,常采用Cordic算法之一,知道角度产生正交的的正弦余弦,
或者知道正弦和余弦求角度,求反正切。
1. 求正弦和余弦值。
方法:旋转角度,得到正弦余弦值; 再旋转角度,到达下一个正弦余弦值;直到旋转的角度趋近于 0 ,不能再进行旋转。
把每次旋转的坐标的x,Y 轴的值各自相加,即得到为该角度的正弦和余弦值。
2 .求反正切:Angle = artan(y/x)。
方法: 及给定x,y 的坐标通过向量旋转,使得y 值不断减小, 通过不断地迭代使得 y 逐渐 趋渐0;
最终得到旋转的角度之和 z, z 即为 反正切值。
验证 输入y=5000, x=5000;通过计算 atan(5000/5000) =0.5(pi 弧度)*90度 = 45度。

验证 输入y=6000, x=4000;通过计算 atan(6000/4000) =0.626(pi 弧度)* 90度 = 56.3度

验证 输入y=6000, x=500;通过计算 atan(6000/0500) =0.947(pi 弧度)* 90度 = 85.23度。

//level 1
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
x1<=0;
y1<=0;
z1<=0;
end
else
if(ena)
if(y0<0)
begin
x1<=x0-y0;
y1<=y0+x0;
z1<=z0-15'd4500; //45deg
end
else if(y0>0)
begin
x1<=x0+y0;
y1<=y0-x0;
z1<=z0+15'd4500; //45deg
end
else
begin
x1 <= x0;
y1 <= y0;
z1 <= z0;
end
end
//level 2
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
x2<=0;
y2<=0;
z2<=0;
end
else
if(ena)
if(y1<0)
begin
x2<=x1-{y1[DATA_WIDTH-1],y1[DATA_WIDTH-1:1]};
y2<=y1+{x1[DATA_WIDTH-1],x1[DATA_WIDTH-1:1]};
z2<=z1-15'd2656; //26.56deg
end
else if(y1>0)
begin
x2<=x1+{y1[DATA_WIDTH-1],y1[DATA_WIDTH-1:1]};
y2<=y1-{x1[DATA_WIDTH-1],x1[DATA_WIDTH-1:1]};
z2<=z1+15'd2656;
end
else
begin
x2 <= x1;
y2 <= y1;
z2 <= z1;
end
end
...
...
...
//level 13
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
x13<=0;
y13<=0;
z13<=0;
end
else
if(ena)
if(y12<0)
begin
x13<=x12-{{12{y12[DATA_WIDTH-1]}},y12[DATA_WIDTH-1:12]};
y13<=y12+{{12{x12[DATA_WIDTH-1]}},x12[DATA_WIDTH-1:12]};
z13<=z12-15'd01; //0.014deg
end
else if(y12>0)
begin
x13<=x12+{{12{y12[DATA_WIDTH-1]}},y12[DATA_WIDTH-1:12]};
y13<=y12-{{12{x12[DATA_WIDTH-1]}},x12[DATA_WIDTH-1:12]};
z13<=z12+15'd01;
end
else
begin
x13 <= x12;
y13 <= y12;
z13 <= z12;
end
end
Cordic 算法之 反正切的更多相关文章
- Cordic 算法的原理介绍
cordic 算法知道正弦和余弦值,求反正切,即角度. 采用用不断的旋转求出对应的正弦余弦值,是一种近似求解发. 旋转的角度很讲求,每次旋转的角度必须使得 正切值近似等于 1/(2^N).旋转的目的是 ...
- 定点CORDIC算法求所有三角函数及向量模的原理分析、硬件实现(FPGA)
一.CORDIC算法 CORDIC(Coordinate Rotation DIgital Computer)是一种通过迭代对多种数学函数求值的方法,它可以对三角函数.双曲函数和平面旋转问题进行求解. ...
- cordic算法的verilog实现及modelsim仿真
1. 算法介绍 CORDIC(Coordinate Rotation Digital Computer)算法即坐标旋转数字计算方法,是J.D.Volder1于1959年首次提出,主要用于三角函数.双曲 ...
- CORDIC算法(1):圆周旋转模式下计算三角函数和模值
CORDIC(Coordinate Rotation Digital Computer)坐标旋转数字计算机,是数学与计算机技术交叉产生的一种机器算法,用于解决计算机的数学计算问题.发展到现在,CORD ...
- 使用帅气的cordic算法进行坐标系互转及log10的求解
参考博客 https://blog.csdn.net/u010712012/article/details/77755567 https://blog.csdn.net/Reborn_Lee/arti ...
- 使用CORDIC算法求解角度正余弦及Verilog实现
本文是用于记录在了解和学习CORDIC算法期间的收获,以供日后自己及他人参考:并且附上了使用Verilog实现CORDIC算法求解角度的正弦和余弦的代码.简单的testbench测试代码.以及在Mod ...
- 三角函数计算,Cordic 算法入门
[-] 三角函数计算Cordic 算法入门 从二分查找法说起 减少乘法运算 消除乘法运算 三角函数计算,Cordic 算法入门 三角函数的计算是个复杂的主题,有计算机之前,人们通常通过查找三角函数表来 ...
- (转)三角函数计算,Cordic 算法入门
由于最近要使用atan2函数,但是时间上消耗比较多,因而网上搜了一下简化的算法. 原帖地址:http://blog.csdn.net/liyuanbhu/article/details/8458769 ...
- 基于FPGA的cordic算法的verilog初步实现
最近在看cordic算法,由于还不会使用matlab,真是痛苦,一系列的笔算才大概明白了这个算法是怎么回事.于是尝试用verilog来实现.用verilog实现之前先参考软件的程序,于是先看了此博文h ...
随机推荐
- 基于opencv在摄像头ubuntu根据视频获取
基于opencv在摄像头ubuntu根据视频获取 1 工具 原料 平台 :UBUNTU12.04 安装库 Opencv-2.3 2 安装编译执行步骤 安装编译opencv-2.3 參考h ...
- ACE定时器
每一秒钟打印一行 http://www.tuicool.com/articles/Zb263e 计时器的打开和关闭封装 http://andylin02.iteye.com/blog/440572 自 ...
- Java 并发专题 : CyclicBarrier 打造一个安全的门禁系统
继续并发专题~ 这次介绍CyclicBarrier:看一眼API的注释: /** * A synchronization aid that allows a set of threads to all ...
- python 凸包(经纬度) + 面积[近似]
def cross(A,B): return A[0] * B[1] - A[1] * B[0] def vectorMinus( a , b): return ( (a[0] - b[0] )*10 ...
- MVC EF 增 删 改 查
using System;using System.Collections.Generic;using System.Linq;using System.Web;//using System.Data ...
- Android使用Activity用作弹出式对话框
转载请表明出处:http://blog.csdn.net/lmj623565791/article/details/23116115 Android中可用于实现对话框的有Dialog,PopupWin ...
- android看不见main函数怎么办?程序异常了,能够不提示“xxx软件停止执行”吗?
今天遇到了这个问题,分享一下解决方式. android没有main 函数,自然也就不存在main里面加入异常处理来实现全局异常捕获的方案.那android程序有全局异常补货的解决方式吗? 答案是有的: ...
- Android 角色时间戳
我是在用MediaRecorder进行录像时发生视频和音频不同步的问题,请教了一些人后感觉应该是没有时间戳,之前一直觉得时间戳就是给用户看的一个数据,查了一下发现不是的,以下是转载的.希望对大家实用: ...
- [LeetCode55]Jump Game
题目: Given an array of non-negative integers, you are initially positioned at the first index of the ...
- Directx11学习笔记【六】 基本的数学知识----矩阵篇
参考dx11龙书 Chapter2 matrix algebra(矩阵代数) 关于矩阵的一些基本概念定理(例如矩阵加减乘法,逆矩阵,伴随矩阵,转置矩阵等)可以参考维基百科 https://zh.wik ...