《用于集成电路设备中的三角函数的计算.pdf》由会员分享,可在线阅读,更多相关《用于集成电路设备中的三角函数的计算.pdf(30页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 102959503 A (43)申请公布日 2013.03.06 C N 1 0 2 9 5 9 5 0 3 A *CN102959503A* (21)申请号 201180031374.4 (22)申请日 2011.06.21 12/823,539 2010.06.25 US G06F 7/548(2006.01) (71)申请人阿尔特拉公司 地址美国加利福尼亚 (72)发明人 M兰厄姆默 (74)专利代理机构北京市金杜律师事务所 11256 代理人酆迅 (54) 发明名称 用于集成电路设备中的三角函数的计算 (57) 摘要 一种用于计算输入的三角函数的电路,其包 括。
2、:用于将输入与另一个值关联以生成中间值的 电路;用于选择该输入和该中间值中的一个作为 三角输入值的电路;用于确定用于该三角输入值 的多个三角函数各自的初始值的电路;以及用于 至少部分地基于三角恒等式,从该多个三角函数 各自的初始值得出第一三角函数的最终值的电 路。该三角函数可以是任何正弦、余弦和正切和它 们的反函数。所使用的三角恒等式允许将三角函 数的计算分解成更易于执行或者能够被更准确地 执行的片。 (30)优先权数据 (85)PCT申请进入国家阶段日 2012.12.24 (86)PCT申请的申请数据 PCT/US2011/041221 2011.06.21 (87)PCT申请的公布数据 。
3、WO2011/163208 EN 2011.12.29 (51)Int.Cl. 权利要求书4页 说明书12页 附图13页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 4 页 说明书 12 页 附图 13 页 1/4页 2 1.一种用于计算输入的第一三角函数的电路,所述电路包括: 用于将所述输入与另一个值关联以生成中间值的电路; 用于选择所述输入和所述中间值中的一个作为三角输入值的电路; 用于确定用于所述三角输入值的多个三角函数各自的初始值的电路;以及 用于至少部分地基于三角恒等式,从所述多个三角函数各自的初始值得出所述第一三 角函数的最终值的电路。 2.根据权利要求。
4、1所述的电路,其中: 所述用于确定多个三角函数各自的初始值的电路确定正弦值和余弦值;并且 所述用于得出最终值的电路当所述输入处于第一范围中时选择所述多个三角函数中 的一个三角函数的所述初始值,并且当所述输入处于第二范围中时选择所述多个三角函数 中的另一个三角函数的所述初始值。 3.根据权利要求2所述的电路,其中,所述用于确定的电路包括CORDIC电路。 4.根据权利要求2所述的电路,其中: 所述另一个值是/2; 所述用于关联的电路从/2减去所述输入以生成所述中间值; 所述第一范围包括最大等于/4的值;并且 所述第二范围包括最小等于/4的值。 5.根据权利要求2所述的电路,其中: 所述另一值是/。
5、4; 所述中间值包括第一中间值和第二中间值; 所述用于关联的电路从/4减去所述输入以生成所述第一中间值,并且从所述输入 减去/4以生成所述第二中间值; 所述第一范围包括最大等于/8的值; 所述第二范围包括最小等于3/8和最大等于/2的值;并且 所述用于得出最终值的电路选择性地组合所述第一中间值和所述第二中间值的正弦 和余弦。 6.根据权利要求1所述的电路,其中: 所述用于确定多个三角函数各自的初始值的电路确定正弦值和余弦值;并且 所述用于得出最终值的电路当所述输入处于第一范围中时以第一组合方式组合所述 多个三角函数中的每个三角函数的所述初始值,并且当所述输入处于第二范围中时以第二 组合方式组合。
6、所述多个三角函数中的每个三角函数的所述初始值。 7.根据权利要求6所述的电路,其中,所述第一组合方式和所述第二组合方式从由以 下各项构成的组中选择:和、差、乘积、乘积之和、乘积之差以及它们的组合。 8.根据权利要求7所述的电路,其中: 所述用于得出的电路被配置在可编程集成电路设备的专用处理块中;并且 所述专用处理块包括多个乘法器和至少一个加法器。 9.一种用于将可编程集成电路设备配置成为用于计算输入的第一三角函数的电路的 方法,所述方法包括: 将所述可编程集成电路设备的逻辑配置成为用于将所述输入与另一值关联以生成中 权 利 要 求 书CN 102959503 A 2/4页 3 间值的电路; 将。
7、所述可编程集成电路设备的逻辑配置成为用于选择所述输入和所述中间值中的一 个作为三角输入值的电路; 将所述可编程集成电路设备的逻辑配置成为用于确定用于所述三角输入值的多个三 角函数各自的初始值的电路;以及 将所述可编程集成电路设备的逻辑配置成为用于至少部分地基于三角恒等式,从所述 多个三角函数各自的初始值得出所述第一三角函数的最终值的电路。 10.根据权利要求9所述的方法,其中: 将所述可编程集成电路设备的逻辑配置成为用于确定多个三角函数各自的初始值的 电路包括:配置所述可编程集成电路设备的逻辑以确定正弦值和余弦值;以及 所述将所述可编程集成电路设备的逻辑配置成为用于至少部分地基于三角恒等式,从。
8、 所述多个三角函数的所述各自的初始值得出所述第一三角函数的最终值的电路包括:配置 所述可编程集成电路设备的逻辑以当所述输入处于第一范围中时,选择所述多个三角函数 中的一个三角函数的所述初始值,并且当所述输入处于第二范围中时,选择所述多个三角 函数中的另一个三角函数的所述初始值。 11.根据权利要求10所述的方法,其中,所述将所述可编程集成电路设备的逻辑配置 成为用于确定的电路包括:将所述可编程集成电路设备的逻辑配置成为CORDIC电路。 12.根据权利要求10所述的方法,其中: 所述另一值是/2; 所述将所述可编程集成电路设备的逻辑配置成为用于关联的电路包括:配置所述可编 程集成电路设备的逻辑。
9、以从/2减去所述输入以生成所述中间值; 所述第一范围包括最大等于/4的值;并且 所述第二范围包括最小等于/4的值。 13.根据权利要求10所述的方法,其中: 所述另一值是/4; 所述中间值包括第一中间值和第二中间值; 所述将所述可编程集成电路设备的逻辑配置成为用于关联的电路包括:配置所述可编 程集成电路设备的逻辑以从/4减去所述输入以生成所述第一中间值,并且从所述输入 减去/4以生成所述第二中间值; 所述第一范围包括最大等于/8的值; 所述第二范围包括最小等于3/8和最大等于/2的值;并且 所述将所述可编程集成电路设备的逻辑配置成为用于得出最终值的电路包括:配置所 述可编程集成电路设备的逻辑以。
10、选择性地组合所述第一中间值和所述第二中间值的正弦 和余弦。 14.根据权利要求9所述的方法,其中: 所述将可编程集成电路设备的逻辑配置成为用于确定多个三角函数各自的初始值的 所述电路包括:将所述可编程集成电路设备的逻辑配置成为用于确定正弦值和余弦值的电 路;并且 所述将所述可编程集成电路设备的逻辑配置成为用于得出最终值的电路包括:将所述 权 利 要 求 书CN 102959503 A 3/4页 4 可编程集成电路设备的逻辑配置成为用于当所述输入处于第一范围中时,以第一组合方式 组合所述多个三角函数中的每个三角函数的所述初始值,并且当所述输入处于第二范围中 时,以第二组合方式组合所述多个三角函数。
11、中的每个三角函数的所述初始值的电路。 15.根据权利要求14所述的方法,其中,所述第一组合方式和所述第二组合方式从由 以下各项构成的组中选择:和、差、乘积、乘积之和、乘积之差以及它们的组合。 16.根据权利要求15所述的方法,其中: 所述将所述可编程集成电路设备的逻辑配置成为用于得出的电路包括:在可编程集成 电路设备的专用处理块中配置所述用于得出的电路,所述专用处理块包括多个乘法器和至 少一个加法器。 17.一种利用非瞬态机器可执行指令编码的机器可读数据存储介质,所述非瞬态机器 可执行指令用于将可编程集成电路设备配置成为用于计算输入的三角函数的电路,所述指 令包括: 用于将所述可编程集成电路设。
12、备的逻辑配置成为用于将所述输入与另一个值关联以 生成中间值的电路的指令; 用于将所述可编程集成电路设备的逻辑配置成为用于选择所述输入和所述中间值中 的一个作为三角输入值的电路的指令; 用于将所述可编程集成电路设备的逻辑配置成为用于确定用于所述三角输入值的多 个三角函数各自的初始值的电路的指令;以及 用于将所述可编程集成电路设备的逻辑配置成为用于至少部分地基于三角恒等式,从 所述多个三角函数各自的初始值得出所述第一三角函数的最终值的电路的指令。 18.根据权利要求17所述的计算机可读数据存储介质,其中: 所述用于将所述可编程集成电路设备的逻辑配置成为用于确定多个三角函数各自的 初始值的电路的指令。
13、包括所述用于配置所述可编程集成电路设备的逻辑以确定正弦值和 余弦值的指令;以及 所述用于将所述可编程集成电路设备的逻辑配置成为用于至少部分地基于三角恒等 式,从所述多个三角函数的所述各自的初始值得出所述第一三角函数的最终值的电路的指 令包括所述用于配置所述可编程集成电路设备的逻辑以当所述输入处于第一范围中时, 选择所述多个三角函数中的一个三角函数的所述初始值,并且当所述输入处于第二范围中 时,选择所述多个三角函数中的另一个三角函数的所述初始值的指令。 19.根据权利要求18所述的计算机可读数据存储介质,其中,所述用于将所述可编程 集成电路设备的逻辑配置成为用于确定的电路的指令包括用于将所述可编。
14、程集成电路设 备的逻辑配置成为CORDIC电路的指令。 20.根据权利要求18所述的计算机可读数据存储介质,其中: 所述另一值是/2; 所述用于将所述可编程集成电路设备的逻辑配置成为用于关联的电路的指令包括用 于配置所述可编程集成电路设备的逻辑以从/2减去所述输入以生成所述中间值的指 令; 所述第一范围包括最大等于/4的值;并且 所述第二范围包括最小等于/4的值。 权 利 要 求 书CN 102959503 A 4/4页 5 21.根据权利要求18所述的计算机可读数据存储介质,其中: 所述另一值是/4; 所述中间值包括第一中间值和第二中间值; 所述用于将所述可编程集成电路设备的逻辑配置成为用于。
15、关联的电路的指令包括用 于配置所述可编程集成电路设备的逻辑以从/4减去所述输入以生成所述第一中间值, 并且从所述输入减去/4以生成所述第二中间值的指令; 所述第一范围包括最大等于/8的值; 所述第二范围包括最小等于3/8和最大等于/2的值;并且 所述用于将所述可编程集成电路设备的逻辑配置成为用于得出最终值的电路的指令 包括用于配置所述可编程集成电路设备的逻辑以选择性地组合所述第一中间值和所述第 二中间值的正弦和余弦的指令。 22.根据权利要求17所述的计算机可读数据存储介质,其中: 所述用于将所述可编程集成电路设备的逻辑配置成为用于确定多个三角函数各自的 初始值的所述电路的指令包括用于将所述可。
16、编程集成电路设备的逻辑配置成为用于确定 正弦值和余弦值的电路的指令;并且 所述用于将所述可编程集成电路设备的逻辑配置成为用于得出最终值的电路的指令 包括用于将所述可编程集成电路设备的逻辑配置成为用于当所述输入处于第一范围中时, 以第一组合方式组合所述多个三角函数中的每个三角函数的所述初始值,并且当所述输入 处于第二范围中时,以第二组合方式组合所述多个三角函数中的每个三角函数的所述初始 值的电路的指令。 23.根据权利要求18所述的计算机可读数据存储介质,其中,所述第一组合方式和所 述第二组合方式从由以下各项构成的组中选择:和、差、乘积、乘积之和、乘积之差以及它们 的组合。 24.根据权利要求2。
17、3所述的计算机可读数据存储介质,其中: 所述用于将所述可编程集成电路设备的逻辑配置成为用于得出的电路的指令包括用 于在可编程集成电路设备的专用处理块中配置所述用于得出的电路的指令,所述专用处理 块包括多个乘法器和至少一个加法器。 权 利 要 求 书CN 102959503 A 1/12页 6 用于集成电路设备中的三角函数的计算 技术领域 0001 本发明涉及在集成电路设备中计算三角函数,并且具体而言在诸如可编程逻辑设 备(PLD)的可编程集成电路中。 背景技术 0002 通常对于0-360或0-2弧度的相对小的角度范围定义三角函数。对于2以 上的角度值,三角函数的值重复。事实上可以将范围限制为。
18、0-/2,因为各种三角恒等式 可用于从0到/2之间的角度的三角函数得到/2到2之间的任意角度是三角函数的 值。 0003 在集成电路设备中可用于计算三角函数的一个方法是CORDIC算法,其使用以下 三个递归方程式: 0004 x n+1 x n -d n y n 2 -n 0005 y n+1 y n +d n x n 2 -n 0006 z n+1 z n -d n tan -1 (2 -n ) 0007 例如,为了计算输入的正弦或余弦,将x值初始化为“1”,将y值初始化为“0”,并 且将Z值初始化为需要的角度。然后将Z向零旋转,其确定的d n 的符号,d n 是1,如果z n 是正的,则d。
19、 n 也是正的,因为目标是使z更接近0;如果z n 是负的,则d n 也是负的,这出于相 同的原因。x和y表示单位向量的x和y分量;随着z旋转,该向量也旋转,并且当z到达 它到0的最终旋转时,x和y的值将分别收敛到输入角的余弦和正弦。 0008 为了解决旋转期间单位向量的伸展,将比例因子应用于x的初始值。该比例因子 是: 0009 0010 因此将最初的x设置为1/1.64677.0.607252935.。 0011 但是随着输入变小,CORDIC可能变得不正确。例如,随着接近0,sin()接近 (并且因此sin()接近0),并且随着接近0,cos()接近1。但是,计算值与实际 值之间的误差的。
20、量值随着减小而增加。 0012 此外,在诸如FPGA的集成电路设备中看起来容易实现具有初始考虑的CORDIC,但 是更仔细的分析显示无效率,至少部分地因为多个深度数学结构,每个层包括宽的加法器。 普通FPGA架构可以具有4-6个输入函数,紧接着专用脉动进位加法器,紧接着寄存器。当 用于计算浮点函数时,如在单精度正弦或余弦函数的情况,对于更小的输入值生成精确的 结果所需要的硬件资源的数量可能变大。 发明内容 0013 根据本发明的实施方式,可以使用基于可以被应用的不同的三角恒等式的各种改 进实现来计算不同的三角函数。 0014 对于正弦和余弦函数,改进CORDIC实现将小输入角度改变成较大角度,。
21、其中 说 明 书CN 102959503 A 2/12页 7 CORDIC结果对于较大角度更精确。这可以通过对于小的(例如对于/4)使用 /2-代替来完成。如上文所讨论的,对于较小角度,CORDIC精确性受损,但是标准 CORDIC实现可以用于较大角度。复用器可以在输入值与减法器的输出之间选择,其中 该减法器的减数和被减数分别是/2和输入值。可以使用输入与阈值的比较来控 制复用器以做出选择。正弦和余弦都由CORDIC实现的x和y数据路径来计算,并且可以使 用可能受与输入复用器相同的比较输出控制的另一个复用器来选择希望的输出路径。当 /2-已经被用作输入时,可以使用恒等式cos()sin(/2-。
22、)以及sin() cos(/2-)来得到希望的结果。 0015 对于正切函数,可以使用用于角度的和的正切的三角恒等式将输入角度分解成输 入角度的不同的比特范围的和。因为一些分量范围将是小的,所以相对于那些分量范围将 简化恒等式。可以在合适的电路中实现恒等式。 0016 对于反正切(即acrtan或tan -1 )函数,问题在于潜在的输入范围在负无穷大到正 无穷大之间(不像例如反正弦或反余弦,它们的潜在输入范围在-1到+1之间)。根据本发 明,可以使用涉及反正切函数的三角恒等式将输入分解成不同的范围,其中该恒等式的最 复杂的部分贡献小于结果的最不重要片段,因而它可以被忽略。可以在合适的电路中实现。
23、 该恒等式。 0017 对于反余弦(即arcos或cos -1 ),可以使用以下恒等式: 0018 0019 其可以被简化为: 0020 0021 可以如以上所讨论计算、简化反正切,因为反余弦的输入范围被限于0到1之 间。可以使用已知的技术来计算平方根倒数。对于反正弦(即arsin或sin-1),其也具 有被限于0到1之间的输入范围,可以计算反余弦,并且然后基于恒等式arcsin(x) /2-arccos(x)来从/2中减去。 0022 因此,根据本发明提供了用于计算输入的三角函数的电路。该电路包括用于将该 输入与另一个值关联以生成中间值的电路;用于选择该输入值和该中间值中的一个作为三 角输入。
24、值的电路;用于确定用于该三角输入值的多个三角函数各自的初始值的电路;以及 用于至少部分地基于三角恒等式,从该多个三角函数各自的初始值得出第一三角函数的最 终值的电路。 0023 还提供了用于将集成电路设备配置成该电路的对应方法。此外,提供了利用指令 来编码的机器可读数据存储介质,用于执行用于配置集成电路设备的方法。 附图说明 0024 在结合附图来考虑以下详细描述之后,本发明的其他特征、它的属性和各种优点 将变得清楚,其中在附图中相同的附图标记始终涉及相同的部件,其中: 0025 图1显示了根据本发明用于计算正弦和/或余弦的CORDIC实现的第一实施方式; 说 明 书CN 102959503 。
25、A 3/12页 8 0026 图2显示了根据本发明用于计算正弦和/或余弦的CORDIC实现的第二实施方式; 0027 图3显示了根据本发明用于计算正弦和/或余弦的CORDIC实现的第三实施方式; 0028 图4显示了根据本发明用于计算正弦和/或余弦的CORDIC实现的第四实施方式; 0029 图5显示了根据本发明用于计算正切的实现的实施方式; 0030 图6显示了反正切函数的第一范围; 0031 图7显示了反正切函数的第二范围; 0032 图8显示了反正切函数的第三范围; 0033 图9显示了根据本发明用于计算反正切实现的实施方式; 0034 图10显示了根据本发明用于计算反正弦和/或反余弦的。
26、实现的实施方式的第一 部分; 0035 图11显示了根据本发明用于计算反正弦和/或反余弦的实现的实施方式的第二 部分; 0036 图12是利用用于执行根据本发明的方法的机器可读指令集来编码的磁数据存储 介质的横截面视图; 0037 图13是利用用于执行根据本发明的方法的机器可读指令集来编码的光可读数据 存储介质的横截面视图;以及 0038 图14是使用并入本发明的可编程逻辑设备的示例性系统的简化框图。 具体实施方式 0039 如上文所讨论的,在标准CORDIC实现中: 0040 x n+1 x n -d n y n 2 -n 0041 y n+1 y n +d n x n 2 -n 0042 。
27、z n+1 z n -d n tan -1 (2 -n ) 0043 从该方程式可以看出,在第一等级处(对于n0): 0044 x 1 x 0 -y 0 0045 y 1 y 0 +x 0 0046 z 1 z 0 -tan -1 (1) 0047 类似地,在第二等级处(对于n1): 0048 x 2 x 1 -d 1 (y 1 /2) 0049 y 2 y 1 +d 1 (x 1 /2) 0050 z 2 z 1 -d 1 tan -1 (0.5) 0051 将理解,这对于另外的n继续直到z n 收敛到0或者如具体实现中需要的接近0为 止。但是,如上文所讨论的,CORDIC实现的精确性随着输。
28、入角度变小而减小。 0052 在图1中显示了根据本发明的用于实现正弦或余弦的CORDIC的第一实施方式的 逻辑结构100。可以将结构100实现为电路。将结构100建立在CORDIC引擎101周围, CORDIC引擎101可以是任意合适的CORDIC引擎,包括以参考的方式被整体并入本申请的、 2010年3月12日递交的、共同未决、共同拥有的美国专利申请号12/722,683中所述的 CORDIC引擎。CORDIC引擎101提供用于一般表示输入的余弦的x输出111以及用于一般 表示输入的正弦的y输出112。 说 明 书CN 102959503 A 4/12页 9 0053 输入复用器102选择输入。
29、变量103或/2与输入变量103的差104中的任意一 个。用于输入复用器102的控制信号105是由用于指示输入变量103()是大于/4还 是小于/4(或者可以选择任意其他阈值)的比较106产生。因为输入变量103被优选表 示成分数(意味着被/2乘),所以可以通过检查输入变量103的一个或多个最重要比特 来简单地执行该比较。可替换地,可以做出更复杂的比较。 0054 在任意情况中,取决于是大于(或等于)还是小于/4,传递到CORDIC引擎的 值是或/2-。 0055 用于确定到CORDIC引擎101的输入的相同的控制信号105助于确定由输 出复用器107选择输出111、121中的哪一个。具体地,。
30、cos()-sin(/2-)并且 sin()-cos(/2-)。可以提供用于表示希望的输出是正弦还是余弦的附加输入115, 并且在125处将该输入与输出105组合以提供控制信号135,因而如果直接使用输入变量 103()作为CORDIC输入,则如果希望的函数是余弦则选择输出111并且如果希望的函数 是正弦则选择输出112。但是,如果使用差104(/2-)作为CORDIC输入,则如果希望的 函数是余弦则选择输出112并且如果希望的函数是正弦则选择输出111。 0056 可以使用用于加速CORDIC计算的已知的技术。例如在正弦值的CORDIC计算的大 约一半之后,可以通过将x的当时值乘以z的当时值。
31、并且从y的当时值减去该乘积来近似 y的最终值。类似地,对于余弦,可以通过将y的当时值乘以z的当时值并且将该乘积与x 的当时值相加来近似x的最终值。这可以被称为“终止CORDIC”。图2显示了根据本发明 的实施方式实现终止CORDIC的改进CORDIC结构200。可以将结构200实现为电路。 0057 结构200的输入级与结构100的输入级相同,包括输入复用器102、输入变量103、 差104、比较电路106和控制信号105。CORDIC引擎201可以与CORDIC引擎101相同,其中 除了输出111、121之外z数据路径被用作为输出211。 0058 但是结构200的输出级与结构100的输出级。
32、不同。存在由信号135控制的第一输 出复用器206和由135的倒数控制的第二输出复用器216以代替一个输出复用器106。对 于余弦,该配置直接向加法器/减法器208提供x,并且向乘法器207提供y和z,乘法器 207向加法器/减法器208提供它的输出。对于正弦,该配置直接向加法器/减法器208提 供y,并且向乘法器207提供x和z,乘法器207向加法器/减法器208提供它的输出。 0059 在一些实施方式中,可以在可编程设备(如FPGA)中,要么在可编程逻辑中要么在 可编程逻辑与固定逻辑(例如加法器和/或乘法器)的组合(如果提供)中实现结构100 或200。例如从San Jose,Califo。
33、rnia(加利福尼亚圣荷塞)的Altera公司可获得的FPGA 的族中的FPGA包括具有乘法器、加法器和用于连接乘法器和加法器的可编 程互连的数字信号处理块。该FPGA可以被配置为使用加法器和/或乘法器以及可能需要 的任意可编程逻辑来实现结构100和200。 0060 可以将输入范围进一步限制为/8到/4之间的更小的范围,其与/4到/2 之间的范围相比提供更准确的CORDIC结果。根据可以使用图3中显示的可以被实现为电 路的结构300来执行的该实施方式,当输入在0到/8之间时,从/4减去该输入,创建 /8到/4之间的新值。当输入在3/8到/2之间时,从输入减去/4,创建/8到 /4之间的新值。。
34、如果输入在/8到3/8之间则输入可以无改变地通过。 0061 如图3中所示,输入复用器302选择输入303或/4与输入303的差304或输入 说 明 书CN 102959503 A 5/12页 10 303与/4之间的差314的中任意一个。在可以与CORDIC引擎101实质上相同的CORDIC 引擎301中使用所选择的输入。 0062 对于使用差304的情况,由输出级320根据以下恒等式处理CORDIC引擎301的输 出: 0063 sin(A-B)sin(A)cos(B)-sin(B)COS(A) 0064 cos(A-B)cos(A)cos(B)+sin(A)sin(B) 0065 如果A。
35、/4并且B/4-,则A-B/4-(/4-)。 0066 并且SIN(/4)COS(/4)2 -0.5 。 0067 然后接下来: 0068 SIN()SIN(A-B) 0069 SIN(/4)COS(/4-)-SIN(/4-)COS(/4) 0070 2 -0.5 (COS(/4-)-SIN(/4-). 0071 类似地:COS()COS(A+B) 0072 COS(/4)COS(/4-)+SIN(/4-)SIN(/4) 0073 2 -0.5 (COS(/4-)+SIN(/4-)。 0074 对于使用差314的情况,由输出级320根据以下恒等式处理CORDIC引擎301的输 出: 0075 。
36、sin(A+B)sin(A)cos(B)+sin(B)COS(A) 0076 cos(A+B)cos(A)cos(B)-sin(A)sin(B) 0077 如果A/4并且B-/4,则A+B/4+(-/4)。同样,SIN(/4) COS(/4)2 -0.5 。 0078 然后接下来: 0079 SIN()SIN(A+B) 0080 SIN(/4)COS(-/4)+SIN(-/4)COS(/4) 0081 2 -0.5 (COS(-/4)+SIN(-/4). 0082 类似地: 0083 COS()COS(A+B) 0084 COS(/4)COS(-/4)-SIN(-/4)SIN(/4) 0085。
37、 2 -0.5 (COS(-/4)-SIN(-/4). 0086 这在输出级302中通过加法器/加法器321并且通过乘法器322实现,加法器/加 法器321将y(SIN)数据路径与x(COS)数据路径相加或者从x(COS)数据路径减去y(SIN) 数据路径,乘法器322将该差乘以2 -0.5 (如图3中SIN(/4)所示)。输出级320还可以包 括用于对于输入303在/8到3/8之间并且无改变地通过输入复用器302的情况实现 正确的数据路径(SIN或COS,取决于希望的函数)的导通的复用电路323(与图2中的复用 器206、216的组合类似)。 0087 因此,与图1的实施方式100相比,仅需。
38、要一个附加减法器和一个附加常数乘法来 增加精确性。 0088 可替换地,如果输入在/4到3/8之间的,则其还落入图1的是实施方式100 中,并且可以通过从/2减去输入来在/4周围反映该输入,切换SIN和COS结果以得到 说 明 书CN 102959503 A 10 6/12页 11 希望的输出。在可以使用小的输入范围来改进收敛速度的情况中,这还可用于实现其他类 型的算法以计算SIN和COS值, 0089 与图2的实施方式200类似的“终止CORDIC”实现可以与图3的实施方式300一 起使用。在图4中显示了该实现400。 0090 在信号105选择直接输入408的情况中,随后如在实施方式200。
39、中,在411、412处 仅将SIN/COS数据路径401、402中的一个乘以z数据路径403,并且随后在421处与SIN/ COS数据路径401、402中的另一个相加或从SIN/COS数据路径401、402中的另一个中减去, 并且在422处将结果乘以2 -0.5 。由逻辑425输出的信号435确定将数据路径401还是数据 路径402乘以数据路径403,其中逻辑425基于比较信号105和用于指示希望正弦还是余 弦的信号115导致复用器413、423中的一个复用器选择数据路径403用于到乘法器411、 412中各自的乘法器的输入,并且复用器413、423中的另一个复用器选择值“1”用于到乘数 41。
40、1、412中其他各自的乘法器的输入。在该情况中,信号(或多个信号)435还确定加法器 /减法器421相加还是相减,并且导致复用器433选择值“0”用于在453处对和/差421的 加法。然后在422处将和乘以sin(/4)(即2 -0.5 )。 0091 在信号105选择差输入404(/4-)的情况中,因为输入408小于/8,所以根 据是希望正弦还是余弦,将应用如上文所讨论的以下关系: 0092 SIN()2 -0.5 (COS(/4-)-SIN(/4-) 0093 COS()2 -0.5 (COS(/4-)+SIN(/4-) 0094 类似地,在信号105选择差输入444(-/4)的情况中,因。
41、为输入408大于 3/8,所以根据是希望正弦还是余弦,将应用如上文所讨论的以下关系: 0095 SIN()2 -0.5 (COS(-/4)+SIN(-/4) 0096 COS()2 -0.5 (COS(-/4)-SIN(-/4) 0097 在终止CORDIC实现中, 0098 COS()x+yz 0099 SIN()y-xz 0100 因此,在信号105选择差输入404(/4-)的终止CORDIC情况中, 0101 SIN()2 -0.5 (x+yz-(y-xz) 0102 2 -0.5 (x-y+(yz+xz) 0103 COS()2 -0.5 (x+yz+(y-xz) 0104 2 -0.。
42、5 (x+y+(yz-xz) 0105 类似地,在信号105选择差输入,444(-/4)的终止CORDIC情况中, 0106 SIN()2 -0.5 (x+yz+(y-xz) 0107 2 -0.5 (x+y+(yz-xz) 0108 COS()2 -0.5 (x+yz-(y-xz) 0109 2 -0.5 (x-y+(yz+xz) 0110 对于这些实现,信号(或多个信号)435将导致复用器413、423都选择数据路径 403用于到乘法器411、412的输入。信号(或多个信号)435还将分别确定加法器/减法器 421和431相加还是相减,并且将导致复用器443选择和/差431用于在453处对。
43、和/差 421的加法。然后在422处将和乘以sin(/4)(即2 -0.5 )。 说 明 书CN 102959503 A 11 7/12页 12 0111 当在前述FPGA的一个中实现实施方式400时,可以在410处使用具 有乘法器和加法器的前述数字信号处理块的其中一个来提供乘法器404、405和加法器/减 法器406。该FPGA的数字信号处理块例如良好地适用于执行为此目的可以使用的两个36 比特乘以18比特的乘法。在通过参考的方式并入本文的、由Altera公司发布的Stratix III设备手册第一卷(2010年3月第二版)中第5-21页描述了一个这样的实现。 0112 可以使用其他基于恒等。
44、式的方法来简化其他三角函数的计算。 0113 例如对于tan(),归一化的或范围减小的输入是-/2/2,而输出在 负无穷大到正无穷大之间。对于正切函数,以下恒等式为真: 0114 0115 通过明智地分解,可以将计算tan()的问题分解成容易计算的片。在该情况 中,有利地可能将tan()分解成三片。可以通过用c替代b并且用a+b替代a来完成该 情况。因此: 0116 0117 进一步扩展: 0118 0119 虽然这看起来比原始恒等式复杂得多,但是正切函数的特性和单精确度运算的精 确度可用于极大地简化该计算。 0120 如同许多三角函数,对于小的,tan()。将用于tan()的输入范围定 义为。
45、-/2/2。在单精度浮点运算中例如基于IEEE754-1985标准指 数偏移127(即2 0 变为2 127 )。如果输入指数是115或者更小(即真实指数为-12或更小), 则tan(x)与x之间的误差低于数字格式的精度,因此低于该值时可以将tan()视为等于 。 0121 因此对于115到127之间的相对窄的指数范围或者12比特的动态范围定义正切 函数。对于IEEE754-1985运算,精度是24位。因此可以将输入数字正确地表示为36比特 定点数(24比特精度+12比特范围)。 0122 然后将该36比特定点数能够被分割成3个分量。如果如以上所示a+b+c,则 可以向较高的9个比特分配c分量。
46、,可以向接下来8个比特分配a分量,并且向19个最不 重要比特分配b分量。 0123 如上文所讨论的,对于小于2 -12 的任意值,tan()。作为36比特数的19 个最不重要比特,b小于2 -17 。 0124 因此,tan(b)b可以写为: 0125 0126 a的正切相对小。a的最大值略小于0.00390625 10 (tan(a)0.00390627 10 )并且 说 明 书CN 102959503 A 12 8/12页 13 b的最大值是0.00001526 10 ,其也是它的正切。因此,tan(a)b的最大值是5.9610 -8 ,因 此1-tan(a)b的最小值0.99999994。
47、 10 。tan(a)+b的最大值是0.00392152866 10 。该值 与被1-tan(a)b的最大值除的值之间的差是2.3510 -10 或者大约32个比特,这几乎是 a、b和c的组合的整个宽度。在c是零的最坏情况中,该错误将不会处于仅为24比特的结 果的精度中。 0127 因此可以将前文的方程式进一步简化为: 0128 0129 在a和b分别是8个比特和9个比特的范围内,可以利用36比特数据将用于全部 可能比特组合的正切存储在表格中。因此,将问题降低为36比特定点乘法,36比特定点除 法和定点减法、但是加法是如下文所讨论的浮点加法。 0130 正切计算的一个实施方式500被显示在图5中并且可以被实现在电路中。 0131 首先在502处将输入值501()通过移位它的指数与127(IEEE754-1985标准指 数偏移值)之间的差503转换成36比特定点数。然后将转换的定点输入504分割成3个 数字:c比特36:28,a比特27:20以及b比特19:1。在查找表505中确 定tan(c),并且在查找表506中确定tan(a)。在507处将都是定点格式的tan(a)与b相 加。接着,必须将该和归一化为c的指数,它的范围可以从0到19(等效于单精度偏移中的 127到146)。和“tan(a)+b”具有最大指数-8(等效于单精度偏移中的119),并且其在508 处被归一化,以。