浮点到定点转换

时间:2015-04-29 15:52:32

标签: floating-point vhdl fixed fpga

我正在创建一个使用固定点进行计算的硬件模块。但是输入是浮点数,因此我希望将浮点输入转换为固定点(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;固定转换?

1 个答案:

答案 0 :(得分:0)

每当我使用Bishop的库进行综合时,我只需在项目中包含这些包,并按照以下情况声明它们:

create table DBNAME.account_backup as DBNAME.account with data;

我不使用ieee_proposed库。

关于转换,我认为最简单的方法是真正使用包函数(直接或使用多个类型转换)。