Claims
- 1. A configurable logic element (CLE) for a programmable logic device (PLD), the CLE comprising:
a plurality of logic blocks each configurable as a P-input product term (Pterm) generator; one or more expanders configurably interconnecting two or more of the plurality of logic blocks, each expander having two or more configurable functions; and an expander control circuit coupled to the one or more expanders, the expander control circuit configurably controlling the one or more expanders to create from the plurality of logic blocks a Q-input Pterm, where Q is greater than P.
- 2. The CLE of claim 1, wherein each logic block provides a P-input Pterm output signal, the CLE further comprising a PAL AND circuit accepting first and second Pterm output signals from first and second logic blocks in the CLE and providing therefrom a (2P)-input Pterm output signal.
- 3. The CLE of claim 2, wherein one of the expanders is configured to provide the (2P)-input Pterm output signal to another expander.
- 4. The CLE of claim 1, wherein each logic block provides a P-input Pterm output signal, the CLE further comprising a PAL OR circuit accepting a Pterm output from each of two logic blocks in the CLE and providing therefrom a sum-of-products output signal.
- 5. The CLE of claim 4, wherein one of the expanders is configured to provide the sum-of-products output signal to another expander.
- 6. The CLE of claim 1, wherein the PLD is a field programmable gate array (FPGA).
- 7. The CLE of claim 1, wherein the logic blocks are versatile implementation modules (VIMs) configurable as lookup tables (LUTs) or product term generators.
- 8. The CLE of claim 1, further comprising at least one expander for configurably interconnecting one of the logic blocks to another logic block in another CLE, wherein the Q-input Pterm includes logic blocks from at least two different CLEs.
- 9. The CLE of claim 1, wherein:
the CLE comprises a plurality of substantially similar slices; and each slice includes at least two logic blocks, at least first and second expanders for configurably interconnecting the at least two logic blocks to other logic blocks in other slices, and a third expander for configurably interconnecting the at least two logic blocks.
- 10. The CLE of claim 9, wherein the other slices are in the same CLE.
- 11. The CLE of claim 1, wherein P equals 8.
- 12. The CLE of claim 1, wherein each of the plurality of logic blocks comprises:
P input terminals providing up to P input signals; a memory array having rows and columns of memory cells, the memory array being coupled to the P input terminals; and a plurality of AND circuits coupled to the columns of memory cells, each AND circuit providing a P-input product term.
- 13. The CLE of claim 1, wherein:
the expander control circuit comprises one or more configuration memory cells; contents of the one or more configuration memory cells determine a state of one or more expander control signals; and the one or more expander control signals control the one or more expanders.
- 14. The CLE of claim 1, wherein the two or more configurable functions include an AND function.
- 15. The CLE of claim 1, wherein the logic blocks comprising the Q-input Pterm are adjacent.
- 16. A configurable circuit in a programmable logic device (PLD), the configurable circuit comprising:
a plurality of logic blocks; a first set of expanders configurably interconnecting two or more of the plurality of logic blocks, each of the first set of expanders having two or more configurable functions one of which is an AND function, the first set of expanders creating a first expander chain extending in a first direction; a second set of expanders configurably interconnecting two or more of the plurality of logic blocks, each of the second set of expanders having two or more configurable functions one of which is an AND function, the second set of expanders creating a second expander chain extending in the first direction; and a third set of expanders configurably interconnecting the first and second expander chains, each of the third set of expanders having two or more configurable functions one of which is an OR function, the third set of expanders creating a third expander chain extending in a second direction orthogonal to the first direction.
- 17. The configurable circuit of claim 16, further comprising:
an expansion control circuit coupled to the first, second, and third sets of expanders, the expansion control circuit configurably controlling the first, second, and third sets of expanders.
- 18. The configurable circuit of claim 16, wherein:
the logic blocks function as lookup tables (LUTs); the first, second, and third sets of expanders are configured as multiplexers; and the user circuit is a LUT too large to be implemented in a single logic block.
- 19. The configurable circuit of claim 16, wherein:
the logic blocks function as lookup tables (LUTs); the first, second, and third sets of expanders are configured as multiplexers; and the user circuit is a multiplexer too large to be implemented in a single logic block.
- 20. The configurable circuit of claim 16, wherein:
the logic blocks function as product term (Pterm) generators; the first and second sets of expanders are configured to perform an AND function; the third set of expanders are configured to perform an OR function; and the user circuit is a PAL too large to be implemented in a single logic block.
- 21. The configurable circuit of claim 16, wherein:
the logic blocks function as random access memories (RAMs); the first, second, and third sets of expanders are configured as multiplexers; and the user circuit is a RAM too large to be implemented in a single logic block.
- 22. The configurable circuit of claim 21, wherein the user circuit is a dual-port RAM.
- 23. The configurable circuit of claim 16, further comprising:
a fourth set of expanders configurably interconnecting the first and second expander chains, each of the fourth set of expanders having two or more configurable functions one of which is an OR function, the fourth set of expanders creating a fourth expander chain in the second direction; and a fifth set of expanders configurably interconnecting the third and fourth expander chains, each of the fifth set of expanders having two or more configurable functions one of which is an OR function, the fifth set of expanders creating a fifth expander chain extending in the first direction.
- 24. The configurable circuit of claim 23, wherein:
the logic blocks function as product term (Pterm) generators; the first and second sets of expanders are configured to perform an AND function; the third, fourth, and fifth sets of expanders are configured to perform an OR function; and the user circuit is a PAL too large to be implemented in a single logic block.
- 25. The configurable circuit of claim 16, wherein each logic block is configurable as two N-input lookup tables (LUTs) with N shared inputs, the configurable circuit further comprising:
an AB expander configurably interconnecting the outputs of the two N-input LUTs of each block, the AB expander being configurable as a multiplexer, thereby generating the output of an (N+1)-input LUT.
- 26. A method for implementing a user circuit in a programmable logic device (PLD), the PLD comprising a plurality of logic blocks and a plurality of expanders configurably interconnecting the logic blocks, each expander having two or more configurable functions, the method comprising:
implementing a first portion of the user circuit in a first logic block; implementing a second portion of the user circuit in a second logic block; implementing a third portion of the user circuit in a third logic block; implementing a fourth portion of the user circuit in a fourth logic block; configuring a first expander to perform a first function, such that the first logic block, the first expander, and the second logic block form a first expander chain extending in a first direction; configuring a second expander to perform a second function, such that the third logic block, the second expander, and the fourth logic block form a second expander chain extending in the first direction; and configuring a third expander to perform a third function, the third expander configurably interconnecting the first and second expander chains to create a third expander chain extending in a second direction orthogonal to the first direction.
- 27. The method of claim 26, wherein the PLD further comprises a configurable expansion control circuit coupled to and controlling the first, second, and third expanders, the method further including:
configuring the expansion control circuit.
- 28. The method of claim 26, wherein:
implementing the first, second, third, and fourth portions of the user circuit comprises configuring the first, second, third, and fourth logic blocks as lookup tables (LUTs); configuring the first, second, and third expanders comprises configuring the first, second, and third expanders as multiplexers; and the user circuit is a LUT too large to be implemented in a single logic block.
- 29. The method of claim 26, wherein:
implementing the first, second, third, and fourth portions of the user circuit comprises configuring the first, second, third, and fourth logic blocks as lookup tables (LUTs); configuring the first, second, and third expanders comprises configuring the first, second, and third expanders as multiplexers; and the user circuit is a multiplexer too large to be implemented in a single logic block.
- 30. The method of claim 26, wherein:
implementing the first, second, third, and fourth portions of the user circuit comprises configuring the first, second, third, and fourth logic blocks as product term (Pterm) generators; configuring the first and second expanders comprises configuring the first and second expanders as AND gates; configuring the third expander comprises configuring the third expander as an OR gate; and the user circuit is a PAL too large to be implemented in a single logic block.
- 31. The method of claim 26, wherein:
implementing the first, second, third, and fourth portions of the user circuit comprises configuring the first, second, third, and fourth logic blocks as random access memories (RAMs); configuring the first, second, and third expanders comprises configuring the first, second, and third expanders as multiplexers; and the user circuit is a RAM too large to be implemented in a single logic block.
- 32. The method of claim 31, wherein the user circuit is a dual-port RAM.
- 33. The method of claim 26, further comprising:
configuring a fourth expander to perform a fourth function, the fourth expander configurably interconnecting the first and second expander chains, thereby creating a fourth expander chain extending in the second direction; and configuring a fifth expander to perform a fifth function, the fifth expander configurably interconnecting the third and fourth expander chains, thereby creating a fifth expander chain extending in the first direction.
- 34. The method of claim 33, wherein:
implementing the first, second, third, and fourth portions of the user circuit comprises configuring the first, second, third, and fourth logic blocks as product term (Pterm) generators; configuring the first and second expanders comprises configuring the first and second expanders as AND gates; configuring the third, fourth, and fifth expanders comprises configuring the third, fourth, and fifth expanders as OR gates; and the user circuit is a PAL too large to be implemented in a single logic block.
- 35. The method of claim 26, wherein:
implementing the first portion of the user circuit comprises configuring the first logic block as two N-input lookup tables (LUTs) with N shared inputs, the method further comprising:
configuring a fourth expander to perform a multiplexer function acting on the outputs of the two N-input LUTs of the first logic block, thereby implementing an (N+1)-input LUT.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit of commonly assigned, co-pending provisional U.S. Patent Application No. 60/238,403, entitled “Versatile Configurable Logic Block for an FPGA,” invented by Bernard J. New, Sundrarajarao Mohan, and Ralph D. Wittig and filed Oct. 6, 2000, which is incorporated herein by reference.
[0002] This application is a continuation-in-part of commonly assigned, co-pending U.S. Patent Application No. 09/591,762, entitled “Memory Array with Hard and Soft Decoders”, invented by Ralph D. Wittig, Sundrarajarao Mohan, and Bernard J. New and filed Jun. 12, 2000;
[0003] which is a divisional application of commonly assigned U.S. Pat. No. 6,150,838, filed Feb. 25, 1999 and issued Nov. 21, 2000,
[0004] both of which are incorporated herein by reference.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60238403 |
Oct 2000 |
US |
Divisions (1)
|
Number |
Date |
Country |
Parent |
09258024 |
Feb 1999 |
US |
Child |
09591762 |
Jun 2000 |
US |
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
09591762 |
Jun 2000 |
US |
Child |
09860863 |
May 2001 |
US |