我正在创建一个使用固定点进行计算的硬件模块。但输入是浮点,因此我希望将浮点输入转换为定点(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 )将fixed转换为浮点型也能正常工作。我错过了什么吗?有没有其他简单的方法来实现浮点型->的固定转换?
发布于 2015-05-01 05:09:31
每当我使用Bishop的库进行合成时,我只是将包包含在项目中,并像下面这样为您的情况声明它们:
use work.float_pkg.all;
use work.fixed_pkg.all;我不使用ieee_proposed库。
关于转换,我认为最简单的方法是真正使用包函数(直接或通过多个类型转换)。
https://stackoverflow.com/questions/29948753
复制相似问题