СПРАВОЧНИК ПО ЯЗЫКУ VHDL
4cab9ef0

ПОДТИПЫ СКАЛЯРНЫХ ТИПОВ


Если желательно, чтобы скалярный обьект принимал значения некоторого типа из ограниченного диапазона, то это может быть отражено в тексте проекта при помощи обьявления и использования подтипа. Предположим, к примеру, что разработчик желает создать сигнал А типа severity и что А может принимать только значения OKAY,NOTE и WARNING. type severity is (OKAY,NOTE,WARNING,ERROR,FAILURE); subtype go_status is severity range OKAY to WARNING; signal A: go_status; Обьявление подтипа определяет базовый тип (base type) и ограничение диапазона (range constraint). Любое значение, назначенное А,должно быть типа severity, который является базовым типом для А. Программа моделирования будет проверять, попадает ли значение в диапазон от OKAY до WARNING, в момент выполнения назначения. Если это не выполняется, то моделирование будет остановлено и будет выдано сообщение, описывающее это нарушение. Базовый тип и ограничение диапазона могут быть включены прямо в обьявление обьекта, если имеется немного обьектов, которые должны быть обьявлены с некоторым подтипом. Рассмотрим обьявление, эквивалентное обьявлениям подтипа и сигнала, приве- денным выше: signal A: severity range OKAY to WARNING; Выбор из двух методов для определения подтипов обьектов зависит от удобства. Так как операторы определяются для типов, а не для подтипов, то обьекты с общим базовым типом могут свободно использоваться в одном выражении. type Counter is range 0 to 100; subtype low_range is Counter range 0 to 50; subtype mid_range is Counter range 25 to 75; subtype hi_range is Counter range 50 to 100; variable low_count: low_range; variable mid_count: mid_range; variable hi_count: hi_range; . . . mid_count:=(hi_count + low_count)/2;



Содержание раздела