fifo design
Hi,
The reason for changing 1 bit at a time is not just reducing time constraints, it is also to simplify error correction problems.
E.g compare increasing from '00111' -> '01000' with using Gray code '00111' -> '01111'.
If any error occurs, it would be immediately seen EXCEPT when '00111' -> '00110' or using grey code '00111' -> '00110' (decreasing state).
Since only 1 bit changes at a time, for Gray code, the chance for an error to happen (due to timing issues) could be considered lower.
Also, an error can also be easily detected using Gray code to check if 2 bits change instead, thus making error correction designs simpler.
Whether we really need to translate to binary I think depends on the design. It doesn't seem necessary to me if only the machine has to read/write data to it.