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的输入和输出值,即。

  DBG_FIFO_IN  <= DIN;
  DBG_FIFO_OUT <= DOUT;

由于显而易见的原因,第二个作业给了我以下错误消息:

[exec] 错误: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

You have good answers already for older tools - but if you use some tool which supports VHDL-2008, you are allowed to read output ports directly. You may need to enable this with a command line option.

If your tools don't support it, whinge at the supplier until they do!

于 2010-11-07T20:26:04.723 回答
2

使用 BUFFER 而不是 out。然后您可以在没有查尔斯解决方案中使用的中间信号的情况下进行阅读。

于 2010-11-05T22:20:02.920 回答