
- •1. Введение 3
- •2. Использование ahdl 13
- •3. Элементы ahdl 64
- •4. Структура проекта 83
- •1. Введение
- •1.1 Описание устройства с помощью ahdl
- •1.1.1 Как работает ahdl?
- •1.2 Структура ahdl-файла
- •1.2.1 Разделы ahdl-файла
- •1.2.2 Иерархические проекты
- •1.2.3 Подключение библиотек
- •1.3.1 Шаблоны и примеры ahdl
- •1.3.2 Контекстно-зависимая помощь
- •1.3.3 Выделение цветом групп символов
- •1.3.4 Локализация ошибок
- •1.4 Компиляция ahdl-проектов
- •1.5 Советы
- •2. Использование ahdl
- •2.1 Введение
- •2.1.1 Использование чисел
- •2.1.2 Использование констант и вычисленных функций
- •2.1.3 Вставка ahdl-шаблона
- •2.1.4 Примеры ahdl
- •2.2 Комбинационные устройства
- •2.2.1 Описание комбинационных устройств с помощью логических уравнений
- •2.2.2 Объявление узлов
- •2.2.3 Описание групп
- •2.2.4 Использование операторов ветвления
- •Использование оператора if…then
- •Использование оператора case
- •Сравнение операторов if…then и case
- •2.2.5 Создание декодеров
- •2.2.6 Использование значений «по умолчанию» для переменных
- •2.2.7 Описание активно-низкой логики
- •2.2.8 Двунаправленные выводы
- •2.2.9 Описание тристабильных выводов
- •2.3 Устройства с памятью
- •2.3.1 Использование регистров
- •2.3.2Определение регистровых входов
- •2.3.3 Создание счетчиков
- •2.4 Графы переходов
- •2.4.1 Описание графа переходов
- •2.4.2 Назначение автомату сигналов синхронизации, сброса, разрешения по входу
- •2.4.3 Кодирование состояний автомата
- •2.4.4 Описание автомата Мура (Moore machine)
- •2.4.5 Описание автомата Мили (Mealy machine)
- •2.5 Создание иерархического проекта
- •2.5.1 Использование не параметризированных функций
- •2.5.2 Использование параметризированных функций
- •2.5.3 Создание и использование макрофункций
- •2.5.4 Экспорт и импорт графов переходов автоматов
- •2.6 ИспользованиеLcell иSofTпримитивов
- •2.8 Перегрузка имени оператора
- •2.9 Использование циклически генерируемой логики
- •2.10 Использование условно генерируемой логики
- •3. Элементыahdl
- •3.1 Ключевые слова и идентификаторы
- •3.1.1 Ключевые слова
- •3.1.2 Зарезервированные идентификаторы
- •3.2 Символы
- •3.3 Имена вAhdl, использование кавычек
- •3.4 Группы
- •3.4.1 Способы объявления и записи групп
- •3.4.2 Размеры групп и подгрупп
- •3.5 Числа вAhdl
- •3.6 Арифметические выражения
- •3.7 Логические выражения
- •3.7.1 Логические операторы
- •3.7.2 Использование оператораNot
- •3.7.3 Использование операторовAnd, nand, or, nor, xor, xnor
- •3.7.4 Использование арифметических операторов в логических выражениях
- •3.7.5 Операторы сравнения
- •3.7.6 Приоритеты логических операторов и операторов сравнения
- •3.8 Мегафункции
- •3.9 Порты
- •3.9.1 Порты файла
- •3.9.2 Использование портов
- •4. Структура проекта
- •4.1 Введение
- •4.2 Заголовок (Title Statement)
- •4.2 Раздел объявления параметров (Parameters Statement)
4. Структура проекта
В этой главе будет рассмотрена структура проекта на AHDL,а также синтаксис структур языка. Структуры языка будут рассматриваться в порядке их появления вAHDL-файле.
Введение
Структура заголовка (Title Statement)
Раздел объявления параметров (Parameters Statement)
Раздел подключения библиотек (Include Statement)
Раздел объявления констант (Constant Statement)
Раздел описания прототипов функций (Function Prototype Statement)
Раздел определения устройства (Subdesign Section)
Раздел описания переменных (Variable Section)
Раздел логических уравнений (Logic Section)
4.1 Введение
Проект на AHDL’е должен содержать как минимум два раздела: раздел описания устройства (Subdesign Section) и раздел логических уравнений (Logic Section). Все остальные разделы являются необязательными. Рассмотрение структур языка будет производиться в порядке их появления в файле проекта.
4.2 Заголовок (Title Statement)
Цель структуры «заголовок» присвоение файлу проекта какого-либо смыслового имени. В следующем примере будет показана структура заголовка:
TITLE “Display Controller”;
Заголовок состоит из следующих частей:
Заголовок всегда начинается с ключевого слова TITLEза которым следует строка, заключенная в кавычки. Заголовок заканчивается точкой с запятой (;).
Заголовок должен удовлетворять следующим требованиям:
Строка, следующая за ключевым словом TITLE,должна состоять не более чем из 255 символов. Для помещения символа кавычки (“)в строку его необходимо экранировать символом:“. Например:
TITLE “””EPM5130”” Display Controller”;
Заголовок может использоваться только один раз в проекте
Структура заголовка должна находится вне всех остальных структур языка
Для
получения более подробной информации
см. раздел:
“Title Statement Syntax” помощи по MAX+PLUS II
4.2 Раздел объявления параметров (Parameters Statement)
Раздел объявления параметров позволяет определить один или несколько параметров, необходимых для реализации мега или макрофункций. Например:
PARAMETERS
(
FILENAME = “mylife.mif”;
WIDTH, AD_WIDTH = 8;
NUM_WORDS = 2^ AD_WIDTH;
);
Структура описания параметров обладает следующими характеристиками:
Раздел описания параметров начинается с ключевого слова PARAMETERSза которым следует список параметров, заключенный в круглые скобки
Параметры друг от друга в списке отделяются запятой (,), имя параметра от его значения отделяется знаком равенства (=)
В качестве значения параметра не может использоваться выражение, заключенное в кавычки (“ ”), т.к. оно рассматривается как строка.
Раздел описания параметров оканчивается символом точки с запятой (;)
При описании параметров, вы должны помнить о следующих правилах:
Параметр может использован только после того, как он был объявлен
Имя параметра должно быть уникальным
Имя параметра не может содержать пробелов. Используйте символы подчеркивания ( _ ) для повышения читабельности
Параметр может быть использован любое число раз в теле проекта
Циклические объявления не поддерживаются. Пример циклического объявления параметров:
PARAMETERS
(
FOO = BAR;
BAR = FOO;
);
Для
получения более подробной информации
см. следующие разделы:
“Parameters Statement Syntax” в помощи MAX+PLUS II
Использование параметризированных функций