如何在 VHDL 中计算 sin inverse (arcsin)?

How to calculate sin inverse (arcsin) in VHDL?

我正在使用 Altera De0 nano Soc FPGAQuartus 16.1 精简版。在网上搜索了一下,发现要得到sincosatan,可以直接使用Altera的CORDIC IP核。并且还发现 lookup table (LUT) 可以用于 sin 或 cos (主要在 google 中可用) 但是如何得到 sin inverse (ARCSIN ) 在 VHDL? 我找到了 sincos 查找 table,有没有办法生成 sin 逆向 ?

是的。

例如使用 CORDIC...我第一次点击 Google: A survey of CORDIC algorithms for FPGA based computer

是的,可以为 arcsin 生成查找 table。

1) 确定输入精度,换句话说,您希望在查找中保留多少个值 table。例如,如果精度为 0.1,则需要存储 11 个值。

arcsin(0), arcsin(0.1), arcsin(0.2), ..., arcsin(1).

2)求反正弦函数的结果。 Here 是我通过谷歌搜索找到的来源。

arcsin(0)   = 0
arcsin(0.1) = 5.7
arcsin(0.2) = 11.5
...
arcsin(1)   = 90

3)确定输出精度。

如果精度为 1,则所有值都四舍五入为整数。

arcsin(0.1) = 6
arcsin(0.2) = 12

如果精度为0.5,结果如下。输出需要 9 位大小才能达到此精度。 8位为整数部分,1位为小数部分。

arcsin(0.1) = 5.5
arcsin(0.2) = 11.5

4) 将输入值映射到查找地址 table。例如,对于 0.1 精度,它应该如下所示。此示例不需要额外的查找 table 或地址映射的大逻辑。

0   -> 0
0.1 -> 1
0.2 -> 2
...
1   -> 10

5) 在 VHDL 中实现此查找 table,就像您为 sincos.[=19 找到的那样=]