Это сводило меня с ума. Вот код, который я до сих пор:Вывод форматирования «if» в процессе тестирования?
signal SYS_CLK : std_logic := '0'; --Input
signal InputSignal : std_logic := '0'; --Input
signal SyncOutputSignal : std_logic; --Output
------------------------------------------------------
stim_proc:process(SYS_CLK)
begin
if (rising_edge(SYS_CLK)) then
if (InputSignal = '1') then
assert (SyncOutputSignal = '0') report "Bad Pulse..." severity ERROR;
end if;
end if;
end process stim_proc;
И картина сигнала Isim ---> i.imgur.com/G5KvCQe.jpg
Целью данного теста является подтверждение того, что, когда на rising_edge (SYS_CLK), если InputSignal = '1', затем выдается импульс (SyncOutputSignal) и соответствует периоду SYS_CLK.
Однако отчет об ошибке выдается каждый раз, когда CLK идет высоко, а InputSignal - высокий.
Короче говоря, мне нужно, чтобы программа дождалась следующего Импульса InputSignal, прежде чем снова проверить утверждение, указанное в моем коде. Есть идеи??
Как вы создаете зарегистрированную версию InputSignal? Этот новый сигнал (Reg_InputSignal) объявлен исключительно внутри процесса? Или наверху со всеми другими сигнальными объявлениями? Каков синтаксис объявления? – VKkaps
Спасибо! Код работает сейчас! И да, я понимаю, что цифровая логика очень четко, просто ее реализация в VHDL - сложная часть – VKkaps