This invention relates to the field of Field Programmable Gate Arrays (FPGAs). In particular it relates to the architecture of FPGA building blocks.
A digital logic circuit, generally formed as a cascade of separate logic functions, is a circuit that produces a digital output as a result of some logical operation on its digital inputs. Digital logic circuits are typically implemented on various types of integrated semiconductor chips. One widely known type of integrated chip is the Application Specific Integrated Circuit (ASIC), which is a custom-made integrated chip. Each ASIC is manufactured to implement a specific digital logic circuit.
Programmable chips are another type of integrated chips, but differ from ASICs because of their ability to implement any number of different complex digital logic circuits by configuring the underlying integrated chip. The programmable integrated chips are less costly than ASICs because a large number of similar integrated chips may be manufactured from a single design, which can later be configured to implement a wide variety of digital logic circuits. For this reason the cost of design and manufacturing is distributed over a large number of integrated chips.
FPGA is one type of programmable integrated chips. The FPGA can either be permanently programmed by the user, such as in the U.S. Pat. No. 4,758,745 by El Gamal, et al., or can be temporarily programmed by the user, described in the U.S. Pat. No. 4,870,302, by Freeman.
Typically an FPGA consists of an array of modularized logic cells and interconnection resources. It is an array of uncommitted gates with uncommitted wiring channels. Each logic cell can be programmed to implement a particular logic function. Various digital circuits may be implemented to execute desired functions by programming a number of logic blocks and interconnecting them using interconnection resources.
In other words, to implement a particular circuit function, the circuit is mapped into the array and the wiring channels and appropriate connections are programmed to implement the necessary wiring connections that form the circuit function. A gate array circuit can be programmed to implement virtually any set of functions.
Of utmost importance in designing an FPGA is the topology of the logic cells and the interconnection resources since different FPGA architecture provides different performance characteristics. Also, the programming of a gate array and the mapping of a desired functionality onto it depend upon the topology of the gate array. If the cells of the gate array are high level blocks, such as counters, parity generators, and the like, then the amount of programming required is limited to the interconnections among these large- or coarse-grain cells.
If, on the other hand, the cells of the gate array are low level blocks, such as gates, latches, and the like, then the amount of programming is significantly higher, because these smaller, or fine-grain, cells need to be interconnected to effect the higher level functions. In some designs the use of the fine-grain cells results in higher circuit densities because the desired functions can be implemented more efficiently with small low-level cells rather than with larger high-level cells whose high level functionality is useless in the particular circumstances.
A highly complex logic cell may be able to perform a large number of complex operations but if a relatively simple operation is desired much of the functionality and semiconductor real estate will be wasted. At the same time, a logic cell consisting of basic logic gates requires extensive wiring to perform sophisticated operations. In other words, some complex designs cannot be efficiently embodied in a fine-grain gate array, because the amount of interconnection required among the low-level cells exceed the capacity of the gate array. Various architectures have been proposed to optimize the tradeoffs among circuit building blocks, routing efficiency, performance limits, and the like. There is a need for logic cells that optimize flexibility and functionality of the FPGAs.
The foregoing aspects and many of the attendant advantages of the invention will become more readily appreciated as the same become better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein:
The present invention relates to the general area of Field Programmable Gate Arrays. In particular it relates to the architecture of the logic cells that are the building blocks of the Field Programmable Gate Arrays and the necessary interconnections to support their functionality. In the detailed description provided below, several different embodiments of a logic cell are disclosed. A single proposed logic cell offers, among other advantages, easy implementation of any logic function with up to four inputs; implementation of two parallel or series independent 2- and 3-input look-up tables (LUT2 or LUT3, respectively); or implementation of a 4-input look-up table (LUT4). It can also implement a 1-bit full adder or accumulator, without the need for dedicated carry logic, or can implement multiplication with the addition of a 2-input AND gate.
At the core of the proposed logic cells is a 3-input look-up table. These logic cells are further comprised of a plurality of multiplexers, a register, and programmable switches. The logic function of each logic cell is determined by the unique interconnection of these basic elements and the settings of the switches. On the other hand the logic cells of the prior art require 4-input look-up tables, dedicated carry logic, and multiple registers, which make them more complicated than the proposed logic cells while performing the same or fewer functions.
In the following description, several specific details are presented to provide a thorough understanding of the embodiments of the invention. One skilled in the relevant art will recognize, however, that the invention can be practiced without one or more of the specific details, or in combination with or with other components, etc. In other instances, well-known implementations or operations are not shown or described in detail to avoid obscuring aspects of various embodiments of the invention.
Reference throughout the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, implementation, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, uses of the phrases “in one embodiment” or “in an embodiment” in various places throughout the specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, implementation, or characteristics may be combined in any suitable manner in one or more embodiments.
Each of the proposed logic cell embodiments comprises two LUT3, a 2×1 standard multiplexer, a D flip-flop, five hard-wired multiplexers, and two pass-gate switches. The data enters the cell through inputs IP1 to IP7 and some are shared between the two LUT3s. The combination of the two LUT3s and a 2×1 multiplexer can implement a LUT4. They can also implement two LUT3, two LUT2, or one LUT2 and one LUT3, which can separately operate in parallel or in series. The outputs of the logic cells are available in both, the registered and the non-registered, forms. The output of a LUT2, a LUT3, or a LUT4 may be directed to either of the two outputs, OP1 and OP2, of the logic cell.
The by-pass switches in different embodiments of the proposed logic cells, provide feedback paths from the outputs of the cell to its inputs; enabling the cell to act as an accumulator or an AOI (And-Or-Inverter), or to simply by-pass the inputs to the output. A D flip-flop is shared among the two LUT3s of each logic cell. These registers make it possible for the logic cells to act as 1-bit full-adders, or accumulators, without the need for dedicated carry logic. These registers may also be used to form a register chain. The addition of a 2-input AND gate to a logic cell further enables the cell to perform multiplication.
In the following paragraphs, the circuit of
Each 3-input look-up table has 23 memory bits. The two of them together are capable of addressing 2(23) or 24 data bits, which is the same as the number of possible combinations of a 4-input logic gate. Therefor, to use the logic cell of
The two LUT3s, 405 and 406, can be used in parallel if, for example, by setting S9 and S16 or S11 and S14. With such hard-wiring of the two multiplexers 408 and 409 one output port of the logic cell can be connected to the output of one LUT3 and the other output port to the other LUT3. If LUT3s are used separately, one of their outputs can be available in registered form by setting S5 or S8 of multiplexer 404. However, by setting S7 and controlling IP4, the user can continuously choose the output of either one of the LUT3s to be in registered form. Switches S17 and S18 must remain open. The above explanation enables a person of ordinary skill in the appropriate art to easily use either or both of the LUT3s as LUT2s.
Since a 1-bit full-adder is defined as a circuit which accepts two bits and an input carry and which produces a sum bit and an output carry bit, the logic cell can be configured to function in the same manner. First, the logic cell must be configured as two parallel and separate LUT3s with, for example, OP1 connected to the non-registered output of one LUT3 and OP2 connected to the non-registered output of the other LUT3. Additionally S0 and S2 must be set to have IP1, IP2, and IP3 as inputs to both LUT3s. With such arrangement IP1 and IP2 can represent the two bits to be added together and IP3 can represent the carry-in bit. With such configuration one LUT3 can store the single bit addition result of the 23 possible combinations of IP1, IP2, and IP3, and the other LUT3 can produce the one bit carry-out of the 23 possible combinations.
The other arrangement to implement a full-adder is again to configure the logic cell to function as two parallel and separate LUT3s but to set S1 and S4. With this arrangement IP1 can be one of the bits to be added, IP2 and IP3 both must be connected to the other bit to be added and Cin will represent the carry-in bit. Here, the look-up table 405 stores the carry-out bit, which can be read at Cout, and the look-up table 406 stores the single bit addition result, which can be read at OP1 or OP2. The description of a 1-bit full-adder and the feedback provisions of the logic cells enable those persons with ordinary skill in the relevant art to also arrange an accumulator of any bit-length.
The preferred and several alternate embodiments have thus been described. After reading the foregoing specification, one of ordinary skill in the relevant art will be able to effect various changes, alterations, combinations, and substitutions of equivalents without departing from the broad concepts disclosed. It is therefore intended that the scope of the letters patent granted hereon be limited only by the definitions contained in the appended claims and equivalents thereof, and not by limitations of the embodiments described herein.
This application claims the benefit of provisional U.S. Patent Application No. 60/558,949, filed Apr. 2, 2004, which is hereby incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
60558949 | Apr 2004 | US |