如何使用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;
答
假设你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)
因此,您可以接收32位值,并且想要转换为“double” C?那么这是一个C问题,而不是VHDL问题。即信息很少,标签不正确。 – JHBonarius
请不要在一个主题中提出两个问题 – JHBonarius