The present invention is in the field of programmable logic devices (PLD's) and, more particularly, is related to the use of look-up tables (LUTs) in logic elements (LEs) of PLD's where not only are multiple stages of arithmetic performed in each LUT but, also, the LUTs are configurable to accomplish multiple non-arithmetic functions with reduced input sharing requirements.
A common use for LE logic in a PLD is to perform arithmetic operations. LEs of conventional PLDs provide arithmetic functionality with 4-input LUTs. (We refer to a LUT with “x” inputs as an “x-LUT.”)
The 4-LUT 100 can be thought of, functionally, as two 3-LUTs 102 and 104. The 4-LUT 100 performs arithmetic, with the ability to add two bits in each 3-LUT 102 and 104. A multiplexer 106 selects between the outputs of the 3-LUTs 102 and 104, using the fourth data input D to the 4-LUT 100 as a select line to control the output of the multiplexer 106. Conventional implementations of LUT arithmetic use one 3-LUT of a 4-LUT to generate the sum from two summand signals and the carry_in of the previous stage. The other 3-LUT generates the carry_out of the stage from the same three input signals (i.e. the two summand signals and the carry_in of the previous stage). A benefit of such a scheme is that an arithmetic sum output is generated by the same output circuitry that may be used to generate separate arithmetic functions. This allows arithmetic to be performed without requiring any additional multiplexers for selection between different outputs.
A programmable logic device (PLD) includes a plurality of logic array blocks (LAB's) connected by a PLD routing architecture. At least one LAB includes a logic element (LE) configurable to arithmetically combine a plurality of binary input signals in a plurality of stages.
The LE comprises look-up table (LUT) logic having K inputs (a “K-LUT”). The K-LUT is configured to input the binary input signals at respective inputs of the K-LUT logic cell and to provide, at a plurality of outputs of the K-LUT logic cell, respective binary result signals indicative of at least two of the plurality of stages of the arithmetic combination of binary input signals.
An input line network includes a network of input lines, the input lines configurable to receive input signals from the PLD routing architecture that represent the binary input signals and to provide the input signals to the K-LUT. An output line network includes a network of output lines, the output lines configured to receive, from the K-LUT, output signals that represent the binary result signals and to provide the output signals to the PLD routing architecture.
The described LUT's can perform arithmetic efficiently, as well as non-arithmetic functions.
In accordance with a broad aspect of the invention, LEs are provided with k-LUT's (typically, but not limited to, where k≧4), wherein multiple stages of arithmetic may be performed in each k-LUT. The k-LUT may be, but is not required to be, fracturable. A fracturable LUT is a LUT that includes “extra” inputs, such that input sharing requirements are reduced (while not necessarily precluding input sharing, however).
The principle of fracturable LUTs is illustrated in
When using fracturable LUTs, there are multiple outputs from each logic element, allowing the fracturable LUT to perform more than one stage of LUT-based arithmetic without requiring any additional output logic. For example, a logic element with a fracturable K-LUT can use one (K-1)-LUT to accomplish one stage of arithmetic and the other (K-1)-LUT to accomplish a second stage of the arithmetic. Each of these (K-1)-LUTs can be thought of as having two (K-2)-LUTs. One of these (K-2)-LUTs can be used to provide the sum for two functions of no more than K-3 distinct input signals in total (the sum being a function of those K-3 inputs and the carry_in from the previous stage). The other (K-2)-LUT can be used to provide the carry_out of the stage (as a function of the same K-3 inputs and the carry_in of the previous stage).
As discussed above, the output multiplexer 310 (
The scheme just described with reference to
As discussed below, this minimization of input sharing can be accomplished with input multiplexers that allow portions of the LUT to use otherwise unused inputs, to reduce the sharing requirement.
Additional input multiplexers may be provided to allow for more than K inputs to a fracturable K-LUT. For example,
We now discuss embodiments in which the arithmetic performance of a fracturable LUT is increased by providing a special path for the Cin signal. That is, with the
In addition, two multiplexers 920 and 922 are provided to provide a more direct input path for the Cin signal. With the multiplexers 920 and 922, the path from carry_in to carry_out takes one stage of multiplexing. This scheme, however, still uses additional multiplexers before the LUTs, which can slow down the signals being multiplexed as well as waste area in the LUT.
A disadvantage of using the structure illustrated by
Although the carry_in to carry_out path has been shortened in
Adding extra outputs to the LUT is particularly effective for a fracturable LUT because there are already multiple outputs from the LUT, and output multiplexers are used to select from the multiple outputs. This technique is generally applicable, however, and can be used for regular non-fracturable LUTs, particularly if the additional output multiplexing cost is acceptable to achieve a shorter carry path.
A further disadvantage of the
Although particular embodiments have been described in detail, various modifications to the embodiments described herein may be made without departing from the spirit and scope of the present invention, thus, the invention is limited only by the appended claims. For example, the disclosed embodiments may be employed in conjunction with LUTs that use LUT mask sharing as disclosed in U.S. Pat. No. 6,798,240, filed Jan. 24, 2003 and assigned to the assignee of the present patent application.
This application is a continuation of U.S. patent application Ser. No. 12/484,010, filed on Jun. 12, 2009 and entitled “Structures For LUT-Based Arithmetic In PLDS”, which is continuation of U.S. patent application Ser. No. 10/723,104, filed on Nov. 26, 2003, now U.S. Pat. No. 7,558,812, and entitled “Structures For LUT-Based Arithmetic In PLDS”, the entirety of which are incorporated by reference for all purposes.
Number | Name | Date | Kind |
---|---|---|---|
5267187 | Hsieh | Nov 1993 | A |
5682107 | Tavana et al. | Oct 1997 | A |
5724276 | Rose et al. | Mar 1998 | A |
5805477 | Perner | Sep 1998 | A |
5898602 | Rothman | Apr 1999 | A |
6107827 | Young | Aug 2000 | A |
6154053 | New | Nov 2000 | A |
6188240 | Nakaya | Feb 2001 | B1 |
6288570 | New | Sep 2001 | B1 |
6427156 | Chapman | Jul 2002 | B1 |
7558812 | Padalia | Jul 2009 | B1 |
8788550 | Padalia | Jul 2014 | B1 |
Entry |
---|
“U.S. Appl. No. 10/723,104, Advisory Action mailed Jan. 28, 2008”. |
“U.S. Appl. No. 10/723,104, Advisory Action mailed Feb. 13, 2009”. |
“U.S. Appl. No. 10/723,104, Final Office Action mailed Oct. 29, 2008”. |
“U.S. Appl. No. 10/723,104, Non Final Office Action mailed May 4, 2007”. |
“U.S. Appl. No. 10/723,104, Non Final Office Action mailed May 9, 2008”. |
“U.S. Appl. No. 10/723,104, Non Final Office Action mailed Oct. 19, 2007”. |
“U.S. Appl. No. 10/723,104, Notice of Allowance mailed Mar. 16, 2009”. |
“U.S. Appl. No. 10/723,104, Preliminary Amendment filed May 25, 2008”. |
“U.S. Appl. No. 10/723,104, Response filed Aug. 3, 2007 to Non Final Office Action mailed May 4, 2007”. |
“U.S. Appl. No. 10/723,104, Response filed Aug. 7, 2008 to Non Final Office Action mailed May 9, 2008”. |
“U.S. Appl. No. 10/723,104, Response filed Dec. 17, 2008 to Final Office Action”. |
“U.S. Appl. No. 10/723,104, Response filed Dec. 19, 2007 to Non Final Office action mailed Oct. 19, 2007”. |
“U.S. Appl. No. 12/484,010, Advisory Action mailed Nov. 15, 2013”, 3 pgs. |
“U.S. Appl. No. 12/484,010, Final Office Action mailed Sep. 10, 2013”, 8 pgs. |
“U.S. Appl. No. 12/484,010, Non Final Office Action mailed Dec. 6, 2013”, 6 pgs. |
“U.S. Appl. No. 12/484,010, Notice of Allowance mailed Mar. 21, 2014”, 5 pgs. |
Number | Date | Country | |
---|---|---|---|
Parent | 12484010 | Jun 2009 | US |
Child | 14320499 | US | |
Parent | 10723104 | Nov 2003 | US |
Child | 12484010 | US |