У меня есть 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. Другими словами, в идеале я хотел бы назначить два отладки значения in и out FIFO, т.е.
DBG_FIFO_IN <= DIN;
DBG_FIFO_OUT <= DOUT;
По очевидным причинам, второе назначение дает мне следующее сообщение об ошибке:
[ВЫПЛН] ОШИБКА: HDLParsers: 1401 - Объект DOUT в режиме OUT не может быть прочитан.
Так что мне интересно, есть ли способ, каким образом я могу оценить значение DOUT для моего символа отладки. Интерфейс дан, поэтому я не могу сделать DOUT inout-сигналом.
Большое спасибо за полезные комментарии!
Осторожно, используя первый вариант внутри процесса с тактовой частотой - вы получите задержка одного цикла между двумя сигналами. Вторая форма лучше для этого (но если вы измените «свою логику здесь», вам придется помнить об изменении обоих ...) –
Как мы обычно это делаем, поставив «DBG_FIFO_OUT <= (ваша логика здесь) ; 'внутри синхронизированного процесса и' DOUT <= DBG_FIFO_OUT; 'вне его (вместе со всеми другими выходами, которые нуждаются в том же обращении) – QuantumRipple