Я изучаю VHDL из книги в данный момент, и я смотрел на атрибуты типа, такие как 'BASE
и 'IMAGE(V)
и так далее.В книге были примеры использования атрибутов 'SUCC(V)
, 'PRED(V)
, 'RIGHTOF(V)
и 'LEFTOF(V)
, и их различия не очень ясны.
'SUCC(V)
возвращает значение после заданного значения и'RIGHTOF(V)
возвращает значение справа от заданного значения.То же самое с 'PRED(V)
и 'LEFTOF(V)
, но в другом направлении.
Я экспериментировал с этим кодом из моего GitHub .Я заметил, что 'SUCC(V)
и 'PRED(V)
возвращают значение в соответствии с порядком из базового типа, но атрибуты 'RIGHTOF(V)
и 'LEFTOF(V)
возвращают значение в соответствии с порядком подтипа.Например, рассмотрим следующий код из моего GitHub:
type vl is ('X', '0', '1', 'Z');
subtype v10 is vl range '1' downto '0';
report "vl'succ('1'): " & vl'image(vl'succ('1')); -- 'Z'
report "v10'succ('0'): " & vl'image(v10'succ('0')); -- '1'
report "vl'rightof('0'): " & vl'image(vl'rightof('0')); -- '1'
report "v10'rightof('1'): " & vl'image(v10'rightof('1')); -- '0'
Таким образом, подтип v10 имеет другой порядок, чем базовый тип vl.'RIGHTOF(V)
, кажется, учитывает порядок подтипов, а 'SUCC(V)
- нет.
Так что вопросы: есть ли другие различия между этими двумя?Книга также сказала, что 'RIGHTOF(V)
выполняет функцию с базовым типом подтипа.Почему тогда берется порядок из подтипа или что означает выполнение функции с базой подтипа?Информация взята из этой книги и со страниц 207-208.