Я хочу вернуть значения A, B и Y в моменты времени 7.5 нс, 15 нс, 22,5 нс и т. Д. Во время моего моделирования. Ниже приведен код, который я реализовал до сих пор (для цикла for). Математически это имеет смысл, но оно возвращает значения в раз 7,5 нс, 30 нс, 67,5 нс, 120 нс, .... Я не могу понять, где мой код ошибочен. Знаете ли вы, как лучше это реализовать?Для цикла генерирует неправильные значения в процессе тестирования?
constant InputPeriod : time := 15 ns;
----------------------------------
TEST:process
variable n : integer range 1 to 9;
begin
for I in 0 to 4 loop
wait for (n * (InputPeriod/2));
report "A: " & std_logic'image(A);
report "B: " & std_logic'image(B);
report "Y: " & std_logic'image(Y);
n := n + 2;
end loop;
report "Test Completed";
wait;
end process TEST;
Это то, что вы просите. Сначала он ждет 1 * 7,5 нс. Затем вы добавляете 2 в n, чтобы он ожидал 3 * 7,5 нс (22,5 нс) и выводил при 30 нс. Затем он ждет 5 * 7,5 нс и так далее. Если вы хотите вывести на 7.5, 15, 22.5 нс, просто установите для него 7,5 нс каждый раз. –
«Затем вы добавляете 2 в n, чтобы дождаться 3 * 7,5 нс (22,5 нс) и выходов при 30 нс». Почему он вдруг добавляет 7.5 нс, а затем выводит через 30 нс? – user5153260
Он не «неожиданно добавляет 7.5 нс». Он уже дождался 7.5ns в первый раз вокруг цикла. –