Reconfigurable computing system and method and apparatus employing same
First Claim
1. A reconfigurable computing system for interfacing one or more application programs running on a host system to one or more hardware objects defined in one or more configuration files, comprising:
- reconfigurable computing circuitry comprising flexibly configurable circuitry operable for interfacing to and implementing the one or more hardware objects with at least one of the one or more application programs;
memory circuitry associated with the reconfigurable computing circuitry for system information storage;
interfaces for communicatively connecting the reconfigurable computing circuitry and memory circuitry to the host system; and
a reconfigurable computing software driver for managing, configuring and reconfiguring the reconfigurable computing system;
wherein each of the one or more hardware objects has an information block associated with each of the one or more configuration files in which said each of the one or more hardware objects is defined.
1 Assignment
0 Petitions
Accused Products
Abstract
A reconfigurable computing system and method of use are provided for interfacing a plurality of application programs running on a host system to one or more hardware objects defined in one or more configuration files. The system includes reconfigurable computing circuitry comprising flexibly configurable circuitry operable for interfacing and implementing one or more hardware objects with one or more of the application programs. The system further includes memory circuitry associated with the reconfigurable computing circuitry for system information storage, and communications interfaces for connecting the reconfigurable computing circuitry and the memory to the host computer. The flexibly configurable circuitry further comprises one or more FPGAs and one or more programmable logic devices (“PLDs”), SRAM and EEPROM memory, and all the necessary connectors and support circuitry. The reconfigurable computing system and method of the present invention can be implemented on either a PCMCIA platform, a PCI platform, or any other bus structure without changing the basic functionality and claimed functionality of the reconfigurable computing system. Additionally, the reconfigurable computing system and method of this invention are well suited to be implemented in a portable computing environment.
-
Citations
31 Claims
-
1. A reconfigurable computing system for interfacing one or more application programs running on a host system to one or more hardware objects defined in one or more configuration files, comprising:
-
reconfigurable computing circuitry comprising flexibly configurable circuitry operable for interfacing to and implementing the one or more hardware objects with at least one of the one or more application programs;
memory circuitry associated with the reconfigurable computing circuitry for system information storage;
interfaces for communicatively connecting the reconfigurable computing circuitry and memory circuitry to the host system; and
a reconfigurable computing software driver for managing, configuring and reconfiguring the reconfigurable computing system;
wherein each of the one or more hardware objects has an information block associated with each of the one or more configuration files in which said each of the one or more hardware objects is defined. - View Dependent Claims (2, 3, 9, 10, 11)
hardware object number;
hardware object name;
hardware object version;
hardware object address offset;
hardware object interface address area size;
interrupt number;
hardware object type; and
earliest compatible version number.
-
-
9. The reconfigurable computing method of claim 1, further comprising the steps of:
-
translating memory address offsets for each of the one or more hardware objects for at least one of the one or more application programs using the reconfigurable computing software driver; and
passing a handle to the at least one of the one or more application programs for interfacing with the one or more hardware objects to provide for relocatable hardware object addressing.
-
-
10. The reconfigurable computing method of claim 1, further comprising the step of establishing interrupts for the one or more hardware objects through a single host system hardware interrupt line with the reconfigurable computing software driver using an interrupt flag and enable registers.
-
11. The reconfigurable computing method of claim 10, further comprising the steps of:
-
assigning an application program interrupt event service routine to at least one of the one or more hardware objects the at least one of the one or more application programs is interfaced with; and
executing said interrupt event service routine using the reconfigurable software driver in the event an interrupt condition is detected at said at least one of the one or more hardware objects interfacing with said at least one or more application programs.
-
-
4. A reconfigurable computing method for interfacing one or more application programs running on a host system to one or more hardware objects defined in one or more configuration files, comprising:
-
initializing a reconfigurable computing software driver for managing, configuring and reconfiguring reconfigurable computing circuitry comprising flexibly configurable circuitry using the one or more configuration files;
communicatively connecting the reconfigurable computing circuitry and memory circuitry associated with the reconfigurable computing circuitry to the host system using one or more interfaces;
implementing the one or more hardware objects in the reconfigurable computing circuitry;
storing a plurality of system information in the memory circuitry; and
interfacing the one or more hardware objects with at least one of the one or more application programs using the reconfigurable computing software driver;
further comprising the step of storing an information block for each of the one or more hardware objects in a header associated with each of the one or more configuration files in which the hardware object is defined for access by the reconfigurable computing software driver. - View Dependent Claims (5, 6, 7, 8)
-
-
12. A reconfigurable computing method for interfacing one or more application programs running on a host system to one or more hardware objects defined in one or more configuration files, comprising:
-
initializing a reconfigurable computing software driver for managing, configuring and reconfiguring reconfigurable computing circuitry comprising flexibly configurable circuitry using the one or more configuration files;
communicatively connecting the reconfigurable computing circuitry and memory circuitry associated with the reconfigurable computing circuitry to the host system using one or more interfaces;
implementing the one or more hardware objects in the reconfigurable computing circuitry;
storing a plurality of system information in the memory circuitry; and
interfacing the one or more hardware objects with at least one of the one or more application programs using the reconfigurable computing software driver;
wherein the reconfigurable computing circuitry further comprises at least one Field Programmable Gate Array (“
FPGA”
) providing reconfigurable logic for the one or more configuration files to define the one or more hardware objects;
and wherein said one or more configuration files further comprise a plurality of versions of each of the one or more configuration files, and wherein each configuration file in said plurality of versions provides the same or similar functionality and is targeted for configuring a different type of the at least one FPGA. - View Dependent Claims (13)
-
-
14. A reconfigurable computing method for interfacing one or more application programs running on a host system to one or more hardware objects defined in one or more configuration files, comprising:
-
initializing a reconfigurable computing software driver for managing, configuring and reconfiguring reconfigurable computing circuitry comprising flexibly configurable circuitry using the one or more configuration files;
communicatively connecting the reconfigurable computing circuitry and memory circuitry associated with the reconfigurable computing circuitry to the host system using one or more interfaces;
implementing the one or more hardware objects in the reconfigurable computing circuitry;
storing a plurality of system information in the memory circuitry; and
interfacing the one or more hardware objects with at least one of the one or more application programs using the reconfigurable computing software driver;
further comprising the steps of storing a plurality of hardware object resource information in the reconfigurable computing circuitry and determining, using the reconfigurable computing software driver, if any of the one or more hardware objects meet the requirements requested by the one or more application programs. - View Dependent Claims (15)
-
-
16. A reconfigurable computing system for interfacing one or more application programs running on a host system to one or more hardware objects defined in one or more configuration files, comprising:
-
a reconfigurable computing software driver for managing, configuring and reconfiguring reconfigurable computing circuitry comprising flexibly configurable circuitry using the one or more configuration files;
instructions for interfacing the reconfigurable computing circuitry and memory circuitry associated with the reconfigurable computing circuitry to the host system using one or more interfaces;
instructions for implementing the one or more hardware objects in the reconfigurable computing circuitry; and
instructions for storing a plurality of system information in the memory circuitry;
further comprising instructions for storing an information block for each of the one or more hardware objects in a header associated with each of the one or more configuration files in which the hardware object is defined for access by the reconfigurable computing software driver. - View Dependent Claims (17, 18, 19, 20)
-
-
21. A reconfigurable computing system for interfacing one or more application programs running on a host system to one or more hardware objects defined in one or more configuration files, comprising:
-
a reconfigurable computing software driver for managing and reconfiguring reconfigurable computing circuitry comprising flexibly configurable circuitry using the one or more configuration files;
instructions for interfacing the reconfigurable computing circuitry and memory circuitry associated with the reconfigurable computing circuitry to the host system using one or more interfaces;
instructions for implementing the one or more hardware objects in the reconfigurable computing circuitry; and
instructions for storing a plurality of system information in the memory circuitry;
wherein the reconfigurable computing software driver further comprises;
instructions for translating memory address offsets for each of the one or more hardware objects for at least one of the one or more application programs; and
instructions for passing a handle to the at least one of the one or more application programs for interfacing with the one or more hardware objects to provide for relocatable hardware object addressing.
-
-
22. A reconfigurable computing system for interfacing one or more application programs running on a host system to one or more hardware objects defined in one or more configuration files, comprising:
-
a reconfigurable computing software driver for managing, configuring and reconfiguring reconfigurable computing circuitry comprising flexibly configurable circuitry using the one or more configuration files;
instructions for interfacing the reconfigurable computing circuitry and memory circuitry associated with the reconfigurable computing circuitry to the host system using one or more interfaces;
instructions for implementing the one or more hardware objects in the reconfigurable computing circuitry; and
instructions for storing a plurality of system information in the memory circuitry;
wherein the reconfigurable computing software driver further comprises instructions for establishing interrupts for the one or more hardware objects through a single host system hardware interrupt line using an interrupt flag and enable registers. - View Dependent Claims (23)
instructions for assigning an application program interrupt event service routine to at least one of the one or more hardware objects that the at least one of the one or more application programs is interfaced with; and
instructions for executing said interrupt event service routine in the event an interrupt condition is detected at said at least one of the one or more hardware objects interfacing with said at least one or more application programs.
-
-
24. A reconfigurable computing system for interfacing one or more application programs running on a host system to one or more hardware objects defined in one or more configuration files, comprising:
-
a reconfigurable computing software driver for managing, configuring and reconfiguring reconfigurable computing circuitry comprising flexibly configurable circuitry using the one or more configuration files;
instructions for interfacing the reconfigurable computing circuitry and memory circuitry associated with the reconfigurable computing circuitry to the host system using one or more interfaces;
instructions for implementing the one or more hardware objects in the reconfigurable computing circuitry; and
instructions for storing a plurality of system information in the memory circuitry;
wherein the reconfigurable computing circuitry further comprises at least one Field Programmable Gate Array (“
FPGA”
) providing reconfigurable logic for the one or more configuration files to define the one or more hardware objects;
and wherein said one or more configuration files further comprise a plurality of versions of each of the one or more configuration files, wherein each configuration file in said plurality of versions provides the same or similar functionality and is targeted for configuring a different type of the at least one FPGA. - View Dependent Claims (25)
-
-
26. A reconfigurable computing system for interfacing one or more application programs running on a host system to one or more hardware objects defined in one or more configuration files, comprising:
-
a reconfigurable computing software driver for managing, configuring and reconfiguring reconfigurable computing circuitry comprising flexibly configurable circuitry using the one or more configuration files;
instructions for interfacing the reconfigurable computing circuitry and memory circuitry associated with the reconfigurable computing circuitry to the host system using one or more interfaces;
instructions for implementing the one or more hardware objects in the reconfigurable computing circuitry; and
instructions for storing a plurality of system information in the memory circuitry;
further comprising instructions for storing a plurality of hardware object resource information in the reconfigurable computing circuitry, and wherein the reconfigurable computing software driver further comprises instructions for determining if any of the one or more hardware objects meet the requirements requested by the one or more application programs. - View Dependent Claims (27)
-
-
28. A method of creating an interface between an application program and a programmable hardware device in a host system, comprising:
-
(a) executing the application program, the application program requesting a hardware object by function name by communicating data to a piece of software, the function name being independent of a particular physical hardware embodiment, the software being capable of accessing a database that includes configuration files;
(b) selecting one of the configuration files in the database based upon the data sent from the application program; and
(c) reconfiguring the programmable hardware device by using the selected configuration file to enable use of the hardware object requested by the application program;
wherein the requested hardware object is included in more than one of the configuration files, and wherein the software selects the configuration file according to what type of hardware is available on the host system.
-
-
29. A method of managing the allocation of reconfigurable computing resources in a host system, comprising:
-
(a) receiving a request from an application program for a hardware object by function name, the function name being independent of a particular physical hardware embodiment;
(b) searching a data storage unit that contains configuration files in response to the request, the configuration files each comprising data for programming a reconfigurable hardware device to perform a hardware function;
(c) selecting one of the configuration files according to the request from the application program; and
(d) reconfiguring the reconfigurable hardware device by using the selected configuration file;
wherein the configuration files comprise header information related to functional characteristics of the configuration files, and further comprising using at least a portion of the header information to match the requested function name with the selected configuration file. - View Dependent Claims (30, 31)
-
Specification