In asynchronous FIFO design for clock domain crossing, why are "Gray-coded" pointers commonly used for the read and write pointers?
Correct! Well done.
Incorrect.
The correct answer is A) Because only one bit changes between consecutive Gray code values, this minimizes the risk that a multi-bit pointer sampled across clock domains is read as an intermediate, incorrect value, since at most one bit can be transitioning at a time
Correct Answer
Because only one bit changes between consecutive Gray code values, this minimizes the risk that a multi-bit pointer sampled across clock domains is read as an intermediate, incorrect value, since at most one bit can be transitioning at a time
When a pointer value is sampled by logic in a different clock domain, a standard binary counter could have multiple bits changing simultaneously, risking the receiver sampling an invalid intermediate value; Gray code's single-bit-change property ensures any sampled value is either the old or new value, never an invalid combination, when combined with per-bit synchronizers.