2016-10-17 23 views
-1

私はシステムジェネレータで使用しているときにいくつかの問題を引き起こしているので、numeric_stdライブラリを使用したくありません。 numeric_stdライブラリを考慮することにより、コードがとされています任意のサイズの整数入力(正、負またはゼロ)をVHDLのバイナリに変換する方法は?

library IEEE; 
    use IEEE.STD_LOGIC_1164.ALL; 
    use ieee.STD_LOGIC_unsigned.all; 
    use ieee.numeric_std.all; 
    use ieee.std_logic_arith.all; 

    entity conversion is 
     port(l: in integer; k: out std_logic_vector(127 downto 0)); 
    end conversion; 

    architecture Behavioral of conversion is 
    begin 
     k <= conv_std_logic_vector(l,128); 
    end Behavioral; 

入力整数は任意の値を持つことができるということを念頭に置いて、この方法の代替は何ですか?

+1

私は 'numeric_std'を使ってあなたを止めている問題を解決しようと提案します。 –

+0

システムジェネレータモデルでこのコードをブラックボックスとして使用する必要があります。私がそれを実行すると、次のエラーが表示されます。 HDLシミュレーションモデルのコンパイルに失敗しました。 エラー:HDLCompiler:104 - "xlisim_bit.vhd"行1904:ライブラリが見つかりません。ライブラリが でコンパイルされており、ライブラリと使用句が VHDLファイルに存在することを確認してください。 –

+1

'ieee.STD_LOGIC'または' ieee.std_logic_arith'と一緒に 'ieee.numeric_std'を使用しないでください。それらは互換性がありません。新しいコードでは 'ieee.numeric_std'を使います。既存のコードでは、既に存在するパッケージを使用したいと思うかもしれません。 –

答えて

0

Numeric_stdはあなただけで、次のライブラリの取り込みを取得する必要があるかもしれません

を発行します。ファイル内の他のコードのために数値stdを使用できない場合は、デザインをのコンポーネント、つまり別のエンティティにすることを検討してください。その後

numeric_stdを使用して、あなたはこのように整数に変換することができます

library IEEE; 
use IEEE.STD_LOGIC_1164.all; 
use IEEE.NUMERIC_STD.all; 

変換::

k <= std_logic_vector(to_signed(l, 127)); 

エンティティは、別々のコンパイル単位であり、あなたはので、このようなライブラリを含めるだけですることができます32ビットの制限

整数typ VHDLのeは符号付きの32ビット整数だけなので、kの全範囲をこのようにカバーすることはできません。

関連する問題