2013-05-01 149 views
0

我在VHDL中使用IEEE定点包。如何将定点VHDL类型转换回浮点型?

它运行良好,但我现在在测试中面临着一个关于它们的字符串表示的问题:我想将它们转储到文本文件中。

我发现,它确实是可以直接写入ufixed或使用sfixed:

write(buf, to_string(x)); --where x is either sfixed or ufixed (and buf : line) 

但后来我得到像值11110001.10101(用于sfixed Q8.5表示)。

所以我的问题:如何将这些定点数转换回实数(然后转换为字符串)?

+0

SO,在上面的例子中,你想把11110001.10101写成你的文本文件为241.6563? – Jotorious 2013-05-01 14:14:02

+0

从谷歌搜索它看起来像有一个to_real()函数,你可以使用。 – Jotorious 2013-05-01 14:22:35

+0

@Jotorious:是的 – JCLL 2013-05-01 16:31:01

回答

0

变量需要拆分成两个std-logic-vector部分,可以使用标准转换将整数部分转换为字符串,但对于小数部分,字符串转换有点不同。对于整数部分,您需要使用循环并除以10,并将模余数转换为ASCII字符,从低位数字到高位数字。对于小数部分它也需要一个循环,但需要乘以10才能发言并隔离这个数字以获得相应的字符,然后使用该整数减去分数等等。这是一个概念,已经工作了在MATLAB中测试并制作一个vhdl版本,我将尽快分享。我很惊讶没有在任何地方找到这样有用的功能。当然,定点格式可以改变Q(N,M)N,M可以有各种值,而对于浮点,它是标准化的。