Each of sensor modules 1021-1 to 1022-2 comprise sensors 1031-1 to 1032-2. In one embodiment, sensors 1031-1 to 1032-2 comprise active and/or passive sensors. Each of sensors 1031-1 to 1032-2 generate a signal that is indicative of a physical attribute or condition associated with that sensor 103. Sensor modules 1021-1 to 1022-2 include appropriate support functionality (not shown) that, for example, perform analog-to-digital conversions and drive the input/output interface necessary to supply sensor data to other portions of system 100. It is noted that for simplicity in description, a total of four sensor modules 1021-1 to 1022-2 and four sensors 1031-1 to 1032-2 are shown in
For example, in one embodiment, each of sensor modules 1021-1 to 1022-2 includes an array of optical sensors such as an array of charge coupled device (CCD) sensors or complimentary metal oxide system (CMOS) sensors. In another embodiment, an array of infrared sensors is used. The array of optical sensors, in such an embodiment, generates pixel image data that is used for subsequent image processing in system 100. In other embodiments, other types of sensors are used.
The data output by sensor modules 1021-1 to 1022-2 comprise raw sensor data that is processed by system 100. More specifically, the sensor data output by 1021-1 to 1022-2 is processed by reconfigurable computers 1041 to 104N. For example, in one embodiment where sensor modules 1021-1 to 1022-2 output raw image data, reconfigurable computers 1041 to 1042 perform one or more image processing operations such as RICE compression, edge detection, or Consultative Committee of Space Data Systems (CCSDS) protocol communications.
The processed sensor data is then provided to back-end processors 1061 and 1062. Back-end processors 1061 and 1062 receive the processed sensor data as input for high-level control and communication processing performed by reconfigurable computers 1041 and 1042. In the embodiment shown in system 100, back-end processor 1062 assembles appropriate downstream packets that are transmitted via a communication link 108 to an Earth-bound device 110. At least a portion of the downstream packets include the processed sensor data (or data derived from the processed sensor data) that was received from reconfigurable computers 1041 and 1042. The communication of payload-related data within and between the various components of system 100 is also referred to here as occurring in the “data path.” It is noted that for simplicity in description, a total of two reconfigurable computers 1041 and 1042 and two back-end processors 1061 and 1062 are shown in
System 100 also includes system controller 112. System controller 112 monitors and controls the operation of the various components of system 100. For example, system controller 112 manages the configuration and reconfiguration of reconfigurable computers 1041 and 1042. System controller 112 is further responsible for control of one or more programmable reconfiguration refresh and readback intervals. Communication of control data within and between the various components of system 100 is also referred to here as occurring in the “control path.”
Reconfigurable computers 1041 and 1042 are capable of being configured and re-configured. For example, reconfigurable computers 1041 and 1042 are capable of being configured and re-configured at runtime. That is, processing that is performed by reconfigurable computers 1041 and 1042 is changed while the system 100 is deployed (for example, while the system 100 is in space). In one embodiment, each of reconfigurable computers 1041 and 1042 is implemented using one or more reconfigurable processing elements. One such embodiment is described in further detail below with respect to
In one embodiment, re-configurability of reconfigurable computers 1041 and 1042 is used to fix problems in, or add additional capabilities to, the processing performed by each of reconfigurable computers 1041 and 1042. For example, while system 100 is deployed, new configuration data for reconfigurable computer 1041 is communicated from earth-bound device 110 to system 100 over communication link 108. Reconfigurable computer 1041 uses the new configuration data to reconfigure reconfigurable computer 1041 (that is, itself).
Further, the re-configurability of reconfigurable computers 1041 and 1042 allows reconfigurable computers 1041 and 1042 to operate in one of multiple processing modes on a time-sharing basis. For example, in one usage scenario, reconfigurable computer 1042 is configured to operate in a first processing mode during a first portion of each day, and to operate in a second processing mode during a second portion of the same day. In this way, multiple processing modes are implemented with the same reconfigurable computer 1042 to reduce the amount of resources (for example, cost, power, and space) used to implement such multiple processing modes.
In system 100, each of reconfigurable computers 1041 and 1042 and each of back-end processors 1061 and 1062 are implemented on a separate board. Each of the separate boards communicates control information with one another over control bus 114 such as a Peripheral Component Interconnect (PCI) bus or a compact PCI (cPCI) bus. Control bus 114, for example, is implemented in backplane 116 that interconnects each of the boards. In the example embodiment of system 100 shown in
RPEs 2021 and 2022 comprise reconfigurable FPGAs 2041 and 2042 that are programmed by loading appropriate programming logic (also referred to here as an “FPGA configuration” or “configuration”) as discussed in further detail below. Each RPE 2021 and 2022 is configured to perform one or more payload processing operations. Reconfigurable computer 104 also includes input/output (I/O) interfaces 2141 and 2142. Each of the two I/O interfaces 2141 and 2142 are coupled to a respective sensor module 102 of
I/O interfaces 2141 and 2142 and RPEs 2021 and 2022 are coupled to one another with a series of dual-port memory devices 2161 to 2166. This obviates the need to use multi-drop buses (or other interconnect structures) that are more susceptible to one or more SEUs. Each of a first group of dual-port memory devices 2161 to 2163 has a first port coupled to I/O interface 2141. I/O interface 2141 uses the first port of each of memory devices 2161 to 2163 to read data from and write data to each of memory devices 2161 to 2163. RPE 2021 is coupled to a second port of each of memory devices 2161 to 2163. RPE 2021 uses the second port of each of memory devices 2161 to 2163 to read data from and write data to each of memory devices 2161 to 2163. Each of a second group of three dual-port memory devices 2164 to 2166 has a first port coupled to I/O interface 2142. I/O interface 2142 uses the first port of each of memory devices 2164 to 2166 to read data from and write data to each of memory devices 2164 to 2166. RPE 2022 is coupled to a second port of each of memory devices 2164 to 2166. RPE 2022 uses the second port of each of memory devices 2164 to 2166 to read data from and write data to each of memory devices 2164 to 2166.
In this example embodiment, I/O interfaces 2143 and 2144 are RAPIDIO interfaces. Each of RAPIDIO interfaces 2143 and 2144 are coupled to a respective back-end processor 106 of
Reconfigurable computer 104 further includes system control interface 208. System control interface 208 is coupled to each of RPEs 2022 to 2022 over configuration bus 218. System control interface 208 is also coupled to each of I/O interfaces 2141 and 2142 over system bus 220. System control interface 208 provides an interface by which the system controller 112 of
System control interface 208 also includes local controller 212. Local controller 212 carries out various control operations under the direction of system controller 112 of
In the example embodiment shown in
Internal bus controller 302 is coupled to configuration memory 206 (shown in
In operation, a full or partial set of configuration data for each of RPEs 2021 to 2022 is retrieved from configuration memory 206 by internal bus controller 302. In this example embodiment, system controller 112 (of
Once each of RPE interface controllers 3081 and 3082 receive the configuration data, each of readback controllers 3101 and 3102 controls a readback operation of the configuration data. For every readback operation of the configuration data, each of RPE CRC generators 3061 and 3062 perform a CRC on a full or partial set of the configuration data. The CRC determines if any configuration data bits have changed since a previous readback of the same configuration data (that is, corrupted due to one or more SEUs). In a situation where a readback CRC calculation does not match a stored CRC, local controller 212 enters an auto-reconfiguration mode. In the example embodiment of
Local controller 212 supports interleaving of readback and reconfiguration (refresh) operations by interleaving priority and order via arbiters 3121 and 3122. Arbiters 3121 and 3122 are each responsible for arbitration of the configuration data between RPE CRC generator 3061 (3062) and configuration controller 3141 (3142). Each of configuration controllers 3141 and 3142 take in one or more input requests from an internal register file (not shown) and decode which operation to execute. Configuration controller 3141 (3142) identifies a desired operation to be executed and makes a request for the transaction to be performed by supporting logic within local controller 212.
Each of configuration controllers 3141 and 3142 select an operating mode for multiplexing appropriate data and control signals internally. Once all requested inputs are received, configuration controller 3141 (3142) decides which specific request to execute. Once the specific request is granted, configuration controller 3141 (3142) issues an access request to arbiter 3121 (3122) for access to complete the request. Each request is priority-encoded and implemented in a fair arbitration scheme so no single interface is rejected of a request to access configuration bus 218. Each of configuration controllers 3141 and 3142 provide a set of software instructions for local controller 212 with the capability to interface to configuration bus 218 on a cycle-by-cycle basis. Specifically, upon receipt of the access request, configuration controller 3141 (3142) outputs the configuration data from configuration memory 206 on configuration bus 218.
Local controller 212 and control bus interface 210 provide one or more independent configuration buses (for example, RPE interface controllers 3081 and 3082). In one implementation, RPE interface controllers 3081 and 3082 provide simultaneous readback and CRC checking for each of RPE 2021 and 2022. Subsequently, simultaneous readback of one configuration of RPE 2021 (2022) will occur while RPE 2022 (2021) is reconfigured. Further, local controller 212 provides one or more programmable reconfiguration refresh and readback interval rates. Local controller 212 also supports burst read and burst write access. In one implementation, wait states are inserted during back-to-back read/write and write/read operations. Full and partial reconfiguration of RPEs 2021 and 2022 occurs within a minimum number of operating cycles and substantially faster than previous (that is, software-based) SEU mitigation operations.
Once a refresh interval value is established (or adjusted) at block 404, method 400 begins the process of monitoring the configuration of each available RPE for possible corruption due to an occurrence of a single event upset. A primary function of method 400 is to automatically reconfigure a corrupted configuration of a RPE within a minimum amount of operating cycles. In one implementation, method 400 substantially improves completion time for a full or partial refresh or reconfiguration to maintain operability of the space payload processing application.
A determination is made about whether the refresh interval rate has changed from a previous or default level (checked in block 406). This determination is made in system controller 112 described above with respect to
At block 412, method 400 begins evaluating the configuration status for a RPE (referred to here as the “current” RPE) by performing a readback operation. In one implementation of such an embodiment, the readback operation is performed by the RPE interface controller 308 for the current RPE. The local controller 212 reads the current configuration of the reconfigurable FPGA for the current RPE and compares at least a portion of the read configuration to a known-good value associated with the current configuration. If the read value does not match the known-good value, the configuration of the current RPE is considered corrupt. In one implementation, such a readback operation is performed by reading each byte (or other unit of data) of the configuration of the FPGA for the current RPE and comparing that byte to a corresponding byte of the corresponding configuration stored in configuration memory 206. In other words, local controller 212 performs a byte-by-byte compare. In another implementation, one or more CRCs (or other error correction code) values are calculated for the current configuration of the FPGA for the current RPE by a respective RPE CRC generator.
If the configuration for the current RPE is corrupt (checked in block 414), method 400 begins a full or partial reconfiguration (refresh) of the current RPE 202 at block 416. The determination as to whether to perform a full or partial reconfiguration is made by system controller 112 of
At block 418, method 400 determines whether all available RPEs have been evaluated. If not, method 400 returns to block 412 to evaluate the configuration status for the next available RPE. When all available RPEs have been evaluated, method 400 waits until at least one of the available RPEs is substantially functional (checked in block 422) at which time method 400 returns to block 404.
In one example of the operation of method 400 in the system 100 of
The present application is related to commonly assigned and co-pending U.S. patent application Ser. No. 10/897,888 (Attorney Docket No. H0003944-5802) entitled “RECONFIGURABLE COMPUTING ARCHITECTURE FOR SPACE APPLICATIONS,” filed on Jul. 23, 2004, which is incorporated herein by reference, and also referred to here as the '888 Application.