Field programmable gate array including coupled lookup tables
A field programmable gate array (FPGA) includes: a first logic block having a first lookup table; and a second logic block having a second lookup table, wherein the first logic block is coupled to the second logic block, in which the first logic block is configured to pass, upon a clock cycle of the FPGA, data about a lookup table configuration stored in the first lookup table to the second logic block.
1. A device comprising:
an array comprising a plurality of programmable logic blocks, wherein each programmable logic block comprises at least one lookup table, at least one flip-flop, and at least one combinatorial logic circuit element,
wherein each lookup table of each programmable logic block comprises multiple memory cells configured to store data corresponding to a truth table for a predefined function,
wherein each memory cell of each programmable logic block is directly coupled to a corresponding memory cell of another programmable logic block in the plurality of programmable logic blocks;
a common global clock to which each programmable logic block is coupled,
wherein at least one programmable logic block of the plurality of programmable logic blocks is configured to pass, upon a predetermined clock cycle of the common global clock, data from the memory cells of the lookup table of the at least one programmable logic block directly to the memory cells of the lookup table of at least one other programmable logic block.
2. The device of claim 1 , wherein the multiple memory cells of each lookup table comprise CMOS-based memory cells.
3. The device of claim 1 , wherein the multiple memory cells of each lookup table comprise static random access memory elements.
4. The device of claim 1 , further comprising a memory component separate from the plurality of programmable logic blocks, wherein the memory component is coupled to a subset of the programmable logic blocks, wherein the memory component stores data characterizing at least one lookup table configuration, and wherein the memory component is configured to pass, upon receipt of a control signal, the data characterizing at least one lookup table configuration to the memory cells of the lookup tables of the subset of the programmable logic blocks.
5. The device of claim 4 , wherein the memory component is a read-only memory component.
6. The device of claim 4 , wherein the memory component stores data characterizing multiple different lookup table configurations, and wherein the memory component is configured to select a particular lookup table configuration from the different lookup table configurations to pass to the memory cells of the lookup tables of the subset of the programmable logic blocks.
7. The device of claim 1 , wherein the direct coupling between programmable logic blocks is reconfigurable.
8. A method of updating a lookup table configuration across an array comprising a plurality of programmable logic blocks, wherein each programmable logic block comprises at least one lookup table, at least one flip-flop, and at least one combinatorial logic circuit element,
wherein each lookup table of each programmable logic block comprises multiple memory cells configured to store data corresponding to a truth table for a predefined function,
wherein each memory cell of each programmable logic block is directly coupled to a corresponding memory cell of another programmable logic block in the plurality of programmable logic blocks, the method comprising:
upon receiving, at a first programmable logic block of the plurality of programmable logic blocks, a first predetermined clock pulse from a common global clock that is coupled to each programmable logic block of the plurality of programmable logic blocks, transmitting data characterizing a first truth table for a first predefined function from the memory cells of the first programmable logic block directly to the memory cells of a second programmable logic block of the plurality of programmable logic blocks; and
upon receiving, at the first programmable logic block, the first predetermined clock pulse, storing data characterizing a second truth table for a second predefined function in the memory cells of the first programmable logic block, wherein the data characterizing the second truth table was received directly from memory cells of a third programmable logic block of the plurality of programmable logic blocks.