Язык VHDL особенно хорошо подходит для проектирования с программируемыми логическими устройствами, и это получает распространение.
При проектировании логических программируемых приборов (ПЛИС) и (программируемых пользователем вентильных матриц с большей емкостью от 500 до более 100000 вентилей, для быстрого и эффективного завершения проекта инженеры не могут использовать булевы уравнения или описания на уровне вентилей. Язык VHDL обеспечивает конструкции языка высокого уровня, которые дают возможность разработчикам описывать большие схемы и быстро готовить изделия для реализации.
Этот язык поддерживает создание библиотек проектов, чтобы сохранить компоненты для многократного использования в последующих проектах. Так как язык VHDL является стандартным языком, он обеспечивает переносимость кода между инструментальными средствами синтеза и моделирования и машинонезависимое проектирование.
Язык VHDL также облегчает преобразование проекта от программируемой логики к реализации специализированных интегральных схем.
Программируемые логические устройства высокой плотности, включая логические программируемые приборы и программируемые пользователем вентильные матрицы, могут использоваться для интеграции большого количества логики в одной интегральной схеме.
Заказные и полузаказные специализированные интегральные схемы устройства также используются для интегрирования большого количества цифровой логики, но и обеспечивают дополнительную гибкость: они могут использоваться с более жесткими календарными планами, для изделий с малым тиражом и для опытных экземпляров серийных изделий. Они также привлекательны для проектов, требующих низкие издержки для неповторяемого проектирования.
Языки описания аппаратуры (Hardware Description Language) обеспечивают формальную запись, которая может быть использована на всех этапах разработки цифровых электронных систем. Это становится возможным вследствие того, что язык легко воспринимается как машиной, так и человеком. Он может использоваться на этапах проектирования, верификации, синтеза и тестирования аппаратуры также, как и для передачи данных о проекте, для модификации и сопровождения.
Существует несколько разновидностей этих языков: AHDL, VHDL, VerilogHDL, Abel и др. Известны также случаи использования стандартных языков программирования, например Си, для описания структуры БИС.
Ряд языков описания аппаратуры (AHDL, Abel) предназначены для описания систем на ПЛИС, другие появились изначально как средство моделирования цифровых систем, а затем стали применяться для их описания.
На языке VHDLвозможны как поведенческое, так и структурное, а также потоковое описания цифровых схем. Это означает, что язык VHDL поддерживает три различных стиля описания аппаратных архитектур.
Первый стиль из них - структурное описание, в котором архитектура представляется в виде иерархии связанных компонентов.
Второй стиль - потоковое описание (описание данных), в котором архитектура представляется в виде множества параллельных регистровых операций, каждая из которых управляется вентильными сигналами. Потоковое описание соответствует стилю описания, используемому в языках регистровых передач.
И, наконец, третий стиль - поведенческое описание, в котором преобразование описывается последовательными программными предложениями, похожими на имеющиеся в любом современном языке программирования высокого уровня предложениями. Все три стиля могут совместно использоваться в одной архитектуре.
Структурное и потоковое описания используются в основном для проектирования цифровых схем, поведенческое - только для моделирования этих схем, так как содержит конструкции, которые невозможно реализовать в виде схемы.
Наиболее важными в языке VHDL являются понятия параллелизма и иерархии.
В VHDL описании, как и в любой модели, отражаются только некоторые аспекты (характеристики) реальной системы.
Цифровую аппаратуру характеризуют, например, такие аспекты, как
1) функциональный (реализуемая функция);
2) временной (задержки, производительность, время отклика);
3) структурный (схемы, типы и связи компонент);
4) надежностный (время наработки на отказ);
5) конструктивный (вес, габариты);
6) стоимостной и т. д.
Язык VHDLсодержит средства, позволяющие отобразить только первые
три аспекта: функциональный, временной и структурный (рис. 5).
Функция (поведение) аппаратуры может детализироваться от уровня системы команд и алгоритмов устройств до булевых функций, структура - от уровня устройств типа процессор - память до уровня вентилей и переключающих элементов, время - от задержек фронтов сигналов (нано - и фемто-секунды) до тактов и задержек электромеханических устройств (секунды и часы).
Поведение (алгоритм)
команды алгоритм устройства микрооперации булевы функции Структура вентили регистры устройства переключатели базовые элементы микросхемы ЭВМ и ВС фронты сигналов микротакты тактыВремя
Рис. 5. Возможности VHDL в области отображений характеристик (аспектов) аппаратуры
Степень детализации аспектов, отображаемых в описаниях аппаратуры, определяется конкретными задачами. Например, описание некоторой микропроцессорной системы может строиться как описание структуры, состоящей из микросхем БИС и СИС, а описание самих микросхем строиться как поведенческое, так как их описание на вентильном уровне либо отсутствует, либо слишком громоздко.
Любой язык базируется на разнообразных конструкциях (словах, массивах, переменных, константах, выражениях и т.д.).
В языке VHDL в качестве конструкций выступают объекты, проекты, иерархии, архитектурные тела, пакеты, тела пакетов и др.
Объект проекта представляет собой описание компоненты проекта, имеющей чётко заданные входы и выходы и выполняющей чётко определённую функцию.
Объект проекта может представлять всю проектируемую систему, некоторую подсистему, устройство, узел, стойку, плату, кристалл, макроячейку, логический элемент и т. п.
В описании объекта проекта можно использовать компоненты, которые, в свою очередь, могут быть описаны как самостоятельные объекты проекта более низкого уровня.
Таким образом, каждый компонент объекта проекта может быть связан с объектом проекта более низкого уровня. В результате такой декомпозиции пользователь строит иерархию объектов проекта, представляющих весь проект в целом. Естественно, что вся иерархия будет состоять из нескольких уровней абстракций. Такая совокупность объектов проекта называется иерархией проекта.
Каждый объект проекта состоит, как минимум, из двух различных типов описаний: описания интерфейса и описания одного или более архитектурных тел.
Интерфейс описывается в объявлении объекта проекта и определяет только входы и выходы объекта проекта.
Для описания поведения объекта или его структуры служит архитектурное тело.
Чтобы задать, какие объекты проекта использованы для создания полного проекта, используется объявление конфигурации.
В языке VHDL предусмотрен механизм пакетов для часто используемых описаний, констант, типов, сигналов. Эти описания помещаются в объявлении пакета.
Если пользователь использует нестандартные операции или функции, их интерфейсы описываются в объявлении пакета, а тела содержатся в теле пакета.
Таким образом, при описании цифровых схем на языке VHDL возможно использование пяти различных типов описаний:
1) объявление объекта проекта,
2) объявление архитектурного тела,
3) объявление конфигурации,
4) объявление пакета и
5) объявление тела пакета.
Каждое из описаний является самостоятельной конструкцией языка VHDL, любая конструкция может быть независимо проанализирована анализатором и поэтому получило название “модуль проекта”.
Модули проекта, в свою очередь, можно разбить на две категории:
1) первичные модули и
2) вторичные модули.
К первичным модулям относятся различного типа объявления, к вторичным - отдельно анализируемые тела первичных модулей.
Один или несколько модулей проекта могут быть помещены в один файл, называемый файлом проекта.
Каждый проанализированный модуль проекта помещается в библиотеку проекта и становится библиотечным модулем.
Данная реализация позволяет создать любое число библиотек проекта. Каждая библиотека проекта в языке VHDL имеет логическое имя (идентификатор). Фактическое имя файла, содержащего эту библиотеку, может совпадать или не совпадать с логическим именем библиотеки проекта.
Для ассоциирования логического имени библиотеки с соответствующим ей фактическим именем предусмотрен специальный механизм установки внешних ссылок.