- •Проектирование цифровых устройств на плис
- •Содержание
- •Список сокращений, условных обозначений и терминов
- •Введение
- •1 Обзор существующих пакетов проектирования цу на плис
- •Программные средства фирмы Xilinx
- •1.2 Моделирование цифровых устройств и разработка плис в
- •Системы разработки фирмы Altera
- •2 Система проектирования
- •2.2.2 Создание нового проекта
- •2.2.3 Проектирование цифрового устройства
- •2.2.4 Создание элемента в MegaWizard Plug-In Manager.
- •2.2.5 Создание исходных данных для проектирования устройства.
- •2.2.6 Компиляция проекта
- •2.2.7 Верификация проекта
- •2.2.8 Задание для самостоятельной разработки
- •Общие сведения о языке описания аппаратуры ahdl
- •Элементы языка ahdl
- •Управление синтезом.
- •Использование чисел и констант в языке ahdl
- •Комбинационная логика
- •Описание цифровой схемы на языке ahdl
- •Задание для самостоятельной разработки
Комбинационная логика
Как известно, логическая схема называется комбинационной, если состояния выходов являются только функциями входов независимо от момента времени. Комбинационная логика в языке AHDL реализована булевыми выражениями и уравнениями, таблицами истинности и большим количеством макрофункций. В число примеров комбинаторных логических функций входят дешифраторы, мультиплексоры и сумматоры.
Реализация булевых выражений и уравнений
Булевы выражения – это множества узлов, чисел, констант и других булевых выражений, выделяемых операторами, компараторами и, возможно, сгруппированных в заключающих круглых скобках. Булево уравнение устанавливает равенство между узлом или группой и булевым выражением.
В качестве примера приведён файл boole1.tdf, в котором даны два простых булевых выражения, представляющих два логических элемента.
SUBDESIGN boole1
(
a0, a1, b : INPUT;
out1, out2 : OUTPUT;
)
BEGIN
out1 = a1 & !a0;
out2 = out1 # b;
END;
Здесь выход out1 получается в результате логической операции И, применённой ко входу a1 и инвертированному входу a0, а выход out2 получается в результате применения логической операции ИЛИ к выходу out1 и входу b. Поскольку эти уравнения обрабатываются одновременно, последовательность их следования в файле не важна.
Объявление NODE (узел)
Узел, который объявляется в секции переменных VARIABLE в объявлении NODE, можно использовать для хранения промежуточных выражений.
Это полезно делать, если булево выражение повторяется несколько раз и его целесообразно заменить именем узла. Файл boole1.tdf можно переписать по-другому.
SUBDESIGN boole2
(
a0, a1, b : INPUT;
out : OUTPUT;
)
VARIABLE
a_equals_2 : NODE;
BEGIN
a_equals_2 = a1 & !a0;
out = a_equals_2 # b;
END;
Здесь объявляется узел a_equals_2, и ему присваивается значение выражения a1 & !a0. Использование узлов помогает экономить ресурсы устройств, если узел используется в нескольких выражениях.
Определение групп
Важным понятием AHDL является группа. Она может включать в себя до 256 элементов (бит), рассматривается как совокупность узлов и участвует в различных действиях как единое целое. В булевых уравнениях группа может быть приравнена булевому выражению, другой группе, одному узлу, VCC, GND, 1 или 0. В каждом случае значения группы разные.
Если группа определена, для краткого указания всего диапазона ставят две квадратные скобки [ ]. Например, группу a[4..1] можно кратко записать как a[ ].
Описание цифровой схемы на языке ahdl
О
пишем
проект из лабораторной работы №1 на
языке AHDL.
Для этого вначале создаётся проект, как
описано в первой лабораторной работе.
В качестве файла верхнего уровня задаётся
текстовый файл c
расширением .tdf.
Для этого выбираем в меню File
пункт New…
В появившемся окне (рисунок 2.24) выбирается
тип создаваемого файла – Text
Editor
file.
Рисунок 2.24 – Меню New
Затем, исходя из заданного булева выражения создаём в окне текстового редактора программу.
SUBDESIGN project2 % Задание символического имени подпроекта %
( % и объявление его входов и выходов %
A : INPUT; % Назначение ресурсов %
B : INPUT;
C : INPUT;
D : INPUT;
Y : OUTPUT;
)
BEGIN
Y = A & B & C & D -- Присвоение Y значения
# !A & !B & !C & !D -- булева ыражения
# A & !B & !C & D
# A & B & !C & !D
# !A & B & C & !D
# !A & B & !C & D
# !A & !B & C & D;
END; % Оператор окончания проекта %
С
охраним
данный документ как файл AHDL,
с расширением .tdf
(рисунок 2.25).
Рисунок 2.25 – Сохранение файла AHDL
Теперь
можно создать графическое изображение
символа, реализующего функцию, описанную
в файле project2.tdf.
Для этого выбирается пункт New…
из меню File,
где в уже знакомом меню (рисунок 2.24)
задаётся тип создаваемого файла –
Symbol
Editor
file.
В открывшемся символьном редакторе, с
помощью примитивов рисования создаётся
графическое изображение символа. При
этом следует задать контакты символа.
Для этого следует дважды кликнуть левой
кнопкой мышки в том месте, где предполагается
создать контакт. Появится окно (рисунок
2.26), в котором нужно указать имя контакта,
его тип (
вход
или выход), отображение его имени и
статус по умолчанию (используется или
нет).
Рисунок 2.26 – Окно задания контактов
П
роделав
эту операцию с каждым контактом символа,
получим изображение символа (рисунок
2.27).
Рисунок 2.27 – Создание символа в символьном редакторе
После того как символ создан, нужно сохранить его под тем же именем, что и файл его описания (project.tdf) с расширением .sym.
Т
еперь
можно создать графическое изображение
схемы используя созданный символ
(рисунок 2.28).
Рисунок 2.28 – Схема с новым символом
Теперь проект готов к компиляции.
Д
ля
тестирования временных параметров
нужно создать файл входных сигналов в
сигнальном редакторе. Подадим на вход
сигналы в порядке следования их в таблице
истинности данной схемы (рисунок 2.29).
Высокий уровень – 1, низкий – 0.
Рисунок 2.29 – Входные сигналы схемы
Теперь можно приступать к компиляции проекта и тестированию его выходных параметров.
Р езультаты, полученные во время компиляции и тестирования временных параметров (рисунок 2.30), говорят о том, что схема работает правильно и может быть реализована на ПЛИС фирмы Altera.
Рисунок 2.30 – Сигналы на входах и выходе схемы
