Electronic digital logic circuitry – Multifunctional or programmable – Array
Reexamination Certificate
2002-09-10
2003-12-23
Le, Don (Department: 2819)
Electronic digital logic circuitry
Multifunctional or programmable
Array
C326S038000
Reexamination Certificate
active
06667635
ABSTRACT:
FIELD OF THE INVENTION
The invention relates to Field Programmable Gate Arrays (FPGAs). More particularly, the invention relates to a lookup table for an FPGA that is designed for reliable low-voltage operation.
BACKGROUND OF THE INVENTION
Programmable logic devices (PLDs) are a well-known type of digital integrated circuit that can be programmed to perform specified logic functions. One type of PLD, the field programmable gate array (FPGA), typically includes an array of configurable logic blocks (CLBs) surrounded by a ring of programmable input/output blocks (IOBs). The CLBs and IOBs are interconnected by a programmable interconnect structure. Some FPGAs also include additional logic blocks with special purposes (e.g., DLLS, RAM, and so forth).
The CLBs, IOBs, interconnect, and other logic blocks are typically programmed by loading a stream of configuration data (bitstream) into internal configuration memory cells that define how the CLBs, IOBs, and interconnect are configured. The configuration data can be read from memory (e.g., an external PROM) or written into the FPGA by an external device. The collective states of the individual memory cells then determine the function of the FPGA.
A CLB typically includes at least two types of sub-circuits, with supporting logic. One sub-circuit type is the register element, which can be, for example, a flip-flop configurably programmable as a latch. The other common sub-circuit is a function generator, often a 4-input function generator that can provide any function of up to four input signals. The function generator is typically implemented as a lookup table (LUT), often a static RAM (SRAM).
For example, a 4-input LUT is typically implemented using a 16×1 SRAM. The SRAM is programmed (written to) during the configuration of the FPGA, using values included in the configuration bitstream. There are 16 possible combinations of the four input signals, so each of the 16 memory locations in the lookup table is programmed with the correct output value for the corresponding four input values. The four input values provide the four address bits for the 16×1 SRAM.
One FPGA, the Xilinx Virtex®-II FPGA, is described in detail in pages 33-75 of the “Virtex-II Platform FPGA Handbook”, published December, 2000, available from Xilinx, Inc., 2100 Logic Drive, San Jose, Calif. 95124, which pages are incorporated herein by reference. 
FIG. 1
 is a simplified block diagram of a Virtex-II CLB.
CLB 
100
 includes four “slices” SLICE_
0
-
3
, each slice including the logic shown in 
FIG. 1
 for SLICE_
0
. (Other logic in the slice not relevant to the present application is omitted from 
FIG. 1
, for clarity.) Each slice includes two LUTs 
101
-
102
. Each LUT can be programmed to function as any of a 4-input lookup table, a 16-bit shift register, and 16 bits of random access memory (RAM) in any of several configurations. When the LUTs are configured to function as RAM, a write strobe generator circuit 
105
 is active, and controls the write functions of the RAM. Each LUT 
101
-
102
 has two output signals OUT
1
 and OUT
2
. (In the present specification, the same reference characters are used to refer to terminals, signal lines, and their corresponding signals.) Both output signals OUT
1
-OUT
2
 have the same value; the output value is provided in duplicate merely to speed up the output path for each output signal.
Multiplexer MUX
1
 passes either the first output OUT
1
 of function generator 
101
 or an independent input signal Reg_DI_
1
 to 1-bit register 
103
. Register 
103
 can be configured as either a flip-flop or a latch. The outputs of LUT 
101
 and register 
103
 are both optionally provided as outputs of the slice (labeled D
1
 and Q
1
, respectively, in FIG. 
1
). Thus, the LUT and register can be used independently of each other or can be coupled together so the register stores the LUT output signal.
The second LUT output, OUT
2
, is optionally used to control the carry logic within the half-slice. LUT output signal OUT
2
 is coupled to the select terminal of carry multiplexer CM
