An interface for sending write data, write control signals and write data
between a memory controller and a double data rate (DDR) memory with the
appropriate timing relationships so that the write data can be reliably
written in the DDR memory. Also, an interface for reliably capturing read
data received from the DDR memory during a read operation.