Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лек 2 Типы VHDL_данных и их интерпретация при R...doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
287.23 Кб
Скачать

4 Вещественные типы

В языке VHDL также предусмотрена поддержка вещественных типов, используемых для представления математических действительных чисел.

Действительные числа нельзя представить непосредственно, поэтому вещественные числа это их аппроксимация, точность которой зависит от платформы. Согласно стандарту, точность вещественных чисел не должна быть менее шести знаков после запятой, а диапазон значений не должен быть уже, чем от -1.0E+38 до 1.0E+38. По умолчанию предоставляется единственный вещественный тип:

type real is range -1.0E+38 to 1.0E+38;

Для определения вещественных типов нужно задать границы диапазона допустимых значений и порядок следования значений в нем. При этом, правила для задания диапазонов значений идентичны рассмотренным ранее при обсуждении целочисленных типов.

<определение вещественного типа> ::=

range <простое выражение> [to | downto] <простое выражение>

К объектам вещественных типов могут быть применены некоторые арифметические операции. Это унарные операции:

  • тождественность (+A);

  • отрицание (-A);

  • взятие модуля (abs A).

А также это бинарные операции:

  • сложение (A + B);

  • вычитание (A - B);

  • умножение (A * B);

  • деление (A / B);

  • возведение в степень (A ** B).

Для всех бинарных операций оба операнда должны принадлежать одному и тому же вещественному типу. Однако, как и в случае целочисленных типов, исключением является операция возведения в степень, для которой второй операнд должен быть неотрицательным целым числом.

5 Физические типы

Физические типы языка VHDL предназначены для моделирования величин реального мира. Примером таких величин могут служить время, расстояние, сила тока и так далее.

Для определения физического типа, как и любого другого численного типа, требуется задать диапазон допустимых значений и порядок их следования, и, кроме того, необходимо указать первичную неделимую единицу измерения и, в случае необходимости, производные единицы измерения.

<определение физического типа> ::=

range <простое выражение> [to | downto] <простое выражение>

units

<идентификатор>;

{<идентификатор> = <литерал физического типа>;}*

end units <идентификатор типа>

Диапазон допустимых значений всегда соотносится с первичной единицей измерения. Все производные единицы связываются с первичной единицей посредством целочисленных коэффициентов. При этом следует учитывать, что объекты физических типов всегда хранят свое значение только в первичных единицах измерения.

В качестве примера можно рассмотреть определение предоставляемого по умолчанию физического типа, который используется для представления времени.

Для данного типа первичной единицей измерения являются фемтосекунды. Также для этого типа определено большое количество производных единиц, в частности: пикосекунды, наносекунды, микросекунды, миллисекунды, секунды, минуты и часы.

type time is range integer'low to integer'high

units

fs;

ps = 1000 fs;

ns = 1000 ps;

us = 1000 ns;

ms = 1000 us;

sec = 1000 ms;

min = 60 sec;

hr = 60 min;

end units time;

Диапазон допустимых значений для данного типа определяется платформой. Однако, довольно распространенной является практика определения диапазона значений для данного физического типа на основе диапазона, предоставляемого по умолчанию типа целое.

При работе с типом время используется механизм предельного разрешения. Причиной для этого служит то, что данный тип предназначается, в первую очередь, для представления модельного времени. Механизм предельного разрешения позволяет варьировать первичную единицу измерения для типа время. По умолчанию, первичной единицей измерения является фемтосекунда. В этом случае, если диапазон допустимых значений для типа время ограничен справа значением 2 147 483 647, то мы можем выполнить моделирование на протяжении, приблизительно, двух микросекунд. Однако, этого времени может быть недостаточно. Кроме того, при моделировании может не понадобиться высокая точность представления времени. В этом случае, применив механизм предельного разрешения, можно указать, что в качестве первичной единицы для типа время следует использовать наносекунды. Тогда, имея такое же ограничение правой границы диапазона допустимых значений типа время, можно выполнить моделирование на протяжении, приблизительно, двух секунд.

Для задания физического литерала можно использовать любой целочисленный или вещественный литерал в совокупности с любой допустимой единицей измерения. При этом значение будет преобразовано к целочисленному, измеренному в первичных единицах. По мере необходимости будет выполнено округление, путем отбрасывания дробной части.

Например, определен следующий физический тип:

type voltage is range 0 to 1E06

units

mV;

V = 1000 mV;

end units voltage;

В таком случае литерал вида 2.75 V будет преобразован к 2750 mV.

К объектам физических типов можно применять ряд арифметических операций. Это общие для всех численных типов унарные операции:

  • тождественность (+A);

  • отрицание (-A);

  • взятие модуля (abs A).

Также к объектам физических типов применимы следующие бинарные операции:

  • сложение (A + B);

  • вычитание (A - B);

  • умножение (A * B);

  • деление (A / B).

Для выполнения операций сложения и вычитания необходимы два операнда одного и того же физического типа. Для операции умножения необходимо, чтобы второй её операнд был целочисленным или вещественным. Такое ограничение необходимо, так как умножение двух физических величин, принадлежащих одному типу, в общем случае не имеет смысла. В свою очередь, операция деления может принимать в качестве операндов:

  • два объекта физического типа – в этом случае результат целочисленный;

  • объект физического типа и объект целочисленного либо вещественного типа – в этом случае результат будет принадлежать физическому типу.