cordic算法的fpga实现
cordic算法参考:http://wenku.baidu.com/view/6c623aa8910ef12d2bf9e732.html
这是百度文库的一个文档,详细介绍了cordic算法的基本内容。我就是读了这个文档后做的cordic算法实现sin cos的运算的。
先谈感悟:做这种迭代型的算法,我觉得用for语句实现是最容易理解的,所以我的设计就是基于for结构实现的,关于算法中重要的位数确定,上边的文档里也有说明,我的选择是z选17位,1位符号位,8位整数,8位小数,x,y选21位,20位小数,一位符号位。所有数都是照这个标准的。
贴代码(贴后格式改变了,没缩进了,凑合看)
module test_cordic(clk,rst_n,z0,en,sin_out,cos_out);//z0是输入角度值,en是运算使能,sin_out,cos_out是运算输出。
input clk,rst_n;
input [16:0] z0;
input en;
output [10:0] sin_out,cos_out;
reg en_buff;
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
en_buff<=0;
else
en_buff<=en;
end
reg [16:0] angel[0:9];
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
angel[0]<=17'b00010110100000000;//45
angel[1]<=17'b00001101010011001;//26.6
angel[2]<=17'b00000111000000000;//14
angel[3]<=17'b00000011100011001;//7.1
angel[4]<=17'b00000001110011001;//3.6
angel[5]<=17'b00000000111001100;//1.8
angel[6]<=17'b00000000011100110;//0.9
angel[7]<=17'b00000000001100110;//0.4
angel[8]<=17'b00000000000110011;//0.2
angel[9]<=17'b00000000000011001;//0.1
end
end
reg [16:0]reg_z[0:9];//1 fuhao wei 8 zhengshu 8xiaoshu
reg [10:0] reg_x[0:9];
reg [10:0] reg_y[0:9];
reg [4:0] i;
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
for(i=0;i<=9;i=i+1'b1)
begin
reg_x[i]<=0;
reg_y[i]<=0;
reg_z[i]<=0;
end
end
else if(en&&!en_buff)
begin
reg_x[0]<=11'b01001101101;//0.6073<<10 + 1wei fuhao wei
reg_y[0]<=0;
reg_z[0]<=z0;
end
else
begin
for(i=1;i<=9;i=i+1'b1)
begin
if(reg_z[i-1][16])
begin
reg_x[i]<=reg_x[i-1]+(reg_y[i-1]>>i-1);
reg_y[i]<=reg_y[i-1]-(reg_x[i-1]>>i-1);
reg_z[i]<=reg_z[i-1]+angel[i-1];
end
else
begin
reg_x[i]<=reg_x[i-1]-(reg_y[i-1]>>i-1);
reg_y[i]<=reg_y[i-1]+(reg_x[i-1]>>i-1);
reg_z[i]<=reg_z[i-1]-angel[i-1];
end
end
end
end
assign sin_out=reg_y[9];
assign cos_out=reg_x[9];
endmodule
测试代码较简单,不贴了,贴一个30度求值结果

结果是sin30=00111111111;什么意思?最高位符号位是0,代表正数,后10位是小数部分即0.0111111111;转为10进制就是0.499;同理cos30=01101110110转为10进制就是0.8652.当然也可以试试其他角度。
cordic算法的fpga实现的更多相关文章
- 基于FPGA的cordic算法的verilog初步实现
最近在看cordic算法,由于还不会使用matlab,真是痛苦,一系列的笔算才大概明白了这个算法是怎么回事.于是尝试用verilog来实现.用verilog实现之前先参考软件的程序,于是先看了此博文h ...
- 基于FPGA的Cordic算法实现
CORDIC(Coordinate Rotation Digital Computer)算法即坐标旋转数字计算方法,是J.D.Volder1于1959年首次提出,主要用于三角函数.双曲线.指数.对数的 ...
- 定点CORDIC算法求所有三角函数及向量模的原理分析、硬件实现(FPGA)
一.CORDIC算法 CORDIC(Coordinate Rotation DIgital Computer)是一种通过迭代对多种数学函数求值的方法,它可以对三角函数.双曲函数和平面旋转问题进行求解. ...
- FPGA之CORDIC算法实现_理论篇(上)
关于cordic的算法原理核心思想就是规定好旋转角度,然后通过不停迭代逐步逼近的思想来实现数学求解,网上关于这部分的资料非常多,主要可以参考: 1)https://blog.csdn.net/qq_3 ...
- FPGA之CORDIC算法实现_代码实现(下)
关于FPGA之CORDIC算法的纯逻辑实现,博主洋葱洋葱“https://www.cnblogs.com/cofin/p/9188629.html”以及善良的一休军“https://blog.csdn ...
- [黑金原创教程] FPGA那些事儿《数学篇》- CORDIC 算法
简介 一本为完善<设计篇>的书,教你CORDIC算法以及定点数等,内容请看目录. 贴士 这本教程难度略高,请先用<时序篇>垫底. 目录 Experiment 01:认识CORD ...
- CORDIC原理与FPGA实现(1)
CORDIC算法的来历与用途大家网上随处可以见到,这里写 一下自己的理解. 将P(x,y)旋转角度a得到新的坐标P’(x’,y’).这里的坐标变换为: x’= x cos(a) – y sin(a) ...
- 三角函数计算,Cordic 算法入门
[-] 三角函数计算Cordic 算法入门 从二分查找法说起 减少乘法运算 消除乘法运算 三角函数计算,Cordic 算法入门 三角函数的计算是个复杂的主题,有计算机之前,人们通常通过查找三角函数表来 ...
- (转)三角函数计算,Cordic 算法入门
由于最近要使用atan2函数,但是时间上消耗比较多,因而网上搜了一下简化的算法. 原帖地址:http://blog.csdn.net/liyuanbhu/article/details/8458769 ...
随机推荐
- Xshell 或者 Xftp 突然连不上阿里云
今天突然发现使用xshell 远程连接不上阿里云,废了好大的劲,才明白的差不多.只要不出意外有以下几种情况:1.安全组中有没有你需要连接的端口,2.防火墙是否关闭,3.端口是否开放权限,4.是否安装了 ...
- 将从数据库中获取的数据写入到Excel表中
pom.xml文件写入代码,maven自动加载poi-3.1-beta2.jar <!-- https://mvnrepository.com/artifact/poi/poi --> & ...
- 20165101刘天野 2018-2019-2《网络对抗技术》Exp2 后门原理与实践
目录 20165101刘天野 2018-2019-2<网络对抗技术>Exp2 后门原理与实践 1. 实验内容 1.1 使用netcat获取主机操作Shell,cron启动 1.2 使用so ...
- 20165101刘天野 2017-2018-2 《Java程序设计》 结对编程练习_四则运算(第二周)
20165101刘天野 2017-2018-2 <Java程序设计> 结对编程练习_四则运算(第二周) 一.需求分析 能随机生成n道四则运算题目,n由使用者输入 支持分数运算 支持多运算符 ...
- JavaWeb JavaScript
1.JavaScript概述 JavaScript是一种基于对象和事件驱动的脚本语言,原名叫做livescript.W3c组织开发的标准叫ECMAscipt 1.1JavaScript和Java的一些 ...
- ARM协处理器CP15寄存器详解【转】
本文转载i自;https://blog.csdn.net/gameit/article/details/13169405 用于系统存储管理的协处理器CP15 MCR{cond} copro ...
- sem学习
关键字的选取搜索引擎营销的关键字选取是非常重要的一步,合适的关键字可以为企业带来可观的咨询量.关键字一般分4种,品牌词,产品词,行业词,竞品词,对于这四类词不同的推广策略有着不同的侧重点,根据市场情况 ...
- mybatis引入dtd约束
window->preferences,然后寻找xml catalog,点击add如下所示 将dtd网址复制到key中 key type选择uri,选择dtd的下载路径.
- 【转】安装Ubuntu时卡在logo界面
Ubuntu15.04 安装卡在logo界面不动,进度点卡死不动,原因主要是双显卡,电源设置项默认不合理,导致安装失败. 选择USB硬盘(uefi),进入到一个有四个选项的界面,分别是 1,try U ...
- CrateDB——全文搜索使用的是lucene,尚不知其底层实现
CrateDB: The fast, scalable, easy to use SQL database with native full text search https://crate.io ...