IP Library Granted Patent US 11,249,511
Granted Patent B2
US 11,249,511 · App. 16/456,694 · Granted Feb 15, 2022

High performance clock domain crossing FIFO

Inventor: Jason Thong (Mississauga, CA)
Assignee: Intel Corporation
G06F1/12
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 11,249,511
App. No.
16/456,694
Granted
Feb 15, 2022
Kind
B2
Abstract

The disclosure relates to clock-crossing elements that may be used to transfer data between different clock domains. The embodiments include dual clock first-in first-out (FIFO) buffers that may employ toggle-based protocols to manage the transference of information regarding the state of the FIFO buffer. The toggle-based protocols may include a feedback-based handshake and bit-sliced toggle lines to prevent errors due to differences between the clock signals in the different clock domains.

Claims (57)

1. A dual clock first-in first-out (FIFO) buffer, comprising:

a FIFO memory;

a read used register in a read clock domain of the FIFO, wherein the read used register stores a number of available words in the FIFO memory;

a write pending register in a write clock domain of the FIFO, wherein the write pending register stores a number of pending updates to the read used register;

a write-domain encoder in the write clock domain of the FIFO, wherein the write-domain encoder generates an update signal based on the number of pending updates;

a clock-crossing synchronizer in the read clock domain of the FIFO that receives the update signal;

a read-domain decoder in the read clock domain of the FIFO that receives the update signal from the clock-crossing synchronizer and provides a decoded update signal to the read used register; and

a feedback synchronizer in the write clock domain of the FIFO that receives the update signal from the clock-crossing synchronizer in the read clock domain and updates the write pending register.

2. The dual clock FIFO buffer of claim 1 , comprising:

a write used register in the write clock domain of the FIFO, wherein the write used register stores a number of words in the FIFO memory;

a read pending register in the read clock domain of the FIFO, wherein the read pending register stores a second number of pending updates to the write used register;

a read-domain encoder in the read clock domain of the FIFO, wherein the read-domain encoder generates a second update signal based on the second number of pending updates;

a second clock-crossing synchronizer in the write clock domain of the FIFO that receives the second update signal;

a write-domain decoder in the write clock domain of the FIFO that receives the second update signal from the second clock-crossing synchronizer and provides a second decoded update signal to the write used register; and

a second feedback synchronizer in the read clock domain of the FIFO that receives the second update signal from the second clock-crossing synchronizer in the write clock domain and updates the read pending register.

3. The dual clock FIFO buffer of claim 2 , wherein the FIFO provides, to the write clock domain, a signal indicative that the FIFO is full based on the write used register.

4. The dual clock FIFO buffer of claim 1 , wherein the FIFO provides, to the read clock domain, a signal indicative that the FIFO is empty based on the read used register.

5. The dual clock FIFO buffer of claim 1 , wherein the clock-crossing synchronizer comprises 3 registers clocked by a read clock of the read clock domain.

6. The dual clock FIFO buffer of claim 1 , wherein the feedback synchronizer comprises 3 registers clocked by a write clock of the write clock domain.

7. The dual clock FIFO buffer of claim 1 , comprising logic that compares a first output of the write-domain encoder and a second output of the feedback synchronizer to generate a signal that controls the write-domain encoder.

8. The dual clock FIFO buffer of claim 1 , wherein the write-domain encoder comprises a toggle encoder, and wherein the read-domain decoder comprises a toggle decoder.

9. The dual clock FIFO buffer of claim 8 , wherein the toggle encoder comprises a 3-bit toggle code, and wherein the toggle encoder and the toggle decoder are connected through 3 1-bit connections of the clock-crossing synchronizer.

10. The dual clock FIFO buffer of claim 1 , wherein the FIFO comprises pre-fetch circuitry that comprises look-ahead logic coupled to the read used register or the read-domain decoder, or both.

11. The dual clock FIFO buffer of claim 1 , wherein the dual clock FIFO is implemented in application-specific integrated circuit (ASIC) or in a field programmable gate array (FPGA).

12. A non-transitory computer readable media comprising instructions to generate a bitstream comprising a soft intellectual property (IP) block for a programmable logic device, wherein the soft IP block comprises:

a first-in first-out (FIFO) memory; and

a FIFO controller comprising:

a read used memory synchronized by a read clock of the programmable logic device, wherein the read used memory stores a number of available words in the FIFO memory;

a write pending memory synchronized by a write clock of the programmable logic device, wherein the write pending memory stores a number of pending updates to the read used memory;

a write-domain toggle encoder synchronized by the write clock, wherein the write-domain toggle encoder generates a toggle-encoded signal based on the number of pending updates;

a clock-crossing synchronizer synchronized by the read clock that receives the toggle-encoded signal; and

a read-domain toggle decoder synchronized by the read clock that generates an update signal based on the toggle-encoded signal received from the clock-crossing synchronizer and provides a decoded signal to the read used memory, wherein the write-domain toggle encoder and the read-domain toggle decoder are coupled by a plurality of 1-bit lines via the clock-crossing synchronizer, and wherein the toggle-encoded signal comprises a bit-sliced signal.

13. The non-transitory computer readable media of claim 12 , wherein the FIFO controller comprises a feedback synchronizer synchronized by the write clock that updates the write pending memory based on an output of the clock-crossing synchronizer.

14. The non-transitory computer readable media of claim 12 , wherein the FIFO controller comprises:

a write used memory synchronized by the write clock, wherein the write used memory stores a number of words in the FIFO memory;

a read pending memory synchronized by the read clock, wherein the read pending memory stores a second number of pending updates to the write used memory;

a read-domain toggle encoder synchronized by the read clock, wherein the read-domain toggle encoder generates a second toggle-encoded signal based on the second number of pending updates;

a second clock-crossing synchronizer synchronized by the write clock that receives the second toggle-encoded signal; and

a write-domain toggle decoder synchronized by the write clock that generates a second update signal based on the second toggle-encoded signal received from the second clock-crossing synchronizer and provides a second decoded update signal to the write used memory, wherein the read-domain toggle encoder and the write-domain toggle decoder are coupled by a plurality of 1-bit lines via the second clock-crossing synchronizer, and wherein the toggle-encoded signal comprises a bit-sliced signal.

15. The non-transitory computer readable media of claim 14 , wherein the FIFO controller comprises a second feedback synchronizer synchronized by the read clock that updates the read pending memory based on an output of the second clock-crossing synchronizer.

16. The non-transitory computer readable media of claim 12 , wherein the instructions to generate the bitstream comprises determining a difference between a read clock frequency and a write clock frequency and determining a number of 1-bit lines in the plurality of 1-bit lines based on the difference.

17. The non-transitory computer readable media of claim 12 , wherein the FIFO controller comprises look-ahead logic configured to perform a FIFO pre-fetch function based on the read used memory or the read-domain toggle decoder, or both.

18. A system comprising an electronic device that comprises a first clock domain, a second clock domain, and a dual-clock first-in first-out (FIFO) buffer controller, comprising:

a read used register in the first clock domain of the FIFO, wherein the read used register stores a number of available words in a FIFO memory;

a write pending register in the second clock domain of the FIFO, wherein the write pending register stores a first a number of pending updates to the read used register;

a write-domain encoder in the second clock domain of the FIFO, wherein the write-domain encoder generates a first update signal based on the first number of pending updates;

a first clock-crossing synchronizer in the first clock domain of the FIFO that receives the first update signal;

a read-domain decoder in the first clock domain of the FIFO that receives the first update signal from the first clock-crossing synchronizer and provides a first decoded update signal to the read used register;

a first feedback synchronizer in the second clock domain of the FIFO that receives the first update signal from the first clock-crossing synchronizer in the first clock domain and updates the write pending register;

a write used register in the second clock domain of the FIFO, wherein the write used register stores a number of words in the FIFO memory;

a read pending register in the first clock domain of the FIFO, wherein the read pending register stores a second number of pending updates to the write used register;

a read-domain encoder in the first clock domain of the FIFO, wherein the read-domain encoder generates a second update signal based on the second number of pending updates;

a second clock-crossing synchronizer in the second clock domain of the FIFO that receives the second update signal;

a write-domain decoder in the second clock domain of the FIFO that receives the second update signal from the second clock-crossing synchronizer and provides a second decoded update signal to the write used register; and

a second feedback synchronizer in the first clock domain of the FIFO that receives the second update signal from the second clock-crossing synchronizer in the second clock domain and updates the read pending register.

19. The system of claim 18 , wherein the first clock-crossing synchronizer comprises a plurality of independent 1-bit lines coupling the write-domain encoder and the read-domain decoder.

20. The system of claim 18 , wherein the electronic device comprises a field-programmable gate array (FPGA) or an application-specific integrated circuit (ASIC), or both.

Assignments (3)
SECURITY INTEREST Recorded Sep 12, 2025
From: ALTERA CORPORATION
To: BARCLAYS BANK PLC, AS COLLATERAL AGENT
Reel/Frame 073431/0309 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 19, 2024
From: INTEL CORPORATION
To: ALTERA CORPORATION
Reel/Frame 066353/0886 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 24, 2019
From: THONG, JASON
To: INTEL CORPORATION
Reel/Frame 049848/0206 →