1. Field of the System
The present system relates to field programmable gate array (FPGA) devices. More specifically, the system relates to an input/output first in/first out module for an FPGA.
2. Background
FPGAs are known in the art. An FPGA comprises any number of logic modules, an interconnect routing architecture and programmable elements that may be programmed to selectively interconnect the logic modules to one another and to define the functions of the logic modules. To implement a particular circuit function, the circuit is mapped into the array and the appropriate programmable elements are programmed to implement the necessary wiring connections that form the user circuit.
An FPGA core tile may be employed as a stand-alone FPGA, repeated in a rectangular array of core tiles, or included with other functions in a system-on-a-chip (SOC). The core FPGA tile may include an array of logic modules, and input/output modules. An FPGA circuit may also include other components such as random access memory (RAM) modules. Horizontal and vertical routing channels provide interconnections between the various components within an FPGA core tile. Programmable connections are provided by programmable elements between the routing resources.
An FPGA circuit can be programmed to implement virtually any set of digital functions. Input signals are processed by the programmed circuit to produce the desired set of outputs. Such inputs flow from the user's system, through input buffers and through the circuit, and finally back out the user's system via output buffers referred to as input/output ports (I/Os). Such buffers provide any or all of the following input/output (I/O) functions: voltage gain, current gain, level translation, delay, signal isolation or hysteresis.
The input/output ports provide the access points for communication between chips. I/O ports vary in complexity depending on the FPGA.
As set forth above, FPGAs are programmable digital logic chips. A board level digital system is comprised of a printed circuit board with several digital chips interconnected to perform a digital function. Complex system level tasks are realized by smaller tasks that are carried out by specialized dedicated chips. The chips are then connected together to provide the overall system function.
The communication between the components of a system can be described by the signaling and the data format. The device's input/output (I/O) ports provide the signaling format. For example, the signaling format may be 3.3V PCI, low voltage transistor transistor logic (LVTTL) or low voltage differential signaling (LVDS). The data format for communication between chips is system dependent. Some of the system dependent parameters include the bus width and the clocking scheme. For example, data can be transmitted bit-wise serially or n-bits in parallel. Also, the clocking of the transmitters and receivers can be synchronous or otherwise. First-in/first-out memories (FIFO) are often used in systems to bridge data flow gaps between chips. Data flow gaps are the result of chips working with different clock rates, different clock skew, different data bus widths or readiness differences of two chips to send or read packets of data.
A FIFO is basically a SRAM memory with automatic read and write address generation and some additional control logic. Counters are used for address generation. The data sequence read from a FIFO memory is the same as the data sequence written to its memory. The sequencing of the write and read addresses is controlled by the control logic.
Circuits implementing a FIFO function are often used for transmitting and recovering data. In these applications, data can be received until the FIFO memory has become full, often indicated by a FIFO-full flag. Data can also be read from the FIFO until the memory has become empty often indicated by a FIFO-empty flag. Read and write operations need not be synchronized to each other.
FIFOs are suited for applications requiring frequency and phase coupling. The FIFO provides the means to pass data between one clock domain and the next. The write clock and the read clock need not be locked in frequency or phase to pass data between the clock domains. One example is a transmitter sending data at 66 Mbits/second serially and the receiver processing data in bursts at 132 Mbits/second. The receiver FIFO would have its write clock operating at 66 Mhz and the read clock at 132 Mhz. Handshake signals are required to prevent data from being lost at either the full or empty states of the FIFO. The empty and full flags provide such handshake control. Some applications have the write clock and the read clock at the same frequency, but the clocks are not locked in phase. The FIFO provides the means to pass data from one clock domain to the next.
FIFOs are also well suited for applications requiring data bus width matching. An example would be when data into the chip is wider that data inside the chip. Another example is when the data bus width internal to the FPGA is wider than the data bus width in the off chip direction.
An FPGA is capable of implementing a FIFO function. However, the implementation would require programming all of the FIFO components, the address counters, flag logic and memory into the FPGA's core logic. The implementation would consume a considerable number of logic modules and the performance would be dependent on the FPGA architecture.
Hence, there is a need for an FPGA that has dedicated logic specifically included to implement a input/output FIFO function. There is also a need for an FPGA that has dedicated logic to implement the FIFO control and flag logic. Ideally, the input/output FIFO logic would be included among the logic components in an FPGA core tile. Hence, what is needed is an FPGA having dedicated logic to implement a FIFO function. The result is improved performance and a decrease in silicon area needed to implement the FIFO functions due to the small silicon area needed to implement the FIFO function with dedicated logic.
The system comprises a field programmable gate array that has a plurality of input/output pads and at least one dedicated input/output first-in/first-out memory. The dedicated input/output first-in/first-out memory comprises at least one of input/output clusters coupled to the input/output pads of the field programmable gate array and at least one of input/output block controllers coupled to said input/output clusters.
A better understanding of the features and advantages of the present invention will be obtained by reference to the following detailed description of the invention and accompanying drawings, which set forth an illustrative embodiment in which the principles of the invention are utilized.
Those of ordinary skill in the art will realize that the following description of the present invention is illustrative only and not in any way limiting. Other embodiments of the invention will readily suggest themselves to such skilled persons.
In the present disclosure, Vcc is used to define the positive power supply for the digital circuit as designed. As one of ordinary skill in the art will readily recognize, the size of a digital circuit may vary greatly depending on a user's particular circuit requirements. Thus, Vcc may change depending on the size of the circuit elements used.
Moreover, in this disclosure, various circuits and logical functions are described. It is to be understood that designations such as “1” and or “0” in these descriptions are arbitrary logical designations. In a first implementation of the invention, or “1” may correspond to a voltage high, while “0” corresponds to a voltage low or ground, while in a second implementation, “0” may correspond to a voltage high, while “1” corresponds to a voltage low or ground. Likewise, where signals are described, a “signal” as used in this disclosure may represent the application, or pulling “high” of a voltage to a node in a circuit where there was low or no voltage before, or it may represent the termination, or the bringing “low” of a voltage to the node, depending on the particular implementation of the invention.
To avoid overcomplicating the disclosure and thereby obscuring the present invention, receiver modules 128, transmitter modules 130 and buffer module 132 are not described in detail herein. The implementation of receiver modules 128 and transmitter modules 130 suitable for use according to the present system is disclosed in U.S. patent application Ser. No. 10/323,613, filed on Dec. 18, 2002, and hereby incorporated herein by reference. The implementation of buffer modules suitable for use according to the present system is disclosed in U.S. patent application Ser. No. 10/293,895, filed on Nov. 12, 2002, now issued as U.S. Pat. No. 6,727,726, and hereby incorporated herein by reference.
FIFO memory 150 is an 8 word by 8-bit memory array, configured as a 64 by 1 bit memory though other numbers of bits and configurations are possible. FIFO functions are well known to those of ordinary skill in the art and thus the architecture of a FIFO circuit configuration will not be discussed herein to avoid overcomplicating the present disclosure and obscuring the present invention. Two six-bit binary counters are used for generating read and write addresses. The input/output FIFO control blocks 114 (as shown in
Moreover, FIFO 150 can be used without input/output FIFO control blocks 114 in applications where flags are not needed. In addition, FIFO 150 can be used without input/output FIFO control blocks 114 in applications where different control logic is needed.
FIFO 150 is functionally inserted into either of the input or output data paths. The interface to FIFO 150 is determined by a basic three-register I/O structure. The present system allows for the sharing of control signals between registers 152, 154, 156 and FIFO 150. When FIFO 150 is inserted into a particular data path, the register associated with that data path provides the control signal. For example, if FIFO 150 is programmed to buffer the data coming on to the chip, then register 152 would not be used since the data is buffered through FIFO 150. In this case, the clock select circuitry of register 152 provides the write clock for FIFO 150 via clock output signal line 234 as shown in
Similarly, if FIFO 150 is programmed to buffer data leaving the chip, register 154 would not be used since the data is buffered through FIFO 150. In this case, the clock select circuitry of register 154 provides the read clock for FIFO 150 via output signal line 326 as is shown in
I/O FIFO control block contains a FIFO control block 318, which contains logic components used to generate the full, empty, almost-full and almost-empty flags, and an I/O FIFO control block cluster 320. As is known to those of ordinary skill in the art, various combinations of logic components may be used to generate the flags for a FIFO component. FIFO control block 318 will not be discussed in detail herein in order to avoid overcomplicating the disclosure and thereby obscuring the present invention. Each I/O FIFO control block cluster 320 has two sub clusters 300 and 302. Each sub cluster 300 and 302 has an RC module 304, six RT modules 306, two RN modules 310, two RO modules 308 a transmitter module 314 and two receiver modules 312. Right sub cluster 302 has a buffer module 316. As set forth above receiver module 312, transmitter module 314 and buffer module relate to the routing architecture of FPGA 100 and will not be discussed herein to avoid overcomplicating and thus obscuring the present disclosure.
The almost-full and almost-empty flags generated by FIFO control block 114 have programmable threshold values. The FIFO control block 114 performs arithmetic operations on the read and write address to determine when the almost-full and almost-empty conditions are present. Arithmetic logic calculates the difference between the six bit write and read addresses. The magnitude of the difference is compared to the almost full and almost empty threshold values.
While embodiments and applications of this system have been shown and described, it would be apparent to those skilled in the art that many more modifications than mentioned above are possible without departing from the inventive concepts herein. The system, therefore, is not to be restricted except in the spirit of the appended claims.
This application is a continuation of co-pending U.S. patent application Ser. No. 11/428,944, filed Jul. 6, 2006, which is a continuation of U.S. patent application Ser. No. 11/295,889, filed Dec. 6, 2005, now issued as U.S. Pat. No. 7,102,385, which is a continuation of U.S. patent application Ser. No. 11/056,983, filed Feb. 11, 2005, now issued as U.S. Pat. No. 6,980,028, which is a continuation of U.S. patent application Ser. No. 10/452,764, filed May 30, 2003, now issued as U.S. Pat. No. 6,867,615, all of which are hereby incorporated by reference as if set forth herein.
Number | Name | Date | Kind |
---|---|---|---|
4255748 | Bartlett | Mar 1981 | A |
4625313 | Springer | Nov 1986 | A |
4638187 | Boler et al. | Jan 1987 | A |
4638243 | Chan | Jan 1987 | A |
4684830 | Tsui et al. | Aug 1987 | A |
4700130 | Bloemen | Oct 1987 | A |
4706216 | Carter | Nov 1987 | A |
4713557 | Carter | Dec 1987 | A |
4717912 | Harvey et al. | Jan 1988 | A |
4718042 | Moll et al. | Jan 1988 | A |
4742252 | Agrawal | May 1988 | A |
4758745 | Elgamal et al. | Jul 1988 | A |
4772812 | Desmarais | Sep 1988 | A |
4800176 | Kakumu et al. | Jan 1989 | A |
4857774 | ElAyat et al. | Aug 1989 | A |
4870300 | Nakaya et al. | Sep 1989 | A |
4870302 | Freeman | Sep 1989 | A |
4873459 | El Gamal et al. | Oct 1989 | A |
4928023 | Marshall | May 1990 | A |
4930097 | Ledenbach et al. | May 1990 | A |
4935645 | Lee | Jun 1990 | A |
4959561 | McDermott et al. | Sep 1990 | A |
4978905 | Hoff et al. | Dec 1990 | A |
5008855 | Eltoukhy et al. | Apr 1991 | A |
5046035 | Jigour et al. | Sep 1991 | A |
5083083 | El Ayat et al. | Jan 1992 | A |
5121394 | Russell et al. | Jun 1992 | A |
5122685 | Chan et al. | Jun 1992 | A |
5126282 | Chiang et al. | Jun 1992 | A |
5132571 | McCollum et al. | Jul 1992 | A |
5144166 | Camarota et al. | Sep 1992 | A |
5187392 | Allen | Feb 1993 | A |
5191241 | McCollum et al. | Mar 1993 | A |
5198705 | Galbraith et al. | Mar 1993 | A |
5208491 | Ebeling et al. | May 1993 | A |
5208530 | El Ayat et al. | May 1993 | A |
5220213 | Chan et al. | Jun 1993 | A |
5220215 | Douglas et al. | Jun 1993 | A |
5221865 | Phillips et al. | Jun 1993 | A |
5222066 | Grula et al. | Jun 1993 | A |
5223792 | El Ayat et al. | Jun 1993 | A |
5258319 | Inuishi et al. | Nov 1993 | A |
5272388 | Bakker | Dec 1993 | A |
5286992 | Ahrens | Feb 1994 | A |
5293133 | Birkner et al. | Mar 1994 | A |
5294846 | Paivinen | Mar 1994 | A |
5300830 | Hawes | Apr 1994 | A |
5300832 | Rogers | Apr 1994 | A |
5304871 | Dharmarajan et al. | Apr 1994 | A |
5309091 | El Ayat et al. | May 1994 | A |
5317698 | Chan | May 1994 | A |
5341092 | El Ayat et al. | Aug 1994 | A |
5365165 | El Ayat et al. | Nov 1994 | A |
5365485 | Ward et al. | Nov 1994 | A |
5367207 | Goetting et al. | Nov 1994 | A |
5375089 | Lo | Dec 1994 | A |
5394033 | Tsui et al. | Feb 1995 | A |
5394034 | Becker et al. | Feb 1995 | A |
5396128 | Dunning et al. | Mar 1995 | A |
5397939 | Gordon et al. | Mar 1995 | A |
5399920 | Van Tran | Mar 1995 | A |
5400262 | Mohsen | Mar 1995 | A |
5430335 | Tanoi | Jul 1995 | A |
5430687 | Hung et al. | Jul 1995 | A |
5432441 | El Ayat et al. | Jul 1995 | A |
5451887 | El Avat et al. | Sep 1995 | A |
5455525 | Ho et al. | Oct 1995 | A |
5469003 | Kean | Nov 1995 | A |
5469396 | Eltoukhy | Nov 1995 | A |
5473268 | Declercq et al. | Dec 1995 | A |
5485103 | Pedersen et al. | Jan 1996 | A |
5486775 | Veenstra | Jan 1996 | A |
5495181 | Kolze | Feb 1996 | A |
5526312 | Eltoukhy | Jun 1996 | A |
5537057 | Leong et al. | Jul 1996 | A |
5546019 | Liao | Aug 1996 | A |
5559464 | Orii et al. | Sep 1996 | A |
5572148 | Lytle et al. | Nov 1996 | A |
5572476 | Eltoukhy | Nov 1996 | A |
5594363 | Freeman et al. | Jan 1997 | A |
5600262 | Kolze | Feb 1997 | A |
5600264 | Duong et al. | Feb 1997 | A |
5666322 | Conkle | Sep 1997 | A |
5670905 | Keeth et al. | Sep 1997 | A |
5742181 | Rush | Apr 1998 | A |
5744979 | Goetting | Apr 1998 | A |
5744980 | McGowan et al. | Apr 1998 | A |
5801547 | Kean | Sep 1998 | A |
5809281 | Steele et al. | Sep 1998 | A |
5815003 | Pedersen | Sep 1998 | A |
5815004 | Trimberger et al. | Sep 1998 | A |
5821776 | McGowan | Oct 1998 | A |
5825200 | Kolze | Oct 1998 | A |
5825201 | Kolze | Oct 1998 | A |
5825202 | Tavana et al. | Oct 1998 | A |
5825662 | Trimberger | Oct 1998 | A |
5828230 | Young | Oct 1998 | A |
5828538 | Apland et al. | Oct 1998 | A |
5831448 | Kean | Nov 1998 | A |
5832892 | Yaoita | Nov 1998 | A |
5835165 | Keate et al. | Nov 1998 | A |
5835998 | Pedersen | Nov 1998 | A |
5838167 | Erickson et al. | Nov 1998 | A |
5838584 | Kazarian | Nov 1998 | A |
5838954 | Trimberger | Nov 1998 | A |
5847441 | Cutter et al. | Dec 1998 | A |
5847577 | Trimberger | Dec 1998 | A |
5848005 | Cliff et al. | Dec 1998 | A |
5848006 | Nagata | Dec 1998 | A |
5850151 | Cliff et al. | Dec 1998 | A |
5850152 | Cliff et al. | Dec 1998 | A |
5850564 | Ting et al. | Dec 1998 | A |
5852608 | Csoppenszky et al. | Dec 1998 | A |
5854763 | Gillingham et al. | Dec 1998 | A |
5859542 | Pedersen | Jan 1999 | A |
5859543 | Kolze | Jan 1999 | A |
5859544 | Norman | Jan 1999 | A |
5861761 | Kean | Jan 1999 | A |
5869981 | Agrawal et al. | Feb 1999 | A |
5870327 | Gitlin et al. | Feb 1999 | A |
5870586 | Baxter | Feb 1999 | A |
5880492 | Duong et al. | Mar 1999 | A |
5880512 | Gordon et al. | Mar 1999 | A |
5880597 | Lee | Mar 1999 | A |
5880598 | Duong | Mar 1999 | A |
5883526 | Reddy et al. | Mar 1999 | A |
5883850 | Lee et al. | Mar 1999 | A |
5949719 | Clinton et al. | Sep 1999 | A |
5952847 | Plants et al. | Sep 1999 | A |
5994934 | Yoshimura et al. | Nov 1999 | A |
6011744 | Sample et al. | Jan 2000 | A |
6034677 | Noguchi et al. | Mar 2000 | A |
6038627 | Plants | Mar 2000 | A |
6049487 | Plants et al. | Apr 2000 | A |
6100715 | Agrawal et al. | Aug 2000 | A |
6107826 | Young et al. | Aug 2000 | A |
6111448 | Shibayama | Aug 2000 | A |
6157213 | Voogel | Dec 2000 | A |
6181174 | Fujieda et al. | Jan 2001 | B1 |
6216258 | Mohan et al. | Apr 2001 | B1 |
6242943 | El Ayat | Jun 2001 | B1 |
6260182 | Mohan et al. | Jul 2001 | B1 |
6289068 | Hassoun et al. | Sep 2001 | B1 |
6292016 | Jefferson et al. | Sep 2001 | B1 |
6292925 | Dellinger et al. | Sep 2001 | B1 |
6326812 | Jefferson | Dec 2001 | B1 |
6329839 | Pani et al. | Dec 2001 | B1 |
6353334 | Schultz et al. | Mar 2002 | B1 |
6418059 | Kreifels et al. | Jul 2002 | B1 |
6430088 | Plants et al. | Aug 2002 | B1 |
6437650 | Sung et al. | Aug 2002 | B1 |
6480026 | Andrews et al. | Nov 2002 | B2 |
6496887 | Plants | Dec 2002 | B1 |
6501295 | Burr | Dec 2002 | B1 |
6727726 | Plants | Apr 2004 | B1 |
6734702 | Ikeoku et al. | May 2004 | B1 |
6751723 | Kundu et al. | Jun 2004 | B1 |
6867615 | Plants et al. | Mar 2005 | B1 |
6891394 | Yu et al. | May 2005 | B1 |
6949871 | Tu | Sep 2005 | B2 |
6980028 | Plants et al. | Dec 2005 | B1 |
7102385 | Plants et al. | Sep 2006 | B2 |
7119573 | Yu et al. | Oct 2006 | B2 |
7199609 | Plants et al. | Apr 2007 | B1 |
Number | Date | Country |
---|---|---|
0 415 542 | Mar 1991 | EP |
0 415 542 | Oct 1991 | EP |
0 889 593 | Jan 1999 | EP |
1 137 188 | Sep 2001 | EP |
Number | Date | Country | |
---|---|---|---|
Parent | 11428944 | Jul 2006 | US |
Child | 11677432 | US | |
Parent | 11295889 | Dec 2005 | US |
Child | 11428944 | US | |
Parent | 11056983 | Feb 2005 | US |
Child | 11295889 | US | |
Parent | 10452764 | May 2003 | US |
Child | 11056983 | US |