1.1. Структура программы на vhdl. Её основные компоненты
Проект в системе проектирования на основе VHDL представлен совокупностью иерархически связанных фрагментов, называемых проектными модулями. Форма представления модулей может быть различной – схемотехнической или текстовой. В нашем случае будем исходить из задания модулей на языке VHDL.
Проект в целом или его самостоятельная часть называются ENTITY (сущность). Для определения сущности необходимо создать первичный модуль – декларацию ENTITY, и подчиненный этому модулю вторичный модуль – архитектурное тело. Декларация ENTITY – определяет имя некоторого объекта проектирования (целостного проекта или его автономной части), а также, необязательно, его интерфейс, т. е. порты и параметры настройки. Подчиненное этой декларации архитектурное тело описывает тем или иным способом функционирование объекта проектирования, объявленного декларацией, и (или) его структуру. Каждой декларации ENTITY может быть сопоставлено одно или несколько архитектурных тел, каждое из которых описывает одну из возможных реализаций объекта, и каждому из которых присваивается собственное имя. Для определения, какие архитектурные тела из числа имеющихся в библиотеке будут использованы на определенном этапе проектирования, существует специальные средства конфигурации [2]. Первичные и соответствующие им вторичные модули могут сохраняться в различных файлах или записываться в одном файле. Важно лишь, чтобы они были скомпилированы в общую проектную библиотеку, причем первичный модуль компилируется раньше подчиненного ему вторичного. При записи первичного и вторичного модуля в одном файле первичный модуль записывается ранее соответствующего ему вторичного.
Типовой текст программы на языке VHDL представляет произвольный набор первичных и вторичных модулей, причем каждому первичному модулю может предшествовать указание на библиотеки и пакеты, информация из которых используется для построения этого модуля. Пакет – это набор объявлений вводимых пользователем типов, переменных, констант, подпрограмм и т. п.
Рассмотрим проект, заключающийся в создании ИС, содержащей модуль, приведенный на рис.1.1. и соответствующий реализации логической функции 2(3И)-2ИЛИ. Ввиду тривиальности фрагмента сразу проанализируем структуру и основные разделы программы-образца (листинг 1.1).
Рис. 1.1. Схема исследуемого устройства
Как и большинство программ на языке VHDL эта программа начинается с раздела декларации используемых библиотек. Здесь объявляется системная библиотека (ieee.lib) и определяется использование (USE) содержащихся в ней пакетов: std_logic_1164 (содержит определение логических преобразований в многозначной логике), и textio (ввод и вывод сообщений).
Листинг 1.1 Описание простого логического устройства
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE std.textio.ALL;
ENTITY lab1 IS
GENERIC (delay : time := 5 ns);
PORT (
x0 : IN std_logic;
x1 : IN std_logic;
x2 : IN std_logic;
z : OUT std_logic
);
END lab1;
ARCHITECTURE test OF lab1 IS
BEGIN
z <= (x0 AND (NOT x1) AND x2 ) OR
(x0 AND (NOT x1) AND (NOT x2) ) ;
END ARCHITECTURE test;
Следующий раздел программы – декларация ENTITY – объявляет имя проекта или описываемого в данном фрагменте модуля, параметры настройки GENERIC (подробнее рассмотрим далее), имена и типы портов, т.е. данных, подаваемых на входы x0, x1, x2 (IN), и формируемых на выходе z (OUT). Если модуль является вершиной иерархии в проекте, то его имя должно совпадать с именем файла, включающего его (на случай необходимости автономной отладки внутренних модулей проекта целесообразно этого правила придерживаться всегда). Если выводов во внешнюю среду не предусмотрено, т.е. описываемый блок внутренне закончен и определен, поле декларации внешних соединений модуля может отсутствовать (см. примеры в разделах 3 и 4) . Параметры настройки рассматриваются как константы внутри модуля, но могут модифицироваться при включении такого модуля в иерархический проект или передаваться в модули более низкого уровня.
Данные, поступающие на вход модуля и выходящие из него, в терминологии языка VHDL являются сигналами (в терминологии САПР QuestaSim или ModelSim фирмы Model Technologies версий старше 5.8 – объектами).
Архитектурное тело заключается между выражением “ARCHITECTURE <имя архитектурного тела>” и выражением “END ARCHITECTURE<имя архитектурного тела>”. В декларации архитектурного тела обязательно указывается имя соответствующего первичного ENTITY.
Архитектурное тело программы 1.1 реализует поведенческое представление проектируемого устройства. Функционирование устройства в рассматриваемом примере задается параллельным оператором присваивания выходному сигналу значения, являющегося логической функцией входных сигналов.
- 1.1. Структура программы на vhdl. Её основные компоненты
- Практикум по теме
- 1.3. Контрольные вопросы
- 2. Представление комбинационных схем
- 2.1. Параллельные и последовательные операторы
- Переменные и сигналы
- 2.3. Данные, выражения и их интерпретация в цифровом устройстве
- Типичные ошибки при представлении комбинационных схем на vhdl
- Практикум по теме
- 2.5. Контрольные вопросы
- 3. Структурное представление устройств
- 3.1. Структура и поведение
- 3.2. Описание структур на языке vhdl
- 3.3. Практикум по теме
- 3.4. Контрольные вопросы
- 4. Описание и синтез последовательностных схем
- 4.1. Триггеры и регистровые схемы
- 4.2. Практикум по теме
- 4.3. Контрольные вопросы:
- 5. Описание и синтез автоматов
- 5.1. Классические понятия цифровых автоматов
- 5.2. Инженерный подход к проектированию цифровых автоматов
- 5.3. Практикум по теме
- 5.4. Контрольные вопросы
- 6. Проектирование операционных устройств
- 6.1. Методы построения операционных устройств
- 6.2. Основные этапы проектирования цифровых устройств
- 6.3 Пример проектирования
- 6.4. Имплементация и отладка проектов
- 6.5. Практикум по теме
- Рекомендуется придерживаться следующего порядка работы:
- 6.4. Контрольные вопросы
- I. Описание системы моделирования
- 1. Краткое знакомство с системой меню
- Окно библиотеки проекта – содержит список доступных библиотек пользователя и файлов, включенных в проект
- Примерный порядок работы в системе QuestaSim V.6.5/6.6
- 4. Компиляция и синтаксическая отладка
- 5. Моделирование
- II. Описание системы имплементации проектов в плис
- 2.1. Типовая последовательность выполнения работы.
- 2.2. Процесс моделирования работы узлов средствами пакета Quartus II
- Работа в редакторе временных диаграмм
- III. Создание программ, описывающих автоматы
- Рекомендованные номера контактов для проекта
- 3.2. Таблица соединений платы Cyclone II Starter Board.