2015-04-29 73 views
1

我正在創建一個硬件模塊,它使用固定點進行計算。但是輸入是浮點,因此我希望將浮點輸入轉換爲定點(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(固定)固定到浮點轉換工作得很好。我錯過了什麼嗎?是否有其他簡單的方法來實現浮動 - >固定轉換?

+1

我假設你的綜合工具有'ieee_proposed'可用,你期望的功能是什麼?模擬和綜合工具之間對庫的支持差異是問題的常見原因。你使用什麼工具?他們有VHDL-2008的支持嗎? – Josh

+3

如果這些工具具有良好的VHDL-2008 supprort,則不需要ieee_proposed庫,這些軟件包已移入庫ieee。 –

回答

0

每當我用主教的庫合成,我只是在項目中包含的包,並宣佈他們像你的情況如下:

use work.float_pkg.all; 
use work.fixed_pkg.all; 

我不使用ieee_proposed庫。

關於轉換,我相信最簡單的方法是真正使用包函數(直接或多個類型轉換)。

+0

我正在使用包函數。問題是,當我使用函數to_sfixed(arg:float)時,輸出被路由到地面,即0. to_float(arg:sfixed)完美工作。 – TheFisherman

+0

我在沒有ieee_proposed庫的情況下合成了您的代碼,並在Altera的Cyclone III FPGA中進行了編程。顯然,轉換工作正常。我改變了開關輸入和輸出LED相應地變化。 – ALPF