Rapidly reconfigurable FPGA having a multiple region architecture with reconfiguration caches useable as data RAM
First Claim
1. A field programmable gate array (FPGA) comprising:
- a first array of configurable logic blocks having a corresponding first set of configuration memory cells;
a first configuration cache memory array coupled to the first array of configurable logic blocks, wherein the first configuration cache memory array stores values to be loaded into the first set of configuration memory cells, thereby reconfiguring the first array of configurable logic blocks;
a second array of configurable logic blocks having a corresponding second set of configuration memory cells;
a second configuration cache memory array coupled to the second array of configurable logic blocks, wherein the second configuration cache memory array stores values to be loaded into the second set of configuration memory cells, thereby reconfiguring the second array of configurable logic blocks; and
a control circuit for transferring values between the first configuration cache memory array and the first set of configuration memory cells, and for independently transferring values between the second configuration cache memory array and the second set of configuration memory cells.
1 Assignment
0 Petitions
Accused Products
Abstract
A field programmable gate array (FPGA) which includes first and second arrays of configurable logic blocks, and first and second configuration cache memories coupled to the first and second arrays of configurable logic blocks, respectively. The first configuration cache memory array can either store values for reconfiguring the first array of configurable logic blocks, or operate as a RAM. Similarly, the second configuration cache array can either store values for reconfiguring the second array of configurable logic blocks, or operate as a RAM. The first configuration cache memory array and the second configuration cache memory array are independently controlled, such that partial reconfiguration of the FPGA can be accomplished. In addition, the second configuration cache memory array can store values for reconfiguring the first (rather than the second) array of configurable logic blocks, thereby providing a second-level reconfiguration cache memory.
-
Citations
37 Claims
-
1. A field programmable gate array (FPGA) comprising:
-
a first array of configurable logic blocks having a corresponding first set of configuration memory cells; a first configuration cache memory array coupled to the first array of configurable logic blocks, wherein the first configuration cache memory array stores values to be loaded into the first set of configuration memory cells, thereby reconfiguring the first array of configurable logic blocks; a second array of configurable logic blocks having a corresponding second set of configuration memory cells; a second configuration cache memory array coupled to the second array of configurable logic blocks, wherein the second configuration cache memory array stores values to be loaded into the second set of configuration memory cells, thereby reconfiguring the second array of configurable logic blocks; and a control circuit for transferring values between the first configuration cache memory array and the first set of configuration memory cells, and for independently transferring values between the second configuration cache memory array and the second set of configuration memory cells. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A field programmable gate array (FPGA) comprising:
-
a first array of configurable logic blocks having a corresponding first set of configuration memory cells; a first configuration cache memory array coupled to the first array of configurable logic blocks, wherein the first configuration cache memory array stores values to be loaded into the first set of configuration memory cells, thereby reconfiguring the first array of configurable logic blocks; a second array of configurable logic blocks having a corresponding second set of configuration memory cells; a second configuration cache memory array coupled to the first configuration cache memory array, wherein the second configuration cache memory array stores values to be loaded into the first set of configuration memory cells, thereby reconfiguring the first array of configurable logic blocks; and control circuitry for transferring values from the second configuration cache memory array to the first configuration cache memory array.
-
-
20. A field programmable gate array (FPGA) comprising:
-
a first array of configurable logic blocks having a corresponding first set of configuration memory cells; a first configuration cache memory array coupled to the first array of configurable logic blocks, wherein the first configuration cache memory array stores values to be loaded into the first set of configuration memory cells, thereby reconfiguring the first array of configurable logic blocks; a second array of configurable logic blocks having a corresponding second set of configuration memory cells; a second configuration cache memory array coupled to the second array of configurable logic blocks; and a control circuit for configuring the second configuration cache memory array to either store values to be loaded into the second set of configuration memory cells, thereby reconfiguring the second array of configurable logic blocks, or to operate as a random access memory.
-
-
21. A method of operating a field programmable gate array (FPGA) comprising the steps of:
-
providing a first array of configurable logic blocks and a second array of configurable logic blocks on the FPGA; providing a first configuration cache memory array coupled to the first array of configurable logic blocks and a second configuration cache memory array coupled to the second array of configurable logic blocks; reconfiguring the first array of configurable logic blocks in response to values stored in the first configuration cache memory array; and reconfiguring the second array of configurable logic blocks in response to values stored in the second configuration cache memory array, wherein the step of reconfiguring the first array of configurable logic blocks is performed independent of the step of reconfiguring the second array of configurable logic blocks, thereby enabling partial reconfiguration of the FPGA. - View Dependent Claims (22, 23, 24)
-
-
25. A method of operating a field programmable gate array (FPGA) comprising the steps of:
-
providing a first array of configurable logic blocks and a second array of configurable logic blocks on the FPGA; providing a first configuration cache memory array coupled to the first array of configurable logic blocks and a second configuration cache memory array coupled to the first configuration cache memory array; reconfiguring the first array of configurable logic blocks in response to values stored in the first configuration cache memory array; transferring the values stored in the second configuration cache memory array to the first configuration cache memory array; and reconfiguring the first array of configurable logic blocks in response to values transferred from the second configuration cache memory array to the first configuration cache memory array.
-
-
26. A field programmable gate array (FPGA) comprising:
-
an array of configurable logic blocks; an array of random access memory (RAM) blocks for storing one or more sets of configuration data values for configuring the configurable logic blocks, wherein each RAM block has a corresponding configurable logic block; a plurality of configuration buses, wherein each configuration bus couples a RAM block to a corresponding configurable logic block; and a control circuit for transferring values between the array of configurable logic blocks and the array of RAM blocks, wherein the control circuit is configured to route a set of configuration data values from the RAM blocks to the configurable logic blocks on the configuration buses over a plurality of cycles. - View Dependent Claims (27, 28, 29)
-
-
30. A field programmable gate array (FPGA) comprising:
-
an array of configurable logic blocks; an array of random access memory (RAM) blocks for storing one or more sets of configuration data values for configuring the configurable logic blocks, wherein each RAM block has a corresponding configurable logic block; and a plurality of configuration buses, wherein each configuration bus couples a RAM block to a corresponding configurable logic block, wherein the configuration data values are routed from the RAM blocks to the configurable logic blocks on the configuration buses over a plurality of cycles, wherein the configuration buses are bi-directional, such that the configuration data values are also routed from the configurable logic blocks to the RAM blocks on the configuration buses.
-
-
31. A field programmable gate array (FPGA) comprising:
-
an array of configurable logic blocks; an array of random access memory (RAM) blocks for storing one or more sets of configuration data values for configuring the configurable logic blocks, wherein each RAM block has a corresponding configurable logic block; a plurality of configuration buses, wherein each configuration bus couples a RAM block to a corresponding configurable logic block, wherein the configuration data values are routed from the RAM blocks to the configurable logic blocks on the configuration buses over a plurality of cycles; a plurality of random access buses, wherein each random access bus couples a RAM block to a corresponding configurable logic block, each of the random access buses comprising an address bus for providing an address from the configurable logic block to the RAM block, a first data bus for providing data from the configurable logic block to the RAM block, and a second data bus for providing data from the RAM block to the configurable logic block; and circuitry for accessing the RAM blocks as random access memory through the configurable logic blocks using the random access buses. - View Dependent Claims (32)
-
-
33. A field programmable gate array (FPGA) comprising:
-
an array of configurable logic blocks; an array of random access memory (RAM) blocks for storing one or more sets of configuration data values for configuring the configurable logic blocks, wherein each RAM block has a corresponding configurable logic block, and wherein each RAM block comprises; a configuration data cache memory for storing configuration data values for configuring a configurable logic block; and a state data cache memory for storing state data values associated with the configurable logic block; a plurality of configuration buses, wherein each configuration bus couples a RAM block to a corresponding configurable logic block, wherein the configuration data values are routed from the RAM blocks to the configurable logic blocks on the configuration buses over a plurality of cycles; and means for independently transferring state data values between the state data cache memory and the configurable logic block.
-
-
34. A field programmable gate array (FPGA) comprising:
-
an array of configurable logic blocks; an array of random access memory (RAM) blocks; and a plurality of random access buses, wherein each random access bus is programmable to couple a RAM block to a corresponding configurable logic block, each of the random access buses comprising an address bus for providing an address from the configurable logic block to the RAM block, a first data bus for providing data from the configurable logic block to the RAM block, and a second data bus for providing data from the RAM block to the configurable logic block; and circuitry for accessing the RAM blocks as random access memory through the configurable logic blocks using the first buses. - View Dependent Claims (35, 36, 37)
-
Specification