- •Vhdl – язык описания аппаратных средств методические указания
- •Введение
- •1История создания vhdl
- •2Алфавит языка
- •3Лексические элементы
- •3.1Разделители и ограничители
- •3.2Идентификаторы
- •3.3 Ключевые (зарезервированные) слова
- •3.4Абстрактные литералы
- •3.4.1Десятичные литералы
- •3.4.2Литералы с указанием основания системы счисления
- •3.5Символьные литералы
- •3.6Строковые литералы
- •3.7Битовые строки
- •3.8 Комментарии
- •4Типы данных
- •4.1Скалярные типы
- •4.1.1Перечисления
- •4.1.2Целые числа
- •4.1.3Физические типы
- •4.1.4Числа с плавающей точкой
- •4.2Составные типы
- •4.2.1Массивы
- •4.2.2Записи
- •4.3Указатели
- •4.4Файлы
- •5.1Простое имя
- •5.2Символ оператора
- •5.3Селективное имя
- •5.4Индексное имя
- •5.5Вырезка имени
- •5.6Имя атрибута
- •5.7Видимость и область действия имен
- •6Bыражения
- •6.1Операторы
- •6.1.1Логические операторы
- •6.1.2Операторы сравнения
- •6.1.3Операторы сдвига
- •6.1.4Аддитивные операторы
- •6.1.5Мультипликативные операторы
- •6.1.6Знаковые операторы
- •6.1.7Cмешанные операторы
- •6.2Операнды
- •6.2.1Операнд Name
- •6.2.2Операнд Literal
- •6.2.3Операнд Аggrеgаtе
- •6.2.4Операнд Function Call
- •6.2.5Операнд Qualified Expression
- •6.2.6Операнд Type Conversion
- •6.2.7Операнд Allocator
- •6.2.8Статическое выражение
- •6.2.9Универсальное выражение
- •7Представление системы в vhdl
- •7.1Общая структура описания проекта системы
- •7.2Сущность проекта системы
- •7.3Архитектура проекта системы
- •7.4Предложения vhdl
- •8Структурное описание цифровых устройств
- •8.1Сигналы в vhdl
- •8.2Описание нерегулярных структур
- •8.3Описание регулярных структур
- •9Функциональное описание цифровых устройств
- •9.1Описание комбинационных устройств
- •9.1.1Особенности применения сигналов
- •9.1.2Предложение Process Statement
- •9.1.3Предложение Variable Declaration Statement
- •9.1.4Предложение Variable Assignment Statement
- •9.1.5Подпрограммы
- •9.1.6Предложение If Statement
- •9.1.7Предложение Cаsе Stаtеmеnt
- •9.1.8Предложение Lоор Statement
- •9.2Описание последовательных устройств
- •9.2.1Описание триггеров
- •9.2.2Описание регистров
- •9.2.3Описание счетчиков
- •9.2.4Описание цифровых автоматов
- •10Моделирование цифровых устройств
- •10.1Общие методические рекомендации по выполнению лабораторных работ
- •10.2Лабораторная работа №1. Поведенческое описание комбинационных устройств
- •Порядок выполнения работы
- •Контрольные вопросы
- •Рекомендованная литература
4.1.1Перечисления
Перечисления состоят из списка значений, которые могут быть символами или идентификаторами.
-
enumeration_type_definition ::=
(enumeration _literal { , enumeration _literal } )
enumeration _literal ::= identifier | character_literal
Перечисления описывают по шаблону:
TYPE __enumerated_type_name IS (__name, __name, __name);
Например: TYPE LOGIC_VOLT IS ('0', '5', 'z', 'x');
Вводимые имена перечислений не должны совпадать с предопределенными в языке именами перечислимых типов.
Значения перечислений не должны совпадать. Весь список значений пронумерован слева направо, начиная с нуля, то есть каждое значение имеет соответствующую позицию в списке:
TYPE LIGHT IS |
(active, |
off, |
flashing); |
Позиция: |
0 |
1 |
2 |
Значения в разных перечислениях могут совпадать.
Предопределенными перечислениями являются character, bit, boolean, severity_level, специфицированные в пакете "standard":
TYРЕ CHАRАCTЕR IS (NUL, SОH, ...);
TYРЕ BIT IS ('0', 'l');
TYРЕ BООLЕАN IS (FАLSЕ, TRUЕ);
TYРЕ SЕVЕRITY_LЕVЕL IS (NОTЕ, WARNING, ERROR, FAILURE).
Примечание – значения bооlеаn (ложный и истинный) не идентичны логическим '0' и '1'.
В пакете “std1164” предопределены перечисления std_ulogic (неразрешимый логический тип с девятизначным алфавитом) и разрешимый подтип std_logic:
-
TYРЕ STD_ULОGIC IS (
'U',
-- неинициализированное значение;
'X',
-- неопределенное значение источника с малым выходным сопротивлением;
'0',
-- уровень логического нуля источника с малым выходным сопротивлением;
'1',
-- уровень логической единицы источника с малым выходным сопротивлением;
'Z',
-- высокоимпедансное состояние;
'W',
-- неопределенное значение источника с большим выходным сопротивлением;
'L',
-- уровень логического нуля источника с большим выходным сопротивлением;
'H',
-- уровень логической единицы источника с малым выходным сопротивлением;
'-'
-- произвольное);
Для сигналов этого типа запрещено использовать много источников сигнала. Буква u в названии типа std_ulogic сигнализирует о термине неразрешаемый (Unresolved).
Подтип std_logic определен как:
SUBTYPE STD_LOGIC IS RESOLVED STD_ULOGIC.
