pushing gray code asynchronous FIFO example