Конкурирующие (concurrent) операции названы так потому, что все действия в цифровой схеме выполняются одновременно. Текст на языках описания аппаратуры не описывает последовательность работы создаваемой схемы, а задает порядок ее синтеза. Поэтому добавление дополнительных строк в описание не увеличивает время выполнения операций, как в программах, исполняемых процессорами, а увеличивает размер схемы.

Простейшим видом конкурирующей операции является оператор безусловного присваивания. Его также называют continuous присваиванием, поскольку описываемая операция действует постоянно, а не выполняется один раз.

Пример:

a <= ‘1’;

d <= b and c;

 

Показанные строки создают схемы, которые постоянно поддерживают для сигнала a уровень логической единицы, а для сигнала d – результат логического выражения bandc. При изменении любого из сигналов b, c сигнал d изменится автоматически, постольку, поскольку созданная схема не требует дополнительного управления ее работой.

В рамках конкурирующего присваивания можно воспользоваться условным оператором when, имеющим следующий вид.

<сигнал_назначения><= <выражение1>when<условие>else<выражение2>;

 

Например

q <= ‘1’ when a = b else ‘0’;

 

Сигнал q будет равен ‘1’ все время, пока выполняется условие a = b. Поскольку схемы, построенные по такому описанию, формируются с помощью комбинаторной логики, ветка else обязательна, так как даже при невыполнении условия значение сигнала все равно должно быть определено.

  =  Перейти к содержанию  =