Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
mat_mod.docx
Скачиваний:
229
Добавлен:
22.02.2016
Размер:
807.96 Кб
Скачать

48. Регулярные типы в vhdl.

Сигналы, переменные, константы и другие объекты языка VHDL служат для хранения некоторых значений. Эти значения могут быть присвоены объектам в одном месте и затем использованы в другом месте программы, как операнды в выражениях, функциях и т.п. Прежде чем остановиться на описании объектов, необходимо рассмотреть типы объектов. Не путать с объектом проекта - собственно, программой, описывающей интерфейс и алгоритм функционирования некоторой единицы проекта. Тип - это множество значений с общим признаком. VHDL - строго типизированный язык. Каждый объект объявляется со своим типом и может присваивать значение только данного типа. Соблюдение правил присваивания объектов и соответствия их типов требует дополнительных усилий программиста. Но благодаря этой особенности, программы VHDL имеют высокую надежность и обеспечивают экономию времени при отладке.

Регулярный тип представляет собой множество элементов одинакового типа. Различают неограниченные и ограниченные регулярные типы. Неограниченный тип объявляется как:  type \имя регулярного типа\ is       array (\имя типа диапазона\range<>) of \имя типа элемента\; где <="" font="">- имя типа integer или какого-либо подтипа от integer.  Ограниченный регулярный тип объявляется как: type \имя регулярного типа\ is        array (\диапазон целых\ of \имя типа элемента\);

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

Представителя одномерного регулярного типа обычно называют вектором. VHDL допускает многомерные регулярные типы или многомерные массивы. В их определениях диапазоны индексов перечисляются через запятую, например: type matrix is array (integer range <>, integer range <>) of integer.

49. Физические типы в vhdl. Тип time.

Физические типы позволяют разработчику непосредственно выразить величины в физических единицахизмерения. В VHDL используется один физический тип - предопределенный физический тип TIME (время).Объявление физического типа задает множество единиц, определенных в терминах некоторой базовой единицы.В случае типа TIME базовой единицей является fs (фемтосекунда), а производными единицами являются ps, ns,us и так далее. Рассмотримопределениетипа TIME.

type TIME is range -(2**31-1) to 2**31-1

units

fs;

ps = 1000 fs;

ns = 1000 ps;

us = 1000 ns;

ms = 1000 us;

s = 1000 ms;

min = 60 s;

hr = 60 min;

end units;

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

объектами типа. Физические литералы, использующие любые из определенных имен для физических единиц,

будут автоматически преобразовываться к фемтосекундам.

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

САПР.

type resistance is range 0 to 2**31-1

units

nOhm;

uOhm =1000 nOhm;

mOhm =1000 uOhm;

Ohm =1000 mOhm;

end units;

type voltage is range -(2**31-1) to 2**31-1

units

nV;

uV =1000 nV;

end units;

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

Допускается умножение физического типа на число с плавающей точкой, в этом случае получается результат

физического типа. Эти идеи иллюстрируются в следующих примерах.

total_time := 1 ns + .039 s - min_time;

output_volts<=supply_volts-500mV after reset_duration+5 ms;

nom := .75* max;

function "*" (I:current; R:resistance) return voltage is

begin

return nV* ( real (I/nA)* real(R/nOhm)*1.0E-9);

end;

function "*" (R:resistance; I:current) return voltage is

begin

return nV * ( real ( I/ nA )* real(R/nOhm)* 1.0E-9);

end;

Каждое объявление функции перезагружает оператор умножения таким образом, что он будет выполняться,

когда перемножаются значения физических типов current и resistance. Результат должен быть физического типа

voltage.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]