Перечислимые типы языка VHDL.
Перечислимый тип – это такой тип данных, при котором количество всех возможных значений конечно.
Перечислимый тип объявляется путем перечисления названий элементов-значений. Объекты, тип которых объявлен как перечислимый, могут содержать только те значения, которые указаны при перечислении. Элементы перечислимого типа должны быть идентификаторами или символами, которые должны быть уникальными в пределах одного типа. Повторное использование названий элементов в других перечислимых типах разрешается.
Объявление перечислимого типа имеет вид:
TYPE имя_типа IS ( название_элемента , название_элемента );
Пример
Type State_type IS (stateA, stateB, stateC);
VARIABLE State: State_type;
State:= stateB
В данном примере объявляется переменная State, допустимыми значениями которой являются stateA, stateB, stateC.
Любой перечислимый тип имеет внутреннюю нумерацию: первый элемент всегда имеет номер 0, второй – номер 1 и т. д. Порядок нумерации соответствует порядку перечисления.
Операторы отношения
Значения определенных пользователем перечислимых типов могут участвовать в выражениях. Операторы отношения (=, /=, <, <=, >, >=) определены как для перечислимых типов, так и для одномерных массивов, содержащих элементы этих типов. Результат выражения имеет тип BOOLEAN.
Тип BOOLEAN
Тип BOOLEAN является перечислимым типом. Объект данного типа может принимать значения FALSE (ложь) и TRUE (истина), причем FALSE эквивалентно 0, а TRUE эквивалентно 1. Все три типа объектов в VHDL (константы, переменные и сигналы) могут иметь тип BOOLEAN.
Логические операторы
Для операндов типа BOOLEAN и одномерных массивов, содержащих элементы типа BOOLEAN определены все логические операции (AND, OR, NAND, NOR, XOR и NOT). Тип и размер операндов должны быть одинаковыми. Тип и размер результата такой же как тип и размер операндов.
Оператор конкатенации
Оператор конкатенации также определен для операндов типа BOOLEAN и одномерных массивов, содержащих элементы типа BOOLEAN. Результат выражения представляет собой одномерный массив, содержащий элементы типа BOOLEAN; размер массива равен сумме размеров операндов.
Тип INTEGER
Стандарт VHDL определяет тип INTEGER для использования в арифметических выражениях. По умолчанию объекты типа INTEGER имеют размерность 32 бита и представляют целое число в интервале –(231(-). Стандарт языка позволяет также объявлять объекты типа INTEGER, имеющие размер меньше 32 бит, используя ключевое слово RANGE, ограничивающее диапазон возможных значений:
SIGNAL X : INTEGER RANGE –127 TO 127
Данная конструкция определяет X как 8-битное число.
Кроме того, можно определить ограниченный целый тип, используя следующую конструкцию:
TYPE имя_типа IS RANGE диапазон_индексов;
Операторы отношения
Значения типа INTEGER могут участвовать в выражениях. Операторы отношения (=, /=, <, <=, >, >=) определены для операндов типа INTEGER и одномерных массивов, содержащих элементы типа INTEGER. Результат выражения имеет тип BOOLEAN.
Арифметические операторы
Операторы +, –, ABS допустимы для операндов типа INTEGER. Результат выражения имеет тип INTEGER.
Операторы *, /, MOD, REM допустимы в следующих случаях:
если оба операнда являются константами (CONSTANT);
если второй операнд является константой и его значение равно 2n, где n = 0, 1, 2, 3….
Применение операторов *, /, MOD, REM недопустимо если оба операнда являются сигналами (SIGNAL) или переменными (VARIABLE).
Тип BIT
Объект данного типа может принимать значение '0' (лог.0) или '1' (лог.1).
Операторы отношения
Значения типа BIT могут участвовать в выражениях. Операторы отношения (=, /=, <, <=, >, >=) определены для операндов типа BIT и одномерных массивов, содержащих элементы типа BIT. Результат выражения имеет тип BOOLEAN.
Логические операторы
Для операндов типа BIT и одномерных массивов, содержащих элементы типа BIT определены все логические операции (AND, OR, NAND, NOR, XOR и NOT). Тип и размер операндов должны быть одинаковыми. Тип и размер результата такой же как тип и размер операндов.
Тип STD_LOGIC
Типы STD_LOGIC является перечислимым типом. Объекты типа STD_LOGIC могут принимать 9 значений: '0', '1', 'Z', '–', 'L', 'H', 'U', 'X', 'W'.
Для синтеза логических схем используются только первые четыре:
'0' – логический "0"; '1' – логическая "1"; 'Z' – третье состояние; '–' – не подключен.
Операторы отношения
Значения типа STD_LOGIC могут участвовать в выражениях. Операторы отношения (=, /=, <, <=, >, >=) определены для операндов типа STD_LOGIC и одномерных массивов, содержащих элементы типа STD_LOGIC. Результат выражения имеет тип BOOLEAN.
Логические операторы
Для операндов типа STD_LOGIC и одномерных массивов, содержащих элементы типа STD_LOGIC определены все логические операции (AND, OR, NAND, NOR, XOR и NOT). Тип и размер операндов должны быть одинаковыми. Тип и размер результата такой же как тип и размер операндов.
Оператор конкатенации
Оператор конкатенации также определен для операндов типа STD_LOGIC и одномерных массивов, содержащих элементы типа STD_LOGIC. Результат выражения представляет собой одномерный массив, содержащий элементы типа STD_LOGIC.