Since 80’s the FPGA market growing rapidly with varied of applications in different industries. FPGA manufactures keep updating their FPGAs with cutting edge technologies. In the recent days there is new concept evolving in FPGA industry so called Dynamic partial reconfiguration.
The new breed of existing FPGA enabled for this feature.This makes the FPGA to be used in a new dimension with an advantage of more flexibility
The new breed of existing FPGA enabled for this feature.This makes the FPGA to be used in a new dimension with an advantage of more flexibility
1.1. What is dynamic partial reconfiguration?
Dynamic Partial Reconfiguration provides a way to modify the implemented logic in FPGA when the device is on.More clearly DPR allows reconfiguring selected areas of a FPGA when other parts of FPGA still working. DPR is not supported on all FPGAs. For example in Xilinx Spartan 3, Virtex II, Virtex II Pro, and Virtex 4 are only supported.
In this chapter we are going to discuss more detail about Dynamic Partial Reconfiguration and it is terminology. The DPR discussion on this chapter is based on Virtex Pro II. Although it is little difficult to implement DPR there are many prominent advantages in it. Let’s discuss the terms which are used in DPR design flow
The dynamic parts (dynamic modules, dmodules, d_modules, etc.) are independent parts of the input design that need not be active during the whole application runtime. They share common areas (slots) inside a target device; this is based on the assumption that they are not required to run at the same time in parallel.
They are loaded to and unloaded from a target device as requested by the system scheduler. Usually they reside as a bit stream in a memory outside the FPGA. There some cases they also can be stored in the memory available inside the FPGA.
2.2. Static Part
The static part is such a part of an input design that is active during the whole application runtime. It is placed in the “static” area of a target device that is kept intact all the time.
In addition to its standard function it has to provide an infrastructure to load and unload other (dynamic) parts of the design, which is system scheduling, data management, and interface management.
The static part must include the configuration controller and logic required for data and interface management. All inputs/outputs of the application are managed by the static part that communicates with dynamic modules through a fixed interface.
The static part is such a part of an input design that is active during the whole application runtime. It is placed in the “static” area of a target device that is kept intact all the time.
In addition to its standard function it has to provide an infrastructure to load and unload other (dynamic) parts of the design, which is system scheduling, data management, and interface management.
The static part must include the configuration controller and logic required for data and interface management. All inputs/outputs of the application are managed by the static part that communicates with dynamic modules through a fixed interface.
2.3 Bus Macros
Bus macros are used as fixed data paths for signals going between a reconfigurable module and another module. The HDL code should ensure that any reconfigurable module signal that is used to communicate with another module does so only by first passing through a bus macro.
There are Virtex, Virtex-E, Virtex-II, and Virtex-II Pro series specific versions of the bus macro. Be sure to instantiate the version compatible to the chosen device. Each bus macro provides for 4 bits of intermodule communication. As many bus macros as needed must be instantiated to match the number of bits traversing the boundaries of the reconfigurable modules.
As an example, if reconfigurable module A communicates via 32 bits to module B, then eight (32/4) bus macros will need to be instantiated to define the data paths between modules A and B. The details of bus macro usage are described in the Bus Macro Communication section.
Dataflow in bus macro is always unidirectional. So Bus macros configured for Data flow in only one direction and it is fixed. Xilinx Provides these Bus Macros. Also it is possible to design our won bus macros.
2.4 Configuration controller
Configuration controller is part of the static module. This takes care of loading and unloading of dynamic modules. Usually this configuration controller is a microcontroller. In the following diagram gives an idea of position of configuration controller.
Configuration controller makes the design autonomous. That means reconfiguration does not need any manual control. All we have to tell the microcontroller that when it has to configure and which module it has to configure. This can be done using ‘C’ program or assembly program depending on the designer conveniences.
In case of Virtex Pro II it has got two kinds of microcontroller as we seen in the previous chapter. These controllers can be configured as a configuration controller with help of Xilinx EDK tool.
2.5 Configuration of FPGA
There are certain constrains are applied while configuring the FPGA. The reconfigurable module height is always the full height of the device and it should occupy minimum of 4 slices or multiplies of 4 (4, 8, 12, 16…..and so on). As we seen before all stuffs what we are disussing here is applicable only to Virtex Pro II device. Configuration on Virtex Pro II is explained in the following diagram.
Bus macros are used as fixed data paths for signals going between a reconfigurable module and another module. The HDL code should ensure that any reconfigurable module signal that is used to communicate with another module does so only by first passing through a bus macro.
There are Virtex, Virtex-E, Virtex-II, and Virtex-II Pro series specific versions of the bus macro. Be sure to instantiate the version compatible to the chosen device. Each bus macro provides for 4 bits of intermodule communication. As many bus macros as needed must be instantiated to match the number of bits traversing the boundaries of the reconfigurable modules.
As an example, if reconfigurable module A communicates via 32 bits to module B, then eight (32/4) bus macros will need to be instantiated to define the data paths between modules A and B. The details of bus macro usage are described in the Bus Macro Communication section.
Dataflow in bus macro is always unidirectional. So Bus macros configured for Data flow in only one direction and it is fixed. Xilinx Provides these Bus Macros. Also it is possible to design our won bus macros.
2.4 Configuration controller
Configuration controller is part of the static module. This takes care of loading and unloading of dynamic modules. Usually this configuration controller is a microcontroller. In the following diagram gives an idea of position of configuration controller.
Configuration controller makes the design autonomous. That means reconfiguration does not need any manual control. All we have to tell the microcontroller that when it has to configure and which module it has to configure. This can be done using ‘C’ program or assembly program depending on the designer conveniences.
In case of Virtex Pro II it has got two kinds of microcontroller as we seen in the previous chapter. These controllers can be configured as a configuration controller with help of Xilinx EDK tool.
2.5 Configuration of FPGA
There are certain constrains are applied while configuring the FPGA. The reconfigurable module height is always the full height of the device and it should occupy minimum of 4 slices or multiplies of 4 (4, 8, 12, 16…..and so on). As we seen before all stuffs what we are disussing here is applicable only to Virtex Pro II device. Configuration on Virtex Pro II is explained in the following diagram.
No comments:
Post a Comment