Patent ID: 7317777

Claim:
An adaptive control loop, comprising: one or more latches, coupled to a first clock, for digitally sampling a received data stream at predefined intervals to produce a data set; an edge detector, coupled to said one or more latches, for estimating when logic transitions occur in the data set; a digital filter, coupled to the edge detector, for detecting a timing trend represented by the estimated logic transitions, wherein the timing trend is based on movement of the estimated logic transitions, wherein the digital filter is a state machine, wherein the digital filter includes a digital flywheel for providing timing trend data to a frequency adjustor in the absence of binary logic transitions over an extended period, wherein the digital filter controls loop gain by providing a variable response to varying degrees of long-term movement of detected edges, wherein if a trend is detected, the digital filter determines the direction and magnitude of the trend, wherein if an edge moves very little, the digital filter indicates little adjustment, and wherein an edge moves shows a trend with a larger movement, the digital filter indicates a larger adjustment, wherein when the digital filter detects long-term trends of edge movement, the digital filter sets a loop gain to remove any trends, and wherein the digital filter does not react to high-frequency changes in detected edges that are likely to be noise signals; and wherein the frequency adjustor is coupled to the digital filter and to the first clock, for adjusting a frequency of the first clock so that the timing trend averages approximately zero over a plurality of logic transitions, wherein the frequency adjustor variably adjusts the frequency of the first clock at increasingly larger increments in response to increasingly larger magnitudes of the detected timing trend, wherein the frequency of the first clock approximates a frequency of a second clock, and wherein adjustment of the first clock enables deserialization of a received serial data stream transmitted using the second clock.