The present invention relates generally to programmable logic devices, and more particularly to a programmable logic block architecture.
Programmable logic devices such as field programmable gate arrays (FPGAs) include a number of programmable logic blocks that are interconnected by a programmable interconnect, also referred to as a routing structure. Each programmable logic block generally includes a number of lookup tables (LUTs). During FPGA configuration for logic use, a user programs the truth table for each lookup table to implement a desired logical function. The core unit of a programmable logic block is a LUT-register combination often denoted as a “logic cell” as seen in
The core LUT/register logic cell combination discussed with respect to
As seen in
For example, in slice 0 (
In certain FPGA designs, the bit size of the slice encompasses the entire programmable logic block in what may be denoted as a block-based approach such that all registers in a block-based programmable logic block receive common control signals. Regardless of the bit size used for the slices, it may be seen from examination of
Accordingly, there is a need in the art for improved programmable logic block architectures that provide a more efficient use of die area.
A programmable logic block within a programmable logic device includes at least two interconnected slices, each of the interconnect slices including at least two interconnected lookup tables. Each interconnected lookup table is adapted to receive input signals from a routing structure and to provide a LUT output signal. At least one of the slices includes a register adapted to register the LUT output signal of a lookup table and at least another of the slices includes fewer such registers than lookup tables.
In one embodiment of the invention, the number of interconnected slices within the programmable logic block is four, the number of interconnected lookup tables in each slice is two, and the number of registers within the four slices is six.
In another embodiment of the invention, the number of interconnected slices within the programmable logic block is four, the number of interconnected lookup tables in each slice is two, and the number of registers within the four slices is four.
In another embodiment of the invention, the number of interconnected slices within the programmable logic block is two, the number of interconnected lookup tables in each slice is four, and the number of registers within the four slices is six.
In another embodiment of the invention, the number of interconnected slices within the programmable logic block is two, the number of interconnected lookup tables in each slice is four, and the number of registers within the four slices is four.
In another embodiment of the invention, the number of interconnected slices within the programmable logic block is four, the number of interconnected lookup tables in each slice is four, and the number of registers within the four slices is twelve.
In another embodiment of the invention, the number of interconnected slices within the programmable logic block is four, the number of interconnected lookup tables in each slice is four, and the number of registers within the four slices is eight.
a is a block diagram of a two-bit slice (denoted herein as a type B slice) in which a single register may register either LUT output signal in accordance with an embodiment of the invention.
b is a block diagram of a two-bit slice (denoted herein as a type C slice) in which a single register may register only a first one of the LUT outputs in accordance with an embodiment of the invention.
c is a block diagram of a two-bit slice (denoted herein as a type D slice) that does not include a register in accordance with an embodiment of the invention.
a illustrates an eight-LUT programmable logic block including three two-bit type A slices and a single two-bit type D slice in accordance with an embodiment of the invention.
b illustrates an eight-LUT programmable logic block including two two-bit type A slices and two two-bit type B slices in accordance with an embodiment of the invention.
c illustrates an eight-LUT programmable logic block including two two-bit type A slices and two two-bit type C slices in accordance with an embodiment of the invention.
a illustrates an eight-LUT programmable logic block including two two-bit type A slices and two two-bit type D slices in accordance with an embodiment of the invention.
b illustrates an eight-LUT programmable logic block including four two-bit type B slices in accordance with an embodiment of the invention.
c illustrates an eight-LUT programmable logic block including four two-bit type C slices in accordance with an embodiment of the invention.
a illustrates a four-bit type B slice architecture in accordance with an embodiment of the invention.
b illustrates a four-bit type C slice architecture in accordance with an embodiment of the invention.
c illustrates a four-bit type D slice architecture in accordance with an embodiment of the invention.
a illustrates an eight-LUT programmable logic block architecture having a single four-bit type A slice and a single four-bit type B slice in accordance with an embodiment of the invention.
b illustrates an eight-LUT programmable logic block architecture having a single four-bit type A slice and a single four-bit type C slice in accordance with an embodiment of the invention.
a illustrates an eight-LUT programmable logic block architecture having a single four-bit type A slice and a single four-bit type D slice in accordance with an embodiment of the invention.
b illustrates an eight-LUT programmable logic block architecture having two four-bit type B slices in accordance with an embodiment of the invention.
c illustrates an eight-LUT programmable logic block architecture having two four-bit type C slices in accordance with an embodiment of the invention.
a illustrates a sixteen-LUT programmable logic block architecture having three four-bit type A slices and a single four-bit type D slice in accordance with an embodiment of the invention.
b illustrates a sixteen-LUT programmable logic block architecture having two four-bit type A slices and two four-bit type B slices in accordance with an embodiment of the invention.
c illustrates a sixteen-LUT programmable logic block architecture having two four-bit type A slices and two four-bit type C slices in accordance with an embodiment of the invention.
a illustrates a sixteen-LUT programmable logic block architecture having two four-bit type A slices and two four-bit type D slices in accordance with an embodiment of the invention.
b illustrates a sixteen-LUT programmable logic block architecture having four four-bit type B slices in accordance with an embodiment of the invention.
c illustrates a sixteen-LUT programmable logic block architecture having four four-bit type C slices in accordance with an embodiment of the invention.
Use of the same reference symbols in different figures indicates similar or identical items.
Reference will now be made in detail to one or more embodiments of the invention. While the invention will be described with respect to these embodiments, it should be understood that the invention is not limited to any particular embodiment. On the contrary, the invention includes alternatives, modifications, and equivalents as may come within the spirit and scope of the appended claims. Furthermore, in the following description, numerous specific details are set forth to provide a thorough understanding of the invention. The invention may be practiced without some or all of these specific details. In other instances, well-known structures and principles of operation have not been described in detail to avoid obscuring the invention.
An improved programmable logic block architecture is provided for programmable logic devices such as FPGAs. This improved architecture may be used regardless of the slice bit size. Certain slices within a programmable logic block will not have a one-to-one LUT/register ratio whereas other slices within the programmable logic block may possess a one-to-one LUT/register ratio. For example, in a 2-bit slice architecture, a conventional one-to-one LUT/register slice such as slice 200 of
An alternative embodiment for a two-bit slice having a reduced register/LUT ratio is illustrated in
Another alternative embodiment for a two-bit slice having a reduced register/LUT ratio is illustrated in
Given these illustrative two-bit slice embodiments having reduced register/LUT ratios, their inclusion within a programmable logic block architecture will now be addressed. For example, consider a programmable logic block that includes eight LUTs. An eight-LUT programmable logic block may include 4 two-bit slices. If conventional type A slices were used, this eight-LUT programmable logic block would include eight registers. To save die space and eliminate little or seldom-used registers, eight-LUT programmable logic blocks are described herein that do not include eight registers. The number of registers may range from seven to zero in an eight-LUT programmable logic block having a reduced register/LUT ratio. Including no registers strongly impacts design flexibility. However, including seven registers provides only minor die space savings. It has been observed that a set of six registers provides a sufficient design flexibility vs. die space savings tradeoff. Thus, the following discussion will show various embodiments for a six-register-eight-LUT programmable logic block. It will be appreciated, however, that the number of registers within a programmable logic block having a reduced register/LUT ratio is not limited to a particular value such as six.
Turning now to
Rather than use six registers within each eight-LUT programmable logic block, alternative embodiments may be constructed using a different number of registers. For example,
As discussed above, the number of bits within each slice need not be limited to two bits. A conventional four-bit slice has a one-to-one register-to-LUT ratio and thus has a type A architecture as discussed analogously with respect to
A four-bit slice 705 having a type C architecture is illustrated in
A four-bit slice 710 having a type D architecture is illustrated in
The type A through type D four-bit slices discussed above may be organized in various ways to form eight-LUT programmable logic blocks. For example, as seen in
Other eight-LUT programmable logic block architectures that incorporate 4-bit slices may be constructed with less than six registers 120. For example, as seen in
Four-bit slices may also be used to construct sixteen-LUT programmable logic blocks (which could also be constructed with two-bit slices). Turning now to
Turning now to
The above-described embodiments of the present invention are merely meant to be illustrative and not limiting. It will thus be obvious to those skilled in the art that various changes and modifications may be made without departing from this invention in its broader aspects. Accordingly, the appended claims encompass all such changes and modifications as fall within the true spirit and scope of this invention.
This application is a continuation of U.S. application Ser. No. 11/200,983, filed Aug. 9, 2005, which is hereby incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
7295035 | Agrawal et al. | Nov 2007 | B1 |
Number | Date | Country | |
---|---|---|---|
Parent | 11200983 | Aug 2005 | US |
Child | 11934711 | US |