Проектирование цифровых устройств с помощью языка описания аппаратуры VHDL. Бобрешов А.М - 25 стр.

UptoLike

Составители: 

25
Если список инициализаторов пуст, то процесс безусловно
исполняется при начальном запуске, а также сразу за исполнением
последнего оператора в разделе операторов этого процесса. При этом надо
иметь в виду, что оператор процесса без списка инициализаторов
обязательно должен содержать в своем теле оператор ожидания wait.
Иначе исполнение любых других операторов в программе
блокируется.
Все операторы раздела операторов выполняются подряд друг за
другом от начала до конца, за исключением случаев приостановки
исполнения действий оператором wait. Тогда после приостановки может
быть инициировано исполнение других процессов и параллельных
операторов, а реализация операторов, следующих за оператором wait,
продолжится после наступления события, объявленного в этом операторе.
process(CLK)
begin
if CLK’event and CLK=’1’ then
Q<=D;
end if;
end process;
process
begin
WAIT for CLK’event;
Q<=D;
end process;
Приведенный выше пример содержит два возможных варианта
процессов, функционирующих одинаково и описывающих одну и ту же
схему. Однако первый вариант является все же предпочтительным, потому
что оператор ожидания wait поддерживается не всеми средствами синтеза
и может относиться к несинтезируемому подмножеству языка.
Укажем на некоторые наиболее существенные
различия сигналов и
переменных:
переменные меняют значения сразу после присвоения, и новые
значения непосредственно учитываются во всех
преобразованиях, записанных в теле процесса после такого
присвоения;
значение сигнала меняется не сразу после выполнения
присвоения. Оператору присваивания сопоставляется некий
буфер, называемый контейнером или, чаще, драйвером
                                     25
      Если список инициализаторов пуст, то процесс безусловно
исполняется при начальном запуске, а также сразу за исполнением
последнего оператора в разделе операторов этого процесса. При этом надо
иметь в виду, что оператор процесса без списка инициализаторов
обязательно должен содержать в своем теле оператор ожидания wait.
Иначе исполнение любых других операторов в программе блокируется.
      Все операторы раздела операторов выполняются подряд друг за
другом от начала до конца, за исключением случаев приостановки
исполнения действий оператором wait. Тогда после приостановки может
быть инициировано исполнение других процессов и параллельных
операторов, а реализация операторов, следующих за оператором wait,
продолжится после наступления события, объявленного в этом операторе.

     process(CLK)
     begin
     if CLK’event and CLK=’1’ then
        Q<=D;
     end if;
     end process;

     process
     begin
     WAIT for CLK’event;
     Q<=D;
     end process;

     Приведенный выше пример содержит два возможных варианта
процессов, функционирующих одинаково и описывающих одну и ту же
схему. Однако первый вариант является все же предпочтительным, потому
что оператор ожидания wait поддерживается не всеми средствами синтеза
и может относиться к несинтезируемому подмножеству языка.

     Укажем на некоторые наиболее существенные различия сигналов и
переменных:
        − переменные меняют значения сразу после присвоения, и новые
          значения    непосредственно    учитываются     во     всех
          преобразованиях, записанных в теле процесса после такого
          присвоения;
        − значение сигнала меняется не сразу после выполнения
          присвоения. Оператору присваивания сопоставляется некий
          буфер, называемый контейнером или, чаще, драйвером