一种基于改进CORDIC算法的数控振荡器的实现方法技术

技术编号:38124993 阅读:9 留言:0更新日期:2023-07-08 09:28
本发明专利技术请求保护一种基于改进CORDIC算法的数控振荡器的实现方法,传统的CORDIC算法具有占用资源大、解算速度相对较慢的缺点,为了提高输出的效率,本文提出一种以高效的12级流水线CORDIC体系结构和一个非常小的查找表(LUT)实现了正弦波形发生器。该系统在Quartus、ModelSim进行了代码编写和仿真。仿真结果表明,本文提出的结构能够将系统的运行速率从217.77MHz提高到291.04MHz,提高了系统的输出效率。有能具体实现的价值。输出效率。有能具体实现的价值。输出效率。有能具体实现的价值。

【技术实现步骤摘要】
一种基于改进CORDIC算法的数控振荡器的实现方法


[0001]本专利技术属于微电子与硬件电路实现
,涉及一种基于改进CORDIC算法的数控振荡器的实现。

技术介绍

[0002]数字控制振荡器(NCO,numerical controlled oscillator)是软件无线电、直接数据频率合成器(DDS,Direct digital synthesizer)、快速傅立叶变换(FFT,Fast Fourier Transform)等的重要组成部分,同时也是决定其性能的主要因素之一,具有频率精度高、转换时间短、频谱纯度高以及频率相位易编程等特点,因此被广泛应用于软件无线电数字上、下变频以及各种频率和相位数字调制解调系统中。随着芯片集成度的提高、数字控制振荡器在信号处理、数字通信领域、调制解调、变频调速、制导控制、电力电子等各方面得到越来越广泛的应用。
[0003]为了实现MEMS陀螺仪精度的有效提高,将微陀螺仪测控电路中的模拟测控电路转变为数字测控电路成为了一种有效且稳定的途径。而在数字测控电路中,起决定作用的部分为驱动电路,该电路实现的主要功能就是稳定MEMS陀螺仪的输出频率和幅值,实现陀螺仪的稳定工作。其中稳定输出频率主要采用的是数字锁相环,数控振荡器(NCO)作为数字锁相环的重要组成部分,对整个数字锁相环的性能起到了至关重要的作用。因此设计高精度的数控振荡器是整个电路中的重点和难点。NCO传统的实现方法主要有查表法、多项式展开法或近似法,但这些方法在速度、精度、资源方面难以兼顾。目前的数控振荡器主要采用CORDIC算法来实现。与NCO传统的实现方法相比,采用CORDIC算法来实现时,无需使用乘法器,只需进行简单的移位和相加运算,即可产生高精度的正余弦波形,尤其适合于FPGA的硬件实现。
[0004]CORDIC(Coordinate Rotation Digital Computer)算法即坐标旋转数字计算方法是产生正余弦波形的一种有效且实用的方法,它于1959年被J.D.Volder等人首次提出,主要运用于三角函数、双曲线、指数、对数的计算。CORDIC算法具有较强的可移植性、实现方便以及精度可控等特点。在长时间的发展过程中,有许多学者对该算法进行了各种研究,并针对该算法的不同缺陷提出了不同的改进方法。2005年,Maharatna K等人提出了基于CORDIC算法的串行结构,并在FPGA上进行了硬件实现,该方法占用的资源较少,使得控制单元设计略显复杂,时序控制较为烦琐,系统处理速度较低。2013年,黄俊等提出了流水线型CORDIC算法,该方法提高了CORDIC的运算效率,但使得算法内部占用的逻辑资源大幅增加。2014年刘章发等提出了二进制角度重编码CORDIC算法,该方法可以省略每一次迭代都要进行的下一步旋转方向判断,从而降低资源占用,提升了解算速度。同年徐成等提出了基于角度重编码提出了迭代合并CORDIC算法,进一步压缩了资源占用。
[0005]CORDIC算法的操作方法是基于三角运算,它依赖于矢量旋转在极坐标和直角坐标之间进行连续映射和协调。CORDIC算法并不像LUT那样完全依赖于预定的相位、频率和振幅值来计算正弦波形上的坐标,它比LUT更加灵活。CORDIC由于具有同时产生正交分量和同相
分量的能力而优于传统的LUT方法。它计算所需三角函数的数值,如正弦,余弦,双曲函数d(ex

sinh,cosh和tanh),能达到任何所需的精度。
[0006]CORDIC算法分为旋转模式和向量模式,由于硬件架构的一致性,旋转模式和向量模式最终实现的基本原理是一样的。本文主要分析和研究的是旋转模式。旋转模式几何原理如图1所示,在坐标系中有一个点P1,将P1旋转角2度后得到点P2,角1为α,称为初始角;角2为旋转角,用β表示。
[0007]令
[0008][0009]得到P1点的表达式:
[0010][0011]进而能得到P2点的表达式:
[0012][0013]因此,已知P1和旋转角度后,就可以计算出点P2。P2的坐标进一步可写成:
[0014][0015]为了方便计算,在旋转中不考虑向量模值,将cosβ去掉,此时旋转坐标的度数就能容易得到,这种操作称为伪旋转。此时4变为伪旋转方程:
[0016][0017]伪旋转的思想是分割角度,具体做法是将旋转角β分为若干个大小相等的角度β
i
,即为了方便CORDIC算法在硬件上得以实现,设每次的旋转角为β
i

