【问题标题】:VHDL - XILINX CORDIC AlgorithmVHDL - XILINX CORDIC 算法
【发布时间】:2017-02-07 01:11:46
【问题描述】:

我需要用 VHDL 计算反正切值。为此,我将使用 Cilinx IP 内核“Cordic V4.0”。 这是数据表:

https://www.xilinx.com/support/documentation/ip_documentation/cordic_ds249.pdf

我读到 arctan 计算需要从 -1 到 1 的输入值。

我的值的范围是 2^32 位(整数,没有小数)。

在将输入值放入 Cordic 算法之前是否需要转换它们?

如果是,应该如何转换?

问候, 埃里克

【问题讨论】:

    标签: vhdl xilinx cordic


    【解决方案1】:

    在赛灵思规范中是这样写的:

    "输入向量 (Xin, Yin) 和输出向量 (Xout, Yout) 表示为一对 2 位整数宽度的定点 2 的补数(1QN 格式)。输入旋转角度,Pin 弧度,也表示为定点 2 的补码,但整数宽度为 3 位(2QN 格式)。"

    因此,如果您使用 32 位宽的向量,则最高 2 位将用作整数部分,其他 30 位将用作小数部分。

    如果你不知道定点数是如何工作的,我建议你阅读一下:

    https://en.wikipedia.org/wiki/Fixed-point_arithmetic

    【讨论】:

    • 哦,请阅读这部分。谢谢你。因此,根据维基百科:“要将数字从具有比例因子 R 的定点类型转换为具有比例因子 S 的另一种类型,基础整数必须乘以 R 并除以 S;即乘以比率 R/S . “我必须为 30 位数的 Mantisse 缩放我的数字?所以我必须将数字除以 2^30 并且除以 2^x 二进制可以通过移动逗号来完成?对吗?
    • 实际上,如果您记住实际范围 [-1;1[ 由 [-2^31;2^31[ 表示,您可以在 32 位上进行缩放。因此,第二段中的一步实际上代表 1/2^31(即:4.66*10^-10)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多