2017-04-08 14 views
0

私のコードでベクトル入力を整数に変換する際に問題がありました。私はVHDLに新しいですが、以下のコードは整数RANGEコードでコメントアウトされていますが、ベクトル値を整数に変換しようとするとエラーが発生します。ここに私のコードとエラーのコピーです:ベクトルへの整数範囲

screenshot

アップデート1: 私はあなたの修正を試みたし、それがエラーのいずれかの世話をするが、新しいエラーメッセージとコードは次のようになります。

あなたの記憶はあなたの割り当て RAMArray(unsigned(addr)) <= unsigned(din)のよう std_logic_vectorタイプではなく unsigned待つ type mem is array (...) of std_logic_vector(...)フォローラインでの宣言に従ってにおいて

screenshot

+0

エラー(10409):VHDL型変換エラー:dataRAM_inferred.vhd(26):変換されたオブジェクトのタイプがテキストまたはシンボル "UNSIGNED"に近いオブジェクトオブジェクトの整数型と一致する必要があります –

+1

Pleaseコードにエラーメッセージを貼り付けてください。リンクには壊れ癖があります。 –

+3

@CedrickBaker実際には、スクリーンショットを掲示するのではなく、コードとエラーメッセージをコピー&ペーストしてください。画像が悪いのは、a)コードをデバッグしたい人はスクリーンショットから入力する必要があります。これは恐ろしいことです(エラーが発生しやすくなります)。b)​​画像は検索エンジンがあなたの投稿をインデックスに登録することを不可能にします意味のある方法です – Siguza

答えて

1

unsignedにタイプ変換するだけでは不十分ですが、引数にタイプ変換関数to_integerを追加する必要があります。言い換えれば、

RAMArray(to_integer(unsigned(addr))) <= din 

第2のエラーは、qout <= RAMArray(addr)の行にあります。ここでは、型変換をunsignedとタイプ変換関数to_integerの両方に使用する必要があります。位置パラメータは整数型である。例:

qout <= RAMArray(to_integer(unsigned(addr))) 

私の提案でコードを修正しようとするとうまくいくと思います。

+0

この修正プログラムを試してみると、不必要なキャスティングでエラーが取り除かれます。しかし今、それは私にエラーを与える。 エラー(10409):dataRAM_inferred.vhdでのVHDL型変換エラー(26):テキストまたはシンボル "UNSIGNED"の近くにある変換されたオブジェクトのタイプが、対象オブジェクトの整数型と一致する必要があります –

+0

これは、 'ASIZE 'と' DSIZE'です。 'RAMArray(to_integer(unsigned(addr))<= din'と' qout <= RAMArray(to_integer(unsigned(addr))) 'のように、整数へのキャストを試みてください。あるいは、一般的な値に 'natural'型を使用するだけです。 – Roman

+0

to_integerの修正はうまくいきました......私はこれで新しく、今後数時間かけてあなたの答えを見つけ出し、読んでいきます...あなたのお手伝いローマに感謝します。 –

関連する問題