在关联存储器中使用组合方法对正弦/余弦进行CORDIC计算与流程


在关联存储器中使用组合方法对正弦/余弦进行cordic计算
1.相关申请的交叉引用
2.本技术要求于2021年6月23日提交的美国临时专利申请63/213,780的优先权,该申请通过引用并入本文。
技术领域
3.概括而言,本发明涉及计算三角函数,并且具体地涉及在关联存储器设备中使用cordic算法。


背景技术:



4.坐标旋转数字计算机(cordic)算法是一种用于计算三角函数(如正弦和余弦)的算法。它被用作所有流行图形计算器的近似函数。
5.cordic算法围绕“旋转”复数的相位(通过将其乘以一系列常数值)的思想。乘法可以乘以2的幂,其可以使用移位和加法在硬件中实现。
6.现在参考的图1a是单位圆(半径等于1的圆)中的点(x,y)的图示。点(x,y)可以表示为角度α的两个三角函数:x=cos(α)和y=sin(α)。
7.cordic算法通过减小角度γi执行顺时针和/或逆时针旋转的连续迭代。迭代可以在角度0开始,其中算法中的每个步骤执行朝向角度α的旋转。可替代地,迭代可以在角度α开始,其中算法中的每个步骤都执行朝向角度0的旋转。
8.现在参考的图1b是cordic算法的图示,在角度0开始,该算法迭代地用于确定角度α的正弦或余弦值。在第一迭代中,第一旋转角度(γ1)可以逆时针旋转到达单位圆中的点v1。示例中的角度α大于γ1;因此,在下一次迭代中,旋转角度(γ2)也应该是逆时针的,以接近角度α,到达点v2。得到的角度(γ1+γ2)大于角度α,因此在下一次迭代中,旋转角度(γ3)可能会顺时针旋转,导致角度(γ1+γ
2-γ3)越来越接近角度α。使角度∑γi更接近α的旋转过程继续进行预定(t)次数的迭代。得到的角度(∑γi)与α之间的差代表此过程中的最大错误(mistake),即1/2
t

9.当点(x,y)表示为向量时,每次迭代计算旋转,其通过将向量vi与表示角度γi的旋转矩阵ri相乘来执行,如等式1所表达的:
10.v
i+1
=ri*viꢀꢀꢀꢀꢀꢀꢀ
等式1
11.旋转矩阵ri由等式2定义:
[0012][0013]
选择旋转角度γi使得tan(γi)=
±
2-i
可以用除以2的幂来代替乘以切线,如等式3中表达的(并且如上所述,除以2的幂可以在hw中通过移位操作来实现)。
[0014][0015]ki
的值,如等式4所表达,可以预先针对每个i进行计算:
[0016][0017]ri
中signi的值确定旋转的方向,其中+1是逆时针旋转,并且-1是顺时针旋转。
[0018]
用于使用cordic算法的迭代序列计算余弦值和正弦值的所得等式可以分别由等式5和等式6表示。值x是余弦,并且值y是正弦。
[0019]
x
i+1
=x
i-(signi)*yi*2-i
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
等式5
[0020]yi+1
=(signi)*xi*2-i
+yiꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
等式6
[0021]
如上所述,cordic算法包括一组迭代,其中,在每个步骤中,已知大小的角度与先前步骤中计算的临时角度相加或从先前步骤中计算的临时角度中删除,旨在达到需要其余弦值和正弦值(x值和y值)的角度α的大小。
[0022]
可替代地(而不是执行实际计算),可以将cordic算法迭代t次的所有可能结果预先存储在查表(lut)中。lut中的每个条目i在执行cordic算法的i次迭代后提供角度α的正弦值和余弦值。存储i次迭代后的cordic算法的结果的表的大小为t=2i。
[0023]
可以意识到,旋转次数t确定了结果的准确度,并且通过增加旋转次数,结果(正弦/余弦值)的准确度增加。
[0024]
当使用lut时,迭代次数t确定了表的大小和到表的索引中的位数。在执行实际计算时,迭代次数t确定了计算复杂度。


技术实现要素:



