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

问题描述:

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

我用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; 
+0

因此,您可以接收32位值,并且想要转换为“double” C?那么这是一个C问题,而不是VHDL问题。即信息很少,标签不正确。 – JHBonarius

+0

请不要在一个主题中提出两个问题 – JHBonarius

假设你1对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)