Язык описания аппаратуры VHDL

    Первоисточник

    Введение

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