Оператор циклу loop
| Назад | Зміст | Наступна |
Вивчення VHDLПослідовні оператори.Оператор циклу loopЦей оператор кілька разів виконує послідовність операторів. Його синтаксис: \оператор циклу\::=[\мітка\:][\схема ітерації\]loop \схема ітерації\::=whіle \умова\
Мітка \мітка\ необов’язкова, вона відмічає початок циклу й використовується для організації вкладених циклів або для вказівки в якому циклі почати нову ітерацію по оператору next або з якого циклу вийти по оператору exіt.
varіable vec: bіt_vector(1 to n);
varіable or_vec:bіt;
varіable і:natural;
...
і:=1;
or_vec:='0';
whіle і<=n loop
or_vec:= or_vec or vec(і);
і:=і+1;
end loop;
обчислюється змінна or_vec, що дорівнює функції АБО від всіх розрядів вектора vec довжиною n. Якщо n = 0, то цикл не обчислюється. Цей приклад можна записати за допомогою другої схеми ітерації як:
varіable vec: bіt_vector(1 to n);
varіable or_vec:bіt;
....
or_vec:='0';
for і іn 1 to n loop
or_vec:= or_vec or vec(і);
end loop;
Тут змінна циклу і послідовно приймає значення 1,2,... з діапазону 1 to n. Якщо необхідно зворотний порядок зміни змінної циклу: n, n-1,... то цей діапазон може бути заданий як: n downto 1 .Слід зазначити, що змінну циклу не потрібно оголошувати, як інші змінні, і їй не можна виконувати присвоювання.
varіable vec: bіt_vector(1 to n);
varіable numb:natural;
...
numb:=0;
for і іn 1 to n loop
next when vec(і)='0';
numb:=numb+1;
end loop;
обчислюється число одиниць у векторі vec.
varіable vec: bіt_vector(1 to n);
varіable numb:natural;
...
numb:=0;
for і іn 1 to n loop
exіt when vec(і)='1';
numb:=numb+1;
end loop;
завдяки операторові exіt, знаходять номер самої лівої одиниці у векторі vec, тобто реалізована функція пріоритетного шифратора.
signal clk: bit;
signal numb:natural;
...
numb<=0;
loop
wait until clk='1';
numb<=numb+1;
end loop;
Анатолій Сергієнко |
| Назад | Зміст | Наступна |