[0025]
根据本发明的优选实施例,提供了一种用于关联存储器设备的方法。该方法包括:提供具有用于cordic算法的n次第一迭代的所有可能解的查表(lut),接收多个输入角度,并发地计算多个输入角度中的每个角度的位置索引,以及并发地将每个索引存储在关联存储器设备的列中。该方法还包括:将来自lut的在位置索引中的解复制到与索引相关联的多个列,并且并发地对多个列执行cordic算法的m次附加迭代,以针对多个输入角度中的每个输入角度计算三角函数的值。
[0026]
此外,根据本发明的一个优选实施例,并发计算位置索引是对每个输入角度并发地执行的,并且包括以下步骤:将临时角度初始化为输入角度的值,基于临时角度和零之间的比较确定位的值与符号,将位指派给位置索引,基于符号和预定角度计算旋转角度,将旋转角度与临时角度相加。初始化、确定、指派和计算的步骤重复n次,从而创建具有n位的位置索引。
[0027]
此外,根据本发明的一个优选实施例,n=5且m=5。
[0028]
另外,根据本发明的优选实施例,复制解的步骤包括有序地遍历lut的所有条目并且并发地将来自lut的在位置索引中的x值和y值复制到具有相同的计算的位置索引的所有列。
[0029]
根据本发明的优选实施例,提供了一种正弦和余弦估计器。正弦和余弦估计器包括:查表(lut),用于存储为cordic算法的n次第一迭代预先计算的正弦值和余弦值;关联存储器阵列,用于存储与多个角度相关的信息;lut索引构建器,用于对于多个角度中的每一个并发地构建索引,索引反映预定义旋转角度的旋转;lut值指派器,用于将来自lut中的条目的值指派给共享相同索引的关联存储器阵列的列;以及cordic计算机,用于在关联存
储器阵列的多个列上并发地计算cordic算法的m次附加的迭代,从而向多个角度提供在cordic算法的n+m次迭代之后的正弦值和余弦值。
[0030]
此外,根据本发明的优选实施例,lut包括25个条目并且n=5。
附图说明
[0031]
被视为本发明的主题在说明书的结论部分中被特别指出并明确要求保护。然而,本发明关于组织和操作方法二者,连同其目的、特征和优点,在与附图一起阅读时可以通过参考以下详细描述得到最好的理解,在附图中:
[0032]
图1a是单位圆中的点(x,y)的示意图;
[0033]
图1b是用于迭代地确定角度α的正弦值或余弦值的现有技术cordic算法的示意图;
[0034]
图2是在n次迭代之后存储cordic算法的所有可能结果的查表(lut)的图示;
[0035]
图3是根据本发明的实施例操作的流程的示意图,描述了计算角度α的正弦和余弦的组合方法;
[0036]
图4是根据本发明的实施例构造和操作的正弦/余弦估计器的示意图;
[0037]
图5是根据本发明的实施例实现的流程的示意图,该流程由图4的正弦/余弦估计器执行,以用于为每个输入角度创建对lut的索引;
[0038]
图6是根据本发明的实施例实现的流程的示意图,由图4的正弦/余弦估计器执行,以用于将值从lut复制到关联存储器阵列的列;
[0039]
图7是根据本发明的实施例实现的流程的示意图,由图4的正弦/余弦估计器执行,以用于计算cordic算法的附加迭代;以及
[0040]
图8是由图4的正弦/余弦估计器使用的根据本发明实施例构造和操作的关联存储器阵列的示意图。
[0041]
应当意识到,为了说明的简单和清楚,图中所示的元件不必按比例绘制。例如,为了清楚起见,一些元件的尺寸可能相对于其他元件被夸大了。此外,在认为适当的情况下,附图标记可以在附图中重复以指示对应或类似的元件。
具体实施方式
[0042]
在以下详细描述中,阐述了许多具体细节以提供对本发明的透彻理解。然而,本领域技术人员将理解,可以在没有这些具体细节的情况下实践本发明。在其他情况下,没有详细描述众所周知的方法、程序和组件,以免混淆本发明。
[0043]
许多应用(例如,用于从雷达脉冲创建图像的合成孔径雷达(sar)算法)需要并发高效计算多个角度的三角函数。申请人已经意识到,诸如在由申请人共同所有并通过引用并入本文的美国专利号9,558,812(题为“sram多单元操作”)和美国专利号10,832,746(题为“非易失性存储器内计算设备”)中描述的那些关联存储设备可以并发且高效地计算多个角度的正弦值和余弦值。
[0044]
申请人已经意识到,在这样的设备中实现cordic算法可以提供具有恒定复杂度的并发三角函数计算。复杂度可能仅取决于由cordic算法执行的迭代总数(t),而不取决于需要其正弦值或余弦值的输入角度的数量(其可能非常大,例如32k个角度)。
[0045]
申请人还已经意识到,与使用lut进行总共t次迭代或执行cordic算法的t次迭代相比,组合方法可以提高总计算(t=m+n次迭代的总计算)的性能,在所述组合方法中cordic算法的前n次迭代的结果存储在lut中,并且然后针对附加的m次迭代执行由cordic算法定义的计算。
[0046]
在组合方法的一个实施例中,lut可以预先存储在cordic算法的5次迭代之后可以获得的所有可能值,并且cordic算法的下5次迭代可以在关联存储器阵列中并发地执行。cordic算法10次迭代后的结果准确度可能为
±
0.00097656203。
[0047]
现在参考的图2是lut 20的示例,该lut 20存储在进行n次迭代(使用预定义的n)之后的cordic算法的所有可能结果,以减小特定尺寸的角度γi,其可以被选使得对于每个0《i《n,tan(γi)=
±
2-i

