- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CORDIC算法.doc
电子系统设计实验
学生姓名 周鹏勋 班级 电信093 学号 09401200325 成绩 指导教师 谭会生
电气与信息工程学院
2012年12 月 7日
CORDIC算法设计
设计目的:
掌握并熟悉使用EDA软件。
更加了解EDA的这种模块化设计思想。
能够熟练使用verilog语言。
掌握CORDIC算法的原理。
设计思想:
ODRDIC算法( Coordinate Rotational Digital Computer,坐标旋转计算机)是一种用于计算一些常用的基本运算函数和算术操作的循环迭代算法。其基本思想是用~系列与运算基数相关的角度的不断偏摆从而逼近所需旋转的角度,从广义上讲它是一个数值性计算逼近的方法,由于这些固定的角度与计算基数有关,运算只有移位和加/减。若用传统的乘、除等计算方法,需要占用大量的 资源,甚至有时是难以实现的,这样就不能满足设计者的要求。IC算法正是为解决这种问题而产生的,它在硬件电路的实现上只用到了移位和加僦,就大大节约了FFGA的资源,使得这些算法在硬件上可以得到较好地实现,从而可以满足设计者的要求。本文讨论了∞ RDIC算法的 实现,并借助Ⅱ)A工具和硬件描述语言删.对这种算法进行验证和实现。
CORDIC算法包含圆周系统,线性系统,双曲系统三种旋转系统。本文仅以圆周系统推导如下。该系统完成的是一个平面坐标旋转如图1所示,可以看出,将向量(X , )旋转 角,得到一个新的向量(Xi,Yi),那么有:
式中R为圆周的半径, 为旋转角度。写成矩阵形式:
实验步骤:
1、流水线单元电路设计:
module cordicpipe(clk,ena,xi,yi,zi,xo,yo,zo);
parameter width = 16;
parameter pipeid = 1;
input clk,ena;
input[width-1:0]xi,yi;
input[19:0]zi;
output[19:0]zo;
output[width-1:0]xo,yo;
wire[width-1:0]dx,dy,xcatan,ycatan;
wire[19:0]atan,zcatan;
wire zneg,zpos;
reg[width-1:0]xo,yo;
reg[19:0]zo;
assign dx = delta(xi,pipeid);
assign dy = delta(yi,pipeid);
assign atan = catan(pipeid);
assign zneg = zi[19];
assign zpos = !zi[19];
assign xcatan = addsub(xi,dy,zneg);
assign ycatan = addsub(yi,dx,zpos);
assign zcatan = addsub(zi,atan,zneg);
always @(posedge clk)
begin
if(ena)
begin
xo = xcatan;
yo = ycatan;
zo = zcatan;
end
end
function [19:0]catan;
input n;
begin
case(n)
0:catan = 20h20000;
1:catan = 20h12e40;
2:catan = 20h9fb4;
3:catan = 20h5111;
4:catan = 20h28b1;
5:catan = 20h145d;
6:catan = 20h0a2f;
7:catan = 20h0518;
8:catan = 20h028c;
9:catan = 20h0146;
10:catan = 20h0a3;
11:catan = 20h0051;
12:catan = 20h0029;
13:catan = 20h0014;
14:catan = 20h000a;
15:catan = 20h0005;
16:catan = 20h0003;
17:catan = 20h0001;
default:catan = 20h0000;
endcase
end
endfunction
function[15:0]delta;
文档评论(0)