Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Перечислимый тип



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

type MVL is ('U','0','1','Z);

type MICRO_OP is (LOAD, STORE, ADD, SUB, MUL, DIV);

MVL – перечислимый тип с упорядоченным набором значений: 'U', '0', '1', и 'Z'. MICRO_OP имеет набор значений: LOAD, STORE, ADD, SUB, MUL, DIV. Порядок записи значений в декларации определяет лексику, т.е. значение справа всегда больше значения слева: STORE<DIV is true, SUB > MUL is false. Значения в перечислимых типах имеют позиционный номер. Позиционный номер самого левого элемента 0. Значения в перечислимых типах еще называют enumeration literals (литералы перечислимого типа). Например, в декларации:

type CAR_STATE is (STOP, SLOW, MEDIUM, FAST);

литералами являются STOP, SLOW, MEDIUM, FAST и только они могут присваиваться переменной CAR_STATE.

Целый тип Integer – целое, задает тип, набор значений которого находится в заданном целочисленном диапазоне, например:

type INDEX is range 0 to 15;

type WORD_LENGTH is range 31 downto 0;

subtype DATA_WORD is WORD_LENGTH range 15 downto 0;

type MY_WORD is range 4 to 6;

INDEX – это переменная целочисленного типа, набор значений которой размещен в диапазоне целых от 0 до 15. DATA_WORD – подтип WORLD_LENGTH в диапазоне от 15 до 0. В отличие от перечислимых в целочисленных типах позиционный номер равен величине значения, например, для значения 31 переменной WORD_LENGTH позиция равна 31.

Тип “с плавающей запятой”

Тип floating point обладает набором значений в заданном диапазоне вещественных чисел, например:

type TTL_VOLTAGE is range 1.4 to 5.5

type REAL_DATA is range 0.0 to 31.9;

Литералы типа floating point отличаются от целочисленных присутствием точки (.). В результате 0 – это целочисленный литерал, а 0.0 – это литерал типа с плавающей запятой.

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

type CURRENT is range 0 to 1 E9

units

nA; -- (base unit) nano-ampere

uA = 1000 nA; -- micro-ampere

mA = 1000 mA; --milli-ampere

Amp = 1000 mA; -- ampere

end units;

subtype FILTER_CURRENT is CURRENT range 10 mA to 5 mA;

Здесь CURRENT определен как физический тип, имеющий значения в диапазоне от 0 nA до 10^9 nA. Базовой единицей является наноАмпер, а все остальные являются производными. Позиционный номер значения равен числу базовых единиц, представленных данным значением, например, 2 mA имеют позиционный номер 2000, в то время как 100 nA занимают позицию 100. Физический литерал записывается как целое, за которым следует название единицы измерения (пробел обязателен).

Тип “массив”. Объект типа array состоит из элементов одного типа. Ниже даны примеры массивов:

type ADDRESS_WORD is array (0 to 63) of BIT;

type DATA_WORD is array (7 downto 0) of MVL;

type ROM is array (0 to 125) of DATA_WORD;

ADDRESS_WORD – одноразмерный массив из 64 элементов типа BIT. DATA_WORD – одноразмерный массив из 8 элементов типа MVL. ROM – массив из 126 элементов типа DATA_WORD, т.е. в данном случае имеем дело с массивом массивов.

Доступ к элементам массива осуществляется с помощью индексов, например, ADDRESS_WORD(26) ссылается на 27-ой элемент массива ADDRESS_WORD.





Дата публикования: 2015-03-29; Прочитано: 150 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.01 с)...