如何从HPS向FPGA发送浮点数?

时间:2017-07-28 04:41:20

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

我正在使用Altera DE0 nano SoC FPGA。我想知道如何从HPS向FPGA发送浮点数。

让一个float ex_hps = 6000.9282;通过Avalon内存映射接口发送。如果Avalon_write_data address具有32位数据长度(可以从Qsys设置),则在FPGA端,此数字存储在32位std_logic_vector右边?

这个std_logic_vector是否包含具有原始值的浮点数作为定点类型(13 downto -14)?或者如何在VHDL中将这个数字放回FPGA侧的固定点号ex_fpga(13 downto -14)

1 个答案:

答案 0 :(得分:0)

这是你自己可以查找的东西。

您需要先使用有关系统的知识将浮点映射到C中的整数。

#include <math.h>

unsigned int PrepareForTransmission(float inputValue)
{
    if (inputValue < 0) return 0; /* underflow error: clip */
    if (inputValue >= powf(2.0f, 14)) return (unsigned int)pow(2.0, 28) - 1; /* overflow error: clip */
    return (unsigned int)(inputValue * pow(2.0, 14) + 0.5); /* +0.5 to round */
}

然后在VHDL中,您只需将未签名的std_logic_vector(27 downto 0)移植到ufixed(13 downto -14)即可。你(希望)知道如何做到这一点。