- •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. Поведенческое описание комбинационных устройств
- •Порядок выполнения работы
- •Контрольные вопросы
- •Рекомендованная литература
2Алфавит языка
Язык VHDL имеет свой алфавит, который представляет собой набор символов, разрешенных к использованию и воспринимаемых компилятором. С помощью этих символов могут быть образованы величины, выражения и операторы данного языка. Алфавит языка составляют:
символы из набора ISO 8859-1:1987 (International Organization for Standardization);
составные символы, воспринимаемые компилятором как один символ (смотри таблицу 2.1).
Таблица 2.1 – Составные символы алфавита языка VHDL |
|
Символ |
Описание |
<= |
Меньше или равно, присвоение |
>= |
Больше или равно |
=> |
Следует |
:= |
Присвоение |
/= |
Не равно |
** |
Возведение в степень |
< > |
Границы |
3Лексические элементы
Текст на языке VHDL – это последовательность раздельных лексических элементов (лексем). Лексема – минимальное объединение символов, несущее смысл. Различают следующие виды лексем:
разделитель и ограничитель;
идентификатор;
ключевое (зарезервированное) слово;
абстрактный литерал;
символьный литерал;
строковый литерал;
битовые строки;
комментарий.
3.1Разделители и ограничители
Разделители и ограничители служат для разъединения (установки границ) лексических элементов (слов).
Разделителями служат символы: пробел, табуляция и конец строки.
Количество разделителей не имеет значения. Таким образом, следующие выражения для компилятора будут эквивалентны:
count:= 2+2;
count := 2 + 2;
count := 2
+
2;
Ограничители - это специальные одиночные символы (в основном наборе символов):
& ' ( ) * + , - . / : ; < = > | [ ]
или составные (парные) символы, указанные в таблице 2.1.
3.2Идентификаторы
Идентификаторы – это простые пользовательские имена, которые присваиваются некоторому объекту.
Определение (в форме Бэкуса-Наура).
identifier ::= letter { [ _ ] letter | digit}
В программе идентификаторы могут конструироваться из строчных и прописных букв, цифр от 0 до 9 и символа подчеркивания '_' (и только из них!). Кроме того, написание идентификаторов должно подчиняться следующим правилам:
не может быть зарезервированным словом языка;
должен начинаться с буквы (не с цифры);
не может заканчиваться символом подчеркивания '_';
не должен содержать двух и более последовательных символов подчеркивания '_';
не может содержать внутри себя пробелы и специальные символы '-', '@', '%'.
В VHDL-коде нет различия между прописными и строчными буквами. Так ident1, IDENT1 и Ident1 – это все одно и то же имя. Примеры идентификаторов приведены в таблице 3.1.
Таблица 3.1 – Примеры идентификаторов |
|
Правильные идентификаторы |
Неправильные идентификаторы |
carry_out |
7АB (начинается с цифры) |
Dim_Sum |
A@B (специальный символ @) |
Count7SUB_2gоX |
SUM_ (заканчивается подчеркиванием) |
AaBBb |
PI__A (два подчеркивания подряд) |
ExampleOut |
Example Out (пробел не допустим) |
