0

我在 vhdl 中有以下代码片段:

signal s: signed(31 downto 0);
s <= to_signed(to_sfixed(1.2,8,-23),32);

现在我期待 1.2 的定点版本在信号“s”中可用。

但它总是忽略分数部分。's' 只包含小数部分(此处为“1”)。

我在这里想念什么?

4

2 回答 2

1

s没有任何地方可以存储任何小数部分,它是一个只能表示整数的有符号向量。

你快到了 - 放弃签名并制作 s 和 sfixed 类型:

signal s: sfixed(8 downto -23);
s <= to_sfixed(1.2,sfixed'high,sfixed'low);
于 2011-11-02T17:25:00.630 回答
1

如果您只想将 sfixed 中的位重新解释为有符号类型,只需使用简单的类型转换:

signal s: signed(31 downto 0);
...
s <= signed(to_sfixed(1.2,8,-23));
于 2011-11-02T20:56:12.647 回答