US20100213976A1 - Hierarchical FPGA configuration - Google Patents
Hierarchical FPGA configuration Download PDFInfo
- Publication number
- US20100213976A1 US20100213976A1 US12/662,764 US66276410A US2010213976A1 US 20100213976 A1 US20100213976 A1 US 20100213976A1 US 66276410 A US66276410 A US 66276410A US 2010213976 A1 US2010213976 A1 US 2010213976A1
- Authority
- US
- United States
- Prior art keywords
- programmable logic
- configuration
- devices
- data bus
- serial data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17748—Structural details of configuration resources
- H03K19/17752—Structural details of configuration resources for hot reconfiguration
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17748—Structural details of configuration resources
- H03K19/17756—Structural details of configuration resources for partial configuration or partial reconfiguration
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
Definitions
- this disclosure relates to systems and methods for configuring programmable logic devices, such as, for example, field programmable gate arrays.
- PLDs Programmable logic devices
- EPROM erasable programmable read-only memory
- EEPROM electrically-erasable read-only memory
- PAL programmable array logic
- CPLD complex programmable logic device
- FPGA field-programmable gate array
- an EPROM is a non-volatile memory (i.e., it retains its configuration when power is turned off) that is typically erased by exposure to ultraviolet light, and programmed out-of-circuit using a device having a socket to receive the EPROM. A higher programming voltage is applied and a configuration is loaded and retained until the EPROM is erased and/or reprogrammed. While this technique works for PLDs having non-volatile memory, not all PLDs retain their configurations when powered down, such as, for example, FPGA (field programmable gate array) devices.
- FPGA field programmable gate array
- FPGA devices are traditionally configured using a local, non-volatile memory with static signal connections.
- a configuration stored in the non-volatile memory or data storage device e.g., a flash memory, hard drive, and the like
- Configuration information may be sent to an FPGA in parallel, loading multiple bits (usually one or more bytes) simultaneously, or it may be sent serially.
- JTAG Joint Test Action Group
- JTAG Joint Test Action Group
- IEEE 1149.1-2001 commonly referred to as “JTAG”.
- PCBs printed circuit boards
- the testing device could insert signals anywhere on the board and measure electrical properties (such as resistance and voltage).
- the bed-of-nails testing approach proved inadequate.
- JTAG was formed to develop a testing standard adequate to handle developing technology. The JTAG solution was to place boundary cells around each component to be tested. These boundary cells are then serially chained together.
- XilinxTM offers a configuration solution called the Xilinx System ACETM, which uses an integrated circuit to configure any number of FPGAs using configuration data stored on a CompactFlash device or other non-volatile data storage device.
- ACETM Xilinx System ACETM
- FPGAs are connected together in a JTAG chain and configuration data is serially passed from FPGA to FPGA.
- FIG. 1 shows a system using JTAG-based PLD configuration, such as that used by XilinxTM for FPGAs.
- a configuration controller 101 communicates with a configuration storage device 103 to retrieve information related to the configuration of a group of PLDs ( 105 a, 105 b, 105 c ) arranged in a JTAG chain.
- the configuration controller 101 passes the configuration information through the JTAG chain so as to configure each PLD ( 105 a, 105 b , 105 c ) in the chain.
- While systems such as that shown in FIG. 1 , generally support the configuration of multiple PLDs ( 105 a, 105 b, 105 c ), they typically require that each PLD ( 105 a, 105 b, 105 c ) in a chain be powered up. As the number of PLDs used in digital systems increases, there is an increasing need for greater flexibility and control in PLD configuration.
- a method for configuring programmable logic devices includes configuring a first programmable logic device such that that device includes signalling logic to fan-out configuration information, and using the first programmable logic device to configure at least two secondary programmable logic devices in parallel using the signalling logic to fan-out configuration information.
- the programmable logic devices may be implemented using any known or later developed technology, such as, for example, field-programmable gate arrays (FPGAs), programmable logic arrays (PLAs), programmable array logic (PAL), complex programmable logic devices (CPLDs), and the like.
- FPGAs field-programmable gate arrays
- PLAs programmable logic arrays
- PAL programmable array logic
- CPLDs complex programmable logic devices
- a multiplexer is used to fan-in signal paths from secondary programmable logic devices to the first programmable logic device. This process may be repeated for additional stages of programmable logic device configuration.
- a method for configuring programmable logic devices includes configuring a first set of programmable logic devices arranged on a serial data bus, using at least one of the first set of programmable logic devices to dynamically reconfigure the serial data bus to include a second set of programmable logic devices, and configuring the second set of programmable logic devices.
- one or more of the first set of programmable logic devices is used to dynamically reconfigure the serial data bus to controlling a device to fan-in data signals transmitted on the serial data bus.
- a method for configuring programmable logic devices includes using a first device to fan-out data signals on a serial data bus, using a second device to fan-in data signals on the serial data bus, using the first device and the second device to reconfigure the serial data bus such that a first set of programmable logic devices is operably connected to the serial data bus, and configuring the first set of programmable logic devices using the serial data bus.
- the first and second devices may be implemented, for example, using a multiplexer, a programmable logic device, and the like. In this manner, it is possible, though not required, that programmable logic device be configured in stage such that some or all of the programmable logic devices may be powered down during earlier stages of configuration.
- implementations may configure further programmable logic devices using the first device and the second device to reconfigure the serial data bus such that a second set of programmable logic devices is operably connected to the serial data bus, and configuring the second set of programmable logic devices using the serial data bus.
- a system in another general aspect, includes a configuration control device, a serial data bus including at least two configurations of connected devices, a configuration storage device in communication with the configuration control device and the serial data bus, a first programmable logic device in communication with the serial data bus and configurable to reconfigure the serial data bus, and at least two secondary programmable logic devices.
- the configuration control device uses a first configuration of the serial data bus to configure the first programmable logic device using data obtained from the configuration storage device, and uses the first programmable logic device to reconfigure the serial data bus such that the secondary programmable logic devices are in communication with the serial data bus.
- the configuration control device configures the at least two secondary programmable logic devices.
- a JTAG bus is used as the serial data bus and a non-volatile memory is used as the configuration storage device.
- the programmable logic devices are implemented as FPGAs.
- a system in another general aspect, includes a serial data bus, a first device to fan-out data signals on the serial data bus, a second device to fan-in data signals on the serial data bus, and a control device that uses the first device and the second device to configure the serial data bus.
- the system configures a set of programmable logic devices by using the control device to configure the serial data bus such that the set of programmable logic devices are in communication with the serial data bus, and by sending configuration information to the set of programmable logic devices.
- the first device may be implemented in and/or using a programmable logic device.
- the serial data bus is a JTAG bus and all programmable logic devices are FPGAs.
- FIG. 1 is block diagram of a system for configuring multiple programmable logic devices according to the prior art.
- FIG. 2 is a block diagram illustrating the configuration of a first programmable logic device.
- FIG. 3 is a block diagram illustrating a second stage of programmable logic device configuration.
- FIG. 4 is a block diagram illustrating an additional, optional stage of programmable logic device configuration.
- FIG. 5 is a flow chart of a method for configuring programmable logic devices.
- Various embodiments disclosed herein are directed to systems and methods for configuring programmable logic devices.
- PLDs programmable logic devices
- PLDs programmable logic devices
- implementations may provide for the hierarchical configuration of multiple programmable logic devices (PLDs), at different times. Additionally, implementations may provide for the configuration of multiple PLDs in parallel.
- various embodiments disclose centralizing the configuration data for multiple PLDs in a single non-volatile memory device. Further, the multiple PLDs are configured in stages, such that only active PLDs are involved in each configuration stage. Since only active PLDs are involved in a particular configuration stage, it is then possible to apply power to different PLDs at different times. Additionally, the disclosed embodiments provide for easier configuration binary management since each device type is configured individually in a separate configuration stage.
- FIGS. 2-5 there are shown various embodiments of a system and method providing for the hierarchical configuration of multiple programmable logic devices, wherein the devices are configured in stages.
- a PLD configuration system is operable to configure a programmable logic device (PLD) 201 .
- PLD programmable logic device
- a configuration controller 101 is connected to a configuration storage device 103 .
- a serial data bus connects the configuration controller 101 to the programmable logic device 201 .
- this implementation includes a multiplexer 203 to select signals for transmission on the serial data bus.
- any combination of configuration storage device 103 , configuration controller 101 , and programmable logic device 201 may be used to implement the PLD configuration system.
- FIG. 3 A particular example embodiment of a hierarchical FPGA configuration system is illustrated in FIG. 3 . More particularly, the hierarchical FPGA configuration system includes a configuration storage device 103 which is implemented using a Compact Flash memory show, a XilinxTM a configuration controller 101 implemented using a System ACE Controller device, and the programmable logic device 201 implemented using a field-programmable gate array (FPGA) device.
- a configuration storage device 103 which is implemented using a Compact Flash memory show
- a XilinxTM a configuration controller 101 implemented using a System ACE Controller device
- the programmable logic device 201 implemented using a field-programmable gate array (FPGA) device.
- FPGA field-programmable gate array
- the configuration system uses JTAG as the serial data bus, wherein JTAG refers to the Joint Test Action Group and is the usual name used for the IEEE 1149.1-2001 standard entitled Standard Test Access Port and Boundary-Scan Architecture for test access ports used for testing printed circuit boards using boundary scan.
- JTAG refers to the Joint Test Action Group and is the usual name used for the IEEE 1149.1-2001 standard entitled Standard Test Access Port and Boundary-Scan Architecture for test access ports used for testing printed circuit boards using boundary scan.
- the hierarchical FPGA configuration system further includes a first multiplexer 203 , which is a combinational logic device with many input channels and typically one output. The multiplexer 203 connects one input channel at a time to the output.
- FIG. 2 is merely an illustrative example, and any combination of configuration controller, configuration storage device, and serial data bus may be utilized.
- various embodiments are directed to extending the functionality of a FPGA configuration device in connection with a dynamic JTAG chain containing one or more FPGA devices.
- the dynamic JTAG chain allows for the addition of one or more devices, (such as but not limited to FPGA devices), to the JTAG chain.
- traditional JTAG chains are static in nature and do not allow for the introduction of additional devices into a chain.
- various embodiments also include a hub for routing the attached JTAG chains show.
- the extended functionality of the FPGA configuration devices supports redirecting and fanout of a JTAG data stream. Further, the extended functionality permits nesting of JTAG hubs and chains without requiring the generation of custom binaries for each depth and branch of the chain.
- various embodiments provide the ability to configure many thousands, even millions, of FPGAs in parallel from a single non-volatile memory device, limited only by the amount of fanout supported and storage space for the number of unique configuration images needed.
- JTAG data signals TDI Test Data In
- TDO Test Data Out
- JTAG control TMS Test Mode Select
- TCK test clock
- the example embodiment shown in FIG. 2 illustrates a first stage in the hierarchical FPGA configuration system.
- the first stage of configuration may be initiated automatically at power-on. Alternately, the first stage of configuration may be started by a separate control processor (not shown).
- a multiplexer device 203 may be inserted on the TDO path with a pull down on the select signal. The multiplexer 203 ensures that the JTAG chain is valid for the first stage of configuration. Additionally, any other drivers of the select signal need to remain either 0 or in a high impedance state during the configuration of the PLD 201 .
- FIG. 3 an example block diagram of the second stage of configuration is illustrated.
- a second group of PLD devices 301 are configured.
- the multiple PLD devices 301 are configured in parallel.
- the first programmable logic device 201 includes signalling logic 305 such that it acts as a JTAG hub to dynamically configure the serial data bus.
- the serial data bus output tdo 1 is connected to an input to the programmable logic device 201 , further, an output from the PLD 201 is connected to multiplexer 203 as signal tdo 2 .
- the multiplexer 203 selects between signals tdo 1 and tdo 2 based on the value of the signal tdo select.
- the signal tdo select may be controlled by the PLD 201 or by any other logic device, including a multiprocessor unit (MPU) (not shown).
- MPU multiprocessor unit
- the signalling logic 305 acts as a JTAG hub.
- the signalling logic 305 first controls the TDO select signal of the multiplexer 203 to select the TDO from the signalling logic 305 instead of the TDO from the PLD 201 itself.
- the signalling logic 305 then replicates and broadcasts the TDI signal to the second group of PLD devices 301 in parallel.
- the signalling logic 305 also reduces the multiple TDOs returning from the second group of PLD devices 301 and presents a single TDO back the configuration controller 101 .
- the implementation of this reduction is application specific, but the assumption is that the TDO values are equivalent if all parallel configurations are occurring successfully. Exception situations are handled to ensure that the configuration controller 101 responds properly.
- a consequence of the signalling logic 305 is that the configuration controller 101 identifies a JTAG chain that consists of a first PLD 201 (in bypass mode) and one second PLD 301 .
- the parallel array of multiple second PLDs 301 are hidden from the configuration controller 101 , and therefore, does not need to be accounted for in configuration binary image creation.
- FIG. 3 shows an MPU interface to the configuration controller 101 .
- the MPU interface initiates configuration for the remaining stages.
- the MPU interface controls do not come from the PLD 201 and instead are generated from another external control processor (not shown).
- a logic device contains a hub mechanism
- another level of downstream logic devices may be configured.
- the PLD devices 301 contain signalling logic 305 .
- the PLD devices 301 need to control when to begin the configuration, the PLD devices 301 communicate back to the device controlling the configuration controller 101 via the MPU interface (e.g., PLD 201 or a control processor).
- the MPU interface e.g., PLD 201 or a control processor.
- a consequence of the second signalling logic 305 is that the configuration controller 101 recognizes a JTAG chain that consists of one first PLD 201 (in bypass mode), one second PLD device 301 (in bypass mode), and one subsequent PLD device 401 .
- the parallel array of PLD devices 401 are hidden from the configuration controller 101 .
- Further levels of configuration hierarchy may be provided by implementing further instances of a JTAG hub.
- the number of levels is limited by the number of configuration binary images that may be stored in the memory device or storage system. Additionally, in various embodiments, the total number of FPGAs being configured in parallel is multiplied at each level of hierarchy. This can enable a very large number of identical FPGA devices to be configured at the same time.
- a method for configuring PLD devices includes configuring a first PLD (step 501 ) and using the first PLD to configure at least two secondary PLDs (step 503 ).
- the first PLD controls dynamically configures a serial data bus for communicating configuration information to the secondary PLDs. This process may be applied recursively, with later stages configured by the first PLD or one or more of the secondary (or later-stage) PLDs.
- the hierarchical FPGA configuration system includes a configuration path (e.g. JTAG) that is dynamic at each configuration stage and level of hierarchy.
- a configuration path e.g. JTAG
- the logical device chain introduces and/or subtracts devices at each stage of configuration.
- configuration paths are static and do not allow for the introduction or subtraction of devices.
- the data path multiplexer e.g. the TDO mux
- the TDO mux may be used to dynamically change the configuration interface.
- logic devices are able to be powered on only as needed for their particular stage of configuration.
- the inactive devices are not involved in the current configuration stage and are not required to be powered or initialized.
- the configuration control and data signal paths are broadcast to an array of devices and their returning signal paths are reduced to a single signal set.
- each stage of configuration represents only a single device type and configuration bit stream.
- the large array of devices or hierarchical array of devices is configured in parallel. The array is easily scalable to add additional levels of hierarchy.
- the configuration data images are stored in a single memory or memory system.
Abstract
A system for configuring programmable logic devices includes a serial data bus, a first device to fan-out data signals on the serial data bus, a second device to fan-in data signals on the serial data bus, and a control device that uses the first device and the second device to configure the serial data bus. The system configures a set of programmable logic devices by using the control device to configure the serial data bus such that the set of programmable logic devices are in communication with the serial data bus, and by sending configuration information to the set of programmable logic devices. A method for configuring programmable logic devices includes configuring a first programmable logic device such that the first programmable logic device includes signaling logic to fan-out configuration information, and using the first programmable logic device to configure at least two secondary programmable logic devices in parallel using the signaling logic to fan-out configuration information.
Description
- This application claims the benefit of U.S. Provisional Application No. 60/912,357 filed Apr. 17, 2007, which is hereby incorporated by reference in its entirety for all purposes.
- Briefly, and in general terms, this disclosure relates to systems and methods for configuring programmable logic devices, such as, for example, field programmable gate arrays.
- Programmable logic devices (“PLDs”) are reconfigurable digital circuits, such as, for example, an erasable programmable read-only memory (“EPROM”), an electrically-erasable read-only memory (“EEPROM”), a programmable array logic (“PAL”), a complex programmable logic device (“CPLD”), a field-programmable gate array (“FPGA”), and the like. A single PLD can replace tens, hundreds, or even thousands of logic gates with a single integrated circuit.
- Various techniques have been used to configure PLDs. For example, an EPROM is a non-volatile memory (i.e., it retains its configuration when power is turned off) that is typically erased by exposure to ultraviolet light, and programmed out-of-circuit using a device having a socket to receive the EPROM. A higher programming voltage is applied and a configuration is loaded and retained until the EPROM is erased and/or reprogrammed. While this technique works for PLDs having non-volatile memory, not all PLDs retain their configurations when powered down, such as, for example, FPGA (field programmable gate array) devices.
- FPGA devices are traditionally configured using a local, non-volatile memory with static signal connections. During power-up, a configuration stored in the non-volatile memory or data storage device (e.g., a flash memory, hard drive, and the like) is loaded into the FPGA. Configuration information may be sent to an FPGA in parallel, loading multiple bits (usually one or more bytes) simultaneously, or it may be sent serially.
- One way to configure an FPGA serially is by using extensions to a testing standard designed to facilitate and improve circuit-level testing that was developed by JTAG (“Joint Test Action Group”) and standardized as IEEE 1149.1-2001 (commonly referred to as “JTAG”). Conventional testing of assembled printed circuit boards (“PCBs”) involved placing the boards on a “bed of nails,” forming an electrical connection between a testing device and each junction on the PCB. In this manner, the testing device could insert signals anywhere on the board and measure electrical properties (such as resistance and voltage). With the advent of multi-layer PCBs and surface-mounted components, the bed-of-nails testing approach proved inadequate. JTAG was formed to develop a testing standard adequate to handle developing technology. The JTAG solution was to place boundary cells around each component to be tested. These boundary cells are then serially chained together.
- Xilinx™ offers a configuration solution called the Xilinx System ACE™, which uses an integrated circuit to configure any number of FPGAs using configuration data stored on a CompactFlash device or other non-volatile data storage device. Using the Xilinx™ solution, FPGAs are connected together in a JTAG chain and configuration data is serially passed from FPGA to FPGA.
-
FIG. 1 shows a system using JTAG-based PLD configuration, such as that used by Xilinx™ for FPGAs. In this system, aconfiguration controller 101 communicates with a configuration storage device 103 to retrieve information related to the configuration of a group of PLDs (105 a, 105 b, 105 c) arranged in a JTAG chain. Theconfiguration controller 101 passes the configuration information through the JTAG chain so as to configure each PLD (105 a, 105 b, 105 c) in the chain. - While systems, such as that shown in
FIG. 1 , generally support the configuration of multiple PLDs (105 a, 105 b, 105 c), they typically require that each PLD (105 a, 105 b, 105 c) in a chain be powered up. As the number of PLDs used in digital systems increases, there is an increasing need for greater flexibility and control in PLD configuration. - In a general aspect, a method for configuring programmable logic devices includes configuring a first programmable logic device such that that device includes signalling logic to fan-out configuration information, and using the first programmable logic device to configure at least two secondary programmable logic devices in parallel using the signalling logic to fan-out configuration information. The programmable logic devices may be implemented using any known or later developed technology, such as, for example, field-programmable gate arrays (FPGAs), programmable logic arrays (PLAs), programmable array logic (PAL), complex programmable logic devices (CPLDs), and the like. In some implementations, a multiplexer is used to fan-in signal paths from secondary programmable logic devices to the first programmable logic device. This process may be repeated for additional stages of programmable logic device configuration.
- In another general aspect, a method for configuring programmable logic devices includes configuring a first set of programmable logic devices arranged on a serial data bus, using at least one of the first set of programmable logic devices to dynamically reconfigure the serial data bus to include a second set of programmable logic devices, and configuring the second set of programmable logic devices.
- In some implementations, one or more of the first set of programmable logic devices is used to dynamically reconfigure the serial data bus to controlling a device to fan-in data signals transmitted on the serial data bus.
- In another general aspect, a method for configuring programmable logic devices includes using a first device to fan-out data signals on a serial data bus, using a second device to fan-in data signals on the serial data bus, using the first device and the second device to reconfigure the serial data bus such that a first set of programmable logic devices is operably connected to the serial data bus, and configuring the first set of programmable logic devices using the serial data bus. The first and second devices may be implemented, for example, using a multiplexer, a programmable logic device, and the like. In this manner, it is possible, though not required, that programmable logic device be configured in stage such that some or all of the programmable logic devices may be powered down during earlier stages of configuration.
- Additionally, implementations may configure further programmable logic devices using the first device and the second device to reconfigure the serial data bus such that a second set of programmable logic devices is operably connected to the serial data bus, and configuring the second set of programmable logic devices using the serial data bus.
- In another general aspect, a system includes a configuration control device, a serial data bus including at least two configurations of connected devices, a configuration storage device in communication with the configuration control device and the serial data bus, a first programmable logic device in communication with the serial data bus and configurable to reconfigure the serial data bus, and at least two secondary programmable logic devices. The configuration control device uses a first configuration of the serial data bus to configure the first programmable logic device using data obtained from the configuration storage device, and uses the first programmable logic device to reconfigure the serial data bus such that the secondary programmable logic devices are in communication with the serial data bus. The configuration control device configures the at least two secondary programmable logic devices.
- In some implementations, a JTAG bus is used as the serial data bus and a non-volatile memory is used as the configuration storage device. Further, the programmable logic devices are implemented as FPGAs.
- In another general aspect, a system includes a serial data bus, a first device to fan-out data signals on the serial data bus, a second device to fan-in data signals on the serial data bus, and a control device that uses the first device and the second device to configure the serial data bus. The system configures a set of programmable logic devices by using the control device to configure the serial data bus such that the set of programmable logic devices are in communication with the serial data bus, and by sending configuration information to the set of programmable logic devices. By way of example, the first device may be implemented in and/or using a programmable logic device. In a preferred embodiment, the serial data bus is a JTAG bus and all programmable logic devices are FPGAs.
- The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features and advantages will be apparent from the description and drawings, and from the claims.
-
FIG. 1 is block diagram of a system for configuring multiple programmable logic devices according to the prior art. -
FIG. 2 is a block diagram illustrating the configuration of a first programmable logic device. -
FIG. 3 is a block diagram illustrating a second stage of programmable logic device configuration. -
FIG. 4 is a block diagram illustrating an additional, optional stage of programmable logic device configuration. -
FIG. 5 is a flow chart of a method for configuring programmable logic devices. - Various embodiments disclosed herein are directed to systems and methods for configuring programmable logic devices. In some systems it may be desirable to apply the same configuration to multiple programmable logic devices (“PLDs”), and in some systems it may be desirable to configure programmable logic devices in stages. Using the techniques described herein, it is possible to configure any number of PLDs in any number of stages using a single control device. For example, implementations may provide for the hierarchical configuration of multiple programmable logic devices (PLDs), at different times. Additionally, implementations may provide for the configuration of multiple PLDs in parallel.
- More particularly, various embodiments disclose centralizing the configuration data for multiple PLDs in a single non-volatile memory device. Further, the multiple PLDs are configured in stages, such that only active PLDs are involved in each configuration stage. Since only active PLDs are involved in a particular configuration stage, it is then possible to apply power to different PLDs at different times. Additionally, the disclosed embodiments provide for easier configuration binary management since each device type is configured individually in a separate configuration stage.
- Referring now to the drawings, wherein like reference numerals denote like or corresponding parts throughout the drawings and, more particularly to
FIGS. 2-5 , there are shown various embodiments of a system and method providing for the hierarchical configuration of multiple programmable logic devices, wherein the devices are configured in stages. - Referring to
FIG. 2 , a PLD configuration system is operable to configure a programmable logic device (PLD) 201. Those skilled in the art will appreciate that multiple devices may be configured, however, for illustrative purposes, only one programmable logic device is shown in this example embodiment ofFIG. 2 . However, in optional embodiments, multiple programmable logic devices may be used, wherein each serves a separate branch of devices for later steps in the configuration process. InFIG. 2 , aconfiguration controller 101 is connected to a configuration storage device 103. A serial data bus connects theconfiguration controller 101 to theprogrammable logic device 201. Furthermore, this implementation includes amultiplexer 203 to select signals for transmission on the serial data bus. Those skilled in the art will appreciate that any combination of configuration storage device 103,configuration controller 101, andprogrammable logic device 201 may be used to implement the PLD configuration system. - A particular example embodiment of a hierarchical FPGA configuration system is illustrated in
FIG. 3 . More particularly, the hierarchical FPGA configuration system includes a configuration storage device 103 which is implemented using a Compact Flash memory show, a Xilinx™ aconfiguration controller 101 implemented using a System ACE Controller device, and theprogrammable logic device 201 implemented using a field-programmable gate array (FPGA) device. - Additionally, the configuration system uses JTAG as the serial data bus, wherein JTAG refers to the Joint Test Action Group and is the usual name used for the IEEE 1149.1-2001 standard entitled Standard Test Access Port and Boundary-Scan Architecture for test access ports used for testing printed circuit boards using boundary scan. Those skilled in the art will appreciate that any type of configuration interface may be used. The hierarchical FPGA configuration system further includes a
first multiplexer 203, which is a combinational logic device with many input channels and typically one output. Themultiplexer 203 connects one input channel at a time to the output. Those skilled in the art will appreciate the aforementioned example embodiment shown inFIG. 2 is merely an illustrative example, and any combination of configuration controller, configuration storage device, and serial data bus may be utilized. - Additionally, various embodiments are directed to extending the functionality of a FPGA configuration device in connection with a dynamic JTAG chain containing one or more FPGA devices. The dynamic JTAG chain allows for the addition of one or more devices, (such as but not limited to FPGA devices), to the JTAG chain. In comparison, traditional JTAG chains are static in nature and do not allow for the introduction of additional devices into a chain. Additionally, various embodiments also include a hub for routing the attached JTAG chains show. The extended functionality of the FPGA configuration devices supports redirecting and fanout of a JTAG data stream. Further, the extended functionality permits nesting of JTAG hubs and chains without requiring the generation of custom binaries for each depth and branch of the chain. Additionally, various embodiments provide the ability to configure many thousands, even millions, of FPGAs in parallel from a single non-volatile memory device, limited only by the amount of fanout supported and storage space for the number of unique configuration images needed.
- In the example embodiment shown in
FIG. 2 , only JTAG data signals TDI (Test Data In) and TDO (Test Data Out) are shown. JTAG control TMS (Test Mode Select) and the test clock (TCK) are not shown in the example illustration of the implementation. However, in practice, those skilled in the art will appreciate that TMS and TCK would typically be connected to all JTAG devices in JTAG chains. - The example embodiment shown in
FIG. 2 illustrates a first stage in the hierarchical FPGA configuration system. The first stage of configuration may be initiated automatically at power-on. Alternately, the first stage of configuration may be started by a separate control processor (not shown). In one embodiment, amultiplexer device 203 may be inserted on the TDO path with a pull down on the select signal. Themultiplexer 203 ensures that the JTAG chain is valid for the first stage of configuration. Additionally, any other drivers of the select signal need to remain either 0 or in a high impedance state during the configuration of thePLD 201. - After
PLD 201 has been configured and properly initialized, the next level of configuration may occur. Referring toFIG. 3 , an example block diagram of the second stage of configuration is illustrated. In this example, a second group ofPLD devices 301 are configured. Themultiple PLD devices 301 are configured in parallel. The firstprogrammable logic device 201 includes signallinglogic 305 such that it acts as a JTAG hub to dynamically configure the serial data bus. As shown inFIG. 3 , the serial data bus output tdo1 is connected to an input to theprogrammable logic device 201, further, an output from thePLD 201 is connected to multiplexer 203 as signal tdo2. Themultiplexer 203 selects between signals tdo1 and tdo2 based on the value of the signal tdo select. One skilled in the art will appreciate that the signal tdo select may be controlled by thePLD 201 or by any other logic device, including a multiprocessor unit (MPU) (not shown). - The
signalling logic 305 acts as a JTAG hub. Thesignalling logic 305 first controls the TDO select signal of themultiplexer 203 to select the TDO from thesignalling logic 305 instead of the TDO from thePLD 201 itself. Thesignalling logic 305 then replicates and broadcasts the TDI signal to the second group ofPLD devices 301 in parallel. In turn, thesignalling logic 305 also reduces the multiple TDOs returning from the second group ofPLD devices 301 and presents a single TDO back theconfiguration controller 101. In this example, the implementation of this reduction is application specific, but the assumption is that the TDO values are equivalent if all parallel configurations are occurring successfully. Exception situations are handled to ensure that theconfiguration controller 101 responds properly. - In one embodiment, a consequence of the
signalling logic 305 is that theconfiguration controller 101 identifies a JTAG chain that consists of a first PLD 201 (in bypass mode) and onesecond PLD 301. The parallel array of multiplesecond PLDs 301 are hidden from theconfiguration controller 101, and therefore, does not need to be accounted for in configuration binary image creation. - Additionally,
FIG. 3 shows an MPU interface to theconfiguration controller 101. The MPU interface initiates configuration for the remaining stages. Optionally, in one embodiment, the MPU interface controls do not come from thePLD 201 and instead are generated from another external control processor (not shown). - Optionally, in one embodiment, if a logic device contains a hub mechanism, then another level of downstream logic devices may be configured. Referring to
FIG. 4 , thePLD devices 301 contain signallinglogic 305. Additionally, if thePLD devices 301 need to control when to begin the configuration, thePLD devices 301 communicate back to the device controlling theconfiguration controller 101 via the MPU interface (e.g.,PLD 201 or a control processor). In one embodiment, a consequence of thesecond signalling logic 305 is that theconfiguration controller 101 recognizes a JTAG chain that consists of one first PLD 201 (in bypass mode), one second PLD device 301 (in bypass mode), and onesubsequent PLD device 401. The parallel array ofPLD devices 401 are hidden from theconfiguration controller 101. - Further levels of configuration hierarchy may be provided by implementing further instances of a JTAG hub. In various embodiments, the number of levels is limited by the number of configuration binary images that may be stored in the memory device or storage system. Additionally, in various embodiments, the total number of FPGAs being configured in parallel is multiplied at each level of hierarchy. This can enable a very large number of identical FPGA devices to be configured at the same time.
- Referring to
FIG. 5 , a method for configuring PLD devices includes configuring a first PLD (step 501) and using the first PLD to configure at least two secondary PLDs (step 503). The first PLD controls dynamically configures a serial data bus for communicating configuration information to the secondary PLDs. This process may be applied recursively, with later stages configured by the first PLD or one or more of the secondary (or later-stage) PLDs. - In another embodiment, the hierarchical FPGA configuration system includes a configuration path (e.g. JTAG) that is dynamic at each configuration stage and level of hierarchy. In other words, the logical device chain introduces and/or subtracts devices at each stage of configuration. Traditionally configuration paths are static and do not allow for the introduction or subtraction of devices. Optionally, in another embodiment, the data path multiplexer (e.g. the TDO mux) may be used to dynamically change the configuration interface.
- Further, the logic devices are able to be powered on only as needed for their particular stage of configuration. The inactive devices are not involved in the current configuration stage and are not required to be powered or initialized. Additionally, the configuration control and data signal paths are broadcast to an array of devices and their returning signal paths are reduced to a single signal set.
- In one embodiment, each stage of configuration represents only a single device type and configuration bit stream. Further, the large array of devices or hierarchical array of devices is configured in parallel. The array is easily scalable to add additional levels of hierarchy.
- In an optional embodiment, the configuration data images are stored in a single memory or memory system.
- One skilled in the art will appreciate that by using the fan-in and fan-out capabilities described herein, it is possible to configure an arbitrary number of PLD devices in one or more stages by configuring a serial data bus such that devices to be programmed are accessible, and then transmitting configuration information. In this manner, it is also possible to combine this technique with conventional PLD configuration techniques. For example, a JTAG chain may be created that appears to have three PLD devices for configuration. However, any of those three devices may be used to fan-out configuration information to multiple devices in parallel.
- The various embodiments described above are provided by way of illustration only and should not be construed to limit the claimed invention. Those skilled in the art will readily recognize various modifications and changes that may be made to the claimed invention without following the example embodiments and applications illustrated and described herein, and without departing from the true spirit and scope of the claimed invention, which is set forth in the following claims.
Claims (3)
1. A method for configuring programmable logic devices, the method comprising:
configuring a first programmable logic device such that the first programmable logic device includes signaling logic to fan-out configuration information; and
using the first programmable logic device to configure at least two secondary programmable logic devices in parallel using the signaling logic to fan-out configuration information.
2. The method of claim 1 , wherein configuring a first programmable logic device includes configuring a field-programmable gate array (FPGA).
3.-20. (canceled)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/662,764 US20100213976A1 (en) | 2007-04-17 | 2010-05-03 | Hierarchical FPGA configuration |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US91235707P | 2007-04-17 | 2007-04-17 | |
US12/081,562 US7710146B1 (en) | 2007-04-17 | 2008-04-17 | Hierarchical FPGA configuration |
US12/662,764 US20100213976A1 (en) | 2007-04-17 | 2010-05-03 | Hierarchical FPGA configuration |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/081,562 Division US7710146B1 (en) | 2007-04-17 | 2008-04-17 | Hierarchical FPGA configuration |
Publications (1)
Publication Number | Publication Date |
---|---|
US20100213976A1 true US20100213976A1 (en) | 2010-08-26 |
Family
ID=42124841
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/081,562 Expired - Fee Related US7710146B1 (en) | 2007-04-17 | 2008-04-17 | Hierarchical FPGA configuration |
US12/662,764 Abandoned US20100213976A1 (en) | 2007-04-17 | 2010-05-03 | Hierarchical FPGA configuration |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/081,562 Expired - Fee Related US7710146B1 (en) | 2007-04-17 | 2008-04-17 | Hierarchical FPGA configuration |
Country Status (1)
Country | Link |
---|---|
US (2) | US7710146B1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102012217585A1 (en) * | 2012-09-27 | 2014-03-27 | Siemens Aktiengesellschaft | Method for automatic configuration of programmable devices on X-ray detector, involves connecting programmable devices with a configuration connection unit having configuration controller to transmit configuration data to the devices |
CN109101262A (en) * | 2018-08-16 | 2018-12-28 | 郑州云海信息技术有限公司 | A kind of FPGA Configuration Online method and system |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7710146B1 (en) * | 2007-04-17 | 2010-05-04 | General Dynamics Advanced Information Systems, Inc. | Hierarchical FPGA configuration |
US8060729B1 (en) * | 2008-10-03 | 2011-11-15 | Altera Corporation | Software based data flows addressing hardware block based processing requirements |
US9091727B1 (en) * | 2012-10-16 | 2015-07-28 | Xilinx, Inc. | Configuration and testing of multiple-die integrated circuits |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6550022B1 (en) * | 1999-11-02 | 2003-04-15 | International Business Machines Corporation | Hierarchical JTAG based checkstop architecture for computer systems |
US6617877B1 (en) * | 2002-03-01 | 2003-09-09 | Xilinx, Inc. | Variable data width operation in multi-gigabit transceivers on a programmable logic device |
US6754763B2 (en) * | 2001-07-30 | 2004-06-22 | Axis Systems, Inc. | Multi-board connection system for use in electronic design automation |
US20040130944A1 (en) * | 2002-09-25 | 2004-07-08 | Siemens Aktiengesellschaft | Programming flash memory via a boundary scan register |
US20050256969A1 (en) * | 2004-05-11 | 2005-11-17 | Yancey Jerry W | Systems and methods for interconnection of multiple FPGA devices |
US20050267729A1 (en) * | 2004-06-01 | 2005-12-01 | Quickturn Design Systems, Inc. | Extensible memory architecture and communication protocol for supporting multiple devices in low-bandwidth, asynchronous applications |
US20070011542A1 (en) * | 2005-06-15 | 2007-01-11 | Nilanjan Mukherjee | Reduced-pin-count-testing architectures for applying test patterns |
US20080186052A1 (en) * | 2007-02-01 | 2008-08-07 | International Business Machines Corporation | Methods, systems, and computer program products for using direct memory access to initialize a programmable logic device |
US7710146B1 (en) * | 2007-04-17 | 2010-05-04 | General Dynamics Advanced Information Systems, Inc. | Hierarchical FPGA configuration |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7397272B1 (en) * | 2006-02-28 | 2008-07-08 | Xilinx, Inc. | Parallel configuration of programmable devices |
-
2008
- 2008-04-17 US US12/081,562 patent/US7710146B1/en not_active Expired - Fee Related
-
2010
- 2010-05-03 US US12/662,764 patent/US20100213976A1/en not_active Abandoned
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6550022B1 (en) * | 1999-11-02 | 2003-04-15 | International Business Machines Corporation | Hierarchical JTAG based checkstop architecture for computer systems |
US6754763B2 (en) * | 2001-07-30 | 2004-06-22 | Axis Systems, Inc. | Multi-board connection system for use in electronic design automation |
US6617877B1 (en) * | 2002-03-01 | 2003-09-09 | Xilinx, Inc. | Variable data width operation in multi-gigabit transceivers on a programmable logic device |
US20040130944A1 (en) * | 2002-09-25 | 2004-07-08 | Siemens Aktiengesellschaft | Programming flash memory via a boundary scan register |
US20050256969A1 (en) * | 2004-05-11 | 2005-11-17 | Yancey Jerry W | Systems and methods for interconnection of multiple FPGA devices |
US20050267729A1 (en) * | 2004-06-01 | 2005-12-01 | Quickturn Design Systems, Inc. | Extensible memory architecture and communication protocol for supporting multiple devices in low-bandwidth, asynchronous applications |
US20070011542A1 (en) * | 2005-06-15 | 2007-01-11 | Nilanjan Mukherjee | Reduced-pin-count-testing architectures for applying test patterns |
US20080186052A1 (en) * | 2007-02-01 | 2008-08-07 | International Business Machines Corporation | Methods, systems, and computer program products for using direct memory access to initialize a programmable logic device |
US7710146B1 (en) * | 2007-04-17 | 2010-05-04 | General Dynamics Advanced Information Systems, Inc. | Hierarchical FPGA configuration |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102012217585A1 (en) * | 2012-09-27 | 2014-03-27 | Siemens Aktiengesellschaft | Method for automatic configuration of programmable devices on X-ray detector, involves connecting programmable devices with a configuration connection unit having configuration controller to transmit configuration data to the devices |
DE102012217585B4 (en) * | 2012-09-27 | 2014-11-06 | Siemens Aktiengesellschaft | Method for automatic configuration of programmable devices, electronic assembly, x-ray detector and computed tomography system |
CN109101262A (en) * | 2018-08-16 | 2018-12-28 | 郑州云海信息技术有限公司 | A kind of FPGA Configuration Online method and system |
Also Published As
Publication number | Publication date |
---|---|
US7710146B1 (en) | 2010-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5869979A (en) | Technique for preconditioning I/Os during reconfiguration | |
US7576561B1 (en) | Device and method of configuring a device having programmable logic | |
US6573748B1 (en) | Programmable logic device with output register for specifying memory space during reconfiguration | |
US7124338B1 (en) | Methods of testing interconnect lines in programmable logic devices using partial reconfiguration | |
US6314539B1 (en) | Boundary-scan register cell with bypass circuit | |
EP1008025B1 (en) | Configuration control in a programmable logic device using non-volatile elements | |
US6499124B1 (en) | Intest security circuit for boundary-scan architecture | |
US7301836B1 (en) | Feature control circuitry for testing integrated circuits | |
US7652500B1 (en) | Reconfiguration of programmable logic devices | |
US5764076A (en) | Circuit for partially reprogramming an operational programmable logic device | |
US9164858B2 (en) | System and method for optimized board test and configuration | |
US7406642B1 (en) | Techniques for capturing signals at output pins in a programmable logic integrated circuit | |
US7710146B1 (en) | Hierarchical FPGA configuration | |
US5631912A (en) | High impedance test mode for JTAG | |
EP1787136A1 (en) | Test circuit and method for hierarchical core | |
US7459931B1 (en) | Programmable logic devices with transparent field reconfiguration | |
US7304493B2 (en) | FPGA powerup to known functional state | |
US5909453A (en) | Lookahead structure for fast scan testing | |
US7737723B1 (en) | Transparent field reconfiguration for programmable logic devices | |
US7739564B1 (en) | Testing an integrated circuit using dedicated function pins | |
US20110068823A1 (en) | Processor programmable pld device | |
CN109196481B (en) | Integrated circuit and operation method thereof | |
US7768300B1 (en) | Programmable logic device providing serial peripheral interfaces | |
US6990619B1 (en) | System and method for automatically retargeting test vectors between different tester types | |
US7583102B1 (en) | Testing of input/output devices of an integrated circuit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |