Типы
Назад | Cодержание | Следующая |
ТипыСигналы, переменные, константы и другие объекты языка VHDL служат для хранения некоторых значений. Эти значения могут быть присвоены объектам в одном месте и затем использованы в другом месте программы, как операнды в выражениях, функциях и т.п. Прежде чем остановиться на описании объектов, необходимо рассмотреть типы объектов. Не путать с объектом проекта — собственно, программой, описывающей интерфейс и алгоритм функционирования некоторой единицы проекта. Тип — это множество значений с общим признаком. VHDL — строго типизированный язык. Каждый объект объявляется со своим типом и может присваивать значение только данного типа. Соблюдение правил присваивания объектов и соответствия их типов требует дополнительных усилий программиста. Но благодаря этой особенности, программы VHDL имеют высокую надежность и обеспечивают экономию времени при отладке. Перечисляемый тип определяется как список (перечисление) всех возможных значений данного типа. Объявления этого типа выглядит как: type \имя типа\ is (\перечисляемый литерал\ Здесь текст в фигурных скобках может повторяться 0,1,2,… раз. Элементы списка литералов нумеруются при компиляции слева — направо, начиная с нуля. Например, объявление type \направление\ is (\налево\,\прямо\,\направо\); означает, что состояния идентификатора \направление\ будут кодироваться так, что \налево\ соответствует 0, \направо\ — 2. Целый тип. Объявление этого типа выглядит как: type \имя типа\ is range \диапазон целых\; где \диапазон целых\::=\выражение\ to\выражение\ Выражение целого типа в диапазоне должно быть вычислимо в период компиляции. Максимальный диапазон целых задается как: Тип с плавающей запятой определяется аналогично целому типу, но с диапазоном с плавающей запятой. Максимальный диапазон зависит от компилятора. Регулярный тип представляет собой множество элементов одинакового типа. Различают неограниченные и ограниченные регулярные типы. Неограниченный тип объявляется как: type \имя регулярного типа\ is где type \имя регулярного типа\ is Неограниченный регулярный тип применяют тогда, когда заранее неизвестен диапазон типа, например, в процедуре. Но на период компиляции или в момент исполнения программы диапазон объекта этого типа должен быть определен, например, при вызове процедуры с конкретным операндом. Представителя одномерного регулярного типа обычно называют вектором. VHDL допускает многомерные регулярные типы или многомерные массивы. В их определениях диапазоны индексов перечисляются через запятую, например: type matrix is array (integer range <>, integer range <>) of integer. Комбинированный тип определяет множество значений, как и регулярный тип, но эти значения могут быть разнотипными. Объявление комбинированного типа выглядит как: type \имя комбинированного типа\ is record Физический тип представляется целым числом, единица которого имеет вес единицы измерения некоторой физической величины. Наиболее распространенным физическим типом в VHDL является время tіme, которое измеряется в фемтосекундах (fs), пикосекундах (ps), наносекундах (ns) и т.д. Объекты физического типа, как правило, не синтезируются, но они могут участвовать как операнды в вычислениях констант других типов. Другие типы объектов. Особенными типами являются тип ссылки (access) и тип файла (file). Тип ссылки позволяет манипулировать с массивами переменных, объем которых заранее неизвестен и которые создаются, дополняются и ликвидируются динамически во время вычислений. Тип файла обеспечивает доступ к файлам, записанным в дисковой памяти. Его применяют для ввода-вывода исходных данных и результатов вычислений. Подтип. \подтип\::=subtype \имя подтипа\ is \базовый тип\ [\ограничение\]; Здесь \ограничение\ — диапазон или подмножество, в зависимости от базового типа. Подтип используют для отождествления группы объектов. С помощью подтипа можно обозначить группу объектов с особенными свойствами, чтобы потом было легче разбираться в программе. Ограничение подтипа позволяет выявить ошибки на этапе моделирования. Объекты разных подтипов, у которых один родоначальный, базовый тип, могут участвовать в вычислених без конфликтов типов. Предопределенные типы данных. type boolean is (false, true); type bit is ('0', '1'); type integer is range -2147483647 to 2147483647; subtype natural is integer range 0 to 2147483647; type bit_vector is array (natural range <>) of bit; Следует заметить, что тип integer покрывает все значения, представляемые 32-битовыми словами, кроме одного: -231 . Также определены: подтип positive, включающий положительные значения типа integer, тип character, как набор букв, цифр и знаков, включая буквы альтернативного алфавита,тип string, как одномерный регулярный тип из элементов типа character.
Анатолий Сергиенко |
Назад | Cодержание | Следующая |