
- •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)
1.1 Описание устройства с помощью ahdl
AHDL – высокоуровневый язык, полностью интегрированный в САПР MAX+PLUS II (Multiply Array matriX Programmable Logic User System). Язык специально предназначен для задания комбинационной логики, таблиц истинности, графов переходов и т.д. Вы можете использовать встроенный редактор MAX+PLUS II для создания AHDL-файла (.tdf – text design file) или воспользоваться любым другим текстовым редактором. После создания AHDL-проекта вы можете скомпилировать его с целью последующего анализа работы проектируемого устройства и непосредственно программирования микросхемы.
1.1.1 Как работает ahdl?
Выражения языка специально приспособлены для описания всевозможных устройств поэтому их очень удобно использовать в своих разработках. Вы можете создавать иерархические проекты с помощью AHDL или использовать AHDL-файлы как составную часть более сложного устройства, описываемого другим способом.
Несмотря на то, что вы можете использовать любой текстовый редактор ASCII для описания устройства на языке AHDL, встроенный текстовый редактор MAX+PLUS II включает некоторые дополнительные возможности (доступные только из MAX+PLUS II) которые проявляются во время создания проекта и его компиляции.
AHDL-проекты могут быть свободно интегрированы в проекты более высокого уровня. Так например, в текстовом редакторе MAX+PLUS II вы можете создать т.н. символьный файл который может быть в дальнейшем использован в графическом редакторе. Кроме того, вы можете использовать библиотеку параметризированных модулей (LPM – Library of Parameterized Modules) при описании своего устройства, подключая к проекту необходимые библиотеки.
В любой момент вы можете выполнить проверку синтаксиса проекта или откомпилировать его, при этом все найденные ошибки или предупреждения могут быть локализованы с помощью подпрограммы Message Processor, входящей в состав MAX+PLUS II.
Рисунок 1.1 показывает, как AHDL-файлы могут быть использованы в MAX+PLUS II. Иерархический проект может состоять из подпроектов, описанных различными способами и хранящимися в различных файлах: .tdf – AHDL-проекты,.gdf – файлы графического редактора,.sch – OrCAD Schematic file,.vhd – Verilog Design File и т.д.
Рисунок 1.1 Структура
проектаMAX+PLUS II
1.2 Структура ahdl-файла
AHDL-файл (.tdf – Text Design File – TDF) это обыкновенный текстовый файл, написанный на AHDL с использованием текстового редактора MAX+PLUS II или любого другого.
1.2.1 Разделы ahdl-файла
Следующие ниже разделы проекта, описанного на AHDL, приведены в том порядке, в котором они встречаются в исходном файле. На рисунке 1.2 графически представлена структура AHDL-файла.
(Необязательный раздел) Заголовок (Title Statement) – включает в себя строки, которые будут добавлены в файл отчета (.rpt– Report File), генерируемый компилятором MAX+PLUS II.
(Необязательный раздел) Раздел подключения библиотек (Include Statement) – содержит имена файлов, которые необходимо подключить к проекту.
(Необязательный раздел) Раздел констант (Constant Statement) – содержит описания констант для данного проекта.
(Необязательный раздел) Поле определений (Define Statement) – раздел прототипов функций.
(Необязательный раздел) Раздел определения параметров (Parameters Statement) – раздел, содержащий один или несколько параметров, определяющих реализацию параметризированной функции.
(Необязательный раздел) Раздел объявления прототипов функций (Function Prototype Statement) – раздел содержит описание логических функций, а также их параметры.
(Необязательный раздел) Раздел опций (Options Statement) – устанавливает некоторые глобальные опции для всего проекта (например: указание старшего/младшего бита в векторах).
(Обязательный раздел) Раздел определения устройства (Subdesign Section) – данный раздел содержит описания входов, выходов и двунаправленных магистралей будущего устройства.
(Необязательный раздел) Раздел описания переменных (Variable Section) – раздел определений переменных, которые будут необходимы для представления и хранения промежуточной информации. Данный раздел может содержать следующие конструкции:
Определение узлов
Определение регистров
Определение графа переходов
Структуру «IF ….. GENERATE»
(Обязательный раздел) «Логический» раздел (Logic Section) – Содержит определение логических функций проекта. Логика работы проектируемого устройства может быть описана с помощью: таблиц истинности, логических уравнений и графов. «Логический» раздел может содержать следующие конструкции:
Раздел объявлений «по умолчанию» (Default Statement)
Раздел логических уравнений (Boolean Equations)
Поле Case (Case Statement)
Поле For…Generate (For Generate Statement)
Поле If …Generate (If Generate Statement)
Поле If …Then (If Then Statement)
Вызовы функций
Раздел определения таблиц истинности (Truth Tables Statement)
AHDL-проект должен содержать секцию определения устройства и логическую секцию. Кроме того, он может содержать: раздел определения переменных, секцию заголовка, раздел определения опций проекта, секцию предопределений, раздел констант, раздел определения прототипов функций и секцию подключения библиотек. Последними разделами AHDL-проекта являются: раздел определения входов и выходов устройства, раздел определения переменных, «логическая» секция.