IP Library › Granted Patent US 12,658,899
Granted Patent B1
US 12,658,899 · App. 19/019,314 · Granted Jun 16, 2026

Efficient phase encoding for clock recovery

Inventors: Satya Someswara Kaushik Yanamandra (Gaithersburg, MD); Benjamin L. Heilmann (Southport, NC); Douglas Scott Shelton (Kingsville, MD)
Assignee: Cadence Design Systems, Inc.
H03K5/135H03K2005/00052H03K2005/00286
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,658,899
App. No.
19/019,314
Granted
Jun 16, 2026
Kind
B1
Abstract

Phase interpolation techniques for clock and data recovery in high-speed serial interfaces. A phase interpolator interpolates between four input clock signals phase-offset by 90 degrees to generate eight output clock signals phase-offset by 45 degrees. The phase interpolator includes primary and secondary mixers that adjust phase values using a mixed thermometer-binary encoding scheme. The primary mixers use most-significant-bit (MSB) thermometer bits for coarse steps and least-significant-bit (LSB) thermometer and binary bits for fine half-steps. The secondary mixers additionally employ boundary bits to maintain proper phase relationships across quadrant transitions. The encoding scheme can reduce routing complexity while preserving monotonic phase progression over the full 360-degree range.

Claims (128)

1 . A method for controlling a phase interpolator to interpolate input clock signals, the method comprising:

receiving four input clock signals phase-offset by 90 degrees to span 360 degrees;

at each primary mixer of two primary mixers, interpolating between a pair of the input clock signals by:

adjusting a phase value based on most-significant-bit (MSB) thermometer bits; and

adjusting the phase value based on least-significant-bit (LSB) thermometer bits and LSB binary bits;

at each secondary mixer of two secondary mixers, interpolating between a pair the of input clock signals by:

adjusting a phase value based on MSB thermometer bits and boundary bits; and

adjusting the phase value based on LSB thermometer bits and LSB binary bits; and

at each primary and secondary mixer:

generating a first output clock signal at the phase value of the respective mixer; and

generating a second output clock signal offset from the first output clock signal by 180 degrees,

thereby generating eight output clock signals phase-offset by 45 degrees to span 360 degrees.

2 . The method of claim 1 , wherein:

the MSB thermometer bits, the LSB thermometer bits, the LSB binary bits, and the boundary bits define a mixed thermometer-binary phase interpolator code;

the adjusting of the phase value based on the MSB thermometer bits comprises interpolating between phases of the pair of input clock signals by a number of steps based on a plurality of most-significant-bit (MSB) thermometer bits of the mixed thermometer-binary phase interpolator code;

the adjusting of the phase value based on the boundary bits comprises interpolating between phases of the pair of input clock signals by a number of steps based on a plurality of boundary bits of the mixed thermometer-binary phase interpolator code;

the adjusting of the phase value based on the LSB thermometer bits comprises interpolating between phases of the pair of input clock signals by a number of half-steps based on at least one LSB thermometer bit of the mixed thermometer-binary phase interpolator code; and

the adjusting of the phase value based on the LSB binary bits comprises interpolating between phases of the pair of input clock signals by a number of half-steps based on at least one LSB binary bit of the mixed thermometer-binary phase interpolator code.

3 . The method of claim 2 , further comprising:

receiving the four input clock signals at each primary mixer and each secondary mixer;

receiving the mixed thermometer-binary phase interpolator code at a decoder of the phase interpolator; and

decoding the mixed thermometer-binary phase interpolator code at the decoder to generate a first weight and a second weight for each primary mixer and each secondary mixer,

wherein, at each primary mixer and each secondary mixer, the first weight and second weight are applied to the pair of input clock signals to interpolate between the pair of input clock signals.

4 . The method of claim 3 , wherein:

at each primary mixer and each secondary mixer:

the adjusting of the phase value based on the plurality of MSB thermometer bits comprises:

adjusting a magnitude of the first weight by a number of steps equal to a value of a first subset of the MSB thermometer bits; and

adjusting a magnitude of the second weight by a number of steps equal to a value of a second subset of the MSB thermometer bits;

the adjusting of the phase value based on the at least one LSB thermometer bit comprises:

adjusting the magnitude of the first weight by a number of half-steps equal to a value of a first bit of the at least one LSB thermometer bit; and

adjusting the magnitude of the second weight by a number of half-steps equal to a value of a second bit of the at least one LSB thermometer bit; and

the adjusting of the phase value based on the at least one LSB binary bit comprises:

adjusting the magnitude of the first weight by a number of half-steps equal to a value of a first bit of the at least one LSB binary bit; and

adjusting the magnitude of the second weight by a number of half-steps equal to a value of a second bit of the at least one LSB binary bit.

5 . The method of claim 4 , wherein:

the mixed thermometer-binary phase interpolator code spans 360 degrees;

each of the MSB thermometer bits and each of the LSB thermometer bits only changes in value twice over a 360-degree span;

each of the boundary bits only changes in value twice over a 360-degree span; and

each of the LSB binary bits change in value more than twice over a 360-degree span.

6 . The method of claim 5 , wherein:

at each secondary mixer:

the adjusting of the phase value based on the plurality of boundary bits comprises:

adjusting the magnitude of the first weight by a number of steps equal to values of a first bit and a second bit of the plurality of boundary bits; and

adjusting the magnitude of the second weight by a number of steps equal to a value of a third bit and a fourth bit of the plurality of boundary bits.

7 . The method of claim 6 , wherein:

the plurality of MSB thermometer bits consists of 252 MSB thermometer bits;

the first subset and second subset of the MSB thermometer bits used by each primary mixer each consist of 63 MSB thermometer bits; and

the first subset and second subset of the MSB thermometer bits used by each secondary mixer each consist of 61 MSB thermometer bits.

8 . The method of claim 7 , wherein:

the first subset and second subset of the MSB thermometer bits used by each secondary mixer each consist of:

30 of the MSB thermometer bits of a first one of the subsets of the MSB thermometer bits used by one of the primary mixers; and

31 of the MSB thermometer bits of an other one of the subsets of the MSB thermometer bits used by one of the primary mixers.

9 . The method of claim 2 , wherein:

the mixed thermometer-binary phase interpolator code consists of:

252 MSB thermometer bits;

8 LSB thermometer bits;

8 LSB binary bits; and

8 boundary bits.

10 . A phase interpolator for interpolating four input clock signals phase-offset by 90 degrees to span 360 degrees, the phase interpolator comprising:

two primary mixer to each interpolate between a pair of the input clock signals by:

adjusting a phase value based on most-significant-bit (MSB) thermometer bits; and

adjusting the phase value based on least-significant-bit (LSB) thermometer bits and LSB binary bits; and

two secondary mixers to each interpolate between a pair the of input clock signals by:

adjusting a phase value based on MSB thermometer bits and boundary bits; and

adjusting the phase value based on LSB thermometer bits and LSB binary bits; and

wherein each primary and secondary mixer:

generates a first output clock signal at the phase value of the respective mixer; and

generates a second output clock signal offset from the first output clock signal by 180 degrees,

thereby generating eight output clock signals phase-offset by 45 degrees to span 360 degrees.

11 . The phase interpolator of claim 10 , wherein:

the MSB thermometer bits, the LSB thermometer bits, the LSB binary bits, and the boundary bits define a mixed thermometer-binary phase interpolator code;

the adjusting of the phase value based on the MSB thermometer bits comprises interpolating between phases of the pair of input clock signals by a number of steps based on a plurality of most-significant-bit (MSB) thermometer bits of the mixed thermometer-binary phase interpolator code;

the adjusting of the phase value based on the boundary bits comprises interpolating between phases of the pair of input clock signals by a number of steps based on a plurality of boundary bits of the mixed thermometer-binary phase interpolator code;

the adjusting of the phase value based on the LSB thermometer bits comprises interpolating between phases of the pair of input clock signals by a number of half-steps based on at least one LSB thermometer bit of the mixed thermometer-binary phase interpolator code; and

the adjusting of the phase value based on the LSB binary bits comprises interpolating between phases of the pair of input clock signals by a number of half-steps based on at least one LSB binary bit of the mixed thermometer-binary phase interpolator code.

12 . The phase interpolator of claim 11 , further comprising:

a decoder to receive and decode the mixed thermometer-binary phase interpolator code to generate a first weight and a second weight for each primary mixer and each secondary mixer,

wherein:

each primary mixer and each secondary mixer receives the four input clock signals; and

at each primary mixer and each secondary mixer, the first weight and second weight are applied to the pair of input clock signals to interpolate between the pair of input clock signals.

13 . The phase interpolator of claim 12 , wherein:

at each primary mixer and each secondary mixer:

the adjusting of the phase value based on the plurality of MSB thermometer bits comprises:

adjusting a magnitude of the first weight by a number of steps equal to a value of a first subset of the MSB thermometer bits; and

adjusting a magnitude of the second weight by a number of steps equal to a value of a second subset of the MSB thermometer bits;

the adjusting of the phase value based on the at least one LSB thermometer bit comprises:

adjusting the magnitude of the first weight by a number of half-steps equal to a value of a first bit of the at least one LSB thermometer bit; and

adjusting the magnitude of the second weight by a number of half-steps equal to a value of a second bit of the at least one LSB thermometer bit; and

the adjusting of the phase value based on the at least one LSB binary bit comprises:

adjusting the magnitude of the first weight by a number of half-steps equal to a value of a first bit of the at least one LSB binary bit; and

adjusting the magnitude of the second weight by a number of half-steps equal to a value of a second bit of the at least one LSB binary bit.

14 . The phase interpolator of claim 13 , wherein:

the mixed thermometer-binary phase interpolator code spans 360 degrees;

each of the MSB thermometer bits and each of the LSB thermometer bits only changes in value twice over a 360-degree span; and

each of the LSB binary bits changes in value more than twice over a 360-degree span.

15 . The phase interpolator of claim 14 , wherein:

at each secondary mixer:

the adjusting of the phase value based on the plurality of boundary bits comprises:

adjusting the magnitude of the first weight by a number of steps equal to values of a first bit and a second bit of the plurality of boundary bits; and

adjusting the magnitude of the second weight by a number of steps equal to a value of a third bit and a fourth bit of the plurality of boundary bits.

16 . The phase interpolator of claim 15 , wherein:

each of the boundary bits only changes in value twice over a 360-degree span.

17 . The phase interpolator of claim 16 , wherein:

the plurality of MSB thermometer bits consists of 252 MSB thermometer bits;

the first subset and second subset of the MSB thermometer bits used by each primary mixer each consist of 63 MSB thermometer bits; and

the first subset and second subset of the MSB thermometer bits used by each secondary mixer each consist of 61 MSB thermometer bits.

18 . The phase interpolator of claim 17 , wherein:

the first subset and second subset of the MSB thermometer bits used by each secondary mixer each consist of:

30 of the MSB thermometer bits of a first one of the subsets of the MSB thermometer bits used by one of the primary mixers; and

31 of the MSB thermometer bits of an other one of the subsets of the MSB thermometer bits used by one of the primary mixers.

19 . The phase interpolator of claim 11 , wherein:

the mixed thermometer-binary phase interpolator code consists of:

252 MSB thermometer bits;

8 LSB thermometer bits;

8 LSB binary bits; and

8 boundary bits.

20 . A method for controlling a phase interpolator to interpolate four input clock signals to generate eight output clock signals, the four input clock signals being phase-offset from each other by increments of 90 degrees to span 360 degrees, each of the eight output clock signals being phase-offset from each other by increments of 45 degrees to span 360 degrees, the phase interpolator comprising two primary mixers and two secondary mixers, the method comprising:

generating a mixed thermometer-binary phase interpolator code configured to cause the generation of a first output clock signal of the eight output clock signals by a first one of the primary mixers, and to cause the generation of a second output clock signal of the eight output clock signals by a first one of the secondary mixers, a phase value of the second output clock signal being offset from a phase value of the first output clock signal by 45 degrees; and

transmitting the mixed thermometer-binary phase interpolator code to the phase interpolator,

wherein:

the first one of the primary mixers determines the phase value of the first output clock signal by:

interpolating between a pair of input clock signals of the four input clock signals based on a mixed thermometer-binary phase interpolator code by:

adjusting the phase value between phases of the pair of input clock signals by a number of steps based on a plurality of most-significant-bit (MSB) thermometer bits of the mixed thermometer-binary phase interpolator code; and

adjusting the phase value by a number of half-steps based on at least one least-significant-bit (LSB) thermometer bit and at least one LSB binary bit of the mixed thermometer-binary phase interpolator code; and

the first one of the secondary mixers determines the phase value of the second output clock signal by:

interpolating between a pair of input clock signals of the four input clock signals based on the mixed thermometer-binary phase interpolator code by:

adjusting the phase value between phases of the pair of input clock signals by a number of steps based on a plurality of MSB thermometer bits and a plurality of boundary bits of the mixed thermometer-binary phase interpolator code; and

adjusting the phase value by a number of half-steps based on at least one LSB thermometer bit and at least one LSB binary bit of the mixed thermometer-binary phase interpolator code.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 8, 2025
From: YANAMANDRA, SATYA SOMESWARA KAUSHIK; HEILMANN, BENJAMIN L.; SHELTON, DOUGLAS SCOTT
To: CADENCE DESIGN SYSTEMS, INC.
Reel/Frame 071069/0255 →
References Cited (9)
US 6759881B2 · Kizer · 2004 [cited by examiner]
US 8686775B2 · Nedovic · 2014 [cited by examiner]
US 10333533B1 · Moscone · 2019 [cited by examiner]
US 11569804B1 · Lee · 2023 [cited by examiner]
US 12191862B2 · Foley · 2025 [cited by examiner]
US 20100026367A1 · Jiang · 2010 [cited by examiner]
US 20140176213A1 · Rylov · 2014 [cited by examiner]
US 20220224318A1 · Son · 2022 [cited by examiner]
US 20250158623A1 · Pike · 2025 [cited by examiner]