我正在创建一个使用固定点进行计算的硬件模块。但是输入是浮点数,因此我希望将浮点输入转换为固定点(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(固定)固定到浮点转换工作正常。我错过了什么吗?是否有其他简单的方法来实现浮动 - &gt;固定转换?
答案 0 :(得分:0)
每当我使用Bishop的库进行综合时,我只需在项目中包含这些包,并按照以下情况声明它们:
create table DBNAME.account_backup as DBNAME.account with data;
我不使用ieee_proposed库。
关于转换,我认为最简单的方法是真正使用包函数(直接或使用多个类型转换)。