【问题标题】:FPGA synthesizable verilog code with floating point numbers带有浮点数的 FPGA 可合成 verilog 代码
【发布时间】:2014-08-31 14:47:29
【问题描述】:

我正在尝试在 FPGA 上实现线性规划问题。我使用实数数据类型来生成浮点数。该程序编译得很好,但是当我尝试为我的 Xilinx Spartan-3E FPGA 板合成它时,它显示了 verilog 不支持 real 的错误。似乎我们不能将 real 用于可合成的代码。 因此,有关如何消除此错误的任何建议。

【问题讨论】:

  • 如果您查看文档,您会发现在综合过程中仅支持整数数据类型。真实数据类型仅用于模拟
  • 有没有办法让我的 FPGA 处理浮点数,否则它就没有任何用处??

标签: verilog hdl


【解决方案1】:

虽然您可以为您的芯片使用浮点数据类型(实数),但您需要为您想要的每个操作实例化一个 IP 内核。请注意,浮点运算需要大量的逻辑和时间。

所以:通常人们在 FPGA 上进行计算时会切换到整数(或定点)算法。

【讨论】:

    【解决方案2】:

    Xilinx 后期的一些部件具有可以执行浮点运算的专用 DSP 资源。然而,Spartan-3E 没有。它最接近的是专用乘法器 (MULT18X18)。

    按照 Philippe 的建议,最好的办法是设计一种适用于现有硬件的算法。

    还需要注意的是,您必须手动实例化这些组件,因为合成器不够智能,无法自行利用这些资源。

    【讨论】:

      【解决方案3】:

      Verilog 支持实变量。但是没有一个 FPGA 将支持综合。您可以按照以下选项进行操作。

      1. 将输入表示为 32 位二进制,输入应以 IEEE-754 格式给出。但是您必须在编码中进行内部操作。
      2. 使用基于 core gen 和 arch 的 ip core 构建您的设计。具有基于浮点运算的向导。但是逻辑利用率会很高。所以你必须选择更高端的设备。

      【讨论】:

        猜你喜欢
        • 2018-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-25
        • 1970-01-01
        • 2016-07-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多