CORDIC算法研究及其硬件实现

合集下载

Cordic算法说明与实现设计(word文档良心出品)

Cordic算法说明与实现设计(word文档良心出品)

Cordic 算法说明———— 王聪颖假设调制信号为()m t ,则其经FM 调制后的表达式为:0()cos(())tc f S t t K md ωττ=+⎰ 式(1)其中c ω为载波信号,f K 为常量。

因此,()m t 构成了()S t 信号的部分相位分量,而FM 解调过程就是将()m t 从()S t 的相位中提取出来,这里就可以通过Cordic 算法计算出()S t 信号的相位。

一、算法介绍在本次设计中,为了实现FM 的解调,主要对比了三种算法的实现方法:查表法和Cordic 算法的两种不同实现方法。

下面一一进行介绍:1)查表法:此方法其依据是当[0,/4]θπ∈时,tan [0,1]θ∈且单调递增,这样就可以在[0,/4]θπ∈内建立一个tan θ与θ相对应的表,根据tan θ计算出当前的相位值,同时,利用三角函数关系,将[0,2]π分成大小为/4π的8个部分,并将它们映射至[0,/4]π内从而准确求解。

2)Cordic 算法:其核心是笛卡尔坐标平面旋转,即在xy 坐标平面上将点11(,)x y 旋转θ角度到点22(,)x y 的标准方法如下所示:211211cos sin sin cos x x y y x y θθθθ=-⎫⎬=+⎭式(2)图1 平面坐标旋转示意图将式(2)中的cos θ提取出来,在增加一角度累加方程,即可得到Cordic 算法方程组。

(1)()()(1)()()(1)()()tan tan i i i j i i i j i i i j x x d y y y d y z z d θθθ+++⎫=-⎪=+⎬⎪=-⎭式(3) 在式(3)中,j d 的值为1或-1。

在这里出现两种方法实现Cordic 算法以求的相位:1)取02*45i θ-=,2)取t a n 2iθ-=。

第一种方式暂且称为Cordic 角度法,第二种方式我们暂且称之为Cordic 正切法。

二、算法的比较及实现三种通过计算相位来进行FM解调的算法有其不同的特点:查表法:其思路简单,只需要利用输入的正弦和余弦值求得其映射在0~45度间的正切值,然后进行查表最终获得相位值。

cordic算法求角度的verilog实现

cordic算法求角度的verilog实现

cordic算法求角度的verilog实现摘要:1.引言2.Cordic 算法简介3.Verilog 实现角度计算的Cordic 算法4.结论正文:1.引言Cordic 算法是一种高效的计算三角函数的算法,特别是在数字信号处理、图像处理和通信系统等领域中。

Cordic 算法的基本思想是将三角函数的计算分解为简单的移位、加法和查表操作。

在此文中,我们将讨论如何使用Verilog 硬件描述语言实现Cordic 算法来计算角度。

2.Cordic 算法简介Cordic 算法是一种用于计算正切、余切、正割和余割等三角函数的算法。

其优点在于避免了除法运算,从而降低了计算的复杂度。

Cordic 算法的核心思想是将三角函数的计算分解为一系列简单的移位、加法和查表操作。

3.Verilog 实现角度计算的Cordic 算法在Verilog 中实现Cordic 算法非常简单。

首先,我们需要定义一个查找表,用于存储Cordic 算法所需的所有参数。

接下来,我们需要实现一个状态机,用于控制算法的执行流程。

最后,我们需要实现一个查表模块,用于根据输入角度和查找表的参数值计算三角函数值。

下面是一个简单的Verilog 代码示例,用于实现Cordic 算法计算角度的功能:```verilogmodule cordic_algorithm(input wire clk,input wire reset,input wire [15:0] in_angle,output reg [15:0] out_angle);// 定义查找表reg [15:0] lookup_table [0:15] = "{16"h0000, 16"h0024, 16"h0048, 16"h0072, 16"h0096, 16"h00B0, 16"h00D4, 16"h00F8,16"h010C, 16"h012E, 16"h014C, 16"h0168, 16"h0184,16"h01AD, 16"h01CE, 16"h01EF};// 定义状态机reg [3:0] state;reg [31:0] accumulator;reg [31:0] result;always @(posedge clk or posedge reset) beginif (reset) beginstate <= 4"b0;accumulator <= 32"b0;result <= 32"b0;end else begincase (state)4"b0: begin// 初始化累积器和结果寄存器accumulator <= 32"b0;result <= 32"b0;state <= 4"b1;end4"b1: begin// 计算结果result = accumulator;state <= 4"b2;end4"b2: begin// 查找表查找result = lookup_table[result];state <= 4"b3;end4"b3: begin// 更新累积器accumulator = (accumulator << 1) + (in_angle << (32 - 1));state <= 4"b0;endendcaseendendassign out_angle = result;endmodule```4.结论本文介绍了如何使用Verilog 硬件描述语言实现Cordic 算法来计算角度。

