0

我正在使用 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的定点类型 ( ) 的浮点数?或者如何在VHDL中13 downto -14将此数字放回FPGA端的定点数?ex_fpga(13 downto -14)

4

1 回答 1

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 中,您可以简单地将 unsigned 移植std_logic_vector(27 downto 0)ufixed(13 downto -14). 你(希望)知道怎么做。

于 2017-07-28T11:20:29.870 回答