在线刊号(2278-8875)印刷版(2320-3765)
K.Surya Kumari1, S.Jahnavi2
|
有关文章载于Pubmed,谷歌学者 |
更多相关文章请访问国际电气、电子和仪器工程高级研究杂志
CORDIC算法是一种重复计算的方法,能够通过适当的移位和相加的方法,出现不同的基本函数,用于对大量函数求值。它包含no。加分式拖拉机,移位寄存器的操作复杂性。本文提出了一种改进的移位方法,即采用一种增加数字的替代方案。在双旋转CORDIC电路中增加预换挡方法和容错,提高了固定和已知旋转的准确率。在固定旋转角度上的改进,减少了应用面积和复杂性。从cordic的基本结构出发,用矢量旋转实现定角旋转。对于已知角度的有效操作,本文实现了角度修正、象限修正和增益修正。角度校正由选择的初始矢量位选择,系统增益由类似于正常cordic实现的固定系统增益的外部增益控制机制控制。
关键字 |
CORDIC算法,旋转模式和矢量模式,控制CORDIC。 |
介绍 |
坐标旋转数字计算机(CORDIC)算法[1],[2]已在硬件中用于有效地实现矢量旋转操作多年。它仅通过表查找、移位和加法操作来执行。因此,相应的硬件可以以非常经济的方式实现。随后,它已应用于数字信号处理(DSP)、图像处理和视频技术中许多性能要求较高的应用,如快速傅里叶变换(FFT)[3]、[4]、离散哈特利变换(DHT)[4]、[5]、离散余弦变换(DCT)[4]、[6]、离散正弦变换(DST)[4]、霍夫变换(HT)[7] -[9]、[12]、图形应用[10]、[11]和运动矢量估计[12]。从本质上讲,CORDIC可以在两种不同的模式下运行:旋转模式和矢量模式。在前一种操作模式中,给定一个具有初始坐标(xo,yo)和目标旋转角度zo的向量,目标是通过迭代方式对向量进行一系列向后和正向旋转来计算最终坐标(x1,y1)。数字信号处理(DSP)算法对高效实现复杂算术运算的需求日益增长。三角函数、坐标变换或复值相量旋转的计算几乎自然地涉及到现代DSP算法。流行的应用实例是用于数字通信技术和自适应信号处理的算法。虽然在数字通信中,引用函数的直接评估是重要的,但许多基于矩阵的自适应信号处理算法需要线性方程组的求解,QR分解或特征值、特征向量或奇异值的计算。 All these tasks can be efficiently implemented using processing elements performing vector rotations. |
坐标旋转数字计算机算法(CORDIC)提供了以相当简单和优雅的方式计算所需函数的机会。CORDIC是一种使用最小硬件计算基本函数的方法,例如shift 's, add /subs和compare。CORDIC的工作原理是通过恒定的角度旋转坐标系统,直到角度减小到零。角度偏移的选择使得对X和Y的操作只是移位和相加。 |
所有三角函数都可以用矢量旋转来计算。CORDIC算法是由Volder在1959年开发的。它以给定的角度,一步一步地旋转矢量。瓦尔特在1971年完成了额外的理论工作。CORDIC的主要原理是用移位寄存器和加法器代替乘法进行计算,节省了大量的硬件资源。CORDIC用于极坐标到矩形和矩形到极坐标的转换,也用于三角函数、矢量大小的计算,以及一些变换,如离散傅里叶变换(DFT)或离散余弦变换(DCT)。在特定的情况下,CORDIC算法被用于无线局域网(WLAN)的接收器。 |
CORDIC算法 |
所有的三角函数都可以用矢量旋转的函数来计算或推导。CORDIC算法提供了一种迭代方法,仅使用shift和add操作就可以执行任意角度的矢量旋转。该算法是利用一般旋转变换导出的。 |
CORDIC算法执行平面旋转。 |
V在逆时针旋转角度à ¾后出现。由图1可以观察到 |
Và Â矢量V按角度逆时针旋转后的直角à ¾是 |
众所周知,旋转矩阵 |
以类似程序的风格: |
对于n=0到[inf] |
如果(Z(n) >= 0)则 |
Z(n + 1):= Z(n) - atan(1/2^n); |
其他的 |
Z(n + 1):= Z(n) + atan(1/2^n); |
如果; |
结束; |
在CORDIC处理中,会产生一个需要补偿的批量比例因子。只要执行了特定字长所允许的所有迭代,缩放因子就保持不变,并且可以用最小的硬件进行补偿。但是,原则上,通过优化选择适当的初等旋转步骤,可以使用较少的迭代次数来实现坐标空间中大多数角度的矢量旋转。这本质上需要通过传递或重复[13]和[25]中提出的一些CORDIC迭代。然而,在这种情况下,比例因子不再保持恒定或可预测。当CORDIC工作在嵌入式系统中,该系统的其他电路(典型的例子是IEEE 802.11(a)标准[15]的OFDM同步器)生成数据并将其提供给CORDIC时,情况会更糟。在这种情况下,CORDIC没有关于实际旋转角度的先验信息,因此,比例因子是完全不可预测的。对于它的补偿,硬件电路需要是一样复杂的原来CORDIC本身。据我们所知,目前还没有一种现有的方案可以在自适应地执行最少的基本旋转步骤的同时,保持比例因子恒定和可预测。然而,前一种方法会导致硬件开销,而后者增加了CORDIC迭代的总数。 |
新的CORDIC旋转器的结构可以通过上述算法的适当硬件映射得到。为了清晰起见,这里以16位CORDIC旋转器的实现为例进行描述。本节中所介绍的所有讨论都可以推广到n位CORDIC旋转器。 |
atan(1/2^i)是预先计算的,并存储在一个表中。[inf]被替换为所需的迭代次数,大约是每比特1次迭代(16次迭代产生16位结果)。 |
缩放优化和实现 |
本节将讨论角度旋转和微旋转的优化集 |
A.固定旋转角度缩放方法 |
(2)给出的比例因子的归一化方程,对于所选的m1微旋转集,可以明确地表示为 |
其中k(i)对于0≤i |
cordic的扩展实现 |
微旋转和缩放在同一电路中以交错的方式或在两个单独的阶段实现。缩放和微旋转的实现取决于所需的精度水平,缩放的实现也取决于微旋转的实现。因此,我们在这里讨论缩放电路的实现相对于微旋转的不同实现。 |
计算正弦和余弦函数 |
正弦和余弦可以计算使用第一个CORDIC方案计算: |
输入Z的值从- 180度到+180度,其中: |
0x8000 = - 180度 |
0xEFFF = +80度 |
但是核心只在- 90度到+90度范围内收敛。 |
其他输入和输出都在-1到+1的范围内。用这种格式表示的聚合常数P的结果是: |
例子: |
计算30度的正弦和余弦。 |
首先要计算角度: |
核心计算Zi=5461时的正弦和余弦值: |
罪:16380(dec) = 3FFC(十六进制) |
Cos: 28381(dec) = 6EDD(十六进制)q |
输出表示-1到+1范围内的值。结果如下: |
其中,结果应该是0.5和0.8660。 |
表1:Sin/Cos输出为某个公共角度 |
虽然核心是非常精确的小误差可以引入算法(见示例和结果表)。这应该只是在整个输出范围内使用核心时才会出现问题,因为+1 (0x7FFF)和-1 (0x8000)之间的差值只有1bit。 |
缩放的广义实现 |
所示为相对于(7)进行缩放的移位和添加电路。Shift的缩放电路和通过硬连线预移加载的添加缩放电路可以使用硬连线预移来降低换桶难度,可以位于图2的CORDIC单元之后,分两段进行微旋转和缩放。给出了用于固定旋转的广义CORDIC电路,在交替循环中以交错方式进行微旋转和缩放。图8的电路与图8的电路相似,它只涉及一个额外的换线电路来改变未移位(直接)输入的路径。 |
双旋转心脏 |
为了减少象限误差,角度和增益校正,Bi旋转Cordic是一种具有额外硬件实现的技术,预定义增益和象限校正算法,这些实现形成了基本的Cordic理论,以获得更高的增益精度。角度范围应在-90到+90,所有角度应在旋转实现的第一和第四象限的范围内。这些块提高了心脏固定旋转的精度,并可通过更多的移动阶段来提高精度。也。 |
复杂性的考虑 |
本文讨论了所提出的设计的硬件和时间复杂度。在提出的文本中,我们没有发现类似的工作CORDIC实现已知和固定旋转。因此,我们将提出的设计与传统的CORDIC设计进行了比较,以解决旋转角度未知的问题。我们在[3,图2]中使用了基本的CORDIC处理器来实现常规的CORDIC。此外,我们还设计了一个直接实现固定旋转的参考架构(见图1),并将所提设计的复杂性和速度性能与常规设计和参考设计进行了比较。 |
结果与分析 |
Cordic算法RTL原理图 |
Cordic算法技术原理图 |
Cordic算法的仿真结果 |
结论 |
本文通过角校正和象限校正实现了对BI CORDIC的控制,通过这些CORDIC算法技术可以进一步提高控制精度。采用角度选择方案克服了原始CORDIC的超调问题。由于no的增加。硬件的复杂性也随之增加,从而导致仿真结果的准确性。 |
参考文献 |
|