[0048]
lut 20的列21可以向lut提供索引。可以建立对lut的索引,使得索引的每一位i指示迭代i中角度γi的旋转方向。索引的lsb的值指示第一旋转的方向,下一位指示下一旋转的方向,依此类推,直到msb,所述msb指示最后一次旋转的方向。索引中位i的值0指示逆时针旋转γi,并且索引中位i的值1指示顺时针旋转γi。
[0049]
lut 20的列22可以针对每个可能的索引在cordic算法的5次迭代之后提供x(cos(α))的值,并且对于每个可能的索引,列23可以在cordic算法的5次迭代之后提供y(sin(α))的值。
[0050]
lut 20中的每一行24可以提供由预定角度γi的连续旋转导出的角度∑γi的正弦(y)值和余弦(x)值。
[0051]
现在参考的图3是根据本发明的实施例操作的描述组合方法的流程300的示意图。在组合方法中,针对多个角度的正弦和余弦计算可以从2
n lut查和cordic算法的并行计算组合,以用于接下来的m次迭代。2n个lut查取代了针对多个角度αk的cordic算法的前n次迭代,并且cordic算法的接下来的m次迭代在所有角度αk上的并行计算覆盖了对角度进行旋转的t个旋转(t=n+m)的整个范围。
[0052]
在步骤320中,流程300可以接收需要余弦值和/或正弦值的多个角度αk。
[0053]
在步骤340中,流程300可以使用lut执行组合方法的第一部分。在步骤340中,流程300可以并发地针对每个角度αk计算对lut的索引,并且可以针对预先为cordic算法的前n次迭代计算的每个角度αk从lut读取值xk和yk。
[0054]
在步骤360中,流程300可以执行组合方法的第二部分并且可以执行cordic计算的m次附加迭代。在步骤360中,流程300可以针对每个角度αk并发地计算cordic算法的接下来的m次迭代,其从由步骤340提供的值xk和yk开始,并在总共t次迭代后生成xk和yk的最终值。
[0055]
在步骤380中,流程300可以提供最终值xk和yk,它们是在t=n+m次迭代之后余弦和正弦三角函数的估计值。
[0056]
现在参考的图4是根据本发明的实施例构造和操作的正弦/余弦估计器400的示意图。正弦/余弦估计器400可以使用组合方法并且可以实现图3的流程300。正弦/余弦估计器400包括关联存储器阵列410、lut 420;lut索引构建器430;lut值指派器440和cordic计算机450。
[0057]
关联存储器阵列410可以包括排列成具有位线413(列)和字线415(行)的矩阵的多个单元411。同一列中的所有单元411可以连接到同一位线413,并且同一行中的所有单元
411可以连接到同一字线415。关联存储器阵列410在下文的图7中详述。与角度αk相关的所有中间计算结果可以存储在关联存储器阵列410的列k中。
[0058]
lut 420可以是lut 20(图2)的一个实施例,该lut 20存储在n(例如,5)次旋转之后的cordic算法的结果。在该实施例中,对lut 420的索引中的位数可以是5并且lut 420的大小可以是25=32。可以理解,本发明的实施例中的lut 420的大小(32个条目)可以针对用于构建正弦/余弦估计器400的硬件的当前能力被优化。lut 420的大小不限于上面指出的大小,并且可以随着硬件能力的提高而改变,以实现最佳性能。
[0059]
根据本发明的实施例构造和操作的lut索引构建器430可以针对每个角度αk并发地创建索引jk以用作对lut 420的索引。lut索引构建器430可以将创建的索引jk写入到那些与关联存储器阵列410的角度αk相关的位线413。用于针对每个角度αk创建索引jk的流程在下文的图5中描述。
[0060]
根据本发明的实施例构造和操作的lut值指派器440可以遍历lut 420中的所有条目,并且可以并发地将用于每个索引jk的值xk和yk写入到与索引jk相关联的关联存储器阵列410的那些列。由lut值指派器440执行的流程在下文的图6中描述。
[0061]
根据本发明的实施例构造和操作的cordic计算机450可以并发地针对每个角度αk计算cordic算法的m次迭代,其从存储在关联存储器阵列410的列中的值xk和yk开始。在下文的图7中描述了由cordic计算机450执行的流程。
[0062]
现在参考的图5是根据本发明的实施例实现并由lut索引构建器430执行的用于计算用于每个角度αk的索引的流程500的示意图。可以针对索引中的每个位,迭代地计算用于每个输入角度αk的对lut 420的索引。
[0063]
在步骤501中,lut索引构建器430可以接收需要其正弦值或余弦值的多个角度αk。
[0064]
在步骤510中,lut索引构建器430可以将每个βk初始化为输入角度αk的值并且将迭代器(用于在索引的位上迭代)初始化为0。
[0065]
在步骤520中,lut索引构建器430可以在所有角度βk上并发地开始第一迭代。在步骤530、543、546、550和560中,lut索引构建器430可以执行旋转并且可以确定对lut 420的多个索引jk(与每个角度αk相关的索引)中的位的值。lut索引构建器430可以执行n次旋转以计算每个索引jk的n位。在每次迭代i中,可以通过将临时角度βk的值与零进行比较并将相关值(0或1)指派给jk的位i来确定索引jk的位i。
[0066]
在步骤530中,lut索引构建器430可以将每个角度βk的值与0进行比较。如果角度βk小于0,则lut索引构建器430可以继续到步骤546,其中signk可以被指派值(-1),并且每个索引jk的位i的值可以被指派值1。如果角度βk大于0,则lut索引构建器430可以继续到步骤543,其中signk可以被指派值1并且每个索引jk的位i的值可以被指派值0。在步骤550中,lut索引构建器430可以更新每个索引jk的位i的值,计算当前旋转rotatinganglek(通过将γi乘以signk),可以将其与临时角度βk相加。lut索引构建器430然后可以递增迭代器i以处理每个索引jk的下一位。
[0067]
在步骤560中,lut索引构建器430可以检查是否已经计算了索引jk的所有位。如果索引没有准备就绪,则lut索引构建器430可以返回到步骤520,并且如果索引完成,则lut索引构建器430可以提供(步骤570)用于每个输入角度αk的索引jk作为输出并将计算的索引jk写入到关联存储器阵列410的列。
[0068]
现在参考的图6是根据本发明的实施例实现并由lut值指派器440执行的流程600的示意图。
[0069]
在步骤601中,lut值指派器440可以接收具有与每个角度αk相关联的索引jk的多个角度αk。
[0070]
在步骤610中,lut值指派器440可以将迭代器i(用于在lut 420的条目上迭代,每个条目由索引标识)初始化为0。在步骤620中,lut值指派器440可以并发对关联存储器阵列410的所有列开始第一迭代。在步骤630中,可以将每个索引jk的值与i进行比较。如果jk的值等于i,则lut值指派器440可以继续到步骤640并将x的值从lut 420中的条目i复制到与角度αk相关联的列并继续到步骤650。如果jk的值不等于i,则lut值指派器440可以直接继续到步骤650。在步骤650,迭代器i可以递增,并且在步骤660,lut值指派器440可以检查流程600是否到达了lut 420的最后一个条目。如果该条目i不是最后一个条目,则lut值指派器440可以返回到步骤620以处理lut420的下一个条目。否则,lut值指派器440可以完成(步骤670)将与每个角度αk相关联的xk和yk的值写入存储器阵列410的列。
[0071]
现在参考的图7是流程700的示意图,其根据本发明的实施例实现并由cordic计算机450执行。
[0072]
在步骤701中,cordic计算机450的输入可以是所有的输入角度αk、xk和yk的值以及由lut索引构建器430计算的临时角度βk的值,所有这些都存储在存储器阵列410的列中。cordic算法的接下来的m次迭代也可以在关联存储器阵列410的所有列上并发地执行,以提供正弦/余弦估计器400的计算的最后步骤,其是所有输入角度αk的正弦值和余弦值。
[0073]
在步骤710中,cordic计算机450可以针对每个角度αk创建临时参数tempxk和tempyk,并且可以将它们分别初始化为xk和yk。在cordic算法的整个计算过程中可以使用临时参数作为下一次迭代的输入。
[0074]
在步骤720中,可以将每个角度βk的值与0进行比较。如果角度βk小于0,则流程700可以继续到步骤736,其中可以将signk的值设置为(-1)。如果角度βk大于0,则流程700可以继续到步骤733,其中可以将signkαk的值设置为(+1)。
[0075]
在步骤740中,cordic计算机450可以并发地针对所有角度αk计算cordic算法的下一次迭代,并且可以使用等式7和8中定义的临时参数更新所有当前迭代i的xk和yk的值:
[0076]
xk=tempx
k-signk*(tempyk*2-i
)
ꢀꢀꢀꢀ
等式7
[0077]
yk=signk*tempxk*2-i
+tempykꢀꢀꢀꢀꢀꢀ
等式8
[0078]
当前旋转角度γi可以根据signk与临时角度βk相加或从临时角度βk中删除,并且迭代器i(用于在预定义的角度γi上进行迭代)可以递增。
[0079]
在步骤750中,cordic计算机450可以检查最终迭代是否已经完成。如果迭代不是最后一次(即,迭代i小于t),则cordic计算机450可以返回到步骤710,并且如果最后一次迭代已经执行,如在步骤750中检查的,则cordic计算机450可以继续到步骤760,其中每个αk的计算值(xk和yk)可以分别提供cos(αk)和sin(αk)的值。
[0080]
可以理解,由cordic计算机450执行的迭代次数(例如,m=5)可以针对正弦/余弦估计器400的硬件的当前能力进行优化,但不是限制性的,并且可以根据未来硬件能力改变以实现最佳性能。
[0081]
现在参考的图8示出了由正弦/余弦估计器400使用的关联存储器阵列410。关联存
储器阵列410包括存储器阵列810、多行解码器820、多列解码器830和控制器840。
[0082]
存储器阵列810可以是任何合适的存储器阵列,易失性或非易失性、破坏性或非破坏性的,并且可以包括布置成行和列的纯存储器单元。列中的单元可以通过能够对该列执行计算的位线处理器连接。一行中的单元可以通过能够激活多列中的单元的字线连接。包括输入、中间结果和输出的数据可以存储在存储器阵列810的列中。
[0083]
多行解码器820可以是能够并发地激活多行的任何合适的行解码器。多行解码器820可以一次激活存储器阵列810的两行或更多行。当多行被激活时,存储器阵列810的所有列可以在执行读操作时为激活的行提供并发计算,并且可以在执行写操作时提供并发写操作。
[0084]
多列解码器830可以包括能够并发地激活多个列的任何合适的列解码器和可以能够感测列的任何位线连接单元上的值的任何合适的感测电路装置。多列解码器830可以提供在由多行解码器820并发地激活的、每列的多个单元之间执行的布尔函数的结果。多列解码器830可以选择将哪些感测列写回存储器阵列810并且可以能够并发地写入来自多个感测电路装置组件的值。
[0085]
控制器840可以控制多行解码器820和多列解码器830的激活。控制器840可以向多行解码器820指示对于当前操作(读或写)激活哪些行,并且还可以向多列解码器指示830将输出从哪些列写回到存储器阵列810中,以及在选择性写操作中数据可以写入哪些行。
[0086]
控制器840可以包括正弦/余弦估计器400的各个部分,例如lut索引构建器430、lut值指派器440和cordic计算机450。
[0087]
可以理解,作为多读和多写操作的结果,正弦/余弦估计器400的计算可以发生在关联存储器阵列内。因此,正弦/余弦估计器400可以在存储器关联存储器阵列410的所有列上并发地实现任何布尔运算,从而导致大规模的就地并行计算。(每列可以针对单个角度执行所需的计算,并且激活多个列可能导致多个角度的三角函数的并发计算)。
[0088]
可以理解,正弦/余弦估计器400的计算复杂度不取决于输入角度αk的数量。
[0089]
正弦/余弦估计器400可以接收多个角度作为输入,并且可以处理关联存储器阵列410的一个或多个专用列中每个角度αk的计算。计算单个角度的正弦和余弦的复杂度与计算多个角度的正弦和余弦的复杂度相同。
[0090]
lut索引构建器430可以并发地针对每个角度αk计算索引jk。该操作的复杂度可以为o(n),其中n是lut索引的位数。
[0091]
对于lut 420中的每个条目,lut值指派器440可以并发地将x和y的值从lut 420的条目jk复制到共享相同索引jk的关联存储器阵列410的列。此操作的复杂度为o(2n),其中n是lut索引的位数。
[0092]
并发地,对于每个角度,cordic计算机450可以针对m个附加的迭代计算从迭代n开始的x和y的值(前n次迭代的值取自lut)。此操作的复杂度为o(m),其中m是计算cordic算法的迭代次数。
[0093]
还可以注意到,正弦/余弦估计器400可以将输入角度αk的表示修改为在弧度中的点之后具有14位的归一化符号固定点。归一化可以包括将每个角度αk(其可以在范围[-π,π]中)除以π,这可以得到新范围[-1,1]。
[0094]
标准cordic以[-π/2,π/2]范围中的角度操作,而正弦/余弦估计器400可以在可归
一化的角度的整个[-π,π]范围上操作。正弦/余弦估计器400可以变换结果以将它们对齐回到归一化之前的原始值,并且可以再次对它们进行归一化(除以2)。
[0095]
可以意识到,对于10次迭代,最小的旋转角度是arctan(1/1024)弧度,大约为0.000976562弧度;因此,正弦/余弦估计器400的最大误差可能约为0.00097656203。(最大误差是通过将弧度的最大误差转换为纯数(没有单位的数字)来估计的。在t=10时的最小旋转角为1/1024,因此余弦的最大误差为4.768*10^-7,对于正弦为0.00097656203。)
[0096]
可以意识到的是,单独在关联存储器阵列410(具有10位索引的lut或cordic算法的10次迭代)中的每个方法的计算时间高于如下文所述的组合方法的计算时间。
[0097]
对于cordic算法的10次迭代:当i为迭代次数时,每次迭代花费(68+2*i),其中总共770个循环。
[0098]
对于覆盖10次迭代的lut(lut的大小2
10
):用于计算索引jk的每次迭代花费24个循环(每次迭代),其中总共240个循环。
[0099]
用于将值从lut 420获取到关联存储器阵列410的查的复杂度是1024次迭代,其中每次迭代5个循环,这总计到5k个循环。
[0100]
组合方法的10次迭代、由每个部分覆盖的5次迭代(大小为25的lut和cordic算法的5次迭代)的复杂度包括针对前5次迭代使用cordic lut的流程300的步骤340(图3),以及针对接下来的5次迭代使用cordic计算的流程300的步骤350。
[0101]
步骤340(lut)包括:5次迭代,其每次需要24个循环来构建索引jk,其中总共为5*24=120个循环;以及32次查,每次需要5个循环来将来自lut的值指派给每个角度,其中总共为5*32=180,这对于整个lut操作总计到120+160=280。
[0102]
cordic部分包括5次迭代,每次迭代花费68+2*i个循环,这总计到少于400个循环。
[0103]
因此,用于组合方法的循环总数为280+400=680个循环,这少于使用lut进行10次迭代(3000)或执行cordic算法的10次迭代(770)。
[0104]
可以意识到,上文针对流程示出的步骤并非旨在限制,并且每个流程可以通过变化来实践。这些变化可以包括更多步骤、更少步骤、改变步骤顺序、跳过步骤,以及对于本领域技术人员可能显而易见的其他变化。
[0105]
虽然本文已经说明和描述了本发明的某些特征,但是本领域普通技术人员现在将想到许多修改、替换、改变和等同物。因此,应当理解,所附权利要求意在涵盖如落入本发明真正精神内的所有这些修改和变化。

