【发布时间】:2015-04-29 15:52:31
【问题描述】:
我正在创建一个使用定点进行计算的硬件模块。但是输入是浮点数,因此我希望将浮点输入转换为定点(Q8.8)。
我一直在尝试将 David Bishops 库 (http://vhdl.org/fphdl/) 用于浮点和定点。它在模拟中效果很好,但在我合成它时却不行。例如。在以下代码中,输出 y 在合成时接地。
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
library ieee_proposed;
use ieee_proposed.fixed_float_types.all;
use ieee_proposed.fixed_pkg.all;
use ieee_proposed.float_pkg.all;
entity sigmoid is
Port (
clk : in std_logic;
x : in float32;
y : out sfixed(15 downto -16)
);
end sigmoid;
architecture Behavioral of sigmoid is
signal size : sfixed(15 downto -16);
begin
set_c: process(clk)
begin
if rising_edge(clk) then
y <= to_sfixed(x, size);
end if;
end process;
end Behavioral;
从我在各种论坛和文档中阅读的内容来看,这段代码应该可以很好地合成。此外,使用 to_float(fixed) 固定为浮点转换也可以。我错过了什么吗?还有其他简单的实现float->fixed转换的方法吗?
【问题讨论】:
-
我假设您的综合工具有
ieee_proposed可用,具有您期望的功能?仿真和综合工具之间库支持的差异是问题的常见原因。你使用什么工具?他们有 VHDL-2008 支持吗? -
如果工具有良好的 VHDL-2008 支持,则不需要 ieee_proposed 库,这些包已移至库 ieee。
标签: floating-point vhdl fixed fpga