В чем разница между атрибутами типа VHDL 'SUCC /' PRED и 'RIGHTOF /' LEFTOF? - PullRequest
0 голосов
/ 28 ноября 2018

Я изучаю 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.

...