我在vhdl中有以下代码段:
signal s: signed(31 downto 0);
s <= to_signed(to_sfixed(1.2,8,-23),32);
现在我希望1.2的定点版本可以在信号's'中找到。
但它总是忽略了分数部分。 's'只包含小数部分(此处为“1”)。
我在这里缺少什么?
答案 0 :(得分:1)
s
没有任何地方存储任何小数部分,它是一个只能表示整数的带符号向量。
你几乎就在那里 - 删除签名并制作s和sfixed类型:
signal s: sfixed(8 downto -23);
s <= to_sfixed(1.2,sfixed'high,sfixed'low);
答案 1 :(得分:1)
如果您只想将sfixed中的位重新解释为有符号类型,只需使用简单的类型转换:
signal s: signed(31 downto 0);
...
s <= signed(to_sfixed(1.2,8,-23));