【发布时间】:2011-11-03 04:56:12
【问题描述】:
我在 vhdl 中有如下代码 sn-p:
signal s: signed(31 downto 0);
s <= to_signed(to_sfixed(1.2,8,-23),32);
现在我期待 1.2 的定点版本在信号“s”中可用。
但它总是忽略小数部分。 's' 只包含小数部分(此处为“1”)。
我在这里错过了什么?
【问题讨论】:
标签: vhdl fixed-point
我在 vhdl 中有如下代码 sn-p:
signal s: signed(31 downto 0);
s <= to_signed(to_sfixed(1.2,8,-23),32);
现在我期待 1.2 的定点版本在信号“s”中可用。
但它总是忽略小数部分。 's' 只包含小数部分(此处为“1”)。
我在这里错过了什么?
【问题讨论】:
标签: vhdl fixed-point
如果您只是想将 sfixed 中的位重新解释为有符号类型,只需使用简单的类型转换:
signal s: signed(31 downto 0);
...
s <= signed(to_sfixed(1.2,8,-23));
【讨论】:
sfixed 并让编译器跟踪它会更好(恕我直言)。如果目的地真的超出您的控制范围,那么您别无选择,只能管理它。我会确保我为 8 和 -23 创建了一些常量,以防您将来想更改它们。
s 没有任何地方可以存储任何小数部分,它是一个只能表示整数的有符号向量。
不过你快到了 - 放弃签名并制作 s 和 sfixed 类型:
signal s: sfixed(8 downto -23);
s <= to_sfixed(1.2,sfixed'high,sfixed'low);
【讨论】: