我正在使用 Altera De0 nano Soc FPGA 和 Quartus 16.1 lite版。在互联网上搜索后,我发现要获得sin
,cos
和atan
Altera的CORDIC IP核可以直接使用。并且还发现查找表(LUT)可用于sin或cos(主要在谷歌中可用),但如何在sin
中获得 ARCSIN
反向(VHDL
)?
我找到了sin
和cos
查询表,有没有办法生成 sin
反向?
答案 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中实现此查找表,就像您为sin
或cos
找到的那样。
答案 1 :(得分:0)
是的。
例如使用CORDIC ...我在Google上的首次点击之一: A survey of CORDIC algorithms for FPGA based computer