读取 OUT 端口以进行调试

Ric*_*d29 2 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;
Run Code Online (Sandbox Code Playgroud)

这个接口是给定的,我不能改变。现在的事情是,出于调试目的,我想看看向/从 FIFO 写入和读取的内容。换句话说,理想情况下,我想分配两个调试 FIFO 的输入和输出值,即。

  DBG_FIFO_IN  <= DIN;
  DBG_FIFO_OUT <= DOUT;
Run Code Online (Sandbox Code Playgroud)

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

[exec] ERROR:HDLParsers:1401 - 无法读取模式 OUT 的对象 DOUT。

所以我想知道是否有任何方法可以将 DOUT 值分配给我的调试符号。接口是给定的,所以我不能让 DOUT 成为输入输出信号。

非常感谢有用的评论!

Cha*_*ler 5

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

DBG_FIFO_OUT <= (your logic here);
DOUT         <= DBG_FIFO_OUT;
Run Code Online (Sandbox Code Playgroud)

或者

DBG_FIFO_OUT <= (your logic here);
DOUT         <= (your logic here);
Run Code Online (Sandbox Code Playgroud)

  • 我们通常这样做的方法是将`DBG_FIFO_OUT &lt;=(你的逻辑在这里);`放在时钟进程内部,并将`DOUT &lt;= DBG_FIFO_OUT;`放在它外面(以及所有其他需要相同处理的输出) (2认同)