CORDIC算法原理及实现

CORDIC算法原理及实现

图4.1 圆坐标系旋转
CORDIC算法原理 --圆坐标系旋转原理
上面的方程组同样可写成矩阵向量形式:
x2 cos y sin 2 sin x1 y cos 1
例如一个90o相移为:
x2 0 1 x1 - y1 y 1 0 y x 1 1 2
x (i 1) x (i ) y (i ) di 2 i y (i 1) y (i ) x (i ) d i 2 i z (i 1) z (i ) d i e (i )
1

z
(0)
通过设定x(0)=1和z(0)=0来计算tan-1y(0)。向量模式 中,判决算子di 满足下面条件:
d i sign ( x (i ) y (i ) )

因此 我们输入x(0)和y(0)(z(0)=0),并通过迭代使y(0) 取值趋近于0。
CORDIC算法原理 --向量模式
CORDIC算法原理 --圆坐标系旋转原理
前面所示的伪旋转现在可以表示为(对每次迭代):
x (i 1) x (i ) d i (2 i y (i ) )
(4.7) 在这里引入第三个方程,被称为角度累加器,用来在 每次迭代过程中追踪累加的旋转角度: z (i 1) z (i ) d i (i ) (4.8) 这里:di=±1。符号di是一个判决算子,用于确定旋转的方向。 上述三个方程式为圆周坐标系中用于角度旋转的CORDIC算法的 表达式。在本章的后续部分中我们还将看到CORDIC算法被用于其 它的坐标系,通过使用这些坐标系可以执行更大范围的函数计算。
CORDIC算法原理 --圆坐标系旋转原理

改进型CORDIC算法的研究与实现

改进型CORDIC算法的研究与实现

改进型CORDIC算法的研究与实现陈婧【摘要】CORDIC的运算速度问题是研究的热点.为了解决CORDIC运算速度慢的问题,采用跳过零点思想,跳过输入相位值中为0的位,有效的减少了迭代次数.利用ISE仿真技术多次仿真综合.验证出改进型的CORDIC算法,在保证算法的运算精度基础上,明显地改善了CORDIC的运算速度,尤其针对于一些特殊的旋转角度,利用极少的旋转就达到结果.最终利用FPGA实现改进后CORDIC算法.%With the rapid development of VLSI technology. CORDIC algorithm is widely used. A method of jumping over "0" in the input phase values is adopted to reduce the iterations effectively in this paper. The modified CORDIC algorithm was simulated with ISE simulation technology for several times. The results show that the operational speed of the modified CORDIC algorithm is obviously improved on the premise of ensuring the operational accuracy of the algorithm. The CORDIC algorithm was implemented with FPGA.【期刊名称】《现代电子技术》【年(卷),期】2011(034)024【总页数】3页(P165-167)【关键词】CORDIC算法;Zero-skipping;ISE;旋转角度【作者】陈婧【作者单位】福建工程学院,福建福州 350108【正文语种】中文【中图分类】TN911-340 引言CORDIC算法是一种逐渐逼近的数学方法,利用不断偏摆来逼近所需要的旋转角度。

《基于CORDIC算法的正切余切函数的设计及FPGA实现》范文

《基于CORDIC算法的正切余切函数的设计及FPGA实现》范文

《基于CORDIC算法的正切余切函数的设计及FPGA实现》篇一一、引言随着数字信号处理技术的快速发展,FPGA(现场可编程门阵列)在各种应用中发挥着越来越重要的作用。

其中,CORDIC (COordinate Rotation DIgital Computer)算法以其简单、高效和易于硬件实现的特点,在FPGA中得到了广泛的应用。

本文将详细介绍基于CORDIC算法的正切余切函数的设计及在FPGA上的实现。

二、CORDIC算法概述CORDIC算法是一种用于计算三角函数、双曲函数以及复数运算的迭代算法。

其基本思想是通过一系列的向量旋转来逼近所需的函数值。

CORDIC算法具有计算精度高、速度快、易于硬件实现等优点,因此在数字信号处理、图像处理、通信等领域得到了广泛的应用。

