Be aware that, with ieee.numeric_std, 32bits_vector + 32bits_vector = 32bits_vector the 33th bit (which is carry) is simply forgotten I have already face to : http://www.alteraforum.com/forum/showthread.php?t=21027&p=180870#post180870
In standard package, Integers are numbers from –2147483648 to +2147483647 (Be carefull
dwh@ovro.caltech.edu ;-))
Be aware in
--- Quote Start ---
async : process(subIncRot, subSubRot)
--- Quote End ---
Quartus will ignore the sensitivity list (= (subIncRot, subSubRot)), and take as sensitivity all "input" signals.
In your case, it doesn't change the behaviour.
--- Quote Start ---
UNSIGNED(buffRot) is a 32-bit unsigned value
--- Quote End ---
Wrong, UNSIGNED(buffRot) will give exactly the same vector, it is just interpreted as unsigned for operations (mostly comparisons, multiplications)
BUT "TO_INTEGER" gives a 32bits vector by the compiler.