2017-09-03 78 views
1

私はVHDLプログラムで作業しており、ALTERA DE2-115を使用してRAM 256を実行する必要があります。出力は7セグメント表示で表示されます。 問題は次のとおりです。dataout出力変数があります。その後、変数はtemp_ram、配列の次の値があります。VHDLバッファ変数と出力変数

dataout <= temp_ram(conv_integer(dir)); 

その後、私は入れてdataoutのvaulesを分割したい7つのセグメント

dataout(7 downto 4) 
dataout(3 downto 0) 

にこれは次のエラーを示しています。

Error (10309): VHDL Interface Declaration error in RAM.vhd(45): interface object "dataout" of mode out cannot be read. Change object mode to buffer. 

私はバッファに変更して実行しましたが、何が起こるのか分かりません。

+0

の[VHDLインターフェイス宣言エラー:インターフェイスオブジェクト ""が読み取れません。オブジェクトモードをバッファに変更します。 (ID:10309)](http://quartushelp.altera.com/14.0/mergedProjects/msgs/msgs/evrfx_vhdl_read_from_out.htm) – user1155120

答えて

1

、Iは中間信号(dataout_intは、他の文で使用することができる)お勧め:

dataout_int <= temp_ram(conv_integer(dir)); 

をこの中間信号に出力を割り当てる:

dataout <= dataout_int; 
2

Synopsysパッケージのconv_integerを使用しています。公式のIEEEパッケージのみを使用してください。

dataoutは、シグナル割り当てステートメントを使用しているため、変数ではありません。また、信号はモードoutのポートである。 (ポートも信号です)。

VHDLは、スタティックタイピング以外にも、ポート内の信号の方向をチェックしています。あなたの信号はモードoutなので、読むことができません。

アルスソリューション、次のことができます。

  • は、すべての合成ツールによってサポートされていない使用モードbuffer、均等
  • ことができます
  • 使用VHDL-2008、
  • 、中間信号を使用しますモードoutのポートが読み込まれます。

QuartusはいくつかのVHDL-2008機能をサポートしています。クロスプラットフォームの互換性及びコード再利用のため

+0

-2002以前は、ポートである実際のモード「バッファ」のポートにのみ関連付けることができます。これは、モード「バッファ」接続の出力が設計階層内で複数のインターフェースを上方に横断するとき、VHDLツールの改訂レベルの問題を引き起こす可能性がある。 – user1155120

+1

[Brian's Answer](https://stackoverflow.com/questions/27129747/trying-to-use-a-buffer-in-vhdl-not-working/27130438#27130438)を[VHDLでバッファを使用しようとすると - 動作しません](https://stackoverflow.com/questions/27129747/trying-to-use-a-buffer-in-vhdl-not-working)。 – user1155120

関連する問題