我正在使用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)
?
答案 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)
即可。你(希望)知道如何做到这一点。