Параллельный оператор генерации generate
Оператор генерации позволяет сокращённо, используя цикл, описывать совокупности повторяющихся параллельных операторов, в том числе и операторов конкретизации компонентов. Таким образом, оператор генерации представляет собой механизм для проектирования регулярных (систолических) структур.
Есть три способа употребления оператора генерации:
- способ for;
- способ if;
- комбинированный способ.
Способ for. Кроме ключевого слова generate, в начале описания оператора генерации используется только конструкция с ключевым словом for. По сути представляет собой цикл с параметром генерации, который выглядит следующим образом:
Метка: for параметр генерации generate
Параллельные операторы
end generate метка;
Параметр генерации – некоторая константа дискретного типа в определённом диапазоне. Параметром генерации не может быть декларированная переменная или сигнал! Для описания параметра генерации используется конструкция следующего вида:
Имя параметра генерации in K to (downto) L.
|
|
K и L – целочисленные константы, которые определяют границы диапазона изменения параметра генерации. Если используется ключевое слово to, то K – нижняя граница, а L – верхняя. Шаг цикла равен +1. Если используется ключевое слово downto, то всё наоборот, и шаг цикла равен -1.
Таким образом, полностью структура оператора генерации по способу for выглядит следующим образом:
Метка: for имя параметра генерации in K to (downto) L generate
Параллельные операторы
end generate метка;
Способ if. Кроме ключевого слова generate, в начале описания оператора генерации используется только конструкция с ключевым словом if. Условием является логическое выражение. Полностью структура оператора генерации по способу if выглядит следующим образом:
Метка: if условие generate
Параллельные операторы
end generate метка;
Параллельные операторы после ключевого слова generate будут выполняться только в том случае, если условие истинно!
Комбинированный способ сочетает в себе два предыдущих. Его структура выглядит следующим образом:
метка: for имя параметра генерации in K to (downto) L generate
метка1: if условие generate
параллельные операторы
end generate метка1;
end generate метка;
Операторов генерации по способу if внутри оператора по способу for может быть несколько.