此刻,我正在从书中学习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)
正在执行具有子类型基本类型的功能。那么为什么要从子类型开始排序,或者以子类型为基础执行功能是什么意思呢?该信息来自this书和第207-208页。