Базовые понятия языка и архитектура программ
Основные понятия языка, синтаксические конструкции и типы данных содержат две составляющие — общеалгоритмическую (свойственную большинству обычных алгоритмических языков) и проблемно-ориентированную.
Общеалгоритмическая составляющая языка достаточно традиционна и содержит как традиционные операторы действия (присвоения, условия, выбора, цикла и вызова процедуры), так и традиционные типы данных: числовые, логические, символьные, перечислительные и агрегатированные (массивы, записи и файлы). Синтаксис рассмотрен несколько позже.
С точки зрения структурной организации программы, на языке VHDL используют следующие основные термины и понятия. Любой проект образуется из одного или нескольких объектов — Entity. Каждый объект проекта имеет объявление интерфейса объекта — Entity Declaration и описание архитектурного тела объекта —Architecture body. Entity Declaration содержит имя объекта и его интерфейс (входы и выходы). Architecture body содержит описание структуры или поведения объекта. Верхний уровень проекта описывается через объекты верхнего уровня; если устройство иерархично, то описания объектов верхнего уровня содержат в себе обращения к компонентам более низкого уровня, которые описываются как самостоятельные объекты нижнего уровня. В свою очередь, объекты нижнего уровня могут связываться с объектами еще более низкого уровня. Для определенности функционирования системы независимо от числа уровней иерархии все объекты нижних уровней иерархии должны иметь описание, определяющее их функционирование. Один и тот же объект может иметь несколько архитектурных тел (естественно, что при моделировании поведения системы или при ее синтезе специальные средства конфигурирования обеспечивают выбор единственного варианта поведения).Для часто используемых описаний, констант, типов данных используется понятие объявления пакета, при создании собственных (пользовательских) процедур или функций необходимо их интерфейс привести в объявлении пакета, а их содержательную часть (описание) включить в состав тела пакета. Механизм пакетов исключительно важен для создания типов данных, одинаково воспринимаемых и понимаемых различными объектами программы, поскольку в языке VHDL используется очень строгая типизация данных и смешение различных данных в одном выражении является ошибкой.
Проблемно-ориентированными и поэтому наиболее важными средствами и понятия ми языка VHDL являются:
• средства описания иерархии проекта для описания структуры и/или поведения отдельных объектов проекта;
• средства задания и описания параллелизма для выполняемых действий и операторов;
• понятие сигнала для физических объектов, имеющих временное измерение для своих значений и средства для работы с ними.
Иерархическое построение описания системы в языке VHDL. является развитием традиционного иерархического подхода и отличается тем, что распространяется не только на описание поведения, но и на описание структуры системы. Архитектурное тело описывает поведение объекта или его структуру. Внутри архитектурного тела может быть и смесь структурного описания с поведенческим. Специальные синтаксические конструкции могут описывать интерфейс структурной компоненты объектов соединение компонентов между собой, создание фрагмента структуры или конкретизации конфигурации. То, что описанию архитектуры предшествует описание интерфейса объекта, не является существенным отличием языка VHDL и аналогично (в определенном смысле) описанию прототипа в языке СИ.
Наиболее важным свойством языка VHDL является понятие параллелизма выполнения действий. Параллелизм начинается с введения понятий процесса и охраняемого блока и распространяется при определенных условиях на такие традиционно последовательные операторы, как вызов процедуры и оператор присвоения. для управления параллелизмом естественно введение операторов, задающих момент запуска и операторов, задерживающих момент запуска.
Третьей важнейшей особенностью языка VHDL является введение физического типа данных. Понятие сигнала отражает основные свойства реальных входных и выходных данных проекта. Среди различных свойств сигналов важнейшими представляются временные характеристики таких данных и, прежде всего, наличие у них прошлого, настоящего и будущего состояний. Специфические свойства сигналов потребовали введения понятия "назначение значения сигнала" (<=), основное отличие которого от понятия "присвоение значения переменной" (:=) состоит в задержке изменения состояния сигнала до тех пор, пока не будут подготовлены результаты преобразования во всех одновременно инициированных процессах, и лишь после этого допустимо изменение значений сигналов с учетом временных требований к их формированию.