【问题标题】:How to decode fixed point (VHDL) number in HPS using c language?如何使用 c 语言解码 HPS 中的定点 (VHDL) 数?
【发布时间】:2017-07-24 20:22:14
【问题描述】:

我正在使用 Altera de0 nano soc FPGA。我的小数点存储在定点类型(5 到 -27)中(数字始终为正)。我把它放到标准逻辑向量(32位),并通过Avalon接口发送到soc FPGA的HPS。但我不知道如何将这个接收到的数字解码回(c 语言)中的 c 浮点数。这该怎么做?

我使用 fixed_pkg

library ieee_proposed;
USE ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee_proposed.float_pkg.ALL;
use ieee_proposed.fixed_pkg.ALL;
use ieee_proposed.fixed_float_types.ALL;

【问题讨论】:

  • 所以你可以接收 32 位的值,并且想在 C 中将 if 转换为 double?那么这是一个 C 问题,而不是 VHDL 问题。 IE。信息很少,标签不正确。
  • 请不要在一个话题中问两个问题

标签: vhdl fpga fixed-point intel-fpga soc


【解决方案1】:

假设您将ufixed(5 downto -27) 一对一映射到std_logic_vector(31 downto 0),然后通过 Avalon 总线发送。

#include <math.h>

double ConvertToFloatingPoint(unsigned long inputValue)
{
    return (double)inputValue / pow((double)2, 27);
}

即22.8125 (ufixed) => 3061841920 (unsigned std_logic_vector) =over bus=> 3061841920 (unsigned long) => 22.8125 (double)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    相关资源
    最近更新 更多