三、正切余切函数设计1. 算法设计正切和余切函数是三角函数中的基本函数,其值可以通过CORDIC算法进行计算。

在CORDIC算法中,通过一系列的向量旋转来逼近所需的角度,从而计算出正切和余切的值。

具体来说,我们可以将输入的角度分解为一系列小的角度,然后通过CORDIC算法迭代计算每个小角度的正切和余切值,最后将所有小角度的结果相乘即可得到所需的角度的正切和余切值。

2. 硬件设计在FPGA上实现正切余切函数的硬件设计,需要考虑如何将CORDIC算法转化为硬件可实现的电路。

首先,需要设计一个控制模块,用于控制整个计算过程的迭代次数和每个迭代步骤的执行顺序。

其次,需要设计一系列的寄存器和查找表,用于存储计算过程中所需的常数和中间结果。

最后,需要设计计算模块,用于执行CORDIC算法中的向量旋转和乘法运算。

四、FPGA实现1. 硬件描述语言(HDL)编程在FPGA上实现正切余切函数,需要使用硬件描述语言(如Verilog或VHDL)进行编程。

在编程过程中,需要根据硬件设计的思路,将控制模块、寄存器、查找表和计算模块等模块进行连接和配置,以实现整个计算过程的自动化。

cordic算法及其FPGA硬件实现 毕业论文

cordic算法及其FPGA硬件实现 毕业论文
Key words:cordic algorithm; FPGA; Coordinate rotation algorithm; Binary search method; pipeline architecture
第一
1.1 CORDIC
1.1.1 CORDIC
CORDIC(Coordinate Rotational Digital Computer-坐标旋转数字计算机)算法最早由J.Volder等人于1959年在美国航空控制系统的设计中提出,他的基本思想是:通过坐标轴旋转得出一个二维的函数关系式,对初始角度进行数值线性逼近,把初始角度的旋转转化成一系列基本角度逐次旋转完成,然后运用递推原理,得出一组递推公式,把每次递推得到的角度加进去,转换成一组三维的函数关系式,进一步推导,最终用圆周模型、线性模型、双曲线模型实现了加减乘除、三角函数、双曲线三角函数、平方根,指数、对数等函数的运算。20年后,随着VLSI的产生和迅速发展,CORDIC算法开始被重视,并得到了广泛的应用。原始算法描述的是二维的旋转,它被应用于数字信号处理(如:傅里叶变换、数字滤波器)、计算机图像处理和机器人技术等领域。
由于CORDIC算法本身具有众多的优点,目前,已经应用于很多领域,例如:8087数学协处理器、HP-35计算器、天气预报、雷达信号处理、三维图像处理、嵌入式系统以及移动通信、数控振荡器、数字下变频器及数字鉴别器等;此外,它还应用于许多数字信号处理问题,如:快速傅里叶变换、离散余弦变换、小波变换、数字滤波器、离散Hartley以及求解线性系统。Altera公司和Xilinx公司13还推出了CORDIC算法实现的IP核,可以按照实际需求直接调用。
在数字信号处理中,高速高精度的三角函数发生器有着广泛的应用,在通常情况下,计算三角函数、反三角函数、双曲线函数和其它超越函数有效的方法有:ROM查找表法、多项式近似法(主要是利用泰勒级数近似)、CORDIC法。

CORDIC算法的优化及硬件实现

CORDIC算法的优化及硬件实现

CORDIC算法的优化及硬件实现【摘要】本文介绍了CORDIC算法的基本原理并分析了其优化的方法,在QUARTUS9.0平台上基本实现了其功能,有效的降低了资源的消耗并提升了工作频率。

【关键词】CORDIC优化;FPGA;仿真CORDIC算法全称为坐标旋转数字计算机,它是由J.V older于1959年提出,cordic的运用大大降低了常用函数如sin,cos,sinh,cosh等在硬件上实现的难度,它主要是将复杂的函数在硬件上通过加减和移位运算递归计算出函数值,由于以上特性使得这一算法特变适合在FPGA上实现。

1.CORDIC算法基本原理CORDIC算法主要是在一个平面上某一向量(x1,y1)经过旋转角后得到新的向量(x2,y2),如图1所示。

