读取 OUT 端口进行调试

问题描述 投票:0回答:3

我有一个 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;

这个接口是给定的,我无法改变iy。出于调试目的,我想查看 FIFO 写入和读取的内容。换句话说,理想情况下我想分配两个调试 FIFO 的输入和输出值,即

  DBG_FIFO_IN  <= DIN;
  DBG_FIFO_OUT <= DOUT;

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

[exec] 错误:HDLParsers:1401 - 模式 OUT 的对象 DOUT 无法 阅读。

我想知道是否有任何方法可以将

DOUT
值分配给我的调试符号。接口给定了,所以我无法让
DOUT
成为inout信号。

vhdl
3个回答
5
投票

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

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

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

2
投票

使用BUFFER代替out。然后您就可以在没有 Charles 解决方案中使用的中间信号的情况下进行读取。


2
投票

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

如果您的工具不支持,请向供应商抱怨,直到他们支持为止!

© www.soinside.com 2019 - 2024. All rights reserved.