Часть 3. Возможности
(Окончание. Начало в №28)
Язык VHDL предназначен для описания проектов различной степени сложности - от простейшего вентиля до целой системы, состоящей из аппаратных и программных частей. Он позволяет строить модели на различных уровнях абстракции, выполнять имитационное моделирование и генерировать временные диаграммы, вести строгое документирование проекта, осуществлять синтез структуры по поведенческому описанию, верифицировать проект формальными методами, автоматически генерировать тесты.
VHDL создан на базе языка программирования ADA и наследует многие его свойства. Дополнительно в язык введены понятия модельного времени, сигнала, события, компонента и другие. Использование VHDL позволяет не привязывать проект заранее к конкретному физическому способу реализации, одна и та же логическая VHDL-реализация является источником генерации различных физических.
В основе языка лежат следующие принципы построения:
- поддержка функциональной декомпозиции (функциональная иерархия и рекурсия);
- поддержка структурной декомпозиции (структурная иерархия);
- представление системы в виде параллельно функционирующих взаимодействующих процессов;
- использование абстрактных типов данных;
- использование событийного моделирования;
- поддержка различных уровней абстракции и детализации представления проекта.
В соответствии с уровнями абстракции, язык допускает построение моделей трех типов:
- поведенческих,
- потоковых,
- структурных.
Для построения каждого типа моделей используется свое характерное подмножество средств языка.
Основные средства языка VHDL включают:
- библиотеки;
- модули: интерфейсы объекта проекта, архитектурные тела, конфигурации, пакеты, тела пакетов;
- подпрограммы: процедуры, функции;
- скалярные типы данных: перечисляемые, числовые, физические;
- составные типы данных: записи, массивы, файлы;
- объекты: константы, переменные, сигналы, порты, параметры настройки и другие;
- операции: логические, сравнения, арифметические;
- выражения;
- последовательные операторы: ожидания, утверждения, назначения сигнала, присваивания переменной, вызова процедуры, условный, селективный, цикла, возврата и другие;
- параллельные операторы: блока, процесса, параллельного вызова процедуры, параллельного утверждения, параллельного назначения сигнала, конкретизации компонента, генерации.
В качестве примера приведем структурную VHDL-модель простого проекта, выполняющего подсчет числа единиц во входном бит-векторе. Интерфейс объекта проекта (entity), именуемый Number_1, имеет вид
entity Number_1 is generic(N:Natural:=7; M:Natural:=3); port(X:in Bit_Vector(N downto 1); Y:out Bit_Vector(M downto 1)); end Number_1;
Он включает объявление двух параметров настройки (generic) N и M типа натуральный (Natural), имеющих значения по умолчанию 7 и 3, и объявление двух портов (port) X и Y типа массив бит (Bit_Vector), представляющих входной и выходной бит-векторы соответственно. Длина бит-векторов определена параметрически нисходящими диапазонами значений индексов N downto 1 для X и M downto 1 для Y. Объявление интерфейса объекта проекта завершается указанием его первоначального имени.
Структурная модель проекта с семибитовым входным и трехбитовым выходным векторами описывается VHDL-модулем "Архитектурное тело"
architecture Structure of Number_1 is component Adder port(a,b,c0:in Bit; s,c1:out Bit); end component; signal z1,z2,z3,z4,z5:Bit; begin C1: Adder port map(X(4),X(3),X(2),z1,z2); C2: Adder port map(X(7),X(6),X(5),z3,z4); C3: Adder port map(z3,z1,X(1),Y(1),z5); C4: Adder port map(z4,z2,z5,Y(2),Y(3)); end Structure;
Этот модуль architecture, именуемый Structure, содержит ссылку Number_1 на связанный с ним модуль entity. Модуль включает объявление (component) полного одноразрядного сумматора - компонента Adder с его входными (a,b,c0) и выходными (s,c1) портами типа Bit, а также объявление внутренних сигналов z1, z2, z3, z4, z5 того же типа. Ключевые слова begin и end обрамляют четыре параллельных оператора конкретизации компонентов с метками C1-C4. Каждый из операторов ссылается на объявление компонента Adder и связывает (port map) входные X(1)-X(7) и выходные Y(1)-Y(3) порты интерфейса объекта проекта, а также внутренние сигналы z1-z5 модуля архитектуры с формальными портами компонентов.
Первоначально VHDL создавался как язык описания цифровых (digital) схем, в последние годы выполнена большая работа по расширению языка на описание и моделирование аналоговых (analogue) схем. Принятие цифро-аналогового VHDL в качестве стандарта придаст языку принципиально новые возможности, увеличит его популярность, расширит сферы применения.
Анатолий ПРИХОЖИЙ,
доцент БГУИР, член IEEE
С откликами на статью просьба обращаться к ее автору по адресу: 220027 Минск, П.Бровки 6, БГУИР, кафедра ПОИТ.
P.S. Для более подробного знакомства с темой рекомендую ознакомиться с литературой, использованной при подготовке статьи:
1. IEEE Standard VHDL Language Reference Manual. New York, USA, 1988.
2. Courtois B., CAD and Testing of ICs and Systems: Where are we going? Journal of Microelectronics Systems Integration, Vol.2, No.3, 1994.
3. Fundamentals and Standards in Hardware Description Languages, J.Mermet ed., Kluwer Academic Publishers, 1993.
4. VHDL для моделирования, синтеза и формальной верификации аппаратуры. М., Радио и связь, 1995.
5. Армстронг Дж. Моделирование цифровых систем на языке VHDL. М., Мир, 1992.
Горячие темы