How do clock crossing FIFOs work?
Dual clock ram is used to form a fifo. One clock domain writes the other reads. The tricky part is to tell when the fifo is full/empty. This can be achieved in various ways. One popular method is to use gray encoded counters. You can easily synchronize the count between clock domains because only one bit changes at a time.