Составители:
30
программиста. Тем не менее, оператор
case предпочтительнее, когда выбор ветви алгорит-
ма связан с одной переменной, принимающей дискретное множество значений. Иногда на-
бор условий легко приводится к одной такой переменной.
4.7.3. Оператор ожидания
Исполнение операторов, записанных в теле процесса, приостанавливается, если оче-
редной оператор является оператором ожидания (фактически — оператором приостано-
ва)
wait. При этом результаты исполнения предшествующих операторов заносятся в кален-
дарь событий и могут быть инициализированы другие процессы. Прекращение состояния
приостанова процесса зависит от условий, определенных в операторе
wait. Определено не-
сколько модификаций оператора
wait:
<оператор ожидания>::=
wait;
| wait on <имя сигнала> {,<имя сигнала>};
| wait until <условие>;
| wait for <выражение времени>;
Вариант оператора wait без дополнительных уточняющих конструкций соответствует
бесконечному останову. В этом случае после достижения такого оператора процесс никогда
больше не будет исполняться. Указанная версия пригодна для описания процедур инициали-
зации систем, а также фрагментов, работа которых при некоторых условиях прекращается
навсегда. Обычно такой оператор завершает программы генерации тестов, означая оконча-
ние тестовой последовательности.
Список сигналов в варианте
wait on эквивалентен списку чувствительности процес-
са: исполнение будет продолжено после того, как один из сигналов списка изменит свое зна-
чение.
Приостанов, заданный конструкцией
wait until, заканчивается, когда выполнено
определенное оператором условие, т. е. соответствующее выражение принимает значение
true.
Вариант ожидания по времени иллюстрируется процессом
generator. Данный про-
цесс выполняется бесконечно, приостанавливаясь каждые 50 ns модельного времени, причем
перед приостановом уровень сигнала
clock меняется на противоположный. В момент при-
останова могут быть инициированы параллельные операторы программы, в том числе другие
процессы.
generator: process
begin
clock <= '0';
wait for 50 ns;
clock <= not clock;
end process generator;
Процесс, содержащий оператор wait, не может иметь списка чувствительности. Это
связано с тем, что трудно описать систему, в которой может произойти повторная инициали-
зация действий, в то время как реакция на предыдущее событие еще не реализована, напри-
мер, произошло изменение одного из инициирующих сигналов, когда время ожидания еще
программиста. Тем не менее, оператор case предпочтительнее, когда выбор ветви алгорит- ма связан с одной переменной, принимающей дискретное множество значений. Иногда на- бор условий легко приводится к одной такой переменной. 4.7.3. Оператор ожидания Исполнение операторов, записанных в теле процесса, приостанавливается, если оче- редной оператор является оператором ожидания (фактически — оператором приостано- ва) wait. При этом результаты исполнения предшествующих операторов заносятся в кален- дарь событий и могут быть инициализированы другие процессы. Прекращение состояния приостанова процесса зависит от условий, определенных в операторе wait. Определено не- сколько модификаций оператора wait: <оператор ожидания>::= wait; | wait on <имя сигнала> {,<имя сигнала>}; | wait until <условие>; | wait for <выражение времени>; Вариант оператора wait без дополнительных уточняющих конструкций соответствует бесконечному останову. В этом случае после достижения такого оператора процесс никогда больше не будет исполняться. Указанная версия пригодна для описания процедур инициали- зации систем, а также фрагментов, работа которых при некоторых условиях прекращается навсегда. Обычно такой оператор завершает программы генерации тестов, означая оконча- ние тестовой последовательности. Список сигналов в варианте wait on эквивалентен списку чувствительности процес- са: исполнение будет продолжено после того, как один из сигналов списка изменит свое зна- чение. Приостанов, заданный конструкцией wait until, заканчивается, когда выполнено определенное оператором условие, т. е. соответствующее выражение принимает значение true. Вариант ожидания по времени иллюстрируется процессом generator. Данный про- цесс выполняется бесконечно, приостанавливаясь каждые 50 ns модельного времени, причем перед приостановом уровень сигнала clock меняется на противоположный. В момент при- останова могут быть инициированы параллельные операторы программы, в том числе другие процессы. generator: process begin clock <= '0'; wait for 50 ns; clock <= not clock; end process generator; Процесс, содержащий оператор wait, не может иметь списка чувствительности. Это связано с тем, что трудно описать систему, в которой может произойти повторная инициали- зация действий, в то время как реакция на предыдущее событие еще не реализована, напри- мер, произошло изменение одного из инициирующих сигналов, когда время ожидания еще 30
Страницы
- « первая
- ‹ предыдущая
- …
- 28
- 29
- 30
- 31
- 32
- …
- следующая ›
- последняя »