技术特征:


1.一种用于关联存储器设备的方法,所述方法包括:提供具有用于cordic算法的n次第一迭代的所有可能解的查表(lut);接收多个输入角度;并发地针对所述多个输入角度中的每个输入角度计算位置索引,并且并发地将每个索引存储在所述关联存储器设备的列中;将来自所述lut中的在所述位置索引中的解复制到与所述索引相关联的多个列;以及并发地对所述多个列执行所述cordic算法的m次附加迭代,以针对所述多个输入角度中的每个所述输入角度计算三角函数的值。2.如权利要求1所述的方法,其中,并发地计算位置索引包括:并发地针对每个所述输入角度:将临时角度初始化为所述输入角度的值;基于所述临时角度和零之间的比较来确定位的值和符号;将所述位指派给所述位置索引;基于所述符号和预定角度来计算旋转角度;将所述旋转角度与所述临时角度相加;重复初始化、确定、指派和计算的步骤n次,从而创建具有n位的所述位置索引。3.如权利要求1所述的方法,其中,n=5并且m=5。4.如权利要求1所述的方法,其中,复制解包括:有序地遍历所述lut的所有条目,并且并发地将x值和y值从所述lut中的位置索引复制到具有相同的计算的位置索引的所有列。5.一种正弦和余弦估计器,包括:查表(lut),其用于存储针对cordic算法的n次第一迭代预先计算的正弦值和余弦值;关联存储器阵列,其用于存储与多个角度相关的信息;lut索引构建器,其用于针对所述多个角度中的每一个并发地构建反映预定义旋转角度的旋转的索引;lut值指派器,其用于将来自所述lut中的条目的值指派给共享相同索引的所述关联存储器阵列的列;以及cordic计算机,其用于在所述关联存储器阵列的多个列上并发地计算所述cordic算法的m次附加迭代,从而向所述多个角度提供在所述cordic算法的n+m次迭代之后的正弦值和余弦值。6.如权利要求5所述的正弦和余弦估计器,其中,n=5,并且所述lut包括25个条目。

技术总结


一种用于关联存储器设备的方法,包括以下步骤:提供具有用于CORDIC算法的N次第一迭代的所有可能解的查表(LUT),接收多个输入角度,并发地针对所述多个角度中的每个角度计算位置索引,并且并发地将每个索引存储在所述关联存储器设备的列中,将来自LUT的在所述位置索引中的解复制到与索引相关联的多个列,以及并发地对所述列执行CORDIC算法的M次附加迭代,以针对每个角度计算三角函数的值。以针对每个角度计算三角函数的值。以针对每个角度计算三角函数的值。


技术研发人员:

M

受保护的技术使用者:

GSI科技公司

技术研发日:

2022.06.15

技术公布日:

2022/12/22

本文发布于:2024-09-25 16:23:56,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/46903.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:角度   余弦   索引   迭代
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议