【问题标题】:How to calculate sin inverse (arcsin) in VHDL?如何在 VHDL 中计算 sin 逆(arcsin)?
【发布时间】:2017-06-29 04:43:29
【问题描述】:

我正在使用 Altera De0 nano Soc FPGAQuartus 16.1 lite edition。上网一搜,发现sincosatan可以直接使用Altera的CORDIC IP核。并且还发现查找表 (LUT) 可用于 sin 或 cos(主要在 google 中可用)但如何在VHDL 中获取 sin inverse (ARCSIN)? 我找到了sincos 查找表,有没有办法生成sin inverse

【问题讨论】:

  • 至少有人可以给我一个提示吗?只是不给负分?因为如果有人读了这篇文章并给我提示,这将有助于我继续我的项目任务,我会被困在这里,我是 fpga vhdl 函数的新手,它在计算中使用反正弦、余弦。
  • 这是家庭作业吗?两天前有人问过同样的问题here

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


【解决方案1】:

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

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

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

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

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

5) 用 VHDL 实现这个查找表,就像您为 sincos 找到的查找表一样。

【讨论】:

    【解决方案2】:

    是的。

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

    【讨论】:

    • CORDIC 好像很难,你知道在哪里可以找到更好的查找表,vhdl 文件吗?
    • @komto909 你想要达到的目标非常困难。您应该一路走下去(了解cordic,评估不同的实现等)或根本不走(选择另一种方法,例如CPU)......
    猜你喜欢
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    相关资源
    最近更新 更多