Оператор циклу 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;
Анатолій Сергієнко |
Назад | Зміст | Наступна |