Patent ID: 8261160

Claim:
A method of synchronizing data, the method comprising: receiving a serial data signal at a device, wherein the serial data signal operates independently of the device; oversampling the serial data signal to provide a plurality of samples distributed over bit periods of the serial data signal; filtering the samples to detect errors in the samples; correcting a detected error in a sample by inverting the bit value of the sample; and extracting a plurality of data bit values from the samples, wherein each data bit value is associated with one of the bit periods of the serial data signal; wherein the extracting comprises: receiving the samples into a register; applying a mask to a subset of the samples in the register centered around a bit position; identifying one of the data bit values in response to the applying the mask; and selectively adjusting the bit position in response to the applying the mask; and wherein the register is a first register, the mask is a first mask, the subset of the samples is a first subset of the samples, the bit position is a first bit position, the one of the data bit values is a first one of the data bit values, and the extracting further comprises: passing the samples from the first register to a second register; applying a second mask to a second subset of the samples in the second register centered around a second bit position, wherein the second bit position is determined based on the adjusted first bit position; and identifying a second one of the data bit values in response to the applying the second mask.