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