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

时间:2017-06-29 04:43:29

标签: vhdl lookup-tables intel-fpga inverse cordic

我正在使用 Altera De0 nano Soc FPGA Quartus 16.1 lite版。在互联网上搜索后,我发现要获得sincosatan Altera的CORDIC IP核可以直接使用。并且还发现查找表(LUT)可用于sin或cos(主要在谷歌中可用),但如何在sin中获得 ARCSIN反向(VHDL)? 我找到了sincos查询表,有没有办法生成 sin反向

2 个答案:

答案 0 :(得分:1)

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

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

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

2)查找arcsin函数的结果。 Here是我通过Google搜索找到的来源。

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)将输入值映射到查找表的地址。例如,对于0.1精度,它应该如下所示。此示例不需要额外的查找表或用于地址映射的大逻辑。

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

5)在VHDL中实现此查找表,就像您为sincos找到的那样。

答案 1 :(得分:0)

是的。

例如使用CORDIC ...我在Google上的首次点击之一: A survey of CORDIC algorithms for FPGA based computer