1
, and selects one of the previous carry-out signal and a new input signal to place on the carry out terminal COUT.
The elements in the other half of the slice, including LUT 
102
, multiplexer MUX
2
, carry multiplexer CM
2
, and 1-bit register 
104
, are coupled together in a similar manner.
FIG. 2
 shows the internal structure of the LUT included in the Virtex-II FPGA, i.e., LUTs 
101
 and 
102
 of FIG. 
1
. Again, extraneous logic is omitted from the drawing, for clarity. For example, the configuration logic used to load initial values into RAM cells RB
201
-RB
216
 is not shown. This logic and other omitted circuitry is well known in the art of FPGA design.
The Virtex-II LUT (
101
a 
in 
FIG. 2
) includes 16 memory cells RB
201
-RB
216
. These memory cells are used to store the 16 possible output values for the four input signals IN
1
-IN
4
. Memory cells RB
201
-RB
216
 are accessed via several control and data signals. For example, signals CTRL/DATA
1
 access each memory cell, and include configuration control signals, write control signals (such as write strobe signal WS shown in FIG. 
1
), a direct data input signal (e.g., signals RAM_DI_
1
, RAM_DI_
2
 in FIG. 
1
), an initialization control signal, and so forth. Signals CTRL/DATA
2
 pass serially through each memory cell, and include configuration input data, a serial line used when the LUT is configured as a serial register, and so forth.
Each memory cell RB
201
-RB
216
 provides one output signal, of which one must be selected. The 16 output signals are reduced to four, first by eliminating half of the signals using input signal IN
1
, then by eliminating another half of the signals using input signal IN
2
. For example, the output of memory cell RB
201
 passes through N-channel transistor 
211
 whenever signal IN
1
 is high, while the output of memory cell RB
202
 passes through N-channel transistor 
212
 whenever input signal IN
1
 is low (i.e., the output of inverter INV
1
 is high). The selected one of these two output signals passes through N-channel transistor 
231
 whenever signal IN
2
 is high.
Similarly, the output of memory cell RB
203
 passes through N-channel transistor 
213
 whenever signal IN
1
 is high, while the output of memory cell RB
204
 passes through N-channel transistor 
214
 whenever input signal IN
1
 is low (i.e., the output of inverter INV
1
 is high). The selected one of these two output signals passes through N-channel transistor 
232
 whenever signal IN
2
 is low (i.e., the output of inverter INV
2
 is high). Thus, the output of one of memory cells RB
201
-RB
204
 is passed to node A, based on the values of signals IN
1
 and IN
2
.
Similarly, the output of one of memory cells RB
205
-RB
208
 is passed to node B, the output of one of memory cells RB
209
-RB
212
 is passed to node C, and the output of one of memory cells RB
213
-RB
216
 is passed to node D, also based on the values of signals IN
1
 and IN
2
.
Coupled to each of nodes A-D is a pull-up (
241
-
244
, respectively) implemented as a P-channel transistor coupled between the node and power high VDD. The pull-up is controlled by power-on reset signal PORB. During a power-on or reset sequence signal PORB is low, forcing each of nodes A-D to a high value and ensuring thereby that the LUT output signals OUT
1
-OUT
2
 are high after a power-on or reset sequence.
Node A then passes through a half-latch 
245
 to node E. Half-latch 
245
 includes an inverter 
251
 that buffers (and inverts) the signal on node A. However, a limitation of the circuit of 
FIG. 2
 now comes into play. This limitation is inherent in the properties of N-channel transistors, i.e., that a high voltage level passing through an N-channel transistor is reduced by one threshold voltage of the transistor. Therefore, to ensure that node A reaches a true “high” level (i.e., reaches power high VDD when the node is high), a second pull-up 
261
 is included, forming half-latch 
245
. When node A is high, inverter 
251
 drives a low value, which 
Crotty Patrick J.
Pi Tao
Cartier Lois D.
Le Don
Xilinx , Inc.
LandOfFree
FPGA lookup table with transmission gate structure for... does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with FPGA lookup table with transmission gate structure for..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and FPGA lookup table with transmission gate structure for... will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-3104431