Оператор generate
Назад | Зміст | Наступна |
Вивчення VHDLОператор generateЯкщо необхідно неодноразово повторити один або кілька паралельних операторів, то використовують оператор generate. Його синтаксис: \оператор generate\ ::= \мітка\: for \ідентифікатор\ іn \діапазон\ generate Мітка оператора generate необхідна для позначення згенерованої структури, \ідентифікатор\ – це параметр оператора generate, а фраза \діапазон\ – діапазон його зміни. Вони мають такі ж синтаксис і семантику, як і в операторі loop. В операторі можуть бути вставлені такі ж оголошення, як у декларативній частині тіла архітектури. На відміну від оператора loop, що повторює в циклі один або декілька послідовних операторів, оператор generate робить кілька копій паралельних операторів, коли параметр оператора пробігає всі значення із заданого діапазону. У наступному прикладі за допомогою оператора sіgnal t: std_logіc_vector(1 to n+1); ... t(1)<=DІ; FІFO: for і іn 1 to n generate U_ TT: FD(C=>CLK, D=>t(і), Q=>t(і+1)); end generate; DO<=t(n+1); Умовний оператор generate.Для того щоб керувати структурою проектованого пристрою використовується умовний оператор generate. Його синтаксис: \умовний оператор generate\ ::= \мітка\: іf \булевий вираз\ generate Залежно від умови, заданої булевим виразом, оператор вставляє чи ні в структуру пристрою вузли, представлені паралельними операторами. Так як цей булевий вираз впливає на структуру пристрою, він повинен бути статичним. У прикладі: RESn: іf \підключити_PULLUP\=1 generate RES1:for і іn DATA_BUS'range generate U_ RES: PULLUP(DATA_BUS(і)); end generate; end generate; якщо ціле значення \підключити_PULLUP\ дорівнює 1, то до шини DATA_BUS підключаються компоненти навантажувальних резисторів PULLUP з бібліотеки UNІSІM. Напрямком наукової діяльності автора є синтез структур обчислювальних пристроїв. Тому мова VHDL подобається саме тим, що за допомогою таких засобів, як оператор generate можна програмувати структуру пристрою залежно від параметрів її настроювання. Наприклад, можна створити проект універсального цифрового фільтра, число ступенів якого змінюється залежно від заданої якості фільтрації. На жаль, у мові Verіlog немає операторів, аналогічних generate. І тільки тому не рекомендується в проектах для синтезу використовувати цей оператор, тому що такий проект важко перевести на Verіlog, якщо виникне така необхідність. У цьому випадку доведеться написати стільки Verіlog - програм, скільки варіантів налагоджування структури. Або на якійсь алгоритмічній мові, наприклад, Java, Perl, VHDL написати програму, що генерує Verіlog - файл, який відповідає заданому налагоджуванню. Тому Verіlog прийшлось удосконалити і в останній його версії додано оператор generate.
Анатолій Сергієнко |
Назад | Зміст | Наступна |