[0018]规定β
i
满足tanβ
i
=2

i
,则有:
[0019]β
i
=tan
‑12

i
ꢀꢀꢀꢀ
(6)
[0020]∑tanβ
i
的范围与旋转角β的范围[

99.7
°
,99.7
°
]一致。由于每次旋转的方向都与上次旋转后剩余角度的大小有关,所以在每次旋转角度的时候需要设置一个方向d
i
,如果旋转角度之和小于β,则d
i
为1,表明下次旋转为顺时针,如果旋转角度之和大于β,则d
i


1,表明下次旋转为逆时针。从初始位置开始旋转一定角度后,会有一个剩余角度,设旋转剩余角度为z
i
,z
i
=β

d
i
β
i
,将(6)带入有:z
i
=β

d
i
tan
‑12

i
。z
i
初始为β,即z
i
(0)=β。随着i的值不断增大,z
i
会趋近于0,此时旋转结束。
[0021]定义旋转方向d
i
后,式(1

6)可变为:
[0022]β
i
=tan
‑1(d
i2‑
i
)
ꢀꢀꢀꢀ
(7)
[0023]在采用伪旋转的时候,每次旋转都会对应一个剩余角度,旋转结束就会产生一个
∏cosβ
i
的累积。假设迭代次数n=a

1,那么旋转a次后P2的旋转坐标应该为(x
a
*∏cosβ
i
,y
a
*∏cosβ
i
),因此最终P2的坐标角度应该为:
[0024][0025]即
[0026][0027]从上式可以看出,当i的值足够大时,Πcosβ
i
趋近于一个常数,此时就能人为设置x1、y1的值令x1=Πcosβ
i
,y1=0,就能计算出cosβ,sinβ的值本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于改进CORDIC算法的数控振荡器的实现方法,其特征在于,包括以下步骤:建立改进的CORDIC并行流水线结构;改进的CORDIC并行流水结构是在传统的CORDIC结构中对流水线级数进行修改,将传统的16级流水线改进为12级流水线结构。对改进的CORDIC并行流水线结构的旋转角度进行二进制编码;对二进制编码后的旋转角度建立查找表;查找表用于储存对应旋转节点所对应的正余弦值,以此进行查表旋转,记录下每次旋转所得到的正余弦值;对搭建好的改进的CORDIC并行流水线结构进行仿真。2.根据权利要求1所述的基于改进CORDIC算法的数控振荡器的实现方法,其特征在于,所述建立改进的CORDIC并行流水线结构,具体包括:加法器、减法器、移位寄存器以及流水寄存器;通过将每次旋转得到的坐标输入到加法器或减法器中,并通过移位寄存器将剩余角度储存起来,再与下一级的加法器/减法器相连接。3.根据权利要求2所述的基于改进CORDIC算法的数控振荡器的实现方法,其特征在于,所...

【专利技术属性】
技术研发人员:刘宇陈越川李汪润姜晗赵博隆姜晓娟梁矩阳骆大森
申请(专利权)人:重庆邮电大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1