
- •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.4.2 Назначение автомату сигналов синхронизации, сброса, разрешения по входу
Сигналы синхронизации (Clock), сброса (Reset), разрешения по входу (Enable) являются управляющими сигналами для автомата. Они назначаются автомату в секции логических уравнений (Logic Section).
Впримере 2.25 (simple1.tdf)
синхронизация устройства осуществляется
сигналомclk.
Асинхронный сброс автомата будет
осуществляться сигналомreset,разрешение синхронизации (по входу)
осуществляется сигналом
ena.
2.4.3 Кодирование состояний автомата
Бит состояния – выход триггера, используемый для хранения одного бита данных автомата. В большинстве случаев компилятор MAX+PLUS IIавтоматически производит назначение и минимизацию числа бит состояний.
Однако, быстродействие некоторых автоматов выше, если число бит состояний не минимально, т.е. иногда эти биты выгоднее назначать вручную.
В следующем примере выходы устройства phase[3..0]определены еще как биты автоматаss,описываемого графом переходов.
Примечание:
При построении временных диаграмм для данного устройства не забываете, что сигналы ccw и cwне могут одновременно быть равны «Лог.1», т.к. это может привести к непредсказуемым результатам (КомпиляторMAX+PLUS IIне сможет выбрать строку таблицы истинности, соответствующую входам).
2.4.4 Описание автомата Мура (Moore machine)
Если выходы автомата зависят только от текущего внутреннего состояния, а текущее внутреннее состояние зависит от предыдущего состояния и предыдущего состояния входов, то такой автомат называется автоматом Мура (Moore machine).
Граф переходов для автомата Мура представлен на рисунке 2.12
В следующем примере (moore1.tdf) спроектировано устройство, являющееся автоматом Мура с четырьмя состояниями.
SUBDESIGN
moore1 ( clk :
INPUT; reset :
INPUT; y :
INPUT; z :
OUTPUT; ) VARIABLE
% текущее текущий %
% сост. выход % ss: MACHINE
OF BITS (z)
WITH STATES (s0 = 0,
s1 = 1,
s2 = 1,
s3 = 0); BEGIN ss.clk
= clk; ss.reset
= reset;
TABLE % текущее текущий
след. % % сост. вход
сост. % ss, y => ss;
s0, 0 => s0;
В данном примере состояния автомата указаны при его объявлении. Условия переходов заданы с помощью таблицы переходов, которая реализована в виде таблицы истинности.
На
рисунке 2.13 показана схема устройстваmoore1.tdf (из
примера 2.27)
Существует и другой метод задания автоматом Мура – без описания значений состояний. В следующем примере 2.28 (moore2.tdf), проиллюстрирован этот подход.
При данном подходе вместо определения выходов как значений состояний автомата, в таблицу переходов введен еще один столбец «следующий выход». При использовании этого метода требуется засинхронизировать выход сигналом Clock, что в рассматриваемом примере делается с помощьюD-триггера.
2.4.5 Описание автомата Мили (Mealy machine)
В автомате Мили выходы – есть функция от входов в данный момент времени и текущего состояния.
Граф переходов для автомата Мили представлен на рисунке 2.14.
В
SUBDESIGN
mealy ( clk :
INPUT; reset :
INPUT; y :
INPUT; z :
OUTPUT; ) VARIABLE ss:
MACHINE WITH STATES (s0, s1, s2, s3); BEGIN ss.clk
= clk; ss.reset
= reset;
TABLE % текущ. текущ.
текущ.
след. % % сост. вход
выход cост.
% ss, y =>
z, ss;
s0, 0 =>
0, s0; s0, 1 =>
1, s1;
На рисунке 2.15показана схема устройстваmealy.tdf (из примера 2.29)