2

次のようなインターフェイスを持つ FIFO があります。

entity fifo is
    port (
    CLK               : IN  std_logic := '0';
    DIN               : IN  std_logic_vector(31 DOWNTO 0);
    ALMOST_EMPTY      : OUT std_logic;
    ALMOST_FULL       : OUT std_logic;
    DOUT              : OUT std_logic_vector(31 DOWNTO 0);
    ...
    WR_ACK            : OUT std_logic
);
end fifo;

このインターフェースは与えられており、変更することはできません。問題は、デバッグの目的で、FIFO との間で何が書き込まれ、何が読み取られるかを確認したいということです。言い換えれば、理想的には、FIFO の in と out の値に 2 つのデバッグを割り当てたいと考えています。

  DBG_FIFO_IN  <= DIN;
  DBG_FIFO_OUT <= DOUT;

明らかな理由から、2 番目の割り当てで次のエラー メッセージが表示されます。

[exec] ERROR:HDLParsers:1401 - モード OUT のオブジェクト DOUT を読み取ることができません。

したがって、DOUT 値をデバッグ シンボルに割り当てる方法があるかどうか疑問に思っています。インターフェイスが与えられているので、DOUT を inout 信号にすることはできません。

有益なコメントをありがとう!

4

3 に答える 3

5

fifo 出力を読み取り可能なローカル信号に割り当ててから、その信号を出力に割り当てる (または両方を並行して割り当てる) 必要があります。

DBG_FIFO_OUT <= (your logic here);
DOUT         <= DBG_FIFO_OUT;

また

DBG_FIFO_OUT <= (your logic here);
DOUT         <= (your logic here);
于 2010-11-05T15:39:37.697 に答える
2

古いツールについてはすでに適切な回答がありますが、VHDL-2008 をサポートするツールを使用すると、出力ポートを直接読み取ることができます。コマンド ライン オプションでこれを有効にする必要がある場合があります。

ツールがサポートしていない場合は、サポートされるまでサプライヤーに文句を言ってください。

于 2010-11-07T20:26:04.723 に答える
2

out の代わりに BUFFER を使用します。次に、チャールズのソリューションで使用されている中間信号なしで読み取ることができます。

于 2010-11-05T22:20:02.920 に答える