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

如何用c语言对HPS中的定点(VHDL)数进行解码?,vhdl,fpga,fixed-point,intel-fpga,soc,Vhdl,Fpga,Fixed Point,Intel Fpga,Soc,我使用的是Altera de0纳米soc FPGA。我有一个小数点的数字存储在定点类型(5到-27)(数字总是正的)。我把它放到std逻辑向量(32位)中,并通过Avalon接口发送到soc FPGA的HPS。但我不知道如何将收到的数字解码回c语言中的c浮点数。如何做到这一点 我用了固定包装 library ieee_proposed; USE ieee.std_logic_1164.all; use ieee.numeric_std.all; use ieee_proposed.float_p

我使用的是Altera de0纳米soc FPGA。我有一个小数点的数字存储在定点类型(5到-27)(数字总是正的)。我把它放到std逻辑向量(32位)中,并通过Avalon接口发送到soc FPGA的HPS。但我不知道如何将收到的数字解码回c语言中的c浮点数。如何做到这一点

我用了固定包装

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向下至-27)
映射到
std_逻辑_向量(31向下至0)
,然后通过Avalon总线发送它

#包括
双转换浮点(无符号长输入值)
{
返回(双)输入值/功率((双)2,27);
}

也就是说,22.8125(ufixed)=>3061841920(无符号std_逻辑_向量)=>3061841920(无符号长)=>22.8125(双精度)

这样您就可以接收32位值,并希望在C中将if转换为
double
?那么这是一个C问题,不是一个VHDL问题。也就是说,信息最少,标签不正确。请不要在一个主题中问两个问题