Oбъекты языка VHDL



             

Оператор цикла.


Этот оператор несколько раз выполняет последовательность операторов. Его синтаксис:

\оператор цикла\::=[\метка\:][\схема итерации\]loop

{\последовательный оператор\}

       {next[\метка\][when \условие\];}

       {exit[\метка\][when \условие\];}

end loop [\метка\];

\схема итерации\::=while \условие\

                             | for \переменная цикла \ in \диапазон\

Метка \метка\ необязательна, она отмечает начало цикла и используется для организации вложенных циклов или для указания в каком цикле начать новую итерацию по оператору next или из какого цикла выйти по оператору exit.

По первой схеме итераций цикл, ограниченный ключевыми словами loop и end loop будет выполняться, пока условие \условие\ не примет значение false. Причем, это условие проверяется до выполнения цикла и если оно равно false, то цикл не выполняется. В примере:

variable vec: bit_vector(1 to n);

variable or_vec:bit;

variable i:natural;

i:=1; 

or_vec:='0';

while i<=n loop

          or_vec:= or_vec or vec(i);

           i:=i+1;

end loop;

вычисляется переменная or_vec, равная функции ИЛИ от всех разрядов вектора vec длины n. Если n = 0, то цикл не вычисляется. Этот пример можно записать с помощью второй схемы итерации как:

variable vec: bit_vector(1 to n);

variable or_vec:bit;

       ….

     or_vec:='0';

for i in 1 to n loop

          or_vec:= or_vec or vec(i);

     end loop;

Здесь переменная цикла i последовательно принимает значения 1,2,… из диапазона 1 to n. Если необходим обратный порядок изменения переменной цикла: n, n-1,… то этот диапазон может быть задан как:  n downto 1 .




Содержание  Назад  Вперед