根据变换规则二者有如下关系:2.传统CORDIC算法的局限性及优化CORDIC算法在FPGA中主要通过流水线来实现,通常要将提前算出作为的输入预先存储到ROM中,随着流水线级数的增加ROM表的容量成指数增长增加了系统的资源消耗,CORDIC每次运算都要经过多次迭代随着迭代次数的增加计算速度受到很大的影响,一个结果往往要经过多个时钟周期才能得到,此外传统的CORDIC算法的角度范围受到很大的约束,旋转的最大的角度范围为-99.88≤≤99.88无法达到0≤≤360必须对输入的角度预先进行处理才能使其达到收敛针对以上情况采取优化反正切函数表来减少迭代次数,简化校正因子等可以解决资源和速度的缺陷,对于角度的收敛问题采用分象限法如表1。

对于一个15级流水线可以通过以上的方法减少到12次迭代减少了3级流水线,并且减少了ROM的使用量提高了运行效率。

3.CORDIC算法硬件的实现由于CORDIC算法主要通过加减以及移位来实现,说以特别适合在FPGA 上实现,在这里我采用Altera公司的Cyclon2器件组中的EP2C5Q208C8整个实现过程都是在Quartus9.0中完成图2为系统的整体架构。

cordic算法原理与实现

cordic算法原理与实现

CORDIC算法原理与实现引言概述在计算机科学和数学领域,CORDIC(Coordinate Rotation Digital Computer)算法是一种用于计算旋转和坐标转换的迭代算法。

由Jack E. Volder于1959年提出,CORDIC算法以其高效、简单的特性在数字信号处理、图形学和通信等领域得到了广泛应用。

本文将深入探讨CORDIC算法的原理和实现,揭示其在现代计算中的重要性。

正文内容1. CORDIC算法的基本原理1.1 旋转向量的基本概念CORDIC算法的核心思想是通过迭代旋转一个向量,使其逐步趋近于目标向量。

这里,向量旋转可以通过一系列坐标变换和旋转操作来完成。

在CORDIC中,旋转角度通常是一个固定的、预先设定的角度,如45度或30度。

1.2 坐标旋转的迭代过程CORDIC算法通过一系列迭代步骤,逐渐调整向量的坐标,使其最终趋近于目标向量。

每一步迭代都包括一个旋转和坐标调整操作,通过这种方式,算法能够在有限次迭代后收敛到所需的结果。

1.3 旋转因子的选择与优化CORDIC算法中,旋转因子的选择对算法的性能有着重要影响。

通过合理选择旋转因子,可以使得迭代过程更快速、更精确。

优化旋转因子的选择是CORDIC算法在不同应用中取得高性能的关键。

1.4 旋转模式与运算精度CORDIC算法支持不同的旋转模式,包括旋转、缩放和坐标转换等。

在应用中,需要根据具体问题选择合适的旋转模式。

此外,算法的运算精度也受到迭代次数的影响,需要权衡计算速度和精度。

1.5 硬件实现与软件实现CORDIC算法可以通过硬件电路实现,也可以通过软件编程实现。

硬件实现通常能够提供更高的运算速度,而软件实现更加灵活,适用于不同的计算平台。

选择合适的实现方式取决于具体应用的要求和硬件资源的可用性。

2. CORDIC算法的应用领域2.1 数字信号处理在数字信号处理领域,CORDIC算法常被用于计算旋转和相位调制等操作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。



结 构 电路 见 图 3 由图 3可 以看 出 ,O D C算法 通 过 。 CR I 采 用 流水 线结 构 , 把每 一次 的迭代 过 程进 行 展开 , 高 提 了运 行速 度 ,明显 地 简化 了硬 件 架构 。在 流水线 架 构
中, 每一 级 的移位 器移 位宽 度 固定 , 位器 可 简化 至 只 移
Xlk i i i i i- ・ ・ + yd2 = Y =i M ii 。‘ d2 () 5 () 6
从而逼近所需旋转 的角度选取 固定旋转角度恰好使得 计算只有移位和相加 因此使乘法在硬件上得到很好 的
实现。
1 算法原理及 改进
在 直角 坐标 系 中 ,设 一个 矢 量 A 的坐标 为 ( ,) xY ,
2 1 年( 3 卷) 4 00 第 9 第 期
信 . 技术 电
O R O D l C算法研 究及其硬件实现
丁 晓红 - ,
(. 1 西北师范大学 数信学 院, 甘肃 兰州 70 7;. 3002 甘肃政法学院 计算机科 学学 院 , 甘肃 兰州 707 ) 300 摘 要:O DC算法可 以通过迭代方法完成矢量旋 转 , 而完成三角 函数的运算 。 C RI 从 扩展 的 C R I O DC算法在选 择不 同模 式和
: 兰 竺
f 多路选掸器拄捌
需 连 线 即可 ,简 化 了系统 设计 ,增加 了系统 的运 行 速
度; 同时 ,O IC算法采用流水线架构 以后 , C RD 每一步的 角度判断都并行计算 , 对于每一级计算过程而言 , 所用 到的角度数值是一个常数 。显著地增加硬件的最大时
=CS ( + ・ 2 ) O y d ・ 0
其 中 ,= d l时为逆 时针 旋转 ,=一1时为顺 时针 旋 转 。 d 若
不考虑 因子 CS 则旋转后的矢量为 , O , 如图 1 所示 。 角度 的旋转都 可由一系列 的特定角度的旋转来完
成, 即有
iN =
、- 1 =

() 8
其中: c ~ P 值随i 变化 n(s) 的 o 。 的 而变化, 在
i= 0
f .v ) x
i1 时 , > 0 大约等于 1 4 。 . 7 6
如果设 Y =0 X =l 则 有 : 。 , o i P,
X + =C s y + =sn N1 o  ̄ y1 i
如果不考虑每次迭代常数因子 k,则系统有增益 i
A, N次迭代 后有 : 且
X+ Pxcs ys ) N= ( o O- cn I o i () 7
将其旋转一个角度 0后 , 得到新的矢量为 A’其坐标 ,所
^”
lPycs xs ) = ( o O- o n o i
面性能 的兼顾。
关键 词 :O D C算 法 ; CR I 直角极 坐标变换 ; 硬件实现结构
C R I 法 基 本 思 想是 用 一 系 列角 度 不 断偏 摆 O DC算
其中, ni 2 ,= , t 一 2 ) t 0= 。d ±1 £<a 一 。 a i n( 设i 为迭代次数 , 其中 k CSi _ ,,……N 有( i O0 i 0 12 = , )
从 而可 以得 到角度 的正 弦值 和余 弦值 。 通常 , 为确 定每 次迭 代 d 的值 , 引进变 量 Z和其 i 需 i 迭代 方 程 ,i Z的初 始值 为 , 迭代 方程 如下 : 其
Zl i l i Z d。 + -  ̄
图 1 矢 量 旋 转 示 意 图
() 9
则 :O DC算 法 的迭代 方程 为 : CR I
t =2i a n0 。
Zl i i a 2 ) i - d・ n ( +Z t -—
(2 1)
如果将 把 X 和 y看作 直角 坐标 系 中的横坐 标 和纵 o 0
则在硬件实现中,含有正切的乘积项可简化为右 移操 作 。 即有

坐标 , 经过 N次迭代后 , 结果 X+和 z。 N 。 N 分别对应于其 +
2 算法的硬件 实现结构
依据对 C R I 法 的的分析和 F G O DC算 P A的特点 ,
d0 ii  ̄ +8
() 4
在 FG P A中 实现 C R I O D C处 理 机 是 一 种 迭代 运 算 , 见
图 2 示。 所
3 3
信 ,, 术 息技
2 1 年( 3 卷) 4 0 0 第 9 第 期
() 1
() 2 () 3

则 有 :’ cs- n o0 ys 0 i
y yes+ s O ' oO x i - n
ql i i 2  ̄- -  ̄ i X y ・ +
(o 1)
( ) 1 1
,l 一i i ,= 。 。 : d2
如果 限制 0以使 其满 足 (为常 数 ) , i :
初始值 , 可以使其应用于直接计算正 弦、 余弦 、 反正切 以及在极 坐标 和直角坐标之 间的变换 。C R I O D C算法可 以通 过 F G PA 中的移位和加法运算即可完成 , 以采用 流水线结 构 , 足实时性要求 , 可 满 从而实现计 算精度 、 算速度和硬件资源 利用 等方 运
平 方根 ( 一 因子 A) 有 和其 反 正切 ( 有一 常 数 z ) O 。如 果
=CS ( — ・ ・ O x d ) 2 ) 0 ,

设 zO o, = 并将 X 1 以 1 , 么 X l Z l N乘 + , 那 A N 和 N 就是 x 和 Y + + o o
对 应于 极坐 标 系 中的半 径 和 相位 ,从 而完 成从 直 角 坐 标 到极坐标 的变 换 。
减 法 之 间插 入存 储器 。 F G /P D的硬件 逻辑单 元 而 P AC L
的始 规 初
寄器 存
本 身 就带 有存 储 器 , 因此 利用 F G /P D作 为 硬件 平 P AC L
台, 增加做流水线 的存储器并不 占用硬件资源。 其硬件
I l 选代次数控制
r. 一 泽器{。 l
相关文档
最新文档