
- •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)
2.8 Перегрузка имени оператора
Вы можете использовать возможность перегрузки имени оператора с целью придания группе действий какого-либо смыслового имени.
Впримереboole3.tdfспроектировано устройство аналогичное
устройству из примера 2.6 (boole1.tdf),
но в этом примере используется перегрузка
имени оператора. Новое имя оператора
может содержать до 32 символов и отделяется
от старого оператора двоеточием (:).
Для
получения более подробной информации
см. разделы:
Логические операторы
Имена в AHDL, использование кавычек
2.9 Использование циклически генерируемой логики
Когда вы хотите использовать множество раз одинаковые логические блоки, то вам может пригодиться структура FOR…GENERATE, позволяющая выполнять один и тот же блок заданное число раз. В примере 2.40 показан пример использования выражения FOR…GENERATE.
В данном примере с помощью структуры FOR…GENERATE построен 8-битный сумматор.
2.10 Использование условно генерируемой логики
Вы можете генерировать те или иные логические выражения в зависимости от выполнения тех или иных условий при помощи выраженияIF…GENERATE.
Впримере 2.41 показан пример использования
данного выражения. В зависимости от
используемой серии переменнойoutput_bбудут присваиваться различные значения:
Выражение IF…GENERATEнаиболее часто используется вместе со структурой FOR…GENERATE с целью перехвата и обработки каких-либо ключевых ситуаций.
MAX+PLUS IIсодержит предопределенную константуDEVICE_FAMILY, позволяющую определят серию микросхем, выбранную с помощью командыDevice(менюAssign).
3. Элементыahdl
Этот раздел посвящен структуре файла проекта на языке AHDL (TDF – Text Design File).
В данном разделе будут рассмотрены следующие вопросы:
Зарезервированные слова и идентификаторы
Символы
Использование кавычек
Группы
Числа в AHDL
Арифметические выражения
Логические выражения
Примитивы
Мегафункции
Макрофункции
Порты
Параметры
3.1 Ключевые слова и идентификаторы
Ключевые слова (Зарезервированные слова) используются для указания начала, конца структур языка, а также используются для указания заранее определенных констант, таких как GND, VCCи т.д.
Ключевые слова отличаются от зарезервированных идентификаторов тем, что ключевые слова могут использоваться в качестве идентификаторов в том случае, если они заключены в одинарные кавычки. Ключевые слова, равно как и зарезервированные идентификаторы могут свободно использоваться в комментариях.
Для повышения читабельности исходного текста рекомендуется записывать ключевые слова и зарезервированные идентификаторы прописными буквами.
3.1.1 Ключевые слова
Ниже приведен перечень ключевых слов AHDL:
AND FUNCTION OUTPUT
ASSERT GENERATE PARAMETERS
BEGIN GND REPORT
BIDIR HELP_ID RETURNS
BITS IF SEGMENTS
BURIED INCLUDE SEVERITY
CASE INPUT STATES
CLIQUE IS SUBDESIGN
CONNECTED_PINS LOG2 TABLE
CONSTANT MACHINE THEN
DEFAULTS MOD TITLE
DEFINE NAND TO
DESIGN NODE TRI_STATE_NODE
DEVICE NOR VARIABLE
DIV NOT VCC
ELSE OF WHEN
ELSIF OPTIONS WITH
END OR XNOR
FOR OTHERS XOR
3.1.2 Зарезервированные идентификаторы
Ниже приведен перечень зарезервированных идентификаторов AHDL:
CARRY JKFFE SRFFE CASCADE JKFF
SRFF CEIL LATCH TFFE DFFE
LCELL TFF DFF MCELL TRI
EXP MEMORY USED FLOOR OPENDRN
WIRE GLOBAL SOFT X