- •Учебник по языку ahdl Оглавление
- •Введение
- •Общие положения
- •Как работает ahdl?
- •Элементы языкаAhdl
- •Зарезервированные слова
- •Зарезервированные идентификаторы
- •Символы
- •Строковые и символьные имена
- •Способы объявления шин
- •Диапазоны и поддиапазоны шин
- •Числа в ahdl
- •Арифметические выражения
- •Встроенные оценочные функции
- •Логические выражения
- •Операторы логических функций
- •Булевы операторы, использующие not
- •Булевы операторы, использующие and, nand, or, nor, xor, и xnor
- •Арифметические операторы
- •Компараторы
- •Приоритеты логических и арифметических операторов
- •Прототипы логических функций
- •Примитивы
- •Массивы примитивов
- •Макрофункции
- •Мегафункции и библиотеки параметризуемых модулей
- •Не используемые входы примитивов, мегафункций и макрофункций
- •Типы портов:
- •Порты экземпляров
- •Структура описания проекта на языкеAhdl
- •Общая структура
- •Раздел Variable
- •Определение заголовка описания (оператор Title)
- •Определение включаемого текста (оператор Include)
- •Определение констант (оператор Constant)
- •Обозначение арифметических выражений (оператор Define)
- •Определение параметров (оператор Parameters)
- •Определение прототипов логических функций (операторFunctionPrototype).
- •Определение порядка следования битов (оператор Options)
- •Контроль арифметических выражений (оператор Assert)
- •Раздел интерфейса проекта (Subdesign)
- •Раздел переменных проекта (Variable)
- •Раздел Variable может включать следующие операторы и конструкции:
- •Раздел Variable может также содержать операторы If Generate, которые могут быть использованы для генерирования объектов, узлов, регистров, конечных автоматов, и псевдоимен конечных автоматов.
- •Раздел Variable имеет следующие характеристики:
- •Объявление объектов (Instance Declarations)
- •Объявление узлов (Node Declarations)
- •Объявление регистров (Register Declarations)
- •Объявление конечных автоматов (State Machine Declarations)
- •Объявления псевдоимен конечных автоматов (Machine Alias Declaration)
- •Раздел тела проекта (Logic)
- •Задание исходных значений (Defaults Statment)
- •Булевские выражения (Boolean Equations)
- •Управляющие булевские выражения (Boolean Control Equations)
- •Оператор проверки списка (Case.)
- •Оператор проверки логического выражения (If Then.)
- •Оператор проверки логического выражения (If Generate )
- •Оператор цикла (For Generate)
- •Использование ссылок на прототипы функций (In-Line Logic Function Reference)
- •Определение таблицы истинности (Truth Table)
- •Применение языкаAhdl
- •Использование шаблонов ahdl
- •Создание текстового выходного файла
- •Использование чисел
- •Использование констант и оценочных функций
- •Использование итеративно-генерируемой логики
- •Использование условно-генерируемой логики
- •Выполнение контроля выражений с помощью оператора Assert
- •Управление логическим синтезом с помощью примитивов lcell & soft
- •Реализация комбинационной логики
- •Реализация логических выражений и уравнений
- •Именование логических операторов и компараторов
- •Использование узлов
- •Использование шин
- •Реализация условной логики
- •Оператор If Then
- •Оператор Case
- •Оператор If Then против оператора Case
- •Создание дешифраторов
- •Использование значений переменных по умолчанию
- •Реализация логики с активными низкими уровнями
- •Реализация двунаправленных выводов
- •Реализация тристабильных шин
- •Реализация последовательностной логики
- •Объявление регистров
- •Объявление регистровых выходов
- •Создание счетчиков
- •Конечные автоматы
- •Реализация конечных автоматов
- •Управление записью, сбросом и разрешением (Clock, Reset & Enable)
- •Присваивание состояний
- •Конечные автоматы с синхронными выходами
- •Конечные автоматы с асинхронными выходами
- •Выход из некорректных состояний
- •Реализация запоминающих устройств
- •Реализация иерархических проектов
- •Использование непараметрических функций
- •Использование параметрических функций
- •Использование заказных мега- и макрофункций
- •Импорт и экспорт конечных автоматов
- •Синтаксис языкаAhdl
- •Стилизация описаний на языкеAhdl
- •"Золотые" правила использования языкаAhdl
- •Контекстно-зависимая справка по языкуAhdl
Макрофункции
MAX+PLUS II предлагает свыше 300 макрофункций.
Имена шинных макрофункций оканчиваются на букву В. Они функционально идентичны с соответствующими не шинными макрофункциями, но имеют сгруппированные входные и/или выходные выводы.
Для просмотра схемы или AHDL файла содержащего макрофункцию, укажите символ макрофункции в графическом редакторе или имя макрофункции в текстовом редакторе и выберите Hierarchy Down(меню File).
Категории макрофункций:
Сумматоры Триггеры-защелки
АЛУ Умножители
Буферы Мультиплексоры
Компараторы Генераторы четности
Конвертеры Быстрые умножители
Счетчики Регистры
Декодеры Сдвиговые регистры
Цифровые Регистры хранения
фильтры
EDAC SSI функции
Шифраторы Элементы ввода/вывода
Делители частоты
Мегафункции и библиотеки параметризуемых модулей
Параметризуемая функция - логическая функция, использующая параметры для достижения масштабируемости, адаптируемости и эффективной реализации в кремнии.
Библиотека параметризуемых функций (LPM) - технологически-независимая библиотека логических функций, параметризуемая для достижения масштабируемости и адаптируемости. Altera реализовала параметризуемые модули (называемые также параметризуемые функции) из LPM в версии 2.1.0, которые предлагают архитектурно-независимый ввод проекта для всех, поддерживаемых MAX+PLUS II устройств. Компилятор включает встроенную поддержку компиляции LPM для функций, используемых во входных файлах (схемном, AHDL, VHDL, и EDIF).
Мегафункция - сложный или высокоуровневый строительный блок, который можно использовать совместно с примитивами вентилей и триггеров и/или с макрофункциями старого типа в файлах проекта.
Altera поставляет библиотеку мегафункций, включая функции из библиотеки параметризуемых модулей (LPM) версии 2.1.0, в директории \maxplus2\max2lib\mega_lpm, созданной во время инсталляции.
Для просмотра файла, содержащего логику мегафункции, укажите символ мегафункции в графическом редакторе или ее имя в текстовом редакторе и выберите Hierarchy Down(меню File).
Мегафункции Мегаядра- предварительно проверенные HDL файлы для сложных функций системного уровня, которые можно приобрести у Altera. Они оптимизированы под архитектуры FLEX 10K, FLEX 8000, FLEX 6000, MAX 9000, и MAX 7000 устройств. Мегафункции Мегаядра состоят из нескольких файлов. Файл для последующего синтеза используется для реализации проекта (подгонки) в заданном устройстве. Кроме этого прилагаются VHDL или Verilog HDL функциональные модели для проектирования и отладки со стандартными EDA средствами моделирования.
Altera поставляет библиотеку мегафункций, включая любые приобретаемые мегафункции Мегаядра в директории \maxplus2\max2lib\mega_lpm, созданной во время инсталляции.
Если Ваш код доступа для мегафункции Мегаядра содержит разрешение просмотра источника файла проекта, Вы можете просмотреть его, указывая символ мегафункции в графическом редакторе или имя в текстовом редакторе и выбирая Hierarchy Down(меню File).
MAX+PLUS II предлагает большое разнообразие мегафункций, включаяLPMфункции а такжепараметризуемыефункции.
Ниже приводится список мегафункций.
Таблица 9. Мегафункции логических вентилей
-
lpm_and
lpm_inv
lpm_bustri
lpm_mux
lpm_clshift
lpm_or
lpm_constant
lpm_xor
lpm_decode
mux
busmux
Таблица 10. Мегафункции арифметических компонентов
-
lpm_abs
lpm_counter
lpm_add_sub
lpm_mult
lpm_compare
Таблица 11. Мегафункции запоминающих компонентов
-
csfifo
lpm_ram_dq
csdpram
lpm_ram_io
lpm_ff
lpm_rom
lpm_latch
lpm_dff
lpm_shiftreg
lpm_tff
Таблица 12. Другие мегафункции
-
clklock
pll
ntsc
Таблица 13. Мегафункции мегаядра
-
a16450
a8255
a6402
fft
a6850
rgb2ycrcb
a8237
ycrcb2rgb
a8251
Ниже приводится описание наиболее часто применяемых мегафункций. Полные сведения по всем мегафункциям можно найти в системе помощи (меню Help, команда Megafunctions/LPM).
lpm_and(вентиль И)
Altera рекомендует использовать примитивы вентилей И или их операторы вместо lpm_and для более легкой реализации и улучшения времени компиляции. Тем не менее lpm_and могут быть полезны при необходимости иметь параметризуемые входы.
Прототип функции
FUNCTION lpm_and
(data[LPM_SIZE-1..0][LPM_WIDTH-1..0])
WITH (LPM_WIDTH, LPM_SIZE)
RETURNS (result[LPM_WIDTH-1..0])
Порты :
Таблица 14. Порты входа
Имя порта |
Необходим |
Описание |
Комментарии |
data[][] |
Да |
Вход данных в вентиль И |
Размер порта LPM_SIZE x LPM_WIDTH |
Таблица 15. Порты выхода
Имя порта |
Необходим |
Описание |
Комментарии |
result[] |
Да |
Побитовое И. |
Размер порта LPM_WIDTH. |
Параметры
Параметр |
Тип |
Необходим |
Описание |
LPM_WIDTH |
Целый |
Да |
Ширина портов data[][] и result[]. Количество AND вентилей. |
LPM_SIZE |
Целый |
Да |
Количество входов в каждый AND вентиль. Количество входных шин. |
Таблица 16. Функции вентилей "И"
Входы |
Выходы |
data[LPM_SIZE-1]_[LPM_WIDTH-1] |
result[LPM_WIDTH-1] |
0XXX... |
0 |
X0XX... |
0 |
XX0X... |
0 |
... |
... |
1111... |
1 |
Используемый ресурс:
Простые вентили lpm_and используют приблизительно одну логическую ячейку на вентиль.