IP Library Granted Patent US 7,573,770
Granted Patent B1
US 7,573,770 · App. 11/778,457 · Granted Aug 11, 2009

Distributed front-end FIFO for source-synchronized interfaces with non-continuous clocks

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 7,573,770
App. No.
11/778,457
Granted
Aug 11, 2009
Kind
B1
Abstract

In one embodiment of the invention, an integrated circuit, such as an FPGA, comprises a distributed FIFO architecture that supports data transfer from an external device, such as an SDRAM, via an interface that receives a non-continuous, asynchronous strobe clock and a data lane having a plurality of bit lines from the external device. The distributed FIFO architecture comprise a FIFO for each bit line and a FIFO controller. Under control of the FIFO controller, data is written into each FIFO using a FIFO write clock based on the strobe clock, while data is read out from each FIFO using a FIFO read clock based on a local reference clock of the integrated circuit. The distributed FIFO architecture is designed to handle a range of possible phase differences between the FIFO write and read clocks to safely convert from the asynchronous, non-continuous strobe domain to a local continuous clock domain.

Claims (128)

1. An integrated circuit comprising:

one or more data I/O blocks, at least one data I/O block adapted to receive an incoming bit stream from an external device;

a clock I/O block adapted to receive an incoming clock signal from the external device, wherein the incoming clock signal is asynchronous with a local reference clock signal of the integrated circuit;

one or more FIFOs, at least one FIFO connected to receive a corresponding incoming bit stream from a corresponding data I/O block; and

a FIFO controller adapted to control operations of the one or more FIFOs, such that:

bits from the corresponding data I/O block are written into the at least one FIFO using a FIFO write clock that is based on the incoming clock signal; and

bits are read out from the at least one FIFO using a FIFO read clock that is based on the local reference clock signal.

2. The invention of claim 1 , wherein the incoming clock signal is a non-continuous strobe signal.

3. The invention of claim 1 , wherein each FIFO comprises:

a first bit buffer comprising a plurality of first write-data flip-flops, each first write-data flip-flip comprising a data input, an enable input, a clock input, and a data output;

a first mux comprising a plurality of data inputs, a control input, and a data output; and

a first read-data flip-flop comprising a data input, a clock input, and a data output, wherein:

the data input of each first write-data flip-flop is connected to the corresponding data I/O block;

the enable input of each first write-data flip-flop is connected to receive a first write pointer generated by the FIFO controller;

the clock input of each first write-data flip-flop is connected to receive the FIFO write clock;

the data output of each first write-data flip-flop is connected to a different data input of the first mux;

the control input of the first mux is connected to receive a first read pointer generated by the FIFO controller;

the data output of the first mux is connected to the data input of the first read-data flip-flop; and

the clock input of the first read-data flip-flop is connected to receive the FIFO read clock.

4. The invention of claim 3 , wherein each FIFO further comprises:

a second bit buffer comprising a plurality of second write-data flip-flops, each second write-data flip-flip comprising a data input, an enable input, a clock input, and a data output;

a second mux comprising a plurality of data inputs, a control input, and a data output; and

a second read-data flip-flop comprising a data input, a clock input, and a data output, wherein:

the data input of each second write-data flip-flop is connected to the corresponding data I/O block;

the enable input of each second write-data flip-flop is connected to receive a second write pointer generated by the FIFO controller;

the clock input of each second write-data flip-flop is connected to receive the FIFO write clock;

the data output of each second write-data flip-flop is connected to a different data input of the second mux;

the control input of the second mux is connected to receive a second read pointer generated by the FIFO controller;

the data output of the second mux is connected to the data input of the second read-data flip-flop;

the clock input of the second read-data flip-flop is connected to receive the FIFO read clock;

the second write-data flip-flops are triggered by opposite clock edges of the FIFO write clock from the first write-data flip-flops; and

the second read-data flip-flop is triggered by opposite clock edges of the FIFO read clock from the first read-data flip-flop.

5. The invention of claim 3 , wherein:

the first bit buffer comprises four first write-data flip-flops; and

the first mux comprises four data inputs.

6. The invention of claim 1 , wherein the FIFO controller comprises:

write-pointer circuitry adapted to generate, based on the FIFO write clock, write pointers for controlling the writing of bits into each FIFO; and

read-pointer circuitry adapted to generate, based on the FIFO read clock, read pointers for controlling the reading of bits from each FIFO.

7. The invention of claim 6 , wherein:

the write-pointer circuitry comprises:

a first write gray-code counter adapted to generate a first write gray-code value; and

a first write gray-code decoder adapted to generate a first write pointer from the first write gray-code value; and

the read-pointer circuitry comprises:

a first read gray-code counter adapted to generate a first read gray-code value; and

a first read gray-code decoder adapted to generate a first read pointer from the first read gray-code value.

8. The invention of claim 7 , wherein:

the write-pointer circuitry further comprises:

a second write gray-code counter adapted to generate a second write gray-code value; and

a second write gray-code decoder adapted to generate a second write pointer from the second write gray-code value;

the read-pointer circuitry further comprises:

a second read gray-code counter adapted to generate a second read gray-code value; and

a second read gray-code decoder adapted to generate a second read pointer from the second read gray-code value;

the second write gray-code counter is triggered by opposite clock edges of the FIFO write clock from the first write gray-code counter; and

the second read gray-code counter is triggered by opposite clock edges of the FIFO read clock from the first read gray-code counter.

9. The invention of claim 6 , wherein:

the write-pointer circuitry comprises a first write shift register adapted to generate a first write pointer; and

the read-pointer circuitry comprises a first read shift register adapted to generate a first read pointer.

10. The invention of claim 9 , wherein:

the write-pointer circuitry further comprises a second write shift register adapted to generate a second write pointer;

the read-pointer circuitry further comprises a second read shift register adapted to generate a second read pointer;

the second write shift register is triggered by opposite clock edges of the FIFO write clock from the first write shift register; and

the second read shift register is triggered by opposite clock edges of the FIFO read clock from the first read shift register.

11. The invention of claim 6 , wherein the FIFO controller further comprises flag-generation circuitry adapted to generate a flag signal that selectively enables operations of the read-pointer circuitry.

12. The invention of claim 11 , wherein the flag-generation circuitry is adapted to enable the operations of the read-pointer circuitry based on a comparison between one or more selected write pointers generated by the write-pointer circuitry and one or more selected read pointers generated by the read-pointer circuitry.

13. The invention of claim 12 , wherein the FIFO-read controller comprises:

a comparator adapted to compare the one or more selected write pointers to the one or more selected read pointers and generate a comparison signal indicative of that comparison;

a latch comprising a data input connected to receive the comparison signal, a gate input connected to receive a delayed version of the FIFO read clock, and a data output adapted to present a latch output signal; and

a flip-flop comprising a data input connected to receive the latch output signal, a clock input connected to receive the FIFO read clock, and a data output adapted to present a flip-flop output signal, wherein the flag signal is based on the flip-flop output signal.

14. The invention of claim 13 , wherein the FIFO-read controller further comprises a logic-OR gate connected to receive the flip-flop output signal and an override control signal and generate the flag signal.

15. The invention of claim 1 , wherein:

the incoming clock signal is a non-continuous strobe signal,

each FIFO comprises:

a first bit buffer comprising a plurality of first write-data flip-flops, each first write-data flip-flip comprising a data input, an enable input, a clock input, and a data output;

a first mux comprising a plurality of data inputs, a control input, and a data output;

a first read-data flip-flop comprising a data input, a clock input, and a data output;

a second bit buffer comprising a plurality of second write-data flip-flops, each second write-data flip-flip comprising a data input, an enable input, a clock input, and a data output;

a second mux comprising a plurality of data inputs, a control input, and a data output; and

a second read-data flip-flop comprising a data input, a clock input, and a data output, wherein:

the data input of each first write-data flip-flop is connected to the corresponding data I/O block;

the enable input of each first write-data flip-flop is connected to receive a first write pointer generated by the FIFO controller;

the clock input of each first write-data flip-flop is connected to receive the FIFO write clock;

the data output of each first write-data flip-flop is connected to a different data input of the first mux;

the control input of the first mux is connected to receive a first read pointer generated by the FIFO controller;

the data output of the first mux is connected to the data input of the first read-data flip-flop;

the clock input of the first read-data flip-flop is connected to receive the FIFO read clock;

the data input of each second write-data flip-flop is connected to the corresponding data I/O block;

the enable input of each second write-data flip-flop is connected to receive a second write pointer generated by the FIFO controller;

the clock input of each second write-data flip-flop is connected to receive the FIFO write clock;

the data output of each second write-data flip-flop is connected to a different data input of the second mux;

the control input of the second mux is connected to receive a second read pointer generated by the FIFO controller;

the data output of the second mux is connected to the data input of the second read-data flip-flop;

the clock input of the second read-data flip-flop is connected to receive the FIFO read clock;

the second write-data flip-flops are triggered by opposite clock edges of the FIFO write clock from the first write-data flip-flops; and

the second read-data flip-flop is triggered by opposite clock edges of the FIFO read clock from the first read-data flip-flop;

the FIFO controller comprises:

write-pointer circuitry adapted to generate, based on the FIFO write clock, write pointers for controlling the writing of bits into each FIFO;

read-pointer circuitry adapted to generate, based on the FIFO read clock, read pointers for controlling the reading of bits from each FIFO; and

flag-generation circuitry adapted to generate a flag signal that selectively enables operations of the read-pointer circuitry, wherein the flag-generation circuitry is adapted to enable the operations of the read-pointer circuitry based on a comparison between one or more selected write pointers generated by the write-pointer circuitry and one or more selected read pointers generated by the read-pointer circuitry.

16. The invention of claim 15 , wherein:

the first bit buffer comprises four first write-data flip-flops; and

the first mux comprises four data inputs.

17. The invention of claim 15 , wherein:

the write-pointer circuitry comprises:

a first write gray-code counter adapted to generate a first write gray-code value;

a first write gray-code decoder adapted to generate a first write pointer from the first write gray-code value;

a second write gray-code counter adapted to generate a second write gray-code value; and

a second write gray-code decoder adapted to generate a second write pointer from the second write gray-code value; and

the read-pointer circuitry comprises:

a first read gray-code counter adapted to generate a first read gray-code value;

a first read gray-code decoder adapted to generate a first read pointer from the first read gray-code value;

a second read gray-code counter adapted to generate a second read gray-code value; and

a second read gray-code decoder adapted to generate a second read pointer from the second read gray-code value;

the second write gray-code counter is triggered by opposite clock edges of the FIFO write clock from the first write gray-code counter; and

the second read gray-code counter is triggered by opposite clock edges of the FIFO read clock from the first read gray-code counter.

18. The invention of claim 15 , wherein:

the write-pointer circuitry comprises:

a first write shift register adapted to generate a first write pointer; and

a second write shift register adapted to generate a second write pointer;

the read-pointer circuitry comprises:

a first read shift register adapted to generate a first read pointer; and

a second read shift register adapted to generate a second read pointer;

the second write shift register is triggered by opposite clock edges of the FIFO write clock from the first write shift register; and

the second read shift register is triggered by opposite clock edges of the FIFO read clock from the first read shift register.

19. The invention of claim 15 , wherein the FIFO-read controller further comprises a logic-OR gate connected to receive the flip-flop output signal and an override control signal and generate the flag signal.

20. The invention of claim 15 , wherein the FIFO-read controller comprises:

a comparator adapted to compare the one or more selected write pointers to the one or more selected read pointers and generate a comparison signal indicative of that comparison;

a latch comprising a data input connected to receive the comparison signal, a gate input connected to receive a delayed version of the FIFO read clock, and a data output adapted to present a latch output signal; and

a flip-flop comprising a data input connected to receive the latch output signal, a clock input connected to receive the FIFO read clock, and a data output adapted to present a flip-flop output signal, wherein the flag signal is based on the flip-flop output signal.

Assignments (4)
SECURITY INTEREST Recorded May 21, 2019
From: LATTICE SEMICONDUCTOR CORPORATION
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
Reel/Frame 049980/0786 →
RELEASE OF SECURITY INTEREST Recorded May 21, 2019
From: JEFFERIES FINANCE LLC
To: LATTICE SEMICONDUCTOR CORPORATION; SILICON IMAGE, INC.; SIBEAM, INC.; DVDO, INC.
Reel/Frame 049827/0326 →
SECURITY INTEREST Recorded Mar 18, 2015
From: LATTICE SEMICONDUCTOR CORPORATION; SIBEAM, INC.; SILICON IMAGE, INC.; DVDO, INC.
To: JEFFERIES FINANCE LLC
Reel/Frame 035223/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 16, 2007
From: ZHANG, FULONG; SCHOLZ, HAROLD; FENSTERMAKER, LARRY; SCHADT, JOHN
To: LATTICE SEMICONDUCTOR CORPORATION
Reel/Frame 019563/0113 →