logo search
Пособие_VHDL

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 реализует поведенческое представление проектируемого устройства. Функционирование устройства в рассматриваемом примере задается параллельным оператором присваивания выходному сигналу значения, являющегося логической функцией входных сигналов.