Clock domain crossing is where many real chips fail. Practice two-flop synchronizers, pulse synchronizers, Gray-coded pointers and asynchronous FIFOs, the standard ways to move signals between clocks.