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



             

Оператор цикла. - часть 2


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

Если необходимо завершить очередную итерацию до ее окончания, то применяют оператор next запуска следующей итерации. В примере

variable vec: bit_vector(1 to n);

variable numb:natural;

numb:=0;

for i in 1 to n loop

    next when vec(i)='0';

    numb:=numb+1;

end loop;

вычисляется число единиц в векторе vec.

При необходимости закончить оператор цикла до завершения всех итераций применяют оператор exit выхода из цикла. В примере

variable vec: bit_vector(1 to n);

variable numb:natural;

numb:=0;

for i in 1 to n loop

    exit when vec(i)='1';

    numb:=numb+1;

end loop;

благодаря оператору exit, находится номер самой левой единицы в векторе vec, т.е. реализована функция приоритетного шифратора.

Оператор loop часто применяется без схемы итерации, т.е. когда цикл может выполняться неопределенно большое число раз. Следующий пример илюстрирует модель счетчика синхроимпульсов clk.

signal clk: bit;

signal numb:natural;

numb<=0;

loop

    wait until clk='1';

    numb<=numb+1;

end loop;




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