Приведены основы программирования на языке VHDL и особенности проектирования вычислительных устройств с помощью VHDL, ориентированных на реализацию в программируемых логических интегральных схемах. Рассмотрены методы разработки специализированных конвейерных вычислительных устройств и предложена методика их проектирования, основанная на VHDL. Приведено описание на VHDL проекта RISC-микропроцессора и цикл экспериментальных работ на его основе. Для студентов, аспирантов, преподавателей вузов и специалистов в области электроники, измерительной и вычислительной техники, связи.
он описывает внешний интерфейс объекта. Синтаксис объявления настроечной константы и объявления порта рассмотрены в разделе описания объектов и типов языка. Порты представляют собой интерфейсные сигналы объекта проекта. Объявленными в объекте могут быть. В исполнительной части, которая открывается словом . не влияют на поведение объекта. Наиболее частое применение этих операторов проверка соответствия входных сигналов, поступающих через порты, заданным требованиям или соответствие включения объекта в окружение, задаваемое ограничениями на настроечные константы . Например, проверяется время предустановки сигнала относительно фронта синхросерии, соответствие его уровней, разрядность входных данных и т. При несоответствии сигналов или настроечных констант, оператор . Рассмотрим пример объявления объекта . При единичных сигналах на обоих входах, т. Архитектура объекта Архитектура объекта представляет собой отдельную часть, в которой описано, каким образом реализован объект. Одному объекту проекта может соответствовать несколько архитектур, в каждой из которых описан один из вариантов реализации объекта. Поэтому имя объекта указывает, который из объектов описан в этом теле архитектуры. Объявление в теле архитектуры такое же, как в операторе блока, который описан ниже. Объявленные в теле архитектуры типы, сигналы, подпрограммы видимы только в пределах этой архитектуры. Исполнительную часть архитектуры составляют параллельные операторы, такие как процесс, блок, параллельное присваивание сигналу и др. Так как все операторы в исполнительной части тела архитектуры параллельные, их взаимный порядок безразличен. Хорошим стилем считается, когда параллельные операторы ставятся в последовательности, соответствующей нумерации вершин графсхемы алгоритма, реализуемого в архитектуре. Примером тела архитектуры служит архитектура для вышеприведенного объявления объекта . Если из объявления объекта удалить исполнительную часть и описание . Объявление компонента Объявление компонента в теле архитектуры необходимо, если в архитектуре используется оператор вставки этого компонента, который будет рассмотрен ниже. Синтаксис объявления компонента следующий. Затем декларации из пакета можно повторно использовать в различных частях проектов, ссылаясь на этот пакет. Многие пакеты стандартизированы и их использование упрощает разработку новых проектов, а также служит для стандартизации включения и тестирования этих проектов. Несколько пакетов, подчиненных одной цели, собирают в библиотеку . Библиотека, в которой собраны программы и пакеты пользователя, по умолчанию имеет название . Синтаксис объявления пакета. Обычно в объявлении пакета объявляются типы, используемые во всех объектах проекта или ряда проектов. Если объявлены процедуры и функции, то их спецификации описываются в теле пакета. объявление пакета представляет собой интерфейс пакета, также как объявление объекта это интерфейс объекта проекта. Константам может быть не присвоено значение. Такие константы называются отложенными . Например, это могут быть заранее неопределенная кодировка состояний или разрядность шин. Тогда эти константы должны получить значение в теле пакета. При обращении к объектам с одинаковым именем, принадлежащим разным библиотекам, необходимо использовать селективное имя объекта, указывающее, какой библиотеке оно принадлежит, например. Обычно объявление и тело пакета оформляют в одном файле. Тело пакета имеет синтаксис. Ниже приведен пример пакета функций и констант, который удобно применять для упрощения программирования логики с булевскими и битовыми типами. Для того чтобы в данной . Чаще всего это идентификатор библиотеки и идентификатор пакета в ней, разделенные точкой. Идентификатор название объекта, который должен быть видимым, символьный литерал символьное имя функции, например, . Например, чтобы были видимы функции сложения и вычитания из пакета . Объявление псевдонима имеет синтаксис. При этом бит сор. псевдоним можно присваивать типу. Например, если дать псевдоним . Часто псевдоним дают длинным селективным именам, которые обозначают объекты, принадлежащие различным библиотекам, как например. Псевдонимы поддерживаются многими компиляторами синтезаторами, но не в полном объеме. Не поддерживаются, например, псевдонимы процедур и функций. Метки в программе Выше отмечалось, что операторы цикла могут иметь метку, которая используется для организации вложенных циклов. Метка это идентификатор, уникальный в пределах данной программной единицы, который отделен от оператора двоеточием. Рекомендуется применять метки с большинством операторов в программе, что объясняется следующими причинами. В операторе процесса, блока и др. встречаются объявления констант, процедур и функций, которые видимы в пределах данного оператора. Чтоб они были видимы в другом месте, можно использовать описание . Операторы, такие как процесс, могут занимать большое количество строк текста. Тогда метка, поставленная в конце оператора, совпадающая с меткой вначале, служит закрывающей скобкой, по которой программист быстро найдет границу оператора. Такие операторы, как вставка компонента и блок, обязательно имеют метку. По этой метке с помощью объявления конфигурации можно подставить нужную реализацию компонента или блока, отличную от реализации, заданной в архитектуре проекта. При моделировании симулятор работает со скомпилированной программой, в которой всем параллельным операторам поставлены . Если у оператора не было метки, то симулятор ставит метку по своему усмотрению, например, номер строки. По этой метке программист ищет в модели переменные и сигналы, изменяемые в операторе. Поэтому удобнее это делать по метке, название которой по смыслу указывает на место в программе. При трансляции программы в логическую схему компиляторсинтезатор каждому параллельному оператору ставит в соответствие логическую схему или библиотечный компонент с именем, соответствующим метке оператора.