如何使用c语言解码HPS中的定点(VHDL)数?

How to decode fixed point (VHDL) number in HPS using c language?

我正在使用 Altera de0 nano soc FPGA。我有小数点存储在定点类型(5 到 -27)(数字总是正数)。我把它放到std逻辑向量(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;

假设您一对一地将 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)