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

ПРЕДОПРЕДЕЛЕННЫЕ ФУНКЦИОНАЛЬНО-ЗНАЧНЫЕ АТРИБУТЫ


Целый, перечислительный и физический типы имеют позиционный номер, связанный с каждым значением типа. Позиционный номер первого значения в перечислительном типе - нуль; каждый следующий знак имеет позиционный номер на единицу больше, чем предшествующий. Например, позиционный номер значения true в типе boolean равен 1; позиционный номер '1' в типе character равен 49 ( в соответствии с его ASCII кодом ); позиционный номер элемента '1' в типе bit равен 1. Позиционные номера определяют упорядоченность значений типа. Выражение отношения 'A'<'Z' (со значением true ) имеет смысл, потому что 65 ( позиционный номер элемента 'A' в типе character ) меньше, чем 90 ( позиционный номер 'Z'). Имеет также смысл говорить о последователях и предшественниках элемента; '1' следует за '0' в типе bit, а yellow предшествует green в типе color. Функционально-значные атрибуты 'pos и 'val используются для преобразования значения типа в соответствующий позиционный номер и наоборот. Ниже приведены выражения, результат которых булевого типа и равен true. ... severity'pos(ERROR)=3... ...color'val(3)=green... ...color'val(severity'pos(ERROR))=green... Функции 'pred и 'succ возвращают элементы, чьи позиционные номера на единицу больше или на единицу меньше, чем у аргумента. ...color'succ(orange) = yellow ... ...color'pred(indigo) = blue ... ...bit'succ('1')...--ОШИБКА: 'succ не определен для bit'high Рассмотрим подтипы типа, использующие общие позиционные номера, а также функции 'succ и 'pred c общим родителем: subtype reverse_caps is character range 'Z' downto 'A'; variable backward:reverse_caps; variable forward: character; . . . ...character'pos('H')=72... ...reverse_caps'pos('H')=72... . . . forward:=backward; ...character'succ(forward)=reverse_caps'succ(backward) ... Кроме того определяются две добавочных функции, учитывающих направления подтипа. Функция 'rightof отличается от 'succ, а 'leftof от 'pred в случае, когда подтип имеет убывающий диапазон: ...character'rigtof('B')='C'... ...reverse_caps'rightof('B')='A'... Все эти функции определяются также для целых и физических типов. Значение целого совпадает с его позиционным номером; позиционный номер значения физического типа является целым числом, представляющим соответствующее количество базовых единиц. if Oranges'pos(Seville) > Apples'pos(McIntosh)... function"*"(I:current;R:resistance) return voltage is begin return nv*(real(current'pos(I)*real(resistance'pos(R))*1.0-0 ); end;



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