读取OUT端口进行调试

时间:2010-11-05 14:40:37

标签: vhdl

我有一个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成为一个输入信号。

非常感谢您提供了有用的评论!

3 个答案:

答案 0 :(得分:4)

您必须将fifo输出分配给可以读取的本地信号,然后将该信号分配给输出(或将它们并行分配):

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

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

答案 1 :(得分:2)

使用BUFFER代替out。然后,您可以在没有查尔斯解决方案中使用的中间信号的情况下阅读。

答案 2 :(得分:2)

对于较旧的工具,您已经有了很好的答案 - 但是如果您使用某种支持VHDL-2008的工具,则可以直接读取输出端口。您可能需要使用命令行选项启用它。

如果您的工具不支持它,请向供应商发出警告,直到它们为止!