ВУЗ:
Составители:
10
Сигнал имеет текущее значение подобно переменной. Кроме этого, он имеет историю прошедших значений,
на которые можно ссылаться, а также множество будущих значений, которые будут получены от
формирователей сигналов. Новые значения для сигналов создаются предложениями назначения сигналов.
Файлы также являются хранилищами значений и формально определяются как объекты.
Каждый объект в описании должен ассоциироваться только с одним типом.
Тип объекта управления определяется множеством возможных значений и множеством разрешенных
операций. Тип создается выражением его объявления.
Имеются операции двух видов. Операции первого вида являются предопределенными (например, операторы
'+', '-' для значений целого типа integer и real). Другие операции явно кодируются в VHDL с помощью функций и
подпрограмм. Их можно отнести к пользовательским операциям.
Значение объекта данных определяется выражением в правой части предложения назначения. В состав
выражения могут входить константы, переменные, сигналы, операторы и указатели функций. Когда имя объекта
используется в выражении, то при расчете значения выражения учитывается его текущее значение. Значение
выражения имеет только один тип.
1.3.1. Скалярные типы
Скалярные (scalar) типы - это элементы, из которых конструируются все типы в VHDL. Базовое множество
скалярных типов является предопределенным. По мере необходимости разработчик может создать
дополнительные скалярные типы. В VHDL имеется четыре вида скалярных типов: целый тип, тип с плавающей
точкой, перечислительный тип (enumeration) и физический тип. Разработчик имеет возможность задавать
подтипы скалярных типов.
1.3.1.1. Целый тип
Объекты целого типа используются для представления абстрактных числовых значений. Тип integer является
предопределенным. Он охватывает все целые числа, ограниченные разрядностью слова компьютера.
Добавочные целые типы могут быть объявлены явно заданием диапазона значений, допустимых для
объектов данного типа. Рассмотрим несколько примеров объявлений целых типов.
type Apples is range 0 to 75;
type Oranges is range 0 to 75;
type Word_index is range 31 downto 0;
Диапазоны задаются либо убывающей, либо возрастающей последовательностью значений. Границы
диапазона могут быть произвольными выражениями. Рассмотрим, как объявляются объекты, использующие
эти типы.
variable Macintosh: Apples;
variable Seville,Valencia,av_oranges:Oranges := 10;
signal control_selector:Word_Index;
Константе должно быть присвоено значение в момент объявления. Аналогично начальное значение может
быть присвоено переменной.
Целые литералы (такие как -31523, 1, 212) могут быть использованы для представления значений любого
целого типа. Для формирования выражения может быть использована комбинация имен объектов, литералов и
операторов, как это сделано в следующих предложениях назначения:
av_oranges<=(Seville+Valencia)/2;
beta_level:=1-Alpha_level;
Все обычные арифметические операторы и операторы отношения являются предопределенными для целого
типа. Тем не менее, оба аргумента оператора должны быть одного типа.
if Seville > Macintosh ... -- НЕВЕРНО
Нельзя сравнивать объекты типов Аpples и Oranges. Предопределенный оператор ">" не работает с
операндами различных типов, даже если они имеют одинаковый диапазон.
Тем не менее, все целые типы и типы с плавающей точкой являются тесно связанными типами (closely
related types) и VHDL обеспечивает для этих типов преобразование (conversion) между любыми парами.
Допускается любое из следующих сравнений:
if Apples(Seville)>Macintosh...
if Seville>Oranges(Macintosh)...
Значение выражения одного типа преобразуется к значению тесно связанного типа указанием перед
выражением, заключенным в скобках, имени типа, к которому преобразуется выражение. При преобразовании
между типом с плавающей точкой и целым типом будет выполняться округление до ближайшего целого.
1.3.1.2. Тип с плавающей точкой
Объекты типа с плавающей точкой используются для представления абстрактных числовых значений. Тип
real является предопределенным. Он включает вещественные числа.
Страницы
- « первая
- ‹ предыдущая
- …
- 7
- 8
- 9
- 10
- 11
- …
- следующая